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

为了比较方便的实现手机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 << EOF
#!/bin/sh
systemctl restart hostapd
cd $DIR0/mjpg-streamer-master/mjpg-streamer-experimental
bash ./start.sh &
python $DIR0/bluetooth_control.py &
exit 0
EOF
chmod -x start.sh   #意思就是给start.sh执行权限

systemctl enable rc-local.service   #激活rc-local.service
sed -i 's/exit 0//g' /etc/rc.local >/dev/null 2>&1
sed -i 's/bash .*start.sh//g' /etc/rc.local >/dev/null 2>&1
cat >> /etc/rc.local << EOF
bash $DIR0/start.sh

exit 0
EOF

#暂停5秒
sleep 5
#ping 127.1 -c 5 >/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
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值