
墨水屏温湿度检测仪
简介
温湿度检测仪训练营 #第九届立创电赛#
简介:温湿度检测仪训练营 #第九届立创电赛#开源协议
:GPL 3.0
描述
1、项目总览
特性 | 描述 |
---|---|
复刻难度 | ⭐️ |
耗材成本 | ¥50 |
主控制器 | ESP32C3 |
这是一个简单又不缺实用的温湿度监测系统!这个系统基于ESP32-C3,还配备了一个2.13寸的墨水屏,可以实时显示环境的温湿度数据。这个项目旨在提供一种低功耗、实时更新的环境监测解决方案,特别适合家里或者办公室使用哦~
核心传感器食用的是盛思锐
的SHT40传感器来采集温湿度数据,它具有高精度、低功耗和小尺寸的特点,非常适合用于各种环境监测应用。
主控用的是ESP32C3Mini模组,比较通用的芯片型号,资料也比较多。
屏幕是2.13寸墨水屏,电路同样支持其他尺寸的的墨水屏。
后面可以安装两颗 10mm * 1mm 的磁铁,可以成为冰箱贴。
其实这个可以早些天前发布的,结果3D外壳一直忘记下单了,快递又卡了几天。
关于复刻成本,其实是一个动态范围,主要看墨水屏了。
食物展示:
前面那个就是立创打印的面板,长宽尺寸60*30毫米。
Github上面存放了本项目所有的软件代码资源。
项目Github地址:MeowKJ/SimpleEInkEnvMonitor
OSWHub上面存放了本项目所有的硬件设计资源。
项目OSWHub地址:小气象喵温湿度监测仪
Github文件夹说明
文件夹 | 作用 | 文件夹 | 作用 |
---|---|---|---|
1.Hardware | 为空,请参考OSWHUB | 4.Docs | 包含文档文件,如数据手册和开发者指南 |
2.Firmware | 为空,请参考Release栏目 | 5.Design | 包含设计相关文件,如UI设计和图标等 |
3.Software | 包含项目源代码 | 6.Tools | 包含工具和实用程序的工具 |
2、项目属性 & 开源协议
该项目是首次公开,并且为原创项目,项目没有在其他比赛中获奖。
开源协议GPL 3.0
水平有限,硬件&代码有任何问题请详尽指出
3、硬件部分
硬件设计基于ESP32-C3-MINI-1-N4模块,温湿度来自盛思锐的SHT40,墨水屏建议2.13寸正好配合板子。
硬件概述
这几天刚赶完,电脑坏了。功耗没测不好说,但我猜测应该是不高的,这板子不小,可以上块大容量锂电池告别续航焦虑,可以把3d模型屁股做厚一点,搞块大电池。
优化建议:
- AD那里得加个MOS做个开关,或者直接不要。
- 那个RTC芯片直接不要了
- 软件优化
- 搞点微弱能量供应,我觉得搞点室内光小太阳能板说不定可以,毕竟她生命的绝大多数时间都该去睡觉。
设计文件中Basic和Basic+的区别
Basic就是现在展示的这块PCB,Basic+是我针对低功耗进行优化的PCB,LDO换成DCDC,加入了一些电子开关等等优化,但是由于改变了按钮,3D外壳就不通用了。
材料说明
关键的材料是墨水屏
,ESP32C3模组,墨水屏的排线接线
Ⅰ. 墨水屏
墨水屏(E-Ink屏)是一种采用电子墨水技术的显示屏,具有类似纸张的显示效果。
这也是我第一次做墨水屏,不知道市场价格怎么样,好像听说挺贵的。现在用的这个墨水屏是在某鱼上面找到个3色的,捡了几个,邮费比屏贵,应该还有更便宜的。
还有那种电子标签成品的更便宜,可惜买了一个没拆好把屏弄碎了。 那个粘的胶是真的紧,屏幕碎了那个片片还粘在上面。
总之,颜色无所谓,大小即使不同应该都通用,改代码就行,是24Pin的就好。当然,这个设计和3D外壳推荐使用的是2.13寸的墨水屏。
Ⅱ. 主控ESP32-MINI-1-N4
ESP32-C3-MINI-1 是一款通用型 Wi-Fi 和低功耗蓝牙 (Bluetooth LE) 模组
选择C3主要是因为它的价格低,功耗也小。
其实感觉不便宜,虽然不到十块钱,但不能说只要几块钱。便宜的店不包邮,包邮的店贵,我愿称之为价邮守恒定律。
焊接要注意一下,类似QFN那种铜在板子底部的封装,理论上焊接至少需要加热台或者是风枪,或者是打火机。
ESP32C和ESP32、ESP32S系列比起来最大的特点就是价格美丽,非常适合做一些比较小的东西,在价格和功耗方面比较有优势。
ESP32C3出了个升级款叫做C6,好像性能更强,还没有阉割低功耗协处理器,但是价格似乎较高,是C3的两倍。
Ⅲ. 墨水屏的24Pin排线接子
注意是0.5mm上接
。那个屏幕折过来以后,接触铜朝外。
Ⅳ. 侧贴开关和按钮
柄长越长越好,因为长了可以裁掉,短了就没办法了。
重要电路
Ⅰ.墨水屏驱动
经典的墨水屏驱动电路,BS
一般接地,需要修改R2
和L2
的值来面对不同型号的墨水屏。
Ⅱ. 传感器
Sensirion SHT40 数字温湿度传感器 ±1.8% / max. ±3.5% RH 传感器,性价比高。采用胶带和卷装包装,标准SMD组装工艺,适合大批量应用。
基于优化的CMOSens®芯片,低功耗,精度高。供电范围广,从1.08V到3.6V,适合移动和电池驱动应用。小巧的DFN外壳适合紧凑设计,符合JEDEC JESD47认证,且符合RESET®和WELL Building Standard™健康建筑标准
SHT40供电在1.08 - 3.6V
不适合5V系统。那这个系统为什么不使用更低的电压,像PC电脑一样降压降低功耗呢,主要是因为ESP32的这个模组的电压范围是3.0 - 3.6V
,也就是建议电压是3.3V,当然墨水屏的工作电压也是3.3V
。
传感器的接线很简单,给它配了一颗电容。SDA
和SCL
使用4.7KΩ
电阻上拉,满足IIC总线开漏的需求。
这是SHT40传感器设计建议
Ⅲ. 锂电池充电和5V转3.3V
锂电池充电采用TP4054
,TP4056的可爱版🌟,R15
为2KΩ
用来配置充电电流为500mA
。
5V转3.3V需要注意,需要使用低压差LDO
。
常规LDO(如AMS1117)可能在接入锂电池(压差<1V)时可能会遇到一些小麻烦。
ME6211数据手册强调,它可以在压差仅为100mV的情况下提供100mA的最大输出电流💪(没测试不知道这是不是真的)。
ME6231数据手册指出,它可以不要C27
和C29
这两颗100nF旁路电容,同时兼容陶瓷电容。我这里加上了有两个用意:1.兼容其他型号的LDO。2.我忘了可以不加。
✨ 推荐使用DC-DC转换器,能提升效率哦,增加低功耗能力,不过成本可能会稍微高一点~ 💫
Ⅳ. 其他一些说明
- USB上面的
5.1KΩ
电阻用来适配PD使其输出5V IO9
也就是BOOT
引脚上拉的那颗电阻可以不要,内部弱上拉- 模组那里供电最好还是加几个电容,虽然模组内部是有的。但是参考设计上加了。
PCB说明
东西不是很多,简单布局拉拉线就好了,没有太多需要注意的
PCB的整体布局
元件封装采用0603,非常适合手焊哦。整体PCB大小刚好匹配2.13寸的墨水屏,设计为全贴合,背面没有元件。板子剩余空间超级充足,可以加入更多功能呢!💡比如再上点传感器,什么有害气体之类的,毕竟IIC总线在这呢。
电源设计要注意,确保电流先经过电容,再到达元件。当然我觉得这个电路随便排排再拉个自动都可能也不会出问题,当然非常不推荐这样做哦。ESP32模块的顶部天线位置和SHT40传感器下面需要禁用铜铺层。
PCB焊接实物
使用小小加热台进行焊接,焊接水平一般,勉强可用。
4、软件部分
软件使用了PlatformIO使用Arduino库进行开发,Board和Library已经集成好,克隆下来以后只要网络好,不需要像原生Arduino去配置板子安装库等等繁琐的操作,可以直接编译成功,非常适合初学者进行二次开发。目前测试了MAC和Win系统,均可以克隆下来等待资源自动下载后一键编译下载,无需进行其他配置。
软件概述
使用到的库 | 版本 |
---|---|
adafruit/Adafruit SHT4x Library | ^1.0.4 |
zinggjm/GxEPD2 | ^1.5.8 |
olikraus/U8g2_for_Adafruit_GFX | ^1.8.0 |
bblanchon/ArduinoJson | ^7.1.0 |
PART: A - 软件环境配置
简单的PlatformIO环境配置,有经验的可以自己按照自己的喜好来
I. 下载安装PlatformIO
准备以下工具和软件
- 电脑 (Win,Mac,Linux系统均可)
- VSCode
- 可以加快PlatformIO下载网络加速器(可选/建议)[下面的方法二选一]
- 代理走TUN模式(虚拟网卡)
- 在VScode左下角 设置-代理 里面可以配置VSCode的代理
- 打开
VSCode
,点击左侧扩展图标,搜索并安装PlatformIO IDE
插件。 - 安装完成后,重启 VSCode。
II. 下载并导入工程
工程 GitHub 地址: SimpleEInkEnvMonitor 喜欢别忘了点一个Star🌟!
- 从
GitHub
下载工程压缩包并解压。(如果安装了git的话,更推荐先 fork 再 clone 项目,这样可以对自己的代码进行版本控制) - 在
VSCod
e 中打开PlatformIO Home
(点击左侧的蚂蚁图标)。 - 选择
Open Project
并浏览到你的工程目录,选择刚才下载的文件夹中的3.Software
文件夹下的esp32c3
文件夹导入。PlatformIO 会自动下载并安装依赖文件。 - 将
include
文件夹中的config_example.h
复制一份改名为config.h
,并修改config.h
文件以完成配置参数。
III. 编译和下载代码
- 如图所示,选择env Board为
env:meow_weather_board
,可能选择后又要进行下载一些资源。 - 将板子通过USB和电脑连接,检查串口是否正确连接。
- 点击左下角的
Build
按钮(对勾图标✅)编译代码。 - 编译成功后,点击左下角的
Upload
按钮(箭头图标➡️)将代码上传(下载)到设备上。(ps:直接点上传也会编译一次代码,所以在一般情况下第三步可以省略。)
如果ESP32C3进入休眠模式Deep-Sleep后,就识别不到USB了,可以按住IO9/BOOT
开关的同时按一下RST
按钮进入Download
模式。
完成这些步骤后,你的工程就成功安装并运行了。如果有任何问题,请参考 PlatformIO 的官方文档或社区资源以获得帮助。
PART: B - 重要的代码
代码部分经验不多,有什么问题或者改进的地方请多多指出
Ⅰ. 引脚的定义
引脚的定义代码在boards/variants/meow_weather_board/pins_arduino.h
文件中
主要定义了 IIC(用来驱动SHT40传感器)和 SPI(用来驱动墨水屏),如果要更改线路墨水屏的话,这里修改引脚定义
Ⅱ. 墨水屏型号选择
墨水屏驱动使用的是GxEPD2
也是比较常见的一个墨水屏驱动库,具体的说明可以去阅读库文档。
GxEPD2的GitHub地址 https://github.com/ZinggJM/GxEPD2
型号选择的代码在 include/GxEPD2_display_selection.h
文件中。
在文件中有四个选项来选择墨水屏的类别:
GxEPD2_BW
:普通的双色墨水屏GxEPD2_3C
:三色墨水屏GxEPD2_4C
:四色墨水屏GxEPD2_7C
:七色墨水屏
只需选择一个类别,方法是取消注释所需的行,并将其他三个选项注释掉。
接下来,在文件的下面部分选择具体的墨水屏型号。例如,我选择的是 GxEPD2_213_Z98c
,这是我使用的三色墨水屏。如果选择的型号与上面选择的类别不匹配,会出现报错哦。🛠
Ⅲ. 获取天气
本项目使用心知天气
的免费天气查询API。首先,注册一个账号,然后在心知天气控制台中获取API密钥中的私钥填入include/config.h
文件如下位置中。
当然,其他天气服务也是可以用的。请求心知天气的代码在src/Network.cpp
文件中,代码非常简易,仅仅只是一个HTTP-GET请求,然后在返回的JSON格式字符串中找到code
字段,获取其后面的内容,即气象识别代码。然后,在src/Weather.cpp
中,定义了一些气象识别码和天气图标的转换关系。
并没有用到ArduinoJSON
库,不过,如果需要解析更多内容,使用JSON解析库可以省时省力省心。
下面是一个读取天气的代码。
Ⅳ. 获取传感器数据
这个世界上没有一件比在Arduino上驱动一些常用小模块更简单的事情了。SHT4x也是一种很常用的传感器了,直接下载Adafruit SHT4x Library
库!
具体可以看库的说明,提供了3种精度模式和6种加热模式。在数据手册中为什么SHT4x下面不建议放焊盘,也许是怕加热器消耗更多能量吧。下面是一个简单的代码使用说明。
Ⅴ. 墨水屏的代码
基本上就是调用GxEPD2
库,例程和教程应该相当多,有条件的可以上LVGL库去做UI。
u8g2的自定义字体教程需要的话评论区说一下后期我会补充。
下面是一个基础的用自定义字库现实温度和湿度的简单显示例子,具体的代码在src/EPaper.cpp
文件中。
Ⅵ. 屏幕上的猫猫
屏幕上的猫猫是一个点阵画,我想做一些优化,更丰富的猫猫升级!比如下雨天的时候显示猫猫打把伞,晚上的时候显示猫猫在睡觉等等。但是这也挺困难的,毕竟目前这个画猫猫的位置大概只有40x40个像素左右,而且最多只有两种颜色。
灰度显示还没有做,暂时没有这个需求。
6.外壳与3D模型
外壳使用Fusion360制作,我不是专业的设计者,简单的画了一下
这是3D设计的一个外壳,采用新手火柴盒形式设计,正面需要贴上立创打印的面板。面板的设计文件和PCB的在一块。
3D外壳的STL文件发布在Github Release栏目中。
我这台3D打印机有点老了,精度不是很高,想攒钱买一台拓竹的A1mini,听说性价比很高。
打印出来的成品不太行,后来还是用的立创三维猴打印的。
表面上这个是立创打印的柔性面板。
全家福
冰箱贴模式
7、大赛LOGO验证
搞到张彩色丝印券,打了个彩色的
8、项目总结
首先感谢立创的这个温湿度训练营,除了领到了免费的券,还学到很多东西。我最开始使用嘉立创的时候,那个时候还是5元免费打样,到现在6层沉金免费打样,还有这么大的产业链和社区,感觉真的不可思议,为我们这种家境贫寒的学生DIY爱好者提供了极大地帮助,我已经很久很久没有用过洞洞板了。
盛思锐的传感器做的真的挺小的,用的SHT40其实和0603的阻容大小不相上下,我看那个图还以为挺大的。
项目中的ESP32应该可以接入智能家居,比如Apple Homekit或者米家,但我暂时没有条件去做这个。我非常建议将其接入智能家居系统,作为桌面小组件会非常方便。
话说在做这个项目之前,我都不知道原来墨水屏断电可以保存内容,然后主要用于在电子标签,阅读器之类的。搞个大尺寸的做个日程表或者是通知表挺有意思,或者收邮件,挂墙上去展示一些信息。这个项目的其实也没啥时间去做,代码功能也就最基础的,基本上能开源东西的都开源了,改改就行。第一次做墨水屏,好在基本上没遇到什么问题,社区里面开源的墨水屏项目也很多,照着电路图改改就OK了。电路设计的时候没啥雷点,一次画完就没改了,倒是那个屏幕排线比想象中的长,布局上最好排线再往内部靠靠。板子挺大的,空间听够用的,0603的封装也好焊接,除了ESP32那个模块第一次好像没焊好,然后重新小焊了一下就好了。在写代码的时候,还是尝试了其他的库,试了一些别的,最后还是用的GxEPD2,倒是一开始墨水屏刷不出来,除了型号不确认之外,发现是因为我丝印上面标的引脚号标歪了,浪费些时间。
注:我这个3色墨水屏刷一下要10秒,多色的好像刷新时间都挺长的。
9、演示视频
视频要求:
请横屏拍摄,分辨率不低于1280×720,格式Mp4/Mov,单个视频大小限100M内;
视频标题;组装视频-墨水屏刷新视频
10、附件
附件的内容,源码包,3D模型源自项目Github可能不会实时更新,最新的内容还是参考Github。
https://github.com/MeowKJ/SimpleEInkEnvMonitor
设计图

BOM


评论