配置树莓派开机启动自带的WiFi热点和运行摄像头驱动和运行小车的Python程序

Caltha ·
更新时间:2024-09-20
· 795 次阅读

为了比较方便的实现手机APP控制树莓派摄像头小车。
需要配置下树莓派系统,使树莓派开机就能启动自带的WiFi热点,运行摄像头驱动启动摄像头,还有开机就能启动Python程序。
配置文件下载链接

配置文件的一些笔记
阮一峰的bash脚本教程链接
1.

#!/bin/sh

#!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后的是解释此脚本的shell的路径。
2.

cd $(cd `dirname $0`;pwd)

dirname $0 ,取得当前执行的脚本文件的父目录
cddirname $0 ,进入到这个目录
pwd ,显示当前的工作目录
3.

DIR0=$(cd `dirname $0`;pwd)

相当于定义了一个路径的变量,当前父目录的路径赋给了DIR0
4.

apt update apt install -y rfkill hostapd dnsmasq nginx cmake libv4l-dev apt-get install -y libjpeg8-dev apt-get install -y libjpeg62-turbo-dev

下载关于启动摄像头所需的编译工具和软件包
5. websocket的配置

echo '配置Nginx反向代理' &&\ rm -f /etc/nginx/sites-enabled/default &&\ echo 'server {'>/etc/nginx/sites-enabled/Camera.conf &&\ echo ' listen 80;'>>/etc/nginx/sites-enabled/Camera.conf &&\ echo ' server_name _;'>>/etc/nginx/sites-enabled/Camera.conf &&\ echo ''>>/etc/nginx/sites-enabled/Camera.conf &&\ echo ' location / {'>>/etc/nginx/sites-enabled/Camera.conf &&\ echo ' proxy_http_version 1.1;'>>/etc/nginx/sites-enabled/Camera.conf &&\ echo ' proxy_pass http://localhost:8080/?action=stream/;'>>/etc/nginx/sites-enabled/Camera.conf &&\ echo ' proxy_set_header Upgrade $http_upgrade;'>>/etc/nginx/sites-enabled/Camera.conf &&\ echo ' proxy_set_header Connection "upgrade";'>>/etc/nginx/sites-enabled/Camera.conf &&\ echo ' proxy_read_timeout 5s;'>>/etc/nginx/sites-enabled/Camera.conf &&\ echo ' proxy_buffering off;'>>/etc/nginx/sites-enabled/Camera.conf &&\ echo ' }'>>/etc/nginx/sites-enabled/Camera.conf &&\ echo '}'>>/etc/nginx/sites-enabled/Camera.conf

上面的是输出文件/etc/nginx/sites-enabled/Camera.conf 的内容
写法可以替换成下面的

echo '配置Nginx反向代理' &&\ //删除默认文件 rm -f /etc/nginx/sites-enabled/default &&\ echo -e 'server { listen 80; //指定一个IP或域名来访问这个配置文件, _ 表示默认域名,就是所有ip都可以访问 server_name _; location / { //表明使用http版本为1.1 proxy_http_version 1.1; proxy_pass http://localhost:8080/?action=stream/; // 代理转发地址 //启用支持websocket连接,这两行表明的是websocket连接进入的时候,进行一个连接升级将http连接变成websocket的连接 proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; // 超时设置 proxy_read_timeout 5s; //这个参数用来控制是否打开后端响应内容的缓冲区 proxy_buffering off; } } //输出文件的地址和名称 '>>/etc/nginx/sites-enabled/Camera.conf

先移除掉rm -f /etc/nginx/sites-enabled/default
echo -e 表示对于转义字符按对应的方式进行处理。

6.开始配置

echo 开始配置 # 设置IP地址 ip addr flush dev wlan0 #清除无线网卡IP地址 ip addr add 10.0.0.1/24 dev wlan0 #将wlan0的IP地址设置为10.0.0.1 , /24是子网掩码225.225.255.0 ip link set wlan0 up #激活无线网卡wlan0的IP地址

7.wlan0 IP的配置文件

cat > /etc/network/interfaces.d/wlan0 << EOF auto wlan0 iface wlan0 inet static address 10.0.0.1 netmask 255.255.255.0 EOF

将设置ip的内容输出到/etc/network/interfaces.d/wlan0

8.配置无线热点

echo 正在配置无线热点 rfkill unblock all >/dev/null 2>&1 # 配置无线热点 cat > /etc/hostapd/hostapd.conf << EOF interface=wlan0 driver=nl80211 ssid=Raspberry Pi 4B wpa_passphrase=12345678 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP hw_mode=g channel=11 auth_algs=1 wpa=2 EOF

9.启动hostapd服务

echo 'DAEMON_CONF="/etc/hostapd/hostapd.conf"'>>/etc/default/hostapd #启动hostapd服务 systemctl unmask hostapd systemctl enable hostapd systemctl restart hostapd

10.配置DNS

echo 即将配置结束 # 配置DNS,dnsmasq 是一个小型的用于配置 DNS 和 DHCP 的工具 cat > /etc/dnsmasq.conf << EOF bind-interfaces interface=wlan0 listen-address=10.0.0.1,127.0.0.1 dhcp-range=10.0.0.100,10.0.0.200,24h EOF

listen-address 定义dnsmasq监听的地址,默认是监控本机的所有网卡上
dhcp-range 配置项的意思是,dhcp 服务会给客户端分配 10.0.0.100 到 10.0.0.200 的 IP 空间,24 小时租期

11.重启dnsmasq

systemctl enable dnsmasq systemctl restart dnsmasq

12.编译mjpg-streamer(这是摄像头的编译包)
mjpg-streamer的源码链接

if [ ! -d $DIR0/mjpg-streamer-master/build ];then cd $DIR0/mjpg-streamer-master/mjpg-streamer-experimental mkdir -p $DIR0/mjpg-streamer-master/build make cd $DIR0 fi

if [ ] fi 的写法,[ + 空格****空格 ] fi结束退出

13.设置开机启动所有的配置文件

#设置开机启动 rm -rf ./start.sh >/dev/null 2>&1 #>/dev/null 2>&1不显示报错信息 cat > start.sh </dev/null 2>&1 sed -i 's/bash .*start.sh//g' /etc/rc.local >/dev/null 2>&1 cat >> /etc/rc.local </dev/null 2>&1

解释: sed -i 是修改文件 ‘s/需要被修改的字符/替换的字符/g’ 文件路径
sed -i ‘s/exit 0//g’ /etc/rc.local > 就是把rc.local文件里的exit 0修改为无
这里如果没有先把exit 0删除,那么添加的bash $DIR0/start.sh就会被添加到exit 0的下面,而执行rc.local文件时,到exit 0就会退出了,所以就先删除exit 0在添加
bash $DIR0/start.sh
exit 0
14.退出配置文件

exit ¥万有引力¥ 原创文章 13获赞 11访问量 4508 关注 私信 展开阅读全文
作者:¥万有引力¥



运行 启动 摄像 wifi热点 树莓派 摄像头 Python python程序

需要 登录 后方可回复, 如果你还没有账号请 注册新账号