【IoT毕业设计】树莓派开发板+机智云IoT+监测机器人
摘要:以小车为基底,以树莓派开发板为中心,搭载摄像头、传感器等数据采集设备,采用CC2530为传感器处理器、ZigBee技术为无线传输,实现了各节点间的通信。以ItChat微信机器人框架为基础,二次开发植入百度AI开放平台的语音技术、图灵机器人的中文环境对话技术和机智云技术,以达到使用微信客户端文本或语音输入控制与管理设备的效果,解决了家电设备之间的互联互控互通问题,同时具备一次性或周期性定时功能,使人们在享受舒适生活环境的同时实现节能。
前言
随着物联网技术的飞速发展,智能家居的理念已经深入人心。按键、红外遥控器等传统控制方式易受环境的影响,且不能实现远程控制[1]。若使用产品专用App进行控制,虽然高效便捷、灵活性高,但兼容性差,不同厂家的智能家电无法实现互联互通,不便于统一管理。
机智云开发者本次研究中设计了一个基于ItChat和树莓派的环境监测机器人。在硬件层面,机器人可以通过树莓派小车进行实时、可移动的环境监测;在软件层面,机器人可以根据环境监测数据,通过微信客户端灵活地控制各个设备[2]。该系统不仅能实现智能设备之间的互联互通,而且具有定时任务功能,可以根据工作需要进行定时设置,以达到节能效果。
1系统组成
树莓派机器人主要采用小车底盘作为基底,搭载树莓派作为ARM主控板,携带摄像头和WiFi模块实现视频通信,配备ZigBee协调器实现无线传感器节点的数据采集和传输,结合远程控制程序实现数据互通和远程控制[3]。系统整体框架如图1所示。
图1系统整体框架
远程控制端主要包括云服务、用户和网络端三大部分。
云服务:提供设备接入的服务器,App和终端所发送的数据都将通过服务器转发至设备,以实现用户设备之间的数据传输。
用户:包括App和微信客户端,用户可以通过App或微信客户端进行系统管理,如设备绑定、控制使用等。
网络端:一台路由器或AP分享网络连接的联网设备,终端通过联网设备接入到Internet中。
2硬件系统设计2.1树莓派机器人硬件系统设计
本次研究以双层小车搭载树莓派B+作为主硬件系统,树莓派体积小,搭载使用方便,基于Linux系统开源的特性使其具有多元性。ARM主控板一方面实现了传感器节点模块之间的数据传输和汇集,另一方面还搭载了摄像头和电机驱动模块,利用L298N电机驱动电路控制小车运动,达到移动监控的目的,能够扩大数据采集的范围[4]。另外,在底板的前部和后部分别安装了超声波传感器,能够避免碰撞。
2.2传感器节点硬件系统设计
采用CC2530作为硬件系统的核心板,两层板的设计保证了ZigBee终端通信数据的准确性。该电路能在无遮挡的情况下,实现100m的有效传输距离,以满足系统需求。为了适应不同传感器的接口需求,系统参考arduino系列的管脚分布电路设计,适配常用的传感器,以提高系统的兼容性。同时,系统将CC2530引脚通过排线接出,以便后期灵活添加和调整[5]。
系统配置DHT11温湿度传感器、SW-420震动传感器、MQ-2烟雾气敏传感器和HC-SR501热释电红外传感器等采集家居环境参数,以便作出相应操作[6-7]。系统将CC2530的IO口通过排针的方式引出,以便后期扩展使用。
2.3输出控制系统硬件设计
基于传感器节点系统所采集的数据,系统可以通过输出照明设备或者排插开关控制设备。照明设备或者排插开关的功能单一,仅需操作GPIO,在GPIO上外接一个高电平驱动的继电器,用于控制设备。
2.4硬件系统整合将上述各部分进行整合,每个部分主要通过GPIO接口和USB接口与ARM主控板连接。机器人硬件连接图如图2所示。
3软件系统设计3.1微信框架ItChat设计微信框架ItChat既可以捕获来自系统、好友和群聊的信息,又可以返回信息,能够实现信息交互。系统融入了机智云AIoT的设备控制技术、百度AI开放平台的语音技术和图灵机器人的中文对话技术等,搭建了一个简单的中文对话系统[8]。
微信框架ItChat设计流程如图3所示,导入所需的库,进行个性化的参数设置,扫描二维码启动微信,通过微信监听,等待有效信息并进行处理。图3微信框架ItChat设计流程
3.1.1百度AI语音信息匹配技术现在的手机基本都有语音助手,可以先将用户说的话转换为文本信息,再分析文本信息所表达的含义。使用ItChat将收到的语音消息下载并保存为MP3格式文件。由于百度AI的语音接口不支持MP3格式文件,所以使用Pydub库和FFmpeg对语音文件作WAV合成处理,最后将合成后的WAV格式文件提交至百度AI。若服务器成功识别语音文件,则返回识别结果;反之,则返回错误信息。若ItChat收到的是文本消息,则不进行以上处理。
当语音消息转换为文本消息后,可利用百度AI开放平台提供的Python的相关SDK进行信息匹配。信息匹配的方法包括利用字符串内建方法对简单文本信息进行检索、利用正则表达式对复杂文本信息进行匹配等。实现信息匹配后就可以进行定时开关的控制操作。
3.1.2调用平台API机智云和图灵机器人仅提供RESTfulAPI风格调用接口,调用API时需要向服务器发送HTTP请求。Python有Urllib、Urllib2、Requests等网络通信库,既可以用来获取网站内容,又可以用来向Host提交数据。Requests库访问HTTP的方法有Get、Post、Put、Delete等[9]。
3.1.3设备联动、定时及远程控制
智能设备的远程控制、数据获取、设备绑定等基本功能和定时、联动等高级功能都是通过机智云的WebAPI实现的。WebAPI有丰富的功能接口,如用户管理、消息中心、绑定管理等。在开发过程中将它们封装成一个类,以简化代码,方便使用。
3.2照明设备软件设计系统可使用机智云平台提供的自助式软硬件开发工具,即代码自动生成工具。只需在“.\app\user”文件夹目录下“user_main.c”文件里面的user_init()函数下添加外设初始化代码,将GPIO4设为输出模式。生成代码前,在数据点中添加一个名为“Switch”的数据点,机智云事件处理函数内的Switch语句就会有相应的开关事件,当设备收到来自App的数据后便会作出处理。
设置函数控制输出电平的高低,从而控制继电器的开关。修改代码后,将整个源代码在装好Tensilica相关GCC编译器的Linux环境下,利用“sudo./gen_misc.sh”编译生成二进制文件,再采用乐鑫官方下载软件将其烧写固件到ESP12-N中。
3.3网络传输模块程序设计
与Iw-Tools不同,Wpa_Supplicant软件支持WPA和WPA2加密,能够较好地保障通讯的安全性[10]。软件在ArchLinuxARM发行版上的安装步骤如下:(1) 运行“pacman-Sywpa_supplicant”进行软件安装。(2) 运行“nano/etc/wpa_supplicant-wlan0.conf”配置文件。
当机器人与电脑或手机连接的不是同一个WiFi时,就会面临路由器穿透问题,因为机器人和主控端都在内网,没有公网地址。这时,必须经由路由器访问公网连接机器人网络中的路由器,再经由机器人网络中的路由器访问机器人。这种转发显然不能由安装在机器人或主控端上的软件直接完成,因此,需要考虑一种解决方案。
目前市场上的路由器多数使用的是UPnP技术,该技术允许内网向特定地址群发送一个广播包进行通讯,指示路由器为特定端口放行,即所有公网发往该端口的数据包都将转发给指示发起人,进而完成双端的直接连接。
虽然UPnP技术能够实现双端转发,但双方并不知道对方地址,无法直接建立连接。此时,需要公网上有一台服务器提供协商服务,可以使用Google开放平台提供的STUN服务[11]。
3.4视频传输程序设计
研究发现,当摄像头获取的图像静止时,单位时间内的差异非常小,即使有物体运动,背景图像通常也没有变化,因此,应在传输时只传送变化的部分以节省带宽。显然,对于需要适应工作环境的机器人而言,图像数据的传输应当是最低优先级且允许丢包,但H264压缩算法若丢失了关键帧(I帧),将导致P帧和B帧无法还原,且每次建立连接都需要再传输参数数据(如图像的尺寸、压缩算法、帧率等)。
基于以上分析,本次研究采用了常用于机器人的人脸识别或物体移动侦测的跨平台计算机视觉库OpenCV。OpenCV经由UVC获取摄像头图像,并采用OpenCV的Absdiff方法找寻其与上一帧的差异,将差异块传输至主控端进行覆盖还原。差异帧是节省带宽的关键,但考虑到丢包或拥挤时应出让带宽给控制指令和传感器数据,因此差异帧只存在2s,每隔2s传输一次完整图像,图像经由JPEG算法压缩。视频传输时序图如图4所示。
4系统测试4.1传感器节点数据传输测试
为了保证数据采集的正确性,首先进行单个传感器的连接测试,然后将CC2530通过串口与计算机连接,调试、设置参数,观察PC机接受到的数据信息。基于系统的需求和功耗,将传感器的采集周期设定为5s,而对于震动传感器和红外传感器,一旦发生状态变化就立即发送数据。
图4视频传输时序图
4.2机器人移动及视频监控性能测试
利用ListView在客户端底部设计了小车移动、摄像头、采集节点、温湿度曲线图等4个图标,点击按钮即可打开相应功能并高亮显示。进入机器人移动控制界面时,实时视频采集功能便会同时开启,此时,通过方向按键可发出移动控制指令。机器人移动控制和视频传输演示图如图5所示。测试表明,客户端可以顺利控制机器人移动,视频传输正常。图5机器人移动控制和视频传输演示图
4.3微信客户端的功能实现验证4.3.1扫码绑定设备及配网
进入主界面后,点击“扫码绑定设备”按钮,系统开启摄像头扫描设备二维码,扫码完成后主界面就会出现该设备名称,此时的设备图标呈灰色状态,说明还未进行配网。点击“添加设备”,系统会要求输入WiFi密码,完成配网工作之后就会显示设备名称。点开设备的开关按钮,即可控制设备状态。扫码绑定设备界面如图6所示。
图6扫码绑定设备界面
4.3.2语音识别功能验证打开微信客户端机器人,在聊天对话框中发送一条“打开照明”的语音信息。机器人将识别语音信息,并将信息返回给用户确认,若没有接收到错误信息,则机器人完成打开照明的操作,并发送“操作成功”。语音识别验证如图7所示。
图7语音识别验证
5结语本次研究以ARM嵌入式技术为基础,设计了一个可移动的监测机器人。从最初的芯片选择、传感器配置、网络连接和客户端设计都是根据需求灵活定制的,以确保性能最优化。通过测试可知,机器人工作性能稳定,能够在灵活监测、采集环境数据的同时与树莓派和客户端很好地进行数据传输。
传感器工作正常,客户端方便易懂,若投入使用将会有很好的社会应用价值。智能机器人的发展空间巨大,未来可以考虑添加位置记忆的功能,结合自动寻路算法来完成路线绘制,并用于自动充电,以解决续航问题,还可以搭载更多的传感器,使系统更加智能化。
关键词:
机器人
树莓派
物联网