
高精度PY温湿度计SHT4x
简介
本项目是一款极其简单的高精度温湿度计,PCB尺寸60mm*20mm,外壳尺寸65mm*25mm*11mm,主打一个精致小巧,手搓成本不到10元,温湿度传感器与米家温湿度计同厂商,非常适合3D打印玩家。
简介:本项目是一款极其简单的高精度温湿度计,PCB尺寸60mm*20mm,外壳尺寸65mm*25mm*11mm,主打一个精致小巧,手搓成本不到10元,温湿度传感器与米家温湿度计同厂商,非常适合3D打印玩家。开源协议
:GPL 3.0
(未经作者授权,禁止转载)描述
本项目是一款极其简单的高精度温湿度计,PCB尺寸60mm*20mm,外壳尺寸65mm*25mm*11mm,主打一个精致小巧,手搓成本不到10元,温湿度传感器与米家温湿度计同厂商,非常适合3D打印玩家。
* 更新记录
2024年9月3日
发布新固件,支持更多淘宝ST7735S屏幕。
2024年8月22日 (PY32F002A开头,以下简称V2版本)
第一版发布后,受到了B站不少网友的鼓励和支持,还有多位网友复刻成功,这才有了动力进行这第二版。
第二版更多的是从产品的角度去考虑,共设计了3款:分别是纽扣电池版、锂电池版以及模块版,主控MCU换成了更便宜的普冉的 PY32F002AF15P6 或者合宙的AIR001,这2个芯片其实是一样的,可以随意替换使用。
硬件上对PCB LAYOUT也进行了优化,把唤醒按键移到右边,这样按唤醒按键的时候手指就不会挡住传感器的风道了,同时把屏幕也往中间挪了挪。
锂电池版可以直接通过TYPEC进行充电,偶尔还能应急下当作锂电池的充电器用,另外加入了USB插入监测,一旦有外部供电就会保持屏幕常亮不进入休眠模式。
而模块版是采取尽可能的简化电路,减少元器件数量,采用TYPEC或者外接5V直接供电,屏幕常亮不进入休眠模式。可以作为其他系统的子模块使用,只要接入5V电源就可以有一个完整的温湿度测量单元。
同时还改进了软件代码,支持SHT4x全系列芯片,而且现在可以做到同一个固件支持GC9107和ST7735S驱动IC的屏幕了,固件已更新至最新版,在这之前复刻的朋友们可以重新下载烧录。
V2纽扣电池版功耗:运行模式23mA,休眠模式85uA。
V2版本演示视频:https://b23.tv/Xg4ONQv
2024年7月25日 (PY32F003_SHT4x,以下简称V1版本)
第一版发布,这是参加训练营的,主控MCU是普冉的PY32F003F1xPx系列(PY32F003F14P6、PY32F003F16Px、PY32F003F18Px都可以),温湿度传感器采用盛思锐的SHT40-AD1B-R2,一颗CR2032纽扣电池供电,屏幕是0.96寸TFT,万用表粗略测量一下功耗,运行模式20mA,休眠模式100uA,理论上CR2032电池能够坚持3个月左右,实际上会受限于屏幕的最低电压要求导致续航会打折扣。
V1版本演示视频:https://b23.tv/sPQD9rp
* 1、项目功能介绍
V1版本只有一个款式,电源采用一颗CR2032供电,电池容量大概220mAh左右,主控采用普冉的 PY32F003F1xPx系列,正如该主控型号的开头2字母PY == 便宜,手头也正好有就用了,温湿度传感器芯片选用 Sensirion(瑞士盛思锐) 的高精度数字温湿度传感器 SHT40-AD1B-R2,米家智能温湿度计也都是用的盛思锐的传感器芯片。还有一块0.96寸TFT IPS 显示屏用于显示温湿度数据,至于为什么采用这块屏幕也是因为手头有存货,实际做产品的话应该换成低功耗不带背光的段码LCD屏或者墨水屏之类的,毕竟带背光的屏都比较耗电,且最低供电电压也偏高。
V2版本主要是换了主控,其他没变,保留CR2032纽扣电池版外,新增锂电池版和模块版,共有3个款式,分别应对不同场景,主控MCU换成了更便宜的普冉的PY32F002AF15P6 或者合宙的AIR001,这2个芯片可以随意替换使用,我在开发过程中就是用PY32F002A的标准库写的,然后直接烧录AIR001芯片。
项目功能框图如下所示:
实物展示
3D外壳也是直接通过立创EDA画的,对于这类外壳用立创EDA设计已经足够,我也把立创EDA的3D外壳设计功能发挥的淋漓尽致!!!:-)
下面是V1版本外壳装配图,使用4颗M2x9圆头十字自攻螺丝固定
以下是V2版本外壳装配图
*2、硬件部分
V1版本硬件部分主要就5大块:MCU主控、温湿度传感器、唤醒和复位按键、电池电压检测以及0.96寸TFT显示屏部分,简单的不能再简单了。
原理图中的一些物料大家可以根据自己手头物料进行选择替换,比如三极管S8050可以用S9013替换等等。
V1版本MCU主控采用普冉的PY32F003F1xPx系列,原理图里用的是PY32F003F16P6TU,这里之所以用系列这个词,意思就是同一块板子,你可以焊接PY32F003F14Px、PY32F003F16Px、PY32F003F18Px中的任一款芯片,这几个型号的芯片都是TSSOP20封装,引脚相同,唯一的区别就是FLASH和SRAM大小的区别,当然价格也随之不同,实际测试2K大小的SRAM就够了,也就是说用PY32F003F14Px最划算。
V2版本MCU主控换成普冉的 PY32F002A15P6,相对来说更便宜,20K的FLASH和3K的SRAM也足够了,大家可以编辑器打开工程自行查看原理图。
V2纽扣电池版
V2锂电池版主要增加了以下电路
V2模块版,预留TYPEC或者XH2.54接口,用于外接5V供电。如果也想外接锂电池,请确保不会接反的前提下,不要焊接二极管,用0Ω电阻或者一坨焊锡代替,因为二极管的压降会造成后续供电不稳。
2.1 温湿度传感器
温湿度传感器芯片选用的是 Sensirion(瑞士盛思锐) 的高精度数字温湿度传感器 SHT40-AD1B-R2,精度很高,各位可以看下盛思锐官方的宣传手册以及数据手册。
由数据手册得知这块芯片的IIC地址为0x44,当地址最低位为0时,表示写数据;最低位为1时,表示读数据。
温湿度传感器SHT40也可以换成SHT41、SHT43、SHT45,软件已对这些型号都做了兼容。
温湿度传感器的LAYOUT可以参考一下盛思锐官方的设计指南文档,我也是按照官方推荐的设计采用挖槽以及禁止铺铜处理,可以避免PCB热传导,从而影响温湿度传感器的测量精度。
2.2 0.96寸TFT显示屏
屏幕可以选用ST7735S或者GC9107驱动IC的,软件已对这2款芯片做了兼容,我自己实际测试的屏幕型号是N096-1608TBBIG47-H13 和 N096-1608TBBIG11-H13。
*3、软件部分
代码采用标准库写的,实现逻辑如下图所示:
逻辑也很简单,就是上电后每秒检测一次并显示结果(出于展示需要,实际产品不需要每秒刷新一次),然后循环里判断超过10秒没响应后进入低功耗模式,同时也关闭显示屏背光。低功耗模式下如果检测到唤醒按键按下,那么重新开启显示屏背光,并再次检测。超过10秒没响应后再次进入低功耗模式。
3.1 温湿度UI展示
测量结果是用LED数码字体展示的,左边显示的是温度数据,右边显示的是湿度数据,另外还根据温湿度区间做了下UI方面的考虑,用3种颜色分别表示不同的温湿度区间。
颜色 | 温度 | 相对湿度 |
红色 | > 26°C | 0 – 40 %RH |
绿色 | 20 ~ 26°C | 40 – 60 %RH |
蓝色 | < 20°C | 60 – 100 %RH |
3.2 电池电量展示
电池电压的计算是先采集MCU内部参考电压来获取MCU实际的供电电压,然后再采集电池电压进行换算。
根据CR2032电池数据手册得知,满电算3V,亏电算2V,经过分压电路后,ADC端测得电压在1V ~ 1.5V之间,所以代码就分5个等级分别显示不同的电量图标(图标来自:iconfont-阿里巴巴矢量图标库)
if (adcVbat <= 1100) {
LCD_ShowBattery1(70, 4);
} else if (adcVbat <= 1200) {
LCD_ShowBattery2(70, 4);
} else if (adcVbat <= 1300) {
LCD_ShowBattery3(70, 4);
} else if (adcVbat <= 1400) {
LCD_ShowBattery4(70, 4);
} else {
LCD_ShowBattery5(70, 4);
}
当然这个代码只是很粗糙的展示一下电量等级情况,也仅在理想情况下而已,因为本项目用的IPS屏幕,可能电池电压低于2.5V就不显示了。
据屏幕数据手册可知,这块屏幕最低供电需要2.5V以上且背光供电需要2.9V以上,实际情况如何还需要时间检验。
3.3 固件空间占用
由下图可见,16K的FLASH和2K的SRAM已经足够。
*4、固件烧录教程
4.1 PWLink2 Lite烧录
如果大家手头有PWLink2 Lite烧录器的话,烧录就非常简单,也推荐大家使用这种方式,烧录器也很便宜,9.9顺丰包邮。
如还有不明白大家可以自行参考PWLink2 Lite的官方文档:
https://docs.powerwriter.com/docs/next/faq/powerwriter/base/firmwareload
4.2 其他DAPLink烧录
如果手头只有JLink或者其他DAPLink,都可以通过这种方式进行烧录,只是步骤稍微麻烦一些,思路就是建立一个空白工程,然后配置DAPLink信息,把固件复制到这个新建工程的目录中,然后进行烧录,可以参考下图:
*5、复刻常见问题
5.1 屏幕只有文字,没有温湿度数据?
一般发生在温湿度传感器没有焊接好,补焊一下就能解决。
5.2 屏幕红绿蓝颜色显示有异常,或者文字方向不对
因为是在同一个固件支持GC9107和ST7735S驱动IC的屏幕,做法就是根据读取RDDID来驱动不同的屏幕,目前只适配了手头不同厂商的两块ST7735S和一块GC9107屏幕,不排除一些屏幕厂商会更改RDDID,如果遇到这种情况请烧录带TESTLCD后缀的固件:
V1版本请烧录SHT4x_PY32F003_TESTLCD.hex
V2版本请烧录SHT4x_PY32F002_AIR001_TESTLCD.hex
然后把屏幕显示结果私信我进行改进。
5.3 做了好几个,但是显示的温湿度数据各不相同,偏差有些大
这种情况一般是焊接过程中污染了温湿度传感器,尤其不要用洗板水擦传感器。一般2、3天后能恢复正常,精度会返回到官方手册宣传的范围内。
*6、BOM清单
请看下面立创EDA自动生成的BOM列表。
*7、大赛LOGO验证
* 8、演示您的项目并录制成视频上传
设计图

BOM


评论