MCU在智能药箱设计中的应用
2021-02-28西北民族大学李泓漩蒙诗婷杨嘉豪
西北民族大学 朱 雄 李泓漩 蒙诗婷 李 佳 杨嘉豪
本项目旨在设计一款基于MUC的智能药箱,通过控制主控板操作各类模块和传感器,形成一套完整的智能化医药箱。本项目主控芯片采用STM-32F103ZET6作为中央处理器,控制WiFi模块、GSM模块、DS1302、语言播报等外部器件。使用keil编写程序实现智能药箱的全部功能。
根据大数据预测显示,在21世纪中期,我国老年人口将增加到全国总人口的30%以上,因此,对于老年群体身体健康的照顾是我们不可忽视的。老年人因为年龄的增长很可能会出现各种各样的问题,由于身体机能衰退,免疫力下降等问题,慢性病发生的风险逐渐增加,常见的有高血压、高血糖、高血脂、糖尿病等。此类慢性病用药周期长,不容易被治愈,因此老年人就需要长期用药以稳定病情;又因为许多老年人都是独自在家,儿女都在工作。
本项目的主要目的是解决老年人在吃药方面存在的一些问题,并提出了一种功能完善的智能药箱解决方案,即实现对老年人吃药问题进行提醒、管理和监督,这既可以极大地解决老年人忘吃药、吃错药的一些问题,又可以极大地减少一些儿女的负担、减轻他们的压力,让在外打拼的年轻人不用再担心家中老人出现忘吃药、吃错药的情况。
1 系统总体设计
本系统是以智能药箱为研究对象,该智能药箱是以STM32 Cortex-M3为内核,使用Keil编程软件来进行程序编写,分别处理编程。对于数据处理,数据显示在OLED模块上,控制定时提醒之后PWM控制舵机开启药箱。对于药箱的舵机开箱的时间控制以及舵机旋转角度设计,都要考虑在内。
本系统主要功能是使用户通过手机可以实时了解智能药箱的使用情况,包括取药记录、药物剩余次数检测等,上传至手机,同时可查看当前智能药箱内的温度湿度检测情况。老人在药箱长时间提醒下还未取药或者当老人按下紧急按钮的时候,药箱通过GSM向手机发送短信,传递紧急情况的信息。MCU主控芯片通过输入引脚获取传感器、按键模块、时钟模块、WiFi模块等的相关数据,再对不同数据进行处理,通过输出引脚分别对蜂鸣器、LED指示灯、OLED显示模块、语音播报模块、舵机模块、WiFi模块等进行可以控制,实现本地智能控制以及和云服务器的连接,以达到兼顾智能自控和远程监护的目的。具体硬件设计图如图1所示。
图1 硬件系统设计图
2 系统硬件设计
2.1 主控模块
以STM32F103ZET6为主控芯片,其最高工作频率为72MHz,串行单线调试和JTAG接口,具有8个定时器、3个16位定时器(每个定时器有4个用于输入捕获/输出比较/PWM或脉冲计时器的通道和增量编码器输入)、2个看门狗定时器(独立和窗口型)/2个IIC接口、3个串口接口、2个SPI接口等其他IO口。选择好的CPU即选择一块好的芯片,一块芯片解决所有问题。模块化有利于产品的稳定性,方便查找问题,可拆卸。
2.2 WiFi模块
32位单片机,内置Wi-Fi驱动和协议,接口为一般的MCU接口,如UART等。适合于各类智能家居或智能硬件单品,采用UART接口,支持串口透明数据传输模式,并且具有多模安全能力。内置TCP/IP协议栈和IEEE802.11协议栈,能够实现用户串口到无线网络之间的转换。
本模块支持在联网过程中绑定目的网络BSSID地址的功能。根据802.11协议规定,不同的无线网络可以具有相同的网络名称(也就是SSID/ESSID),但是必须对应一个唯一的BSSID地址。非法入侵者可以通过建立具有相同的SSID/ESSID的无线网络的方法,使得网络中的STA联接到非法的AP上,从而造成网络的泄密。通过BSSID地址绑定的方式,可以防止STA接入到非法的网络,从而提高无线网络的安全性。
系统根据WiFi模块与云服务器建立联系从而获取药箱信息,并通过GSM模块发送数据到手机端,采用云服务器是因为云服务器较为稳定可靠,并且具有高性能支撑,最重要的是安全保障十分可靠。
2.3 时钟模块
DS1302充电计时芯片包含一个实时时钟/日历和31个字节的静态RAW,它通过简单的串行接口与微处理器通信。实时时钟/日历提供秒、分钟、小时、日、日期、月份和年份信息。月底的日期自动调整,少于31天,包括闰年的校正。时钟以24h或12h的格式运行,带有am/pm指示器等。DS1302采用的是三线接口的双向数据通信接口,RST是片引脚,低电平有效,SCLK是时钟芯片,为通信提供时钟源;I/O为数据输入输出引脚,用于传输及接收数据。DS1302还采用了双电源供电模式,VCC1连接到备用电源,在VCC2主电源失效时保持时间和日期数据。时钟模块在本系统中记录病人时刻的状况,可以更加准确的反馈给用户。
3 软件程序的设计
在本项目中使用STM32F1系列单片机,该单片机是以C语言为基础带动芯片运转。使用到的功能有IO口的复用、IIC通讯、PWM波的输出、串口通讯、定时器中断、外部中断等。为了确保准确无误地实现这些功能,编写程序时使用模块化编程,把不同模块的初始化及驱动过程封装在不同的.c文件中,模块化编程最大的好处就是程序的可阅读性比较强,编程思路体现的更加清晰,对于程序的分模块调试以及程序修改也非常方。另外,还需要熟悉MQTT协议以及云服务器资源部署相关知识,并且还需要编写一个相对成熟的手机APP,通过获取云服务器存储的相关数据实现数据显示及查询。图2为智能药箱的系统流程图。
图2 系统流程图
总结:随着科技的不断进步,自动化与智能的应用越来越受到大家的关注,如无人机、智能音箱、无人酒店等。本项目设计的智能药箱具有一定的实用价值,其功能包括:自动弹出药箱、语言播报提醒、记录数据、发送短信给监护人、蜂鸣器报警等。初步设计完成后,对其电路设计以及各模块装配、编写程序等要求准确无误,并且多次测试,多次调试,最终达到一个可行的稳固的状态。