基于mqtt的本地和远程网络化覆盆子pi摄像机控制和图像采集。

picamera-mqtt的Python项目详细描述


picamera mqtt

基于mqtt的本地和远程网络化覆盆子pi摄像机控制和图像采集。 部署脚本需要从树莓pi运行。其他脚本可以从任何计算机上运行。

MQTT代理服务器设置

要运行mqtt代理服务器,请编辑deploy/config/broker.conf,然后运行 部署/mqtt_broker.sh

代理自动启动

要在主机raspberry pi启动时自动运行mqtt代理程序, 安装mqtt_broker.servicesystemd单元:

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.jsonconfig文件,以便:

  • hostname参数是localhost(如果您的mqtt代理正在运行 与客户端在同一台计算机上)或运行的计算机的IP地址 您的MQTT经纪人。
  • 客户机名称参数和目标名称参数都应该说明 camera_n,其中n应替换为相机的唯一ID号 客户端。此ID号将用于唯一标记每个相机流。

摄像头客户端软件自动启动

要在覆盆子pi启动时自动运行camera mqtt客户机, 安装mqtt_imaging.servicesystemd单元:

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_1camera_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

请注意,如果您愿意,可以将所有相机参数标志组合成一个命令。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
javagae/JPA/Datastore如何查询无主列表   java从xml中读取未知元素   java如何在控制台上显示MavReplugin单元测试覆盖率报告   java什么被认为是遍历LDAP DIT的正确方法?   Eclipse(Java)在创建了一个新包之后,我无法向其中添加源文件   java new REngine启动并立即停止   java Android:如何从保存在SQLite数据库中的listview中删除项目?   找不到java Gradle DSL方法:“compile()”错误   java使用POI获取具有特定列名的每一行中的值   java解析JSON文件   java中断for循环,返回4个结果,而不是2个   LDAP处理过程中发生java未分类异常;嵌套的异常是javax。命名。NamingException   当表单在基于spring3注释的控制器中验证失败时,java引用数据将丢失   java Android,从web获取数据并更新UI(多线程和MVC设计模式)   用于OS X Yosemite的java优化Swing程序