基于mqtt的本地和远程网络化覆盆子pi摄像机控制和图像采集。
picamera-mqtt的Python项目详细描述
picamera mqtt
基于mqtt的本地和远程网络化覆盆子pi摄像机控制和图像采集。 部署脚本需要从树莓pi运行。其他脚本可以从任何计算机上运行。
MQTT代理服务器设置
要运行mqtt代理服务器,请编辑deploy/config/broker.conf
,然后运行
部署/mqtt_broker.sh
代理自动启动
要在主机raspberry pi启动时自动运行mqtt代理程序,
安装mqtt_broker.service
systemd单元:
cd ~/Desktop/picamera-mqtt
sudo cp deploy/systemd/mqtt_broker.service /etc/systemd/system/mqtt_broker.service
sudo systemctl enable mqtt_broker
您可以使用systemd手动启动服务,使用systemd查看服务的状态, 使用journalctl查看其输出日志,或使用systemd:
sudo systemctl start mqtt_broker
systemctl status mqtt_broker
journalctl -u mqtt_broker
sudo systemctl stop mqtt_broker
摄像头客户端部署设置
这些说明用于设置覆盆子PI以部署相机图像客户端。
准备工作
您需要在Raspberry PI上安装一些软件包,如下所示:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git python3-pip
sudo apt-get install vim byobu wicd-curses # optional, but makes your life easier
您需要使用raspi config
工具来更改pi用户的密码,
将语言环境设置为en_us utf-8
,将键盘布局设置为english(us)
,
更改覆盆子pi的主机名,并将覆盆子pi设置为等待
启动时连接到Internet。
您需要编辑/etc/wpa_supplicant/wpa_supplicant.conf配置
如果要使用Wi-Fi连接部署覆盆子皮,请将文件连接到Wi-Fi。
客户端硬件设置
将覆盆子皮摄像头连接到覆盆子皮。
客户端软件设置
克隆此回购协议,例如使用:
cd ~/Desktop
git clone https://github.com/ethanjli/picamera-mqtt.git
从requirements\u deployment.txt安装所需的依赖项,例如使用:
cd ~/Desktop/picamera-mqtt
sudo pip3 install -r requirements_deployment.txt
然后通过运行capture.py
脚本确认摄像机工作正常,
如下所示:
cd ~/Desktop/picamera-mqtt
python3 -m picamera_mqtt.tests.imaging.capture
这将导致出现两个文件,capture_pil.jpg
和
在工作目录中捕获final.jpg
。
客户端配置
您需要编辑deploy/config/settings.json
config文件,以便:
hostname
参数是localhost
(如果您的mqtt代理正在运行 与客户端在同一台计算机上)或运行的计算机的IP地址 您的MQTT经纪人。客户机名称
参数和目标名称
参数都应该说明camera_n
,其中n
应替换为相机的唯一ID号 客户端。此ID号将用于唯一标记每个相机流。
摄像头客户端软件自动启动
要在覆盆子pi启动时自动运行camera mqtt客户机,
安装mqtt_imaging.service
systemd单元:
cd ~/Desktop/picamera-mqtt
sudo cp deploy/systemd/mqtt_imaging.service /etc/systemd/system/mqtt_imaging.service
sudo systemctl enable mqtt_imaging
您可以使用systemd手动启动服务,使用systemd查看服务的状态, 使用journalctl查看其输出日志,或使用systemd:
sudo systemctl start mqtt_imaging
systemctl status mqtt_imaging
journalctl -u mqtt_imaging
sudo systemctl stop mqtt_imaging
特设Wi-Fi网络设置
要从多个覆盆子PI摄像机获取图像,每个摄像机应
连接到覆盆子皮板。一个树莓pi 3 b+应该运行
mqtt_broker
服务,它还可以为
相机连在上面。其他覆盆子皮板(如覆盆子皮零W)
应该为各自的摄像机运行mqtt_imaging
服务。然后
Raspberry Pi 3需要配置为承载一个简单的即席Wi-Fi网络。
启用ad hoc网络
注意:当前无法正常工作。而不是建立一个特别的 网络,覆盆子pi板都需要连接到无线网络 接入点。
启用和禁用ad hoc网络的详细信息由 simondlevy/rpiadhocwifi回购:
cd ~/Desktop
git clone https://github.com/simondlevy/RPiAdHocWiFi.git
对埃纳启动ad hoc网络,运行以下命令并重新启动覆盆子pi:cd ~/Desktop/picamera-mqtt
sudo cp deploy/systemd/mqtt_broker.service /etc/systemd/system/mqtt_broker.service
sudo systemctl enable mqtt_broker
0
这将创建一个具有ssidraspberry-pi-1
和raspberry pi
可在IP地址192.168.2.2
连接到ad hoc网络
要配置其他Raspberry PI板,请将deploy/adhoc/rc.local
复制到
/etc/rc.local
:
cd ~/Desktop/picamera-mqtt
sudo cp deploy/systemd/mqtt_broker.service /etc/systemd/system/mqtt_broker.service
sudo systemctl enable mqtt_broker
1
并将deploy/adhoc/wpa-supplicant.conf
复制到/etc/wpa-supplicant/wpa-supplicant.conf
:
cd ~/Desktop/picamera-mqtt
sudo cp deploy/systemd/mqtt_broker.service /etc/systemd/system/mqtt_broker.service
sudo systemctl enable mqtt_broker
2
系统测试
使用连接到mqtt代理服务器的可操作camera客户机,可以运行 在运行mqtt代理服务器的计算机上进行一些测试以确认正确的映像 传输:
cd ~/Desktop/picamera-mqtt
sudo cp deploy/systemd/mqtt_broker.service /etc/systemd/system/mqtt_broker.service
sudo systemctl enable mqtt_broker
3
这将与摄像机客户机进行往返通信 客户端名称通过向摄像机客户端发送图像采集消息 每8秒接收(和丢弃)摄像机客户端捕获的图像。
要保存这些图像,请运行以下测试:
cd ~/Desktop/picamera-mqtt
sudo cp deploy/systemd/mqtt_broker.service /etc/systemd/system/mqtt_broker.service
sudo systemctl enable mqtt_broker
4
这将以15秒的间隔从
所有连接到代理的camera客户端的客户端名称均为camera_1
,camera_2
,
和camera_3
;可以通过编辑配置文件来更改查询的客户机名称。
默认情况下,图像将保存到data
目录,但您可以更改
使用--output_dir
标志指定不同的路径。
如果只想在一个时间点捕获图像快照,请运行以下测试:
cd ~/Desktop/picamera-mqtt
sudo cp deploy/systemd/mqtt_broker.service /etc/systemd/system/mqtt_broker.service
sudo systemctl enable mqtt_broker
5
默认情况下,图像将保存到data
目录,但您可以更改
使用--output_dir
标志指定不同的路径。默认情况下,图像将
在开始时用acquire
保存文件名,但您可以用
--output_prefix
标志指定不同的文件名前缀。
系统管理
您可以远程向raspberry pi客户机发送部署管理命令
通过部署
主题发送消息。这个
picamera_mqtt/tools/deploy/mqtt_send_deployment
脚本允许您执行此操作
从命令行,如下所示:
cd ~/Desktop/picamera-mqtt
sudo cp deploy/systemd/mqtt_broker.service /etc/systemd/system/mqtt_broker.service
sudo systemctl enable mqtt_broker
6
摄像机参数调整
您可以远程向raspberry pi客户机发送相机参数更新命令
通过控件
主题发送消息。这个
picamera_mqtt/tools/deploy/mqtt_send_camera_params
脚本允许您执行此操作
从命令行,如下所示:
cd ~/Desktop/picamera-mqtt
sudo cp deploy/systemd/mqtt_broker.service /etc/systemd/system/mqtt_broker.service
sudo systemctl enable mqtt_broker
7
请注意,如果您愿意,可以将所有相机参数标志组合成一个命令。