发作品签到
专业版

墨水屏温湿度检测仪

工程标签

2.8k
0
0
7

简介

温湿度检测仪训练营 #第九届立创电赛#

简介:温湿度检测仪训练营 #第九届立创电赛#

开源协议

GPL 3.0

创建时间:2024-07-05 10:31:14更新时间:2025-03-12 06:15:32

描述

banner2.png

1、项目总览

特性描述
复刻难度⭐️
耗材成本¥50
主控制器ESP32C3

这是一个简单又不缺实用的温湿度监测系统!这个系统基于ESP32-C3,还配备了一个2.13寸的墨水屏,可以实时显示环境的温湿度数据。这个项目旨在提供一种低功耗、实时更新的环境监测解决方案,特别适合家里或者办公室使用哦~

核心传感器食用的是盛思锐的SHT40传感器来采集温湿度数据,它具有高精度、低功耗和小尺寸的特点,非常适合用于各种环境监测应用。
主控用的是ESP32C3Mini模组,比较通用的芯片型号,资料也比较多。
屏幕是2.13寸墨水屏,电路同样支持其他尺寸的的墨水屏。
后面可以安装两颗 10mm * 1mm 的磁铁,可以成为冰箱贴。
其实这个可以早些天前发布的,结果3D外壳一直忘记下单了,快递又卡了几天。
关于复刻成本,其实是一个动态范围,主要看墨水屏了。

食物展示:

前面那个就是立创打印的面板,长宽尺寸60*30毫米。

IMG_3075.JPG

IMG_3076.JPG

Github上面存放了本项目所有的软件代码资源。
项目Github地址:MeowKJ/SimpleEInkEnvMonitor

OSWHub上面存放了本项目所有的硬件设计资源。
项目OSWHub地址:小气象喵温湿度监测仪

Github文件夹说明

文件夹作用文件夹作用
1.Hardware为空,请参考OSWHUB4.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那种铜在板子底部的封装,理论上焊接至少需要加热台或者是风枪,或者是打火机。
ESP32-MINI-1-N4

ESP32C和ESP32、ESP32S系列比起来最大的特点就是价格美丽,非常适合做一些比较小的东西,在价格和功耗方面比较有优势。
ESP32C3出了个升级款叫做C6,好像性能更强,还没有阉割低功耗协处理器,但是价格似乎较高,是C3的两倍。

Ⅲ. 墨水屏的24Pin排线接子

注意是0.5mm上接。那个屏幕折过来以后,接触铜朝外。

pintu-fulicat.com-1722585005902.jpg

Ⅳ. 侧贴开关和按钮

柄长越长越好,因为长了可以裁掉,短了就没办法了。

重要电路

Ⅰ.墨水屏驱动

经典的墨水屏驱动电路,BS一般接地,需要修改R2L2的值来面对不同型号的墨水屏。

墨水屏驱动

Ⅱ. 传感器

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
传感器的接线很简单,给它配了一颗电容。SDASCL使用4.7KΩ电阻上拉,满足IIC总线开漏的需求。

传感器

这是SHT40传感器设计建议

传感器

Ⅲ. 锂电池充电和5V转3.3V

锂电池充电采用TP4054,TP4056的可爱版🌟,R152KΩ用来配置充电电流为500mA

5V转3.3V需要注意,需要使用低压差LDO
常规LDO(如AMS1117)可能在接入锂电池(压差<1V)时可能会遇到一些小麻烦。
ME6211数据手册强调,它可以在压差仅为100mV的情况下提供100mA的最大输出电流(100mV@Iout=100mA)(100mV@Iout=100mA)💪(没测试不知道这是不是真的)。
ME6231数据手册指出,它可以不要C27C29这两颗100nF旁路电容,同时兼容陶瓷电容。我这里加上了有两个用意:1.兼容其他型号的LDO。2.我忘了可以不加。
✨ 推荐使用DC-DC转换器,能提升效率哦,增加低功耗能力,不过成本可能会稍微高一点~ 💫

锂电池充电和5V转3.3V

Ⅳ. 其他一些说明

  • USB上面的5.1KΩ电阻用来适配PD使其输出5V
  • IO9也就是BOOT引脚上拉的那颗电阻可以不要,内部弱上拉
  • 模组那里供电最好还是加几个电容,虽然模组内部是有的。但是参考设计上加了。

PCB说明

东西不是很多,简单布局拉拉线就好了,没有太多需要注意的

PCB的整体布局

元件封装采用0603,非常适合手焊哦。整体PCB大小刚好匹配2.13寸的墨水屏,设计为全贴合,背面没有元件。板子剩余空间超级充足,可以加入更多功能呢!💡比如再上点传感器,什么有害气体之类的,毕竟IIC总线在这呢。
电源设计要注意,确保电流先经过电容,再到达元件。当然我觉得这个电路随便排排再拉个自动都可能也不会出问题,当然非常不推荐这样做哦。ESP32模块的顶部天线位置和SHT40传感器下面需要禁用铜铺层。

PCB的整体布局

PCB焊接实物

使用小小加热台进行焊接,焊接水平一般,勉强可用。

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的代理

下载安装PlatformIO.gif

  1. 打开 VSCode,点击左侧扩展图标,搜索并安装 PlatformIO IDE 插件。
  2. 安装完成后,重启 VSCode。

II. 下载并导入工程

工程 GitHub 地址: SimpleEInkEnvMonitor 喜欢别忘了点一个Star🌟!

下载并导入工程.gif

  1. GitHub 下载工程压缩包并解压。(如果安装了git的话,更推荐先 fork 再 clone 项目,这样可以对自己的代码进行版本控制)
  2. VSCode 中打开 PlatformIO Home(点击左侧的蚂蚁图标)。
  3. 选择 Open Project 并浏览到你的工程目录,选择刚才下载的文件夹中的 3.Software 文件夹下的 esp32c3 文件夹导入。PlatformIO 会自动下载并安装依赖文件。
  4. include 文件夹中的 config_example.h 复制一份改名为 config.h,并修改 config.h 文件以完成配置参数。

III. 编译和下载代码

编译和下载代码

  1. 如图所示,选择env Board为env:meow_weather_board,可能选择后又要进行下载一些资源。
  2. 将板子通过USB和电脑连接,检查串口是否正确连接。
  3. 点击左下角的Build按钮(对勾图标✅)编译代码。
  4. 编译成功后,点击左下角的Upload按钮(箭头图标➡️)将代码上传(下载)到设备上。(ps:直接点上传也会编译一次代码,所以在一般情况下第三步可以省略。)

如果ESP32C3进入休眠模式Deep-Sleep后,就识别不到USB了,可以按住IO9/BOOT开关的同时按一下RST按钮进入Download模式。
完成这些步骤后,你的工程就成功安装并运行了。如果有任何问题,请参考 PlatformIO 的官方文档或社区资源以获得帮助。

PART: B - 重要的代码

代码部分经验不多,有什么问题或者改进的地方请多多指出

Ⅰ. 引脚的定义

引脚的定义代码在boards/variants/meow_weather_board/pins_arduino.h文件中
主要定义了 IIC(用来驱动SHT40传感器)和 SPI(用来驱动墨水屏),如果要更改线路墨水屏的话,这里修改引脚定义

喵喵的帕斯.png

Ⅱ. 墨水屏型号选择

墨水屏驱动使用的是GxEPD2也是比较常见的一个墨水屏驱动库,具体的说明可以去阅读库文档。
GxEPD2的GitHub地址 https://github.com/ZinggJM/GxEPD2

型号选择的代码在 include/GxEPD2_display_selection.h 文件中。
在文件中有四个选项来选择墨水屏的类别:

  • GxEPD2_BW:普通的双色墨水屏
  • GxEPD2_3C:三色墨水屏
  • GxEPD2_4C:四色墨水屏
  • GxEPD2_7C:七色墨水屏

只需选择一个类别,方法是取消注释所需的行,并将其他三个选项注释掉。

接下来,在文件的下面部分选择具体的墨水屏型号。例如,我选择的是 GxEPD2_213_Z98c,这是我使用的三色墨水屏。如果选择的型号与上面选择的类别不匹配,会出现报错哦。🛠

喵喵的帕斯-2.png

Ⅲ. 获取天气

本项目使用心知天气的免费天气查询API。首先,注册一个账号,然后在心知天气控制台中获取API密钥中的私钥填入include/config.h文件如下位置中。

喵喵的帕斯-4

当然,其他天气服务也是可以用的。请求心知天气的代码在src/Network.cpp文件中,代码非常简易,仅仅只是一个HTTP-GET请求,然后在返回的JSON格式字符串中找到code字段,获取其后面的内容,即气象识别代码。然后,在src/Weather.cpp中,定义了一些气象识别码和天气图标的转换关系。
并没有用到ArduinoJSON库,不过,如果需要解析更多内容,使用JSON解析库可以省时省力省心。
下面是一个读取天气的代码。

喵喵的帕斯-7

Ⅳ. 获取传感器数据

这个世界上没有一件比在Arduino上驱动一些常用小模块更简单的事情了。SHT4x也是一种很常用的传感器了,直接下载Adafruit SHT4x Library库!
具体可以看库的说明,提供了3种精度模式和6种加热模式。在数据手册中为什么SHT4x下面不建议放焊盘,也许是怕加热器消耗更多能量吧。下面是一个简单的代码使用说明。

喵喵的帕斯-8.png

Ⅴ. 墨水屏的代码

基本上就是调用GxEPD2库,例程和教程应该相当多,有条件的可以上LVGL库去做UI。
u8g2的自定义字体教程需要的话评论区说一下后期我会补充。

下面是一个基础的用自定义字库现实温度和湿度的简单显示例子,具体的代码在src/EPaper.cpp文件中。

墨水屏的代码示例

墨水屏的简单显示

Ⅵ. 屏幕上的猫猫

屏幕上的猫猫是一个点阵画,我想做一些优化,更丰富的猫猫升级!比如下雨天的时候显示猫猫打把伞,晚上的时候显示猫猫在睡觉等等。但是这也挺困难的,毕竟目前这个画猫猫的位置大概只有40x40个像素左右,而且最多只有两种颜色。

灰度显示还没有做,暂时没有这个需求。

6.外壳与3D模型

外壳使用Fusion360制作,我不是专业的设计者,简单的画了一下

这是3D设计的一个外壳,采用新手火柴盒形式设计,正面需要贴上立创打印的面板。面板的设计文件和PCB的在一块。
3D外壳的STL文件发布在Github Release栏目中。

3D外壳设计

我这台3D打印机有点老了,精度不是很高,想攒钱买一台拓竹的A1mini,听说性价比很高。

3D外壳的打印

打印出来的成品不太行,后来还是用的立创三维猴打印的。

3D外壳成品

表面上这个是立创打印的柔性面板。

柔性面板

全家福

全家福

冰箱贴模式

全家福

7、大赛LOGO验证

搞到张彩色丝印券,打了个彩色的

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

暂无BOM

附件

序号文件名称下载次数
1
装配方式.mp4
11
2
墨水屏刷屏.mp4
15
3
SourceCode-v0.2-alpha.zip
35
4
Bottom.stl
22
5
Top.stl
19
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航