当前位置:首页 期刊杂志

基于STM32的室内共享智能轮椅控制系统设计

时间:2024-05-04

黄涌凌,谭嘉铭,陈锦楠,陈晓欣,叶宇航

(广州华立学院,广东 广州 511325)

0 引言

据第七次中华人民共和国人口普查数据显示,65 周岁及以上的人口已达1.9亿人,占比达13.5%[1]。目前,社会上使用广泛的传统轮椅依赖人力护工,可以预见未来对智能轮椅的需求量会逐渐增加。目前,市场上的共享轮椅仅实现了对传统人力轮椅的共享,并未实现更多对轮椅的智能控制。

本文提出了基于STM32室内共享智能轮椅控制系统,设计了针对室内场景的智能共享轮椅,根据用户实时的使用场景,通过超声波避障模块、报警电路、监控模块、摄像头模块及通信模块等实现智能轮椅的共享使用以及自主巡航功能。共享轮椅消费低,可减少人力成本支出。用户可通过手机端扫描二维码使用该轮椅,且其家属能通过手机端实时监测使用画面以及用户的实时健康数据。共享轮椅的亲民价格将会更加受欢迎,从而也可以实现轮椅管理的智能化与现代化。

1 系统硬件架构及总体设计方案

本设计主要由主控芯片、报警电路、避障模块、循迹模块、无线通信模块、电机驱动模块等部分组成。使用者通过微信小程序实现人机交互,确定位置信息,绑定使用轮椅。在循迹模块和避障模块的协同作用下,控制电机驱动,实现轮椅自主循迹导航。在该系统中,家属通过微信小程序可以观测数据,还可以远程监控实时使用画面。当蜂鸣器电路被触发时,能够借助EC20的无线通信通知到医护或家属的手机端小程序并进行报警提示。如若在使用轮椅过程中,遇到突发事件,按下轮椅扶手处的报警按钮,驱动蜂鸣器报警。采用STM32F103主控芯片的共享智能轮椅控制系统的总体设计如图1所示。

2 硬件电路设计

2.1 STM32最小系统

本设计运用单片机的A/D转换、数据存储、PWM、通信等模块,综合设计需求,采用STM32F103作为主控芯片。该芯片还集成了蜂鸣器模块、丰富的I/O接口和USART双向串口。STM32主控芯片接收EC20模块的信息,结合循迹模块和避障模块的信息进行处理,做出运动判断,控制电机驱动,轮椅前行。主控板最小系统电路如图2所示。

图2 主控板最小系统电路

2.2 摄像头模块

2.2.1 监控模块

在用户使用轮椅过程中,需要时刻关注病患的实时情况。本系统设计通过采用OV2640摄像头采集数据,使用I2C库函数读取OV2640的寄存器写入配置值。同时使用I2C库函数读取OV2640摄像头的图像数据,并将其存储到STM32微控制器的内存或外部存储器中供EC20无线通信模块调用,以发送实时图片至使用者的医护或家人的小程序上。

2.2.2 视觉循迹模块

在轮椅使用环境中,用不同颜色的线条在地上标识路线,规划轮椅循迹路径,相异颜色对应各种路线。Openmv K210单目摄像头用Python语言实现各种机器视觉算法。Openmv内含sensor、image、KUP等模块,本设计使用image模块绘制矩形框对图像进行分割,当出现在框内的颜色符合设置的LAB阈值,即检测到循迹路线。通过UART串口将循迹数据传送至主控驱动轮椅前行。

2.3 超声波避障模块

本设计选取的是多路超声波传感器对周围环境进行检测,得出主体与障碍物的距离以及角度,测得的障碍物信息定位智能轮椅的位置,为后面智能轮椅避障决策提供参考[2]。

本设计采用的是HC-SR04型压电式超声波传感器。将VCC和GND接好,指示灯亮,将Trig引脚连接到STM32的GPIO输出引脚用于发送触发信号,将Trig引脚置高电平,保持一段时间后再拉低即可发送一个触发信号。在STM32中配置GPIO引脚为输入模式,开始计时,并等待Echo引脚上的信号变为高电平,记录电平变化时间,计算出超声波信号的往返时间。在高电平时间乘声速(340 m/s)的情况下,将监测的间隔除以2,即可得出测试距离结果。

2.4 电机驱动

电机驱动控制系统是电动轮椅的主要部件,电路设计如图3所示。本设计选用的是42 mm的步进电机,步距为1.8°,选用具有大电流MOSFET-H桥结构[3]。本设计运用TB6612电机驱动芯片,带有双通道电流输出能直接驱动步进电机,同时支持PWM调速和正反转控制,只需要改变PWM脉冲宽度和改变控制信号即可实现功能。TB6612内置过热保护和过载保护电路,能够保护电机驱动器和电机不受损坏。

图3 电机驱动电路

2.5 报警模块

在用户使用轮椅过程中,为了避免一些紧急情况的发生。本设计运用主控STM32F103C8T6系统引脚PB8连接电压式有源蜂鸣器电路,将蜂鸣器开关按键安置于智能轮椅扶手侧位。突发紧急情况时,用户按下按键,蜂鸣器报警响应,及时发现和救助轮椅上的用户,提升使用者的安全系数。接好VCC和GND,当按钮开关未接通时,STM32的GPIO引脚为高电平,三极管截止,蜂鸣器失声。反之,当按钮开关接通时,STM32的GPIO引脚为低电平,三极管截止,蜂鸣器发声达到报警效果。

2.6 无线传输模块

本系统的无线通信模块为EC20通信模块,具备4 G上网、传输数据速度快等特点。使用UART库函数在STM32上发送AT指令到EC20模块。AT指令用于发送信号、连接互联网等。通过STM32的串口通信,用户可实现远程信息接收与发送。

3 系统软件设计

3.1 系统总体流程

本系统设计的智能共享轮椅,通过手机端微信小程序扫码即可使用,轮椅根据地上标好的路线进行循迹航行,在微信端可看见轮椅的行走路线和大致定位。扫码成功后,用户根据需要,可选择智能循迹导航,或者像传统轮椅一样手动使用。具体如图4所示。

图4 系统总体流程

3.2 小程序设计

为了使用户更方便地了解轮椅功能,本文制作了简单的微信小程序用于模拟真机,主要采用wxml、wxss和JavaScript等技术。用户不需要下载App就可快捷地使用小程序功能。此外,小程序还提供了一系列的插件和组件,开发速度较快。

3.3 GPS模块

首先在腾讯开发平台获取腾讯地图的webserviceAPI服务,再通过下载微信小程序JavaScriptSDK来获取地图的权限,接着在小程序的JS文件中配置生命周期,在WXML文件中设定特定的绑定事件,通过getlocation()函数来申请调用地图配置。当用户点击获取坐标时,手机通过定位取得腾讯地图的权限,success回调函数返回数据,最终显示用户的坐标,最后通过openlocation()函数来打开腾讯地图,显示实时位置[5]。

小程序自动展开医院导览图,用户可知晓当前楼层位置,并设定想要去往的目的地,确认好后,小程序传送数据至STM32,并进行轨迹传输,轮椅自动前往。以微信小程序为进入入口,再结合GPS、共享蓝牙等技术,实现了医院地图显示与查询位置信息、用户定位与地点导航、最快路线规划等功能。具体如图5所示。

图5 小程序定位功能导览

3.4 EC20与小程序之间的通信

当使用者开始激活共享智能轮椅的使用时,主控板发送AT命令序列来初始化EC20模块,通过UART接口与EC20进行通信,并发送适当的AT命令来配置和激活移动网络连接。通过小程序使用MQTT作为通信协议,EC20模块提供了一组AT命令来支持MQTT协议以实现模块与终端小程序的连接和信息发布/订阅操作。

3.5 自动循迹算法

自动循迹算法主要使用OpenMV的像素颜色统计实现循迹。在室内应用场景中,在地面用不同颜色的线条标识不同的线路。OpenMV设置色彩阈值元组,用户通过手机小程序选好颜色路线,蓝牙将相应数据传送至主控,改变目标色彩阈值,调用色块识别函数img.find_blobs()对不同颜色的线路进行识别,然后将 blob 色块对象中坐标blob.cx()通过UART串口发送给主控,通过标记信息判断小车相对于目标线的偏移程度,并融合 PID 算法精准调整小车位姿,即可完成自动循迹[4]。

3.6 PID闭环速度控制算法

有效控制轮椅电机速度的一种方法是利用负反馈产生的偏差信号,通过控制器对被控对象进行实时修正,使系统的输出量与定量保持一致,实现速度闭环控制。本设计采用增量式PID算法作为闭环控制,将其放入定时器终端,在中断中用左右2个光电编码器分别测出实时速度,使速度控制更加精确[5]。

4 结语

综上所述,本文实现了一款室内共享轮椅的设计。在医院范围内实现路径自动规划行驶,减少人员陪护,填补了市场中的空缺。本设计以STM32作为主控器,用无线通信模块EC20连接用户终端与轮椅终端,用微信小程序进行操控,再综合运用避障模块、GPS、视觉循迹模块等实现共享轮椅的应用开发,具有一定的实用性和创新性。本设计对目标人群定位清晰,使用范围定义清晰,具有广泛的应用前景。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!