• 收藏
  • 加入书签
添加成功
收藏成功
分享

基于树莓派的智能监控小车设计

李云昊 毛战华 沈凤 王晓堃 宋孟涛 崔明赛 郭美琪
  
富网媒体号
2024年4期
青岛农业大学 山东青岛 266109

打开文本图片集

摘要:本论文旨在设计和实现一种基于微信小程序的树莓派小车远程控制系统。该系统旨在解决传统远程控制方式的不足,并提供更便捷、灵活和智能化的控制方式。通过研究微信小程序的特性和树莓派的硬件结构,本论文提出了一种全新的远程控制方案。该方案利用微信小程序作为用户界面,通过互联网将用户的指令传输到树莓派上,并控制小车的运动。实验结果表明,该系统具有稳定可靠、操作简单、实时性高的特点,可以满足用户对树莓派小车远程控制的需求。

关键词:树莓派;控制;调试;服务器;传感器

0 引言

随着智能机器人的发展,机器人控制技术已经被广泛研究和应用。机器人也在生活中被广泛应用,相对于成品的机器人而言,树莓派智能小车的可选择性更多,可以自由搭配传感器,使功能趋向于专一化,以至于可以以低廉的价格作用于各行各业中。同时,智能小车更容易维修和保养,因此成为了很多机器人爱好者的不二选择[1]。

随着智能机器人的发展,人们逐渐意识到传感器可以用在生活的方方面面。尤其是可以自动检测的传感器。传感器也分有非常多的种类,比如常用检测的烟雾传感器 MQ2,超声波测距传感器,红外线传感器,气体浓度传感器,温度传感器等等。而在国内使用处理器+传感器的形式也越来越多,也有越来越多的开发者使用 C51,stm32,树莓派等做出了相应的作品。而利用小车循迹来进行实时监控的内容还很少见。因此,当家中无人时,利用小车按规定好的路线行驶,不妨是一种新的尝试。

让小车循迹,首先是小车必须具有红外传感器模块,其次是在路上可能存在障碍物,利用超声波测距的原理使其统开障碍物继续回到原来轨道上行驶,实现避障功能。再次是如果家中出现情况,如火灾等特殊情况,气体传感器能够检测到异常,且微信小程序具有容易开发,适用性好的特点,通过微信小程序在 websocket的基础上与树莓派小车进行通信,用户可通过程序来控制小车。最后,如果检测到异常,应立即通知家中主人报告目前家中状况。

1.树莓派小车的组成与连接

1.1树莓派小车的硬件组成

Raspberry小车具有3B/3B+或者4B开发板,1个T型扩展板(必要时可以使用杜邦线和T型扩展板继续延伸),1-2个L298N电机驱动板,4个DC3V-6V直流减速电机马达,4个智能车橡胶轮,2个红外避障传感器,2个红外循迹传感器,2个超声传感器,1个摄像头,舵机,以及锂电池组和电源扩展板。

1.2树莓派小车的软件组成

小车是以python为环境大框架进行编程,来控制小车运行。

1.3树莓派小车的启动,与电脑的连接

在首次使用树莓派小车时,需要将里面的TF卡拔出,到raspberry官网上下载对应的系统版本,待下载完了之后就可进行烧录,设置好用户名,密码等后就可以连接电脑了。

首先,首次连接树莓派需要网线,插上网线后进入putty中的SSH输入ip地址,密码后就可以进入了,在进入之前可以在电脑中win+r中ping小车的ip地址检验其是否连接上。

利用SSH进入树莓派后,在终端输入命令sudo raspi-config即可在里面找到interface options中的VNC,打开即可,以后可在VNC中进入树莓派桌面。

使用VNC启动树莓派,因为树莓派中自带的是python2,所以要先将之前python的链接给删除,利用sudo rm/usr/bin/python后,再输入sudo In -s/usr/bin/python3.7/usr/bin/python以下载新的python3.7。(也可以下载python的其它版本)

在之后大部分的库都可以使用pip3 install 库名称来进行安装。以后想要再查看python的版本可以直接在终端输入python即可[2]。

2.小车循迹

2.1小车循迹的器件

此红外传感器探测距离为0-30CM,其探测距离的长短和供电电压、电流与周围的环境有关,且抗干扰能力强,在室外阳光直射下也能正常工作。

2.2小车运动的设置

小车在运动时,走直线时两侧的轮子运动。而在转弯时,目标方向的车轮转动。可以自行编写程序来测试小车的运动。

2.3小车循迹的原理

在所有颜色中,黑色具有较强的吸收能力。当循迹模块发出红外线照射到黑色时,此红外线会被黑色吸收,导致循迹模块中的光敏三极管处于关闭状态。从而在检测到黑线时,D0输出高电平,LED灯灭,小车会按照对应的方向进行旋转。反之则D0输出低电平,小车则按照原轨迹路线继续直线行驶[3]。

在本图形中,用矩形方框代表小车的左,右两个循迹模块。小车将沿着计划的轨道顺时针绕行。

如果路径上没有黑色预定或标定轨道,那么代码块中的部分将无法执行。

3.小车避障

3.1小车避障的器件

此超声波传感器的直流电压为5V,静态电流<2mA,感应角度≤15°;探测距离为2cm-450cm,精度可达0.3cm。

3.2小车避障的基本原理

利用超声波在空气中的传播速度是已知的,测量声波在发射后遇到障碍物反弹回来的时间,根据发射和接收的时间差来计算出发点到障碍物的实际距离。利用压电效应的原理,将电能和超声波相互转化。在发射的时候,将电能转换,发射超声波;在收到回波的时候,则将超声振动转化为电信号。

控制口发一个10us以上的高电平,就可在接收口等待高电平输出。有输出时就可以开启定时器计时,当此口变为低电平时就可以读取定时器的值,为此次测距的时间,因而可以根据声速算出距离。

超声波传感器包括了发送端(Trig)和接收端(Echo)两个端口,用IO口Trig触发测距,给在至少10us的高电平信号下模块就会自动发射方波,同时接收端就会输出高电平,当接收到反射回来的信号时,Echo接收端又会跳转为低电平。因而我们可以求出前方障碍物的距离:Echo高电平持续时间*声速/2。

当障碍物距离达到一定的阈值的时候,小车会执行左转-右转-右转的命令或者右转-左转-左转的命令以恢复原路线,在转弯时超声波监测不停止。

4.小车的传感检测

4.1 GPIO口的设置

在树莓派的终端,我们需要输入gpio -v和gpio readall命令来查看GPIO口的情况,以便于接入传感器对应的引脚位置。

4.2 MQ2烟雾传感器及其其它器件配置

4.2.1 烟雾传感器

MQ2烟雾传感器一共有4个引脚,分别是VCC,GND,A0,D0。A0主要针对模拟量的输出,需要另外接入D/A转换器,D0主要针对数字量的输出,不需要其它外加设备。这里仅使用D0,来自行设置阈值k,当浓度c≥k时,会显示”检测到有烟雾”,反之,当c<k时,会显示”未检测到烟雾”。[4]

此外,MQ2烟雾传感器的灵敏度是可以通过拧动螺丝来自行调整的。当出现极端情况时,如在正常情况下一直显示”检测到有烟雾”则可以拧动螺丝自行调整。MQ2烟雾传感器在使用前需要提前预热。

4.2.2 D/A转换器

D/A转换可以将数字量转换为模拟量,因此如果想要读出烟雾浓度的模拟值可以采用D/A转换器。其次如果想实现别的功能,例如温度传感器,蜂鸣器等等也可以采用D/A转换器来拿到更多的数据。

4.2.3 蜂鸣器

蜂鸣器是和MQ2烟雾传感器一起使用的另一个硬件,它的作用就是当不正常的情况发生时,通过以响铃的方式提示周围的人。但是蜂鸣器的音量和音调有限,在目前隔音效果好的地方也不一定能被人发现。若要使用蜂鸣器,就必须接入D/A转换器。

5. 监控与实时上传图像

5.1 摄像头

本树莓派小车使用的是CSI摄像头,在使用前需要先检验其摄像头的性能,清晰度,照片范围等等。

首先要下载安装最新的内核,GPU固件和应用程序等,在终端输入sudo apt-get update和sudo apt-get upgrade,然后在终端输入sudo raspi-config后进入interface options中的camera点击enable后重启即可。

进入终端输入sudo fswebcam test.jpg即可在摄像头对准的地方拍下一张照片,这张照片会以test的名字存放在文件夹中。

但是在这种情况下,摄像头不能自行移动。所以只能拍摄一个地方。我们可以编写程序使得摄像头每间隔时间t拍摄一次。而如果家中出现异常情况,烟雾传感器监测到气体浓度过高时,可以编写程序拍下当时的照片。

5.2树莓派与手机的通信功能

最终如果出现异常情况是要通知给自己或者家里人的。所以在这里我们采用了树莓派和微信小程序通信的方法。

5.2.1 界面设置

首先微信小程序的界面设计我们可以通过微信小程序的专用设计软件微信开发者工具,在里面我们可以设置小车的移动,实时画面等按键。在进入之前需要输入树莓派的ip地址。

5.2.2 实时图像上传

在这里我们使用websocket来进行连接,WebSocket 是一种网络传输协议,可在单个 TCP 连接上进行全双工通信,位于 OSI 模型的应用层。WebSocket协议在 2011 年由IETF 标准化为 RFC 6455,后由 RFC 7936 补充规范。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。[5]

在后端,需要搭建一个支持websocket通信的服务器,可以使用Node.js搭建WebSocket服务器,在服务器端代码中监听WebSocket连接,并处理前端发送过来的消息。

在小程序端,通过WebSocket API与后端建立连接,在小程序的代码中实现WebSocket的相关逻辑,在小程序页面的.js文件中引入WebSocket API,通过wx.connectSocket()来创建WebSocket连接,在wx.sendSocketMessage()和wx. onSocketMessage()来进行发送和接受消息,

最后通过wx.closeSocket()来关闭WebSocket连接,在小程序使用WebSocket时,需要在小程序的配置文件(app.json)中配置安全域名,确保连接到服务器域名在小程序域名白名单中。

使用Node.js搭建一个WebSocket 服务器,让微信小程序和树莓派都能与该服务器进行WebSocket连接。使用ws模块或其他WebSocket插件来快速搭建一个WebSocket服务器。确保该服务器能够被微信小程序和树莓派访问。

在微信小程序中,可以使用小程序的WebSocket API连接到搭建好的 WebSocket服务器。按照之前提到的步骤,建立与服务器的WebSocket连接,发送和接收数据。

在树莓派中,通过编写Python程序(使用websocket-client库)来连接到搭建好的 WebSocket服务器。在树莓派上安装websocket-client库,并编写相应代码实现与服务器的WebSocket连接。[6]

最后在微信小程序和树莓派两端分别测试WebSocket 连接,确保能够正常发送和接收数据。可以通过日志输出和调试工具来排查问题并确保连接正常。

6. 小车的剩余设置

6.1 小车的散热处理

树莓派4B在运行的时候会急剧发热,在实验中,核心控制板会出现发烫的情况下,可以考虑加入散热器处理。

6.2 小车的充电处理

小车在运行的时候电量会消耗得很快,可以更换可充电大容量电池进行处理。

7. 总结

7.1 结构可改进化

由于小车中目前可实现的功能有限,可以外接树莓派T型扩展板来拓展功能,比如温度监测等等。对于摄像头可以换成更高清的,可转动的摄像头。在今后会实现蓝牙与其它设备连接。

7.2 本作品给物联网发展带来的意义

本论文通过对智能小车的改造来达到移动式安防系统的功能,websocket的搭建使得微信小程序和树莓派成功连接,基于微信小程序的树莓派小车远程控制系统能够为用户提供便捷的远程控制体验,同时结合实时视频监控和传感器数据显示,可以增强用户对小车周围环境的感知和控制。具有一定的实用和推广价值,希望本论文可以为物联网领域的研究和应用提供新的思路和方法。

参考文献:

[1]杨德青.基于树莓派的智能循迹小车设计[J].信息技术与信息化,2023,(06):178-181.

[2] 韩改宁,苏静池,张瑞斌.基于树莓派的智能小车的设计与开发[J].电子设计工程,2024,32(01):6-10.DOI:10.14022/j.issn1674-6236.2024.01.002.

[3] 尹延龙,丁瑞好,董铮.基于树莓派的交通灯实时控制系统设计[J].电子制作,2024,32(02):89-93.DOI:10.16589/j.cnki.cn11-3571/tn.2024.02.019.

[4] 冒子昂,陆栎.基于树莓派的森林火灾检测系统设计[J].山西电子技术,2023,(06):8-10+20.

[5] 马睿,王荣,魏峻超. 一种基于树莓派和Socket通信的视频小车设计方案[J]. 电脑编程技巧与维护,2020(12):129-130. DOI:10.3969/j.issn.1006-4052.2020.12.049.

[6] 杨杰,李庆杰. 基于微信小程序云服务与树莓派开发线上监控设备的研 究[J]. 电子质量,2019(11):45-49. DOI:10.3969/j.issn.1003-0107.2019.11.010.

*本文暂不支持打印功能

monitor