基于STM32的智能药箱系统开发实战:从硬件搭建到云端互联
1. 为什么需要智能药箱记得去年我奶奶因为忘记吃药导致血压飙升住院当时我就在想如果能有个自动提醒吃药的装置该多好。后来发现这个问题其实困扰着很多家庭——据统计65岁以上老年人中有超过60%存在漏服、错服药物的情况。这就是我做智能药箱项目的初衷。传统药箱就是个塑料盒子而智能药箱要解决三个核心痛点忘记吃药时间、不知道还剩多少药、药品存储环境不合适。我设计的这个系统用STM32做大脑配合各种传感器不仅能语音提醒吃药还能监测药量、温湿度甚至把数据传到手机APP上。2. 硬件选型与电路设计2.1 核心控制器选择选STM32F103C8T6这颗芯片是经过反复对比的。它有72MHz主频、64KB Flash关键是价格只要十几块钱。有次我贪便宜试过国产替代芯片结果ADC精度差得离谱最后还是换回了STM32。2.2 传感器模块搭配药量检测我用的是HX711称重传感器方案这里有个坑要注意不同量程的传感器价格差很多。我最初选了5kg量程的结果检测药片时精度不够换成1kg的后分辨率能达到0.1g。温湿度监测用DHT11就够用成本不到10块钱。如果对精度要求高可以换SHT30不过价格要贵四五倍。实际测试发现药箱内部温差不大DHT11完全能满足需求。2.3 外围电路设计显示部分我强烈推荐0.96寸OLED比LCD1602省电显示效果也好。电路连接特别简单四根线搞定I2C通信。第一次接线时我把SDA和SCL接反了调试了半天才发现问题。WiFi模块选ESP8266-01S体积小价格低。记得一定要加电平转换电路我刚开始直接接3.3V结果模块经常死机后来加了AMS1117稳压才稳定。3. 关键功能实现3.1 药量检测算法药量检测不是简单读取重量就行要考虑去皮和动态校准。我的做法是上电时自动记录空箱重量每次开箱后重新校准基准值采用滑动平均滤波消除波动// 示例代码 float get_medicine_weight() { static float base_weight 0; float current HX711_Read(); if(current base_weight 5) { // 5g阈值 base_weight current; // 自动校准基准 } return current - base_weight; }3.2 定时提醒功能用STM32的RTC实现定时提醒这里要注意备份寄存器用法。有次断电后时间重置后来发现是没启用VBAT供电。现在我的做法是配置RTC时钟源为LSE32.768kHz晶振启用RTC备份寄存器存储设置每隔1小时同步一次网络时间3.3 云端数据传输ESP8266连接阿里云IoT平台我踩过三个坑AT指令超时设置太短导致经常断连没做心跳包维护被服务器断开JSON数据格式错误解析失败现在稳定运行的方案是每30秒发一次心跳包数据采用精简JSON格式加入重试机制4. 软件设计要点4.1 开发环境搭建推荐用STM32CubeMX生成初始化代码能省去大量配置时间。我习惯的配置顺序是时钟树配置HSE 8MHzPLL到72MHz外设使能USART、I2C、SPI等中间件配置FreeRTOS如果要用生成MDK-ARM工程4.2 多任务处理用FreeRTOS创建了三个主要任务传感器数据采集优先级最高用户界面刷新中等优先级网络通信最低优先级任务间通过消息队列传递数据比如当检测到药量不足时会同时触发本地提醒和云端报警。4.3 低功耗优化为了省电做了这些优化不用时关闭OLED背光传感器采用间歇工作模式WiFi每15分钟同步一次数据主频动态调整72MHz↔8MHz实测优化后待机电流从120mA降到了35mA2000mAh电池能用三天。5. 常见问题解决方案5.1 传感器读数不稳定遇到ADC跳变大的问题可以在传感器电源端加0.1μF去耦电容软件端采用中值滤波避免与大功率器件共用电源5.2 WiFi频繁断连ESP8266连接不稳定的解决方法// 示例配置 ATCWMODE1 // Station模式 ATCWJAPSSID,password // 连接WiFi ATCIPRECVMODE1 // 透传模式 ATCIPSTARTTCP,iot.aliyun.com,1883 // 连接服务器5.3 药箱误识别红外感应容易受环境光干扰我的改进方案改用红外对射式传感器增加防抖算法连续检测到3次才确认安装遮光罩6. 项目进阶方向现在已经实现基础功能下一步准备增加语音识别模块支持声控开箱开发微信小程序替代原APP加入药品图片识别功能改用锂电池供电并优化充电电路最近测试发现加入TFT触摸屏后用户体验提升明显但成本增加了60块钱这个要权衡考虑。有朋友建议加个指纹锁我觉得对老年人来说可能操作太复杂了。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2467562.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!