基于ESP32的智能药盒轻量级方案设计

余闰,王慧

湖北工业大学,湖北武汉,430068

我国老人占全国人口的比重在不断加大,截至2018年我国老年人口高达2.5亿人,其中独居老和空巢老人增加到了1.18亿人[1]。并且老年人的慢性病患病情况由2015年的44.81%上升到2021年的54.52%[2],空巢老人独自服药的问题变得十分突出。根据调查,老年人平均用药品种有五六种[3],但我国市场上销售的智能药盒产品种类却十分有限,现有产品普遍都不能满足消费者的需求。国内典型药盒的功能设计分析如表1所示,总体表现为功能十分单一,不具有实时监测等联网功能[4]。

表1 国内典型药盒实例

在国内市面上的常见药盒都没有实时监控以及提醒的功能,成本相对也较高。如今伴随着通信技术的普及和物联网的快速发展,针对老年人经常忘记吃药的问题,本文设计出一种居家智能药盒解决方案,其可以联网使用,通过MQTT协议将吃药信息传输到服务器并保存到数据库中。其支持微信小程序显示设备状态、查询数据库内容、删除已设闹钟、设定时间、精准设定语音和灯光提醒。其支持OLED面板显示当前城市时间与天气、室内温湿度、吃药记录以及接收服务器信息。

1.1 总体设计

整个系统框图如图1所示。该系统包括三个大的方面:硬件设备端(如ESP32为主控的设备端),服务器后端,软件应用前端。

图1 总体系统框图

硬件设备端通过WiFi与路由器相连接入互联网之后,便可基于TCP协议的应用协议MQTT与云服务器进行通信,主要用于传输ESP32采集到的数据,以及来自应用前端的指令。首先,移动应用端是通过蜂窝网络或者路由器连接上互联网之后与云服务器进行通信,然后通过服务器介质获取硬件设备端的状态,随后传输指令和访问服务器中的数据库。

1.2 硬件设计

本文介绍的硬件方案主要采用的是ESP32芯片作为主控芯片,满足标准的TCP/UDP Client要求[5],蓝牙与WiFi集成其中,功耗小、成本低。最高主频可达到240MHz,内置双核处理器,满足实时处理数据信息以及OLED实时显示动画的要求。

硬件整体框架图如图2所示,此方案主要由四大部分组成,其中复制电路中的电源转换电路采用的是典型的Buck电路设计,LM2596能将8~24V的电压稳定到5V输出,最大输出电流能达到3A,具有完善的保护电路[6]。由于自身是开关电源设计,因此其损耗只有肖特基二极管以及MOS在开关时的损耗,损耗小,并且可以达到额定15W的输出,满足系统整体供电需求。在音放电路中,由于老年人的听力衰减比较严重,因此就需要大的音量来提醒老年人按时服用药物。本方案采用的功率放大电路则是采用D类功放芯片LTK5128D来驱动喇叭,此芯片效率高,最高可输出5W功率,满足大音量的设置要求。

图2 硬件整体框架图

1.3 设备端软件设计

本方案在硬件端的MCU主程序图如图3所示,具体包括两个大的状态,即联网状态和未联网状态。

图3 主程序流程图

ESP32上电之后会对所有传感器和OLED屏幕进行初始化操作。如果设备当前处于未连接上网络状态,首先ESP32会读取内存中储存的上一次保存的WiFi名称以及密码,并进行联网操作。若超时未成功,设备则会重新配网,然后设备打开WiFi热点。当手机连接到当前的WiFi热点,ESP32会将写进程序的网页发送到手机端,此网页包括附近WiFi热点信息以及提交WiFi密码和名称的输入框。当用户通过手机输完目标WiFi名称和密码时,ESP32会将得到的数据储存到内存中,并进行复位,程序重新运行。当设备处于联网的状态时,ESP32会通过MQTT协议与服务器进行通信,订阅主题、监听端口信息;
若服务器有消息输入,则处理对应事务,例如时间、消息留言板信息、数据库回传信息事务等。若药盒盖打开则发送消息到服务器,服务器则记录数据到数据库。由于ESP32本身是双核处理器,因此可以多开线程。另一个线程则主要处理OLED显示屏的动态显示,以及每隔一段时间发送当前采集到的温度与湿度数据到服务器[7]。

1.3.1 服务器软件搭建

本文采用搭载了EMQ环境和MySQL数据库的服务器来搭建一个MQTT服务端的方案。由于本文主要介绍的方案是轻量级的,所以数据量不会特别庞大,因此采用了MySQL数据库来管理吃药的次数与时间等相关数据。在Python脚本程序的控制下,服务器可以动态化管理数据库。当接收到设备端或者移动端发来的指令时,对MySQL数据库中的数据进行增删查改等操作。

搭载物联网环境与数据库的服务器通信模型如图4所示,其主要是在服务器内部由python程序来进行数据管理。在服务器外部,设备端通过MQTT协议与1883端口进行数据通信,管理端则是通过连接服务器的18083端口来对后台物联网平台进行管理;
在服务器外部另外一侧的微信小程序部分,由于腾讯公司规定小程序只能用WSS协议与认证的443端口进行通信,因此我们还需用Nginx将其数据转发到8084端口,连接上物联网环境平台。

图4 服务器通信模型

1.3.2 微信小程序

微信小程序的前端设计主要采用绿色为主色调。小程序主要包括两个界面,功能如图5所示。主页主要是接收设备端的湿度温度数据、在线状态、所在城市气温状态的数据,也可以输入要发送至设备端留言板的内容;
数据库查询页主要是对数据库里的内容进行增删查改操作的界面,不仅能够直接对硬件设备端进行控制,也可对数据库直接控制。此设计具有轻型化、实用性、实时性、系统完整性的特点[8],非常符合轻型化物联网开发方案的要求。

图5 微信小程序功能图

整个系统的成本在于硬件端,其个体成本不超过40元。租用轻量级服务器的价格在一年70块,但是随着设备的增多,其服务器成本就微乎其微,因此成本较低。在其他方面,本节主要对上述系统进行测试,测试分别从实时可靠性、低功耗、精准性这三个方面进行。

2.1 实时可靠性

本项在整个系统程序的功能不变的情况下,通过设备端向服务器方发送一个指令并用串口打印发送完成,观察服务器端是否接收到指令,是否存在丢包现象,以及在未丢包的情况下传输延迟情况。具体情况如表2所示。

表2 数据延时和丢包部分示例

本次测量是从2022年4月16日19:36开始的,采样次数百次,设备端与服务器通信的时间延时大约1秒钟,未出现丢数据情况。时间差是通过记录设备端的串口打印时间与服务器接收数据的时间的差值得来,由于设备串口打印时间也需要耗费时间,因此实际传输延时时间少于1秒[9]。本实验结果证明该系统传输稳定可靠,能够满足实时监测并记录数据的要求。

2.2 设备的功耗

在常温条件下,对处于不同状态下的设备进行功耗测量,具体数据见表3。

表3 不同状态下设备功耗

本次分别测量了硬件设备处于3种工作状态下的功耗。当处于未联网的状态时,由于ESP32处于STA情况下,需要向外发射WiFi信号,因此功耗会比联网情况下高许多。当处于联网并且语音播报工作的情况下时,由于喇叭需要消耗能量,因此会有5W左右的能量损耗,符合设计要求。总的来说,硬件系统的各个工作状态都符合低功耗的要求。

2.3 闹钟功能精准度

本项是通过移动应用前端设置闹钟时间,然后指定时间到达后,设备端串口打印数据。根据串口打印时间戳与指定时间的插值来评判闹钟功能是否精准,见表4。

表4 闹钟功能测试表

此表采样收集数据5次,平均误差2.74s,最大误差不超过4s。此误差产生的原因是由于服务器要一直读取动态数据库的数据,因此不能精准到只有1秒钟的误差。但是此误差范围还是符合实用性标准的,因此具有实用性。

本方案对市面上的智能药盒存在的功能单一、不能实时联网的问题进行了解决,提供了一个成本低、功耗小、实用性高、实时联网的轻量级解决设计。但目前本设计只是解决了智能药盒实时监控的设计,相信在不远的未来,智能药盒一定能够实现智能配药的功能,从此老年人不用再担心吃错药或者要吃多少的问题了。

猜你喜欢 药盒功耗服务器 基于任务映射的暗硅芯片功耗预算方法北京航空航天大学学报(2022年7期)2022-08-06应用电子药盒辅助肺结核患者服药管理的实施情况研究中国防痨杂志(2022年1期)2022-01-05便携药盒有四怕婚育与健康(2020年1期)2020-04-10PowerTCP Server Tool网络安全和信息化(2019年8期)2019-08-28BlackJumboDog网络安全和信息化(2019年7期)2019-07-102018年全球服务器市场将保持温和增长中国计算机报(2018年12期)2018-10-08揭开GPU功耗的面纱个人电脑(2016年12期)2017-02-13便携药盒有四怕恋爱婚姻家庭(2016年27期)2016-10-11旅行便携随身药盒现代营销·经营版(2015年8期)2015-05-14环保之功,从主板做起微型计算机(2009年12期)2009-12-21

推荐访问:方案设计 智能 ESP32