徐世缘,耿丽清,徐子涵,李俊杰
(天津职业技术师范大学 自动化与电气工程学院,天津 300222)
现代日趋复杂多变的生活环境,给老年人及行动不便者的出行带来了更多的障碍,拐杖就成了大多数老年人的出行必备之物,一根安全便捷的拐杖可以为老人的出行保驾护航。但目前市场上常见的老年人拐杖只有支撑的作用,并没有其他特殊功能,功能比较单一,对老人的安全保障也比较低[1]。不仅需要拐杖提供基本的支撑作用,还需要应急照明、自动报警等功能[2]。因此,本文就基于STM32 芯片与ESP8266 等模块设计了一款功能更加丰富的智能拐杖系统,其功能包含GPS 实时定位、拨打电话、发送短信、跌倒报警、自动照明以及通过指定云服务器查看老人实时状态。
本文设计的智能拐杖系统结构框图如图1 所示,包括拐杖终端系统和ONE NET 云端服务器两部分。拐杖终端系统由STM32 单片机核心模块、陀螺仪模块、移动通信模块、GPS 模块、光照传感模块、按键模块、灯光模块、报警模块和ESP8266 模块等组成,主要负责信息的采集、处理和数据传输。云端服务器主要负责远程信息的监测。
图1 系统总体框架Fig.1 General framework of system
本设计使用STM32F103C8T6 型单片机,该型号有着Cortex-M3 内核的32 位微控制器,7 通道DMA 控制器,支持定时器,ADC,SPI,I2C 和USART等多个外设。其储存器有64 K 或128 K 字节的闪存程序储存器和高达20 K 字节的SRAM。并且它有2个12 位模数转换器,多达80 个快速I/O 端口和9个通信接口。
ATGM336H 是中科微电子的一款射频基带一体化导航芯片,体积小、功耗低,定位模块标称定位精度为2.5 mCEP,即有50%的概率能定在半径为2.5 m 的圆内,可以满足现场需求[3]。且此模块支持多种卫星导航系统,它包含32 个跟踪通道,可以同时接收6 个卫星导航系统的GNSS 信号,并且实现联合定位,导航与授时,定位更加准确。
ATGM336H 模块与单片机利用串口进行通信,将获取的经纬度数据上传,并在单片机外接OLDE屏实时显示。
采用MPU6050 模块,利用先进数字滤波技术,可以有效降低测量噪声,提高测量精度。模块内部集成了运动引擎DMP,获取四元数得到当前姿态。姿态测量精度0.01°,稳定性极高。
通过该模块检测老人当前的姿态角数据,由程序判断x 轴和y 轴姿态角的范围,从而判断蜂鸣器是否报警。MPU6050 模块接口电路如图2 所示。
图2 MPU6050 模块接口电路Fig.2 MPU6050 module interface circuit
SIM900A 是一个双频的GSM/GPRS 模块,含有TLL 电平串口和RS-232 电平串口,兼容3.3 V 与5 V可以直连单片机。SIM900A 内置TCP/IP 协议栈,通过AT 指令进行激活并且通过HTTP 服务使应用程序与因特网建立连接,可以提供包括语音、短信和GPRS 数据传输在内的一些功能[4]。
ESP8266 模块由乐鑫信息科技公司出品,它有超低功耗32 位微型MCU,带有16 位精简模式,主频支持80 MHz 和160 MHz,具有GPIO、PWM、12C、ADC 等功能,使用串口作为下载接口,当然也可以进行接入云端的服务,向云端服务器进行上传、下载数据[5]。接口电路如图3 所示。
图3 ESP8266 模块接口电路Fig.3 ESP8266 module interface circuit
采用光敏电阻传感器,它可根据光的照射强度改变其自身的阻值。将光信号变成电信号,一般可用来检测探头周围光线的强度,可以通过DO 输出数字信号1 和0,也可以通过AO 口输出模拟信号。将其AO 口与单片机的I/O 相连接,检测外界光照强度,当光照强度低于特定值时,将自动开启照明灯光。
系统搭建的智能拐杖系统软件框架如图4 所示。单片机软件采用C 语言编程,主要实现GPS 实时定位、拨打电话、发送短信、跌倒报警等功能。数据实时上传云平台,用户可在平台查询数据信息。
图4 系统程序设计框图Fig.4 Block diagram of system programming
智能拐杖系统上电后完成初始化,主程序的运行结果为陀螺仪获取姿态角,定位模块获取经纬度,ESP8266 模块联网与云平台建立连接。主程序流程如图5 所示。
图5 主程序流程Fig.5 Main program flow chart
ONE NET 云平台的连接需要提前创建产品与设备,并在设备内创建所需要的数据流,数据名要与单片机中上传的数据名称相同。同时要记录云平台内自己的产品ID,设备ID 以及密码,在编写ESP8266 模块子程序时需要这3 项使该模块与ONE NET 云平台建立TCP 连接,实现后续数据的上传。
程序算法的运行过程为当整个系统通电以后,系统会先进行初始化以及各个外设模块的初始化。初始化完成以后,各个模块开始工作,并将采集的数据进行上传。获取的经纬度和UTC 时间可以在显示模块上显示,同时也可以同姿态角一同发送至云服务器。若要查看这些数据只需登录ONE NET 云平台中所创建的设备,即可实时获得所有的数据。
MQTT 是一个基于客户端与服务器的消息发布/订阅传输协议,它可以用极少的代码和有限的带宽为连接到的远程设备提供实时可靠的消息服务[6]。MQTT 协议是轻量简单、开放和易于实现的,作为一种低开销、低带宽占用的即时通信协议,MQTT在物联网、小型设备,移动应用等方面得到了广泛应用。
服务器使用的是ONE NET 云平台,由中国移动打造的物联网开放平台。ESP8266 工作时采用STA模式接收到路由器信号后连接网络。之后通过MQTT协议与ONE NET 云平台建立TCP 连接,数据包通过循环结构发送到云平台,从而实现将经纬度、姿态角等数据的上传,方便数据的可视化显示与操作。云平台连接流程如图6 所示。
图6 云平台连接流程Fig.6 Cloud platform connectivity flow chart
在完成系统的硬件设计、软件设计和云服务器的连接后,对系统的功能进行测试。
ATGM336H 模块采集到的经纬度坐标和UTC时间在OLED 屏上显示如图7 所示。
图7 OLED 显示经纬度Fig.7 OLED display for latitude and longitude
MPU6050 模块采集到的姿态角会经过报警模块判断,若姿态角范围超出预定值蜂鸣器就会报警。同时经纬度坐标、姿态角都会上传至云服务器,这些数据都可以在云服务器内创建的设备中查看。这样就可以得到老人的位置信息和判断老人是否跌倒的状态信息,如图8 所示。
图8 云平台数据流界面Fig.8 Cloud platform data flow interface
SIM900A 模块在插入SIM 卡初始化完成后,通过按下发短信键可以实现一键将经纬度坐标发送到指定的联系人。按下拨号键可以实现一键拨打电话到指定的联系人,如图9 和图10 所示。
图9 发送经纬度短信Fig.9 Sending latitude and longitude SMS
图10 拨打电话界面Fig.10 Calling interface
本文设计了基于STM32 与ESP8266 的智能拐杖系统,该系统包括硬件系统和软件系统。硬件系统通过陀螺仪获取老人的姿态信息;通过GPS 获取老人的位置信息;通过GSM 模块将异常信息通过短信或电话通知联系人;通过无线ESP8266 模块将相关信息发送到云平台。从而帮助家人及时了解老人状况。系统经多次实验调试表明,该系统可以实现GPS 定位、跌倒报警、一键拨打电话、一键发送短信和自动照明这些功能。并且也实现了在PC 端ONE NET 云平台中查看上传的姿态角、经纬度。该款智能拐杖系统功能丰富、实用性强,对于未来老人的出行具有比较重要的意义。
本系统虽然完成了上述功能,但仍有需要改进和完善的地方,比如增加语音识别、语音唤醒、整点报时等功能。使作品更加人性化、智能化地为老年人提供服务。