基于树莓派的移动环境监测系统
2019-08-15张一夫陈天飞冯明兴
张一夫 陈天飞 冯明兴
摘 要:文中设计了一种基于树莓派的移动环境监测系统,使用该系统能够释放劳动力、提高工作效率,并监测人无法到达的恶劣环境。该系统以树莓派嵌入式卡片电脑作为主控,与Arduino开发板控制的移动平台和STM32单片机控制的环境监测平台进行通信,能够在远程控制的情况下采集系统周围的图像和环境数据。经测试,发现该移动环境监测平台能够较好地实现预期功能,且工作稳定。
关键词:树莓派;移动平台;环境监测;远程控制;Arduino;STM32单片机
中图分类号:TP393文献标识码:A文章编号:2095-1302(2019)07-00-03
0 引 言
近年来自然环境逐渐恶化,对人们带来的负面影响越来越严重,保护环境的重要性日益提升[1]。为了更好地保护环境,需要对环境数据进行测量,目前虽然出现了一些远程测量技术,但由于种种原因[2],有时人们不得不暴露在恶劣的环境下测量数据。针对以上问题,本文设计了一种移动环境监测系统,系统中树莓派[3]分别通过两个USB串口、小车底盘的Arduino开发板[4]和环境监测系统的STM32单片机[5]通信,以实现获取环境监测数据和底盘自由移动的功能,配合USB摄像机完成图传,通过WiFi与上位机传输数据进行远程控制。
1 整体方案设计
系统的核心是树莓派,它与移动平台Arduino的通信由串口UART1完成,与STM32环境监测平台的通信通过串口UART2完成。除树莓派上的USB摄像机外,系统的传感器主要分布在STM32环境监测平台上。上位机与树莓派通信的目的在于远程控制平台移动,传输环境监测移动平台测得的环境数据和摄像机捕获的图像借助WiFi实现。
(1)树莓派通过WiFi与电脑进行远程连接实现远程监控的功能;
(2)通过树莓派上的摄像机捕捉画面,然后树莓派经串口控制移动平台并读取环境监测平台的数据;
(3)实现远距离控制系统的功能。
移动平台选择Arduino开发板作为控制器,还包括航模电池、电机驱动器、电机、编码器、稳压电源,能够根据树莓派发送的命令做出不同的动作。
环境监测系统选择STM32F103单片机,包括烟雾传感器模块、有害气体传感器模块、温湿度传感器模块、人体红外检测模块、光敏电阻光照检测模块。使用串口将侦测到的数据传递给树莓派进行远程监测,数据可通过系统自带的TFT-LCD屏显示,方便现场查看。
2 硬件设计
2.1 树莓派部分
树莓派共使用三个USB接口,分别接摄像机和两个USB串口模块。其中USB3连接摄像机用来采集图像,与树莓派VNC功能[6]配合实现远程监视;USB2接USB转串口模块与STM32环境监测系统通信以实现环境监测的功能;USB1接USB转串口模块负责与Arduino开发板通信,以实现通过树莓派控制小车行走的功能。树莓派USB口分配见表1所列。
2.2 小车底盘部分
Arduino开发板基于Atmega168单片机,其I/O口已映射到开发板的接口[7]。使用其作为控制器,配合树莓派、编码器、电机驱动器等设计移动平台,硬件设计如图2所示。
Arduino的I/O口中,0引脚和1引脚作为串口使用,以完成与树莓派的通信,小车使用2号和3号引脚采取外部中
断[8]的方法测速,电机驱动器使用两个BTS7960[9]驱动模块,将使能端接高电平,然后将正转端和反转端分别接入PWM引脚以调速。本文的两个电机驱动器分别使用开发板的5,6号引脚与9,10号引脚,其中5号引脚输出PWM脉冲时,代表小车左轮向前转;6号引脚输出PWM脉冲时,代表小车右轮向后转;9号引脚输出PWM脉冲时,代表小车右轮向前转;10号引脚输出PWM脉冲时,代表小车左轮向后转。根据对应管脚依次连接电源、串口、编码器、电机驱动器,开发板接线见表2所列。
2.3 环境监测部分
在环境监测平台中,各模块与STM32的对应关系如图3
所示。除STM32单片机外围电路占用的引脚[10]外,还包括与树莓派通信的UART2:引脚PA9,PA10;烟雾传感器模块的MQ2_ADC:引脚PA1;有害气体传感器模块的MQ135_ADC:引脚PC1;温湿度传感器模块的DHT11:引脚PC3;人体红外检测模块的PESON_CHECK:引脚PA4;光敏电阻光照检测模块的GZ_ADC:引脚PC2;LCD屏的SPI1:引脚PC6,PC7,PC8,PB12,PB13,PB14,PB15;FLASH存储模块的SPI2:引脚PA5,PA6,PA7。
3 软件设计
3.1 树莓派软件设计
树莓派在系统中与各组块通信,作为遥控信号的接收器以及图像数据和环境数据的发送器,其主要作用是根据用户命令完成动作,并将图像与环境数据通过WiFi回传,具体流程如图4所示。
小车底盘的操纵命令由树莓派的遥控程序提供,通过串口发送根据用户键盘输入的命令以控制Arduino动作。因为系统的串口通信距离较短,可以不考虑干扰以及数据丢失的情况,故采用十六进制数来代表各命令。命令分为设置档位、停车和移动三种,按Ctrl键串口输出十六进制的0,按空格键串口输出十六进制的1,按键盘方向键前后左右串口分别输出十六进制的2,3,4,5。命令与数据的对应关系见表3所列。
3.2 小车控制软件设计
小车底盘由树莓派通过串口控制,当Arduino接收到不同的命令后,会根据命令进行相应的动作,流程如图6所示,具体命令及其优先级如图7所示。
3.2.1 小車运动建模
小车运动速度的变化通过PWM调节驱动电机的电压实现,反馈测量则通过每个电机后面的编码器输出脉冲实现。使用Arduino对小车速度进行实时监测,小车电机安装的编码器输出脉冲分辨率PPR为375.22,即小车轮子转一圈后,输出的脉冲数量为375.22个。对脉冲进行计数,设共有n个脉冲,然后n除以分辨率PPR,得到轮子旋转的圈数,再除以时间t即可得到轮子的转速N,公式如下:
3.2.2 小车运动控制
小车的启停必须缓慢加速缓慢停车,否则容易空翻。以等梯度加速启动,刚开始速度设为0,经过延时、测速后判断是否达到预定速度,达到后不再加速,否则继续加速,具体流程如图8所示。
與等梯度加速类似,停车时缓慢减速。当接收到停车指令时进入停车程序,逐步减速,直至速度为0后停车。停车流程如图9所示。
3.3 环境监测系统软件设计
环境监测系统的主要功能是获取各传感器的数据,STM32单片机读取各传感器信息,并将其输出的模拟量或数字量转化为可读的量后通过串口发送给树莓派,同时显示在LCD液晶屏上,循环执行,如图10所示。
4 系统调试
4.1 整体调试
搭建的系统如图11所示。
树莓派连接WiFi,通过VNC Viewer软件远程登录对系统进行调试。运行程序界面如图12所示,可以观测到树莓派回传的摄像机画面,以及环境监测开启按钮“Open”和环境监测关闭按钮“Close”。对小车进行控制,发现小车可以根据键盘的命令切换速度、停车以及移动。
4.2 环境监测系统调试
环境监测系统的PCB板及界面测试如图13所示。
5 结 语
本文通过树莓派搭建了一个移动环境监测平台,该平台能够替代环境工作者进行环境数据监测,在提高效率的同时保障工作人员的生命健康。本系统中,树莓派通过WiFi与上位机交换数据,通过两个串口分别控制STM32环境监测平台和Arduino移动平台,通过调试发现系统能够稳定地实现图传、远程遥控和实时采集环境数据的功能。
参 考 文 献
[1]孙晓东.环境监测与环境监测技术的发展分析[J].当代化工研究,2018(1):84-85.
[2]王幸,孙雯郁.抗恶劣环境下新型监控设备应用的重要性[J].经济师,2015(4):66-67.
[3]柯博文.树莓派(Raspberry Pi)实战指南[M].北京:清华大学出版社,2015.
[4] Michael McRoberts. Arduino从基础到实践[M].2版.北京:电子工业出版社,2017.
[5]喻金钱,喻斌.STM32F系列ARMCortex.M3核微控制器开发与应用[M].北京:清华大学出版社,2011.
[6] Simon Monk.树莓派开发实战[M].北京:人民邮电出版社,2017.
[7]蔡睿妍.Arduino的原理及应用[J].电子设计工程,2012,20(16):155-157.
[8]董铮,袁磊,宁彬.基于Arduino的电机转速控制系统[J].清远职业技术学院学报,2015,8(6):59-62.
[9]李慧,李秀歌,娄利峰.飞思卡尔智能车设计方法讨论[J].长春工程学院学报(自然科学版),2012,13(1):50-52.
[10]刘军,张洋,严汉宇.例说STM32[M].2版.北京:北京航空航天大学出版社,2014.