数码之家

 找回密码
 立即注册
搜索
查看: 14628|回复: 69

[Arduino] 使用JDY31 蓝牙串口连接UNO,配合DS18B20 测试电冰箱动态工况(原创)

    [复制链接]
发表于 2021-5-25 21:03:44 | 显示全部楼层 |阅读模式
手头有台二手容声双开门冰箱,冷冻+冷藏工作稳定,可谓夏日必备。
偶然间想测试下其工况,和东北阳台比对一二,于是就搭建了这么套基于蓝牙的测温系统,今来分享之。

【原理】
连续测试一段时间内冰箱的温度变化(工况),可以了解其工作原理、状况,大致判定是否有问题。
测试冰箱温度自然不能开门来搞,拖个细长数据线也显得不专业。因而嵌入式测试有两个思路:

①现场存储+事后回放;②无线数传+电脑存储。

事后回放的方案之前做风筝高度计时就用过了,当时还和坛友讨论了不少数传的方案:
https://www.mydigit.cn/forum.php?mod=viewthread&tid=245770

这次冰箱温度测试距离不远,考虑到整个系统复杂度,选择蓝牙串口(SPP)模块 JDY-31 无线数传。
在 Win10 系统下,笔记本直接通过内置蓝牙头连接 JDY-31 虚拟出本地串口,用串口助手即可稳定接收。



附上 JDY-31 中文手册:


【框架】
直接拿跳线把 JDY-31 插在 Arduino 上并不是我的风格,一来连接不可靠容易断线,
二来费劲搞出的东西基本是一次性的,下次再做同类实验还得重新插接,浪费精力。

索性就做一套 JDY-31 的蓝牙扩展板,一劳永逸解决 Arduino 类似的无线数传。

Arduino 本身有两个串口角色:①PC端USB串口,②MCU端UART串口,
蓝牙串口需要作为第三个角色与上述两个互联,玩过 Arduino 的想必都经历过电平干扰的绝望。
因而需要增加一个 JDY31 到 Arduino 间的桥接中继,框架如下:



选择 STC 是因为懒,手头刚好有这个玩意,另一方面 51 的弱上拉兼容性非常好,
既可以兼容蓝牙串口的 3.3V 电平,又可以在 UNO 冲突时避免强上拉带来的干扰。

桥接器有三种工作模式:
a. 离线模式:用于在 USB-MCU 通信时断开蓝牙串口干扰,例如更新 Arduino 固件;
b. PC 主机模式:此时蓝牙串口与 USB 互通,可以通过 PC 调试 JDY-31;
c. MCU主机模式:此时蓝牙串口与 MCU 互通,用于嵌入式工作,例如此次测温。


【硬件】
STC15W104 有六个GPIO,正好全部分配:两组串口占4个,余下2个检测并指示UNO状态。连线原理图如下:



焊接前用 CAD 走一下线避免混乱:



完工效果如下,正面:



背面:



插上 STC,UNO 连接笔记本:



由于是嵌入式系统,必须考虑供电问题,这里使用一块 800mAh 锂电堆叠板进行供电:




【软件】
这次的软件需要分两个单元:STC 桥接器使用 KEIL 编写,UNO 端就是 Arduino IDE.

STC 桥接器主要功能就是识别 UNO 状态(下载/PC通信/UNO通信),然后模拟 GPIO 桥接。
编写环境是 KEIL 经典的“礦ision”版本:



UNO 端并没有什么特别之处,无非就是调用 DS18B20 驱动,然后串口发送测试结果。
串口数据(Serial)经过桥接器、蓝牙串口自动转发到 PC 端:



由于是电池供电,因而增加电池检测功能。串口除了温度,还同步发送电池电压供后期回溯。

附上各路固件及源码:
STC桥接器:
UNO采集器:


【实测#1:冷藏层】
第一把测试位于冰箱冷藏区,系统通电连上蓝牙后直接放在冷藏托盘上。



笔记本位于隔壁房间,因而蓝牙穿透了冰箱外壳 + 单层墙壁,实测信号稳定。
实验时间为下午 14:00 至第二天早晨 8:00,总计约 18 小时,平均电流 45mA.

采样间隔约为 2.5s,包含实时温度、电压,时间基准使用 PC 端计时,最终形成图线:



图像中蓝色为实时温度,可以看到开门取菜对温度影响明显,压缩机周期性通断工作。
在大约 15h 的工作周期当中,压缩机工作了约 10.5h,占空比大约 70%.

另一方面红色电压曲线,显示了最终蓝牙断线的原因:电池耗尽。
从最开始的 4.2v 一直工作到 2.8v 低压保护,电池续航了约 18h 并触发低压保护。
按照 800mAh 容量计算,平均电流大约 45mA,这与蓝牙单元基本吻合。


【实测#2:控温损坏】
第二把测试是用了一阵子后,冰箱因为冷凝水原因,温控器损坏了(无法断开)。
在新买的温控器到货之前,测试了一把 24h 满载工作的状态,相当于最大能力制冷。

这次测温系统先丢进冷冻室,一段时间后转移回冷藏室。冷冻室里即将接受低温考验的系统:



采集方式与前一次测试相同,2.5s间隔蓝牙发包,隔壁笔记本接收并存储。曲线如下:



低温时锂电池衰减的很快,为防止冻没电,冷冻室仅仅待了大约 1 小时。
从电压曲线(红)来看,随着温度上升,锂电池的确在一定程度上“回血”。
最后温度曲线(蓝)显示,冷藏室大约 -4℃,冷冻室大约 -24℃,在压缩机满载工作下此成绩不错。

整套系统(Arduino、STC、蓝牙JDY31、软包锂电、焊锡)全都承受住了 -24℃ 的低温考验,
低温环境、温度阶跃环境都未对硬件造成实质性伤害,质量可靠。

------------------------------------------------------------------------------------------------------------------------------

以上,使用 JDY31 蓝牙串口连接 UNO,配合 18B20 测试了电冰箱动态温度工况。
蓝牙模块以单元板形式,由 STC15W104 完成串口桥接;系统由锂电池供电,可穿墙通信。

整机在温度测试区间(-24℃ ~ +26℃)工作正常,数传可靠。
最终确认冰箱恒温原理为温控器 PWM 开关控制,工作周期大约 15h.

最后祝大家折腾愉快!


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 15家元 +1261 收起 理由
mydigit + 1000 恭喜获得原创文章热度奖励1000M.
沙漠臭屁虫 + 20
newnet1234 + 20 優秀文章
sunnyquan + 20 原創內容
ljlun + 20 優秀文章
玛德陛下 + 20 謝謝分享
cushion + 20 原創內容
lxvtag + 20
chenzoutie + 1 謝謝分享
kkdkj + 20 高手!向你学习!

查看全部打赏

发表于 2021-5-25 21:18:59 来自手机浏览器 | 显示全部楼层
要是能自动生成表格就爽了
回复 支持 反对

使用道具 举报

发表于 2021-5-25 23:12:58 来自手机浏览器 | 显示全部楼层
工业要求-40~+85度,请继续加油
回复 支持 反对

使用道具 举报

发表于 2021-5-26 08:49:24 来自手机浏览器 | 显示全部楼层
老大又变身钻进了冰箱
回复 支持 反对

使用道具 举报

发表于 2021-5-26 09:09:02 | 显示全部楼层
UNO在你手上受苦受难啊:titter:
回复 支持 反对

使用道具 举报

发表于 2021-5-26 10:40:42 | 显示全部楼层
为啥不STC直接采样18B20?减少一个ardunio
回复 支持 反对

使用道具 举报

发表于 2021-5-26 10:51:32 | 显示全部楼层
用esp8266+db1820,arduino就更简单了。老王家那个光合未来棒棒直接就是干这个的,可惜卖光了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-26 10:58:14 | 显示全部楼层
happysea72 发表于 2021-5-26 10:40
为啥不STC直接采样18B20?减少一个ardunio


蓝牙板和 Arduino 都是复用的,只是在这个项目中两个拼在了一起。

为什么不 STC 直接采 18B20?  因为太费事,会浪费掉蓝牙板的通用性,整天就是移植 KEIL.

蓝牙板在我 WOM13064 的帖子中是用做了无线串口的,直接连 AIDA 显示 PC 信息,
而 STC 使用的固件和这个项目是一样的,串口桥接器
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-26 11:01:59 | 显示全部楼层
kindzhon 发表于 2021-5-26 10:51
用esp8266+db1820,arduino就更简单了。老王家那个光合未来棒棒直接就是干这个的,可惜卖光了。 ...

8266 的确更简单,直接上 wifi 协议。

手头这个板子就是个蓝牙串口,方便快速移植常规串口,我在 13064 的帖子里用的就是:
https://www.mydigit.cn/forum.php ... d=245035&extra=
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-26 11:03:54 | 显示全部楼层
cj8510 发表于 2021-5-26 09:09
UNO在你手上受苦受难啊

手头每个 Arduino 板(UNO, Mega, Leonardo, Maple....)我都会在东北极寒(-30℃)室外冷冻工作一夜。

能冻坏的统统扔掉。
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-5-26 11:04:30 | 显示全部楼层
纯今 发表于 2021-5-26 08:49
老大又变身钻进了冰箱

都是前些年的作品,拿来分享
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-26 11:05:14 | 显示全部楼层
zhkrid 发表于 2021-5-25 23:12
工业要求-40~+85度,请继续加油

哈哈那得上高低温实验箱了,就我在的大东北,也只能冷冻到 -30℃
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-26 11:06:39 | 显示全部楼层
触景情伤 发表于 2021-5-25 21:18
要是能自动生成表格就爽了

Arduino IDE 就可以,只不过这种数据保存比实时画表格更要紧。

表格一般实时更新,容易保存不及时,一旦程序出现意外原始数据丢失,会后悔死
回复 支持 反对

使用道具 举报

发表于 2021-5-26 11:08:24 | 显示全部楼层
这种近距离通信楼主可以考虑下8266,也能通过arduino编程,自带wifi通信,而且能直接读取18B20
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-26 11:26:10 | 显示全部楼层
lemontreenm 发表于 2021-5-26 11:08
这种近距离通信楼主可以考虑下8266,也能通过arduino编程,自带wifi通信,而且能直接读取18B20 ...

8266 在电源不限的情况下比较合适,电池供电上 8266 有点吃紧。

查了下 JDY-31 工作电流 7.5mA,看样子剩下的电流都是被 Arduino 无用的外设吃掉了。
8266 动辄上百 mA 的电流对电源考验比较大,电源稍差就启动不成功。
回复 支持 反对

使用道具 举报

发表于 2021-5-26 11:40:23 来自手机浏览器 | 显示全部楼层
t3486784401 发表于 2021-5-26 11:06
Arduino IDE 就可以,只不过这种数据保存比实时画表格更要紧。

表格一般实时更新,容易保存不及时,一旦 ...

Arduino IDE 能画表格
老大,之前你测充电时时电压电流
ArduinoIDE可以修正后,直接生成表格吗?
回复 支持 反对

使用道具 举报

发表于 2021-5-26 11:44:28 来自手机浏览器 | 显示全部楼层
老大,你好
由于带上机位的万用表都比较贵
根据你之前4056帖子,我认为利用Arduino
可以搞出简单的上机位同时记录电压与电流
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-26 11:46:52 | 显示全部楼层
纯今 发表于 2021-5-26 11:40
Arduino IDE 能画表格
老大,之前你测充电时时电压电流
ArduinoIDE可以修正后,直接生成表格吗? ...

可以啊,串口发int或者float,直接就能绘图;
一行当中逗号隔开,还可以多通道同时画。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-26 11:48:21 | 显示全部楼层
纯今 发表于 2021-5-26 11:44
老大,你好
由于带上机位的万用表都比较贵
根据你之前4056帖子,我认为利用Arduino

可以啊,只不过有一定限制:

a. Arduino IDE 画表格是不保存的,一屏画满了就会覆盖之前的;
b. 样式固定,想要不一样的得自己搞
回复 支持 反对

使用道具 举报

发表于 2021-5-26 14:05:00 | 显示全部楼层
请教一下楼主的图表是用什么软件生成的呢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-25 22:28 , Processed in 0.093601 second(s), 11 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表