基于STM32的书童机器人控制系统设计与实现
2021-01-22邓亮才肖卫初黄楚喻袁子玄黎梓昕
邓亮才,肖卫初, ,黄楚喻,袁子玄,黎梓昕
(1. 湖南城市学院 信息与电子工程学院,湖南 益阳 413000;2. 全固态储能材料与器件湖南省重点实验室,湖南 益阳 413000)
随着“二胎政策”的全面实行,中国的儿童数量急剧增多,随之出现的问题就是孩子的教育问题.由于生活压力,不管城市还是农村的父母基本上都是忙于工作,特别是农村家庭,父母经常不在家,这就导致许多孩子变为留守儿童.随着信息化时代的到来,人工智能、大数据和物联网等技术的不断发展,带动了机器人技术的发展.目前市场上的陪伴机器人,其功能简单且价格昂贵,对于普通家庭来说并不是理想的选择.因此,研究一款性价比高的书童机器人很有必要.
近年来,随着儿童教育机器人的市场不断扩大,国内外的科研工作者对机器人的研究热情不断高涨.文献[1]给出了一款基于ARM 的多自由度人形教育机器人控制系统设计方案,它采用高集成度的 ARM 7 系列处理器,可以产生 17 路PWM 波控制舵机进而控制机器人的动作,缺点是动作调试太过麻烦,每次都需要重新对程序进行下载.为了能够进行更加方便的动作调试,文献[2]提出了一种 17 自由度仿真人形教育机器人控制系统设计方案,该系统采用总线舵机和串口通信协议,用定时器产生17 路PWM 波控制机器人的各关节,且可使用上位机软件调试动作,相对于直接用程序控制,上位机调试更加方便和快捷,但其缺点是功能较少,仅仅对17 自由度机器人进行了动作开发.为了给机器人增加更多的功能,文献[3]给出了一种基于STC12 单片机的17自由度娱乐教育机器人设计方案,它除了实现基本的动作功能之外,还增加了红外光检测来实现机器人的避障,同时支持用语音和无线遥控2 种操控方式控制机器人,并且还实现了音乐播放功能,但其缺点是机器人的主控性能过低,无法进行更多复杂功能的开发.
综上,书童机器人的研究重点是选取一款性价比高的主控芯片来实现诸多实用功能,并能方便快捷地进行动作调试.基于此,本文拟采用STM32 芯片来设计并实现一款功能较完备的智能书童机器人控制系统.该机器人共有 17 个自由度,可随时感应前方障碍物并作出反应,还可根据环境的光照强度自动开启照明灯;支持按键、手机、触摸屏和语音4 种操控方式;通过可充电锂电池3.7 V 升5 V 充电宝模块给主控系统供电,能实现电池反复利用.
1 总体设计方案
设计采用STM32F407ZGT6 作为书童机器人的主控芯片;电源采用2 节18650 电池并联,以及1 个3.7 V 升5 V 双USB 充电宝模块,可以使用数据线给主控和摄像头供电;采用Open MV4构建视觉系统,实现书童机器人的拍照和人脸识别功能,再搭配WINC1500 WiFi 模块实现远程视频监控功能[4-5];DHT11 温湿度传感器、光敏传感器和超声波传感器分别用来检测外界的温度、湿度、光照强度和前方物体距离;LCD 显示屏用来显示实时数据.
书童机器人的本体均采用高扭矩、虚位小、高精度和高反应的数字舵机,24 路舵机驱动板可通过上位机进行书童机器人的动作调试,主控芯片利用串口调用已调试好的动作;MP3 模块通过串口调用并播放MP3 和WAV 格式的音频[6];此外,系统还移植中文字库到主控模块的 W25Q128 Flash 芯片,用来实现中文汉字的显示[7];采用4×4矩阵键盘、HC-05 传输模块、4.3 寸LCD 触摸屏和LD3320 语音识别模块,实现智能书童机器人的4 种操控方式.系统结构如图1 所示.
图1 系统结构
2 主要硬件设计
2.1 24 路舵机驱动板单元
机器人本体的17 个数字舵机采用24 路舵机驱动板进行控制,其核心是STM32F103RBT6 芯片,如图2 所示.该驱动板可以产生24 路稳定的PWM 波;可提供1 个2 座供电接口和1 个Micro USB 接口,通过数据线连接上位机和给外部系统供电;提供1 个串口通信的接口;集成的稳压/过载保护电路可以使24 路舵机驱动接口的输出电压保持稳定;电压测量/报警电路检测到电压低于阈值时,会触发蜂鸣器报警[8-9].
图2 24 路舵机驱动板单元结构
2.2 Open MV4 摄像头单元
Open MV4 摄像头单元可实现拍照、人脸识别和视频监控等功能.它以 STM32F743VIT6 芯片作为主控,搭载1 个30 万像素的OV7725 摄像头,摄像头内置图像算法,可以通过调用这些算法来实现相应功能;集成1 个TF_card 接口,可以插入 TF 卡或者内存卡来保存摄像头拍摄的图片和视频;使用USB 或者3.7 V 锂电池给Open MV4 摄像头供电;利用GPIO 口连接各功能模块或与其他单片机通信;Open MV4 通过P4 和P5 IO口与书童机器人的主控进行串口通信.摄像头单元结构如图3 所示.
图3 Open MV4 摄像头单元结构
3 软件设计
系统上电后,书童机器人本体和各功能模块进行初始化,开启手机蓝牙,无线连接书童机器人,显示屏会显示当前的温度、湿度、光照强度和前方障碍物的距离(若环境的光照强度过低,机器人会自动开启照明灯);通过按键、手机、语音和触摸屏 4 种方式来操控书童机器人的动作(书童机器人行走过程中可开启自动避障功能),可以完成即时开启或关闭照明灯、场景拍照、人脸识别、音频播放和远程视频监控(连接书童机器人的热点,通过手机或者电脑查看)等功能[10-11].系统主程序流程如图4 所示.
3.1 舵机通信协议
主控通过串口和24 路舵机驱动板进行通信,24 路舵机驱动板的串口波特率配置为9 600.首先,用上位机软件调试好书童机器人的动作;其次,保存动作文件至24 路舵机控制板;最后,主控调用动作文件完成机器人的各种动作控制.
舵机通信协议如表1 所示.协议约定数据的前2 位为0x55 的帧头;其后是数据长度,数据长度的值为本身占用的1 个字节数加上后面的指令和参数的个数N,即N+2;最后面是控制指令及其参数列表,不同控制指令的参数列表位数不同;按协议编写的代码可控制单个舵机的旋转,运行保存在舵机驱动板里的动作,以及获取电池电压等功能参数[12].
3.2 Open MV4 程序流程
首先,配置好要创建的热点名称、密码和端口号;其次,初始化摄像头传感器;最后,初始化Open MV4 的串口3,波特率设置为9 600,重置红、绿、蓝 3 个 LED 灯.主控与 Open MV4用杜邦线通过串口通信,主控发送指令后,Open MV4 判断它是否是拍照保存、人脸识别或视频监控命令.如果命令是拍照保存,那么设置将要拍照的图像格式和分辨率,红灯亮2 s,提示用户准备,然后红灯灭蓝灯亮开始拍照,利用save 函数保存拍摄图片到 SD 卡的指定路径,改变图片的文件名以防止重复覆盖先前的图片,蓝灯灭表示拍照完成;如果命令是人脸识别,那么设置图像格式为灰度图,并设置好图像分辨率,拍摄当前人脸,提取图片的LBP 特征与SD 卡中预先保存的人脸数据进行对比,若其结果在阈值范围内就使绿灯亮1 s,提示识别成功;如果主控命令是视频监控,则连接并初始化WINC1500 WiFi 模块,设置好图像格式和分辨率,创建 AP 热点和服务器套接字,绑定热点并进行监听,利用accept 函数处理连接请求,连接成功后,传输 JPEG 视频流到客户端浏览器,同时,异常处理机制会一直持续捕捉异常情况并及时予以提示.
图4 系统主程序流程
表1 舵机通信协议
4 测试结果与分析
该书童机器人共有17 个自由度,分别用17个数字舵机控制,其中头部1 个,手臂各3 个,腿各5 个;书童机器人的主控单元放在胸部;其头部采用数字单轴舵机和 Open MV4 摄像头(摄像头背面安装LCD 显示屏)实现机器人头部转动和现场视频、图像采集;集成的 4.3 寸接触式电容显示屏负责数据显示和机器人控制;机器人左右肩部各安装了1 个照明灯,通过4 种操控方式均可控制该照明灯;肩部安装的温湿度模块、超声波模块和光敏电阻传感器模块,作为书童机器人的触觉系统,检测外界环境并对一些特殊情况作出反应;机器人背部的24 路舵机驱动板可驱动17 个舵机分别控制书童机器人的各种动作.书童机器人的实验样机如图5 所示.
4.1 操控测试
手机蓝牙和触摸屏的操控测试界面如图6 所示.首先,打开蓝牙调试器APP,找到“book boy”这个蓝牙名称;其次,点击“book boy”蓝牙后面的“+”图标,添加设备并连接成功;最后,点击控制按钮,进入手机控制界面,如图6(a)所示.
图5 书童机器人样机
图6 操控测试
LCD 触摸屏操控界面如图6(b)所示,其下面部分是控制界面,每个不同的功能都用相应的汉字加上矩形框显示,只需要点击对应的位置就可以控制并实现书童机器人的不同功能[13].
4.2 动作测试
在光滑地面上用黑胶布粘贴成十字型,将书童机器人正放在十字的交叉点,正常启动后,依次点击手机控制界面的前进、后退、左转和右转按钮,可以实现书童机器人的对应动作.测试效果如图7 所示.
图7 动作测试
4.3 人脸识别测试
点击触摸屏上的人脸识别按钮,依次将Open MV4 摄像头对准已将人脸数据保存在图像库中的测试员和未保存人脸数据的测试员,观察摄像头后方的LCD,确保人脸被完整拍摄.如果识别到当前人脸为人脸图像库(图像识别库目前只保存1 张人脸图像)已保存的人脸,Open MV4 摄像头的绿灯就会亮起;如果人脸无法识别或数据匹配不成功,那么无现象[14],效果如图8 所示.
图8 人脸识别测试
从图 8(a)可以看出,识别已保存人脸图像数据的测试员时,Open MV4 的绿灯亮起,说明当前人脸识别、匹配成功;图 8(b)则表明,对另一名未保存人脸数据的测试员进行识别时,Open MV4 的绿灯没有亮起,这说明当前人脸没有识别、匹配成功.
4.4 视频监控测试
首先,打开手机WiFi 功能,进入WiFi 搜索界面;其次,点击触摸屏上的视频监控按钮,书童机器人主控即会通过串口发送视频监控指令给Open MV4 摄像头,Open MV4 开始连接并初始化WINC1500 WiFi 模块,并且创建一个名字为OPENMV_AP 的热点;最后,连接热点,打开手机浏览器(也可以用电脑操作),输入192.168.1.1:8080,若能顺利进入系统并且看到实时视频图像,就说明该智能书童机器人具有远程视频监控的功能[15].测试效果如图9 所示.
图9 视频监控测试
从图9 可以看出,手机界面有实时视频显示,这表明书童机器人远程视频监控功能正常.
5 结论
采用性价比较高的STM32F407ZGT6 单片机作为书童机器人的主控,能够为书童机器人实现较为复杂的功能提供良好的硬件支撑.该书童机器人具有 4 种操控方式,采用自带图像算法的Open MV4 摄像头,实现了拍照保存、人脸识别和视频监控等功能;它还能够检测周围温度、湿度、光照强度和障碍物距离,且自带音频播放功能.然而,该智能书童机器人还有一定的改进空间,如通过系统移植、添加通信模块和界面设计优化来进一步提升其实际操作体验.