当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]全球每年估计有50%的疫苗被浪费。其中相当一部分浪费源于冷链中断——即疫苗在运输或储存过程中曾暴露于2至8°C安全温度范围之外,但直到为时已晚才被发现。

这个项目为何存在?

全球每年估计有50%的疫苗被浪费。其中相当一部分浪费源于冷链中断——即疫苗在运输或储存过程中曾暴露于2至8°C安全温度范围之外,但直到为时已晚才被发现。

传统的冷链监控工具要么是昂贵的专用记录仪,难以在实地读取,要么只是简单的最高/最低温度计,只能告诉你发生了异常,却无法告知具体时间、持续时长或严重程度。这两种方式都无法为医护人员提供一个简单且可操作的答案来回答:“这个安瓿瓶现在是否仍然安全?”

该项目用一个数字来回答这个问题:冷链信任评分(CTS)。该评分系统借鉴了信用机构评估财务可靠性的方法,初始值为100分,并根据实时监控的各项条件持续下降——包括温度波动、门未关、物理撞击等。评分高于70分属于安全状态,40至70分之间属于风险较高,低于40分则被视为已受损。

系统基于ESP32运行,配备普通传感器,每秒将数据记录到microSD卡中,并通过WiFi提供美观的实时仪表盘——无需网络连接,无需依赖云服务,也无需订阅。

它做什么?

硬件监控策略

该系统协调五个专门的监控向量,以确保任何漏洞都未被发现:

•DS18B20 防水传感器:可在 2–8°C 的“金发女郎区”内提供高精度温度监测,每 500 毫秒进行一次连续采样。

•MPU6050 加速度计:通过检测冲击和粗暴操作来监控物理完整性。它采用上升沿检测逻辑,因此单次持续的碰撞(例如车辆振动)被视为一个事件,而非连续的处罚。

•磁性簧片开关:记录每扇门的开启和关闭事件,使系统能够区分常规疫苗取用与门被危险地留开的情况。

•MicroSD卡(SPI):作为安全的“黑匣子”记录器,每秒将时间戳、温度、CTS得分、运动状态和门的状态记录到一个永久的.csv文件中。

•双色红/绿LED灯可实现即时视觉诊断:绿色表示安全,红色表示异常。

•视觉界面(OLED与LED):SSD1306 OLED可为无智能手机访问权限的现场工作人员提供设备上的状态仪表盘。

冷链信任评分(CTS)逻辑

CTS 是一个从 0 到 100 的实时完整性评分,旨在具有实际意义:

• 30秒的简短开门时间不应扣分——而应起到警示作用,而非惩罚。

• 持续两小时的温度波动应当有明显影响

• 运输过程中出现单次颠簸应予以记录,但不应造成灾难性后果

• 当一切恢复正常时,分数会缓慢回升——表示监控信心已恢复

网页仪表盘

• 实时状态横幅:安全 / 风险中 / 受影响

• 4张度量卡:温度、CTS得分、违规事件、运动事件

• 门状态指示器,实时倒计时至CTS罚球激活

• 活动时带有脉冲动画的运动指示器

• CTS 信任评分面板,包含进度条和趋势图表

• 温度图表,包含2–8°C安全区参考线

• CTS 下降率柱状图 — 按严重程度着色(绿色/琥珀色/红色)

• 带时间戳的滚动事件日志

• 一键下载完整的SD卡日志CSV文件

OLED显示屏

• 状态栏:安全 / 风险 / 危险

• 大范围温度显示

• 带填充条的CTS值

• 图标行:D:CLSD | M:N | SD:Y | W:Y(门/运动/SD/WiFi)

逐步构建说明

步骤1:设置Arduino IDE

1. 从 arduino.cc/en/software 下载并安装 Arduino IDE 2.x

2. 打开文件 → 偏好设置,然后将 ESP32 板的 URL 添加到附加板管理器 URL 中

3. 打开工具 → 软件板 → 软件板管理器,搜索“esp32”并安装 Espressif Systems 包

4. 通过“工具”→“管理库”安装全部5个库(按名称搜索每个库)

5. 选择您的开发板:工具 → 开发板 → ESP32 开发模块

6. 选择您的COM端口:工具 → 端口

步骤2:准备SD卡

7. 将microSD卡格式化为FAT32(使用sdcard.org提供的官方SD卡格式化工具)

8. 固件会在首次启动时自动创建 /log.csv 文件,并添加标题行,如果该文件不存在,则无需手动准备。

步骤3:收集所有零件

9. 开始前请准备好所有元件。确保材料齐全,可避免半成品电路闲置。面包板原型的总制作时间约为2至3小时。

步骤4:连接并测试DS18B20

10. 连接 DS18B20 的 VCC → 3.3V,GND → GND,Data → GPIO 4

11. 在数据引脚和VCC之间加一个4.7kΩ电阻

12. 使用 DallasTemperature 库创建一个极简的 Flash 程序,并确认在串口监视器中能获得有效的读数。

提示:如果得到-127°C,可能是上拉电阻缺失或数据线错误

步骤5:添加MPU6050

13. 连接 SDA → GPIO 21,SCL → GPIO 22,VCC → 3.3V,GND → GND

14. 在你的代码中添加 mpu.initialize() 和 mpu.testConnection()

15. 在继续之前,请先在串行监视器中确认“MPU OK”。

步骤6:添加OLED

16. OLED 和 I2C 总线(GPIO 21/22)相同。两个设备的 I2C 地址不同,因此可以共存且无问题。请使用一个基本的 Adafruit SSD1306 示例代码来确认 OLED 是否能显示文本。

步骤7:添加SD卡模块

17. 连接 MOSI → GPIO 23,MISO → GPIO 19,SCK → GPIO 18,CS → GPIO 5

18. 插入一张FAT32格式的microSD卡

19. 使用 SD 库的 CardInfo 示例代码进行测试,以确认检测功能。

步骤8:线圈开关和LED灯

20.将簧片开关的一根引脚连接到 GPIO 27,另一根引脚连接到 GND

21. 红色LED:GPIO 25 → 220Ω → LED阳极,阴极连接至GND

22. 绿色LED:GPIO 26 → 220Ω → LED阳极,阴极连接至GND

步骤9:完整刷写固件

23. 在Arduino IDE中打开cold_chain_full.ino文件

24. 使用您的WiFi凭据更新SSID和密码

25. 选择ESP32开发模块,将上传速度设置为921600

26. 点击上传

27. 以115200波特率打开串行监视器——你应该能看到:MPU6050 OK、SD就绪、WiFi已连接,以及IP地址

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭