
IoT桌面环境监测仪
简介
集成温湿度、CO2、VOC指数监测,通过LCD触屏交互,可查看实时数据、历史数据图表,支持WIFI连接上传数据、OTA升级、实时天气,可在监测仪和手机端查看历史数据线。支持旁路充电,保护电池
简介:集成温湿度、CO2、VOC指数监测,通过LCD触屏交互,可查看实时数据、历史数据图表,支持WIFI连接上传数据、OTA升级、实时天气,可在监测仪和手机端查看历史数据线。支持旁路充电,保护电池开源协议
:GPL 3.0
(未经作者授权,禁止转载)描述
多合一IoT 桌面环境监测仪
💡 全方位环境监测,尽在掌握 💡
项目演示视频
开源一款小巧的物联网桌面环境监测仪
以下是教学视频,后续还会继续在B站更新的,开源广场这边更新链接可能不会特别及时,请在B站订阅合集、关注我 ~
WSL+VSCode+ESP-IDF安装 | 项目编译 程序烧录教程
数据上云② InfluxDB数据库 Grafana数据大屏安装
我的技术文档中心,你可以在这里查看文字版的教程,这里更新速度比较快,内容也更详细:
https://wiki.vrxiaojie.top/
1 简介
1.1 项目背景
传统的单一功能检测仪已无法满足用户对综合环境数据的需求,而物联网的发展为设备的智能化和数据互联提供了技术支撑。因此,我做了一款集成多参数监测、本地直观显示、云端数据追溯的智能环境监测设备。
1.2 项目亮点
- ✅全方位环境数据监测,专业级传感器方案
- ✅强大的本地可视化与智能交互系统
- ✅WIFI连接、MQTT协议数据上云
- ✅私有化搭建MQTT Broker和InfluxDB数据库
- ✅自动电源管理,支持旁路充电、锂电池与USB供电自动切换
- ✅支持OTA固件升级
- ✅网络获取本地实时天气数据
2 功能展示
- 实时监测
实时显示温湿度、二氧化碳、VOC指数,根据浓度不同,用不同颜色标注。

- 触摸屏交互
①UI部分使用LVGL框架,部分UI设计使用GUI-Guider。
②采集数据记录下来并形成折线图,时间粒度为1分钟、1小时、1天


- 数据上云
①WIFI联网,自动通过网络对时、获取当地天气预报
②MQTT协议发送数据至云端InfluxDB数据库
③可登入基于Grafana搭建的数据大屏在线查看历史数据情况。



- 电源管理
①省电模式,在长时间未触摸时自动降低亮度、关闭屏幕,降低系统功耗
②可配置快速充电,最高可达5V0.5A
③可配置充电上限,延缓电池老化

- OTA升级
通过内置的OTA升级功能,无需连接电脑,即可轻松升级固件

- 天气功能
想查询某个城市的实时天气?没问题,在主界面左滑进入天气页面,使用和风天气API即可实现天气数据查询。

3 硬件方案
-
主控 ESP32-S3 N8R8模组
由于使用的是RGB LCD屏幕,需要占用外置PSRAM较多,同时部分RTOS任务也需要分配不小的栈空间,综合考虑选择8MB PSRAM的版本;
另外,程序使用的LVGL、WIFI库等本身就比较占用Flash空间,后期开发OTA升级功能需要预留约3MB OTA分区,综合考虑选择了8MB Flash的版本。 -
显示屏使用4.3寸 RGB565 40PIN 带电容触摸
与立创·衡山派 用的同款屏幕,参数为4.3寸 480x272 RGB565 40PIN,带电容触摸6PIN。因为我之前在玩D133EBS时买过这个屏幕,所以就直接用起来了。如果你觉得占用IO过多,还想加其他功能,你也可以自行修改原理图、PCB、代码,适配SPI接口的屏幕。

-
显示屏背光IC RY3730
配置电阻为10Ω,对应背光电流25mA。在软件中通过ESP32S3在其EN引脚产生PWM波,通过调整占空比控制背光亮度。 -
传感器部分,均使用I2C通信
(1)CO2 STCC4-D-R3
这颗二氧化碳传感器精度比较高,CO2的测量范围400-5000ppm,它能够使用外置的SHT4x传感器自动补偿输出
(2)VOC SGP40-D-R4
这是一颗室内气体传感器,在编程时,通过盛思锐的气体指数算法可以得到VOC指数。
(3)温湿度 SHT40-AD1B-R2
这是一颗高精度温湿度传感器,它没有直接连接到ESP32S3,而是连接了STCC4,这样既能给STCC4做补偿,也能通过读STCC4的测量数据直接获取温度和湿度值。 -
锂电池充电管理IC: AW32001
实现USB供电和电池供电自动切换,可通过软件配置充电电流
4 软件部分
使用ESP-IDF框架设计,软件开源地址:iot_environment_monitor-GitHub
同时我将会做一个系列教程,分享我在设计时的思路以及环境搭建方法等,我将它们放在了B站(视频版)和我的技术文档中心(文字版),详见开源描述顶部“网站链接”部分
5 触摸屏选购
如果你去其他店铺选购,一定要注意40PIN排线和6PIN触摸的引脚定义,要能和原理图中的一一对应。


6 3D外壳
6.1 外壳设计说明
3D外壳使用的是Fusion360进行的设计,设计文件放在了附件中。
外壳顶部和底部使用卡扣+摩擦力+螺丝固定的方式连接,顶部按屏幕大小挖空,嵌入几颗磁铁,可将屏幕磁吸牢固。

6.2 组装外壳所需的紧固件
都是在tb或者pdd能买到的
| 规格 | 数量 |
|---|---|
| 单头六角铜柱 M3*5+5 | 4个 |
| 十字扁平头螺丝 M3*4 | 4个 |
| 圆形磁铁 直径6mm 厚度3mm | 2~4个 |

6.3 外壳组装方法
上壳:指放置屏幕的外壳部分
下壳:指放置PCB的外壳部分
(1)在上壳开孔处嵌入2到4颗磁铁,如果磁铁嵌入得不牢固,可以使用强力胶固定

(2)将屏幕放入上壳,排线从镂空处穿出,并连接到PCB上,注意40PIN的是上接(金属导电部分朝上)、6PIN触摸排线是下接(金属导电部分朝下)

(3)在电池座上装入18650锂电池
(4)下壳先放入PCB,再拧上单头六角螺柱,要确保每颗都拧到底

(5)先盖上壳,再拧紧M3螺丝

(6)将屏幕放入上壳的凹槽内,注意不要直接压折排线(不要压出折痕,有圆弧状的弯折是可以的)
7 常见问题
-
Q:连接WIFI时,屏幕会闪烁、卡顿?
A:正常现象。由于使用的屏幕是RGB接口的,内部不自带显存,需要通过ESP32的SPI PSRAM作为显存,用ESP32一直给它传输数据。当WiFi启动连接时,需要进行一系列密集的Flash操作。由于ESP32-S3的Flash和PSRAM是共享SPI总线,在写Flash期间,PSRAM的访问会被暂时挂起。RGB LCD控制器因此无法及时读取帧缓冲区数据,导致传输到屏幕的数据流出现中断或错位。为了解决这个问题,在程序中已通过降低频率、重置屏幕等方式尽可能地避免显示错误,但因此带来的副作用是会出现持续几秒的屏幕闪烁、卡顿现象,当WIFI连接过程结束后,就会恢复正常显示。 -
Q:为什么我系统显示的时间不对?
A:在连接WIFI后,系统将自动使用NTP对时,且每30分钟自动同步一次。请注意,断电后时间信息将会被清除。 -
Q:续航时间多久?如何提高电池续航?
A:使用一节满电的亿纬18650锂电池(标称容量3300mAh),屏幕亮度20%(常亮),数据采样周期5s,此时系统功耗约500mW,理论续航时间约为24小时。通过在设置页面开启省电模式、设置屏幕超时休眠、提高数据采样周期等方式,均可大幅降低系统功耗。此外,本产品支持类似笔记本电脑的电源管理模式的旁路供电模式,当接入USB供电时,电源管理芯片将自动切换至外部供电,同时为电池充电,有效减少电池反复充放电损耗 -
Q:本项目元器件容易用烙铁焊接吗?
A:本项目的传感器为DFN和LGA封装,AW32001是WLCSP封装,因此无法使用电烙铁焊接这些器件!建议使用加热台/热风枪+钢网或用立创SMT焊接传感器及AW32001,除此之外的部分均可用烙铁焊接。 -
Q:为什么WIFI名称中会显示方框?
A:这样的WIFI名称通常是含有除了英文字母、英文标点和数字之外的字符,如中文、emoji符号等。这些字符并未被写入字库,且考虑到Flash空间的问题,以后也不会添加中文支持,请使用英文WIFI名。 -
Q:为什么扫描不到我的WIFI?
A:ESP32-S3只支持2.4GHz,不支持5GHz,请检查你的WIFI是否为2.4GHz频段。另外,建议将路由器的双频合一功能关闭,再试着扫描一遍。 -
Q:为什么手动开关一次电源之后,立即开启WIFI,无法自动连接到上一次保存的WIFI?
A:手动关掉设备电源,设备在路由器那边并不会主动断开连接,因此再次开机连接时,路由器会认为该设备已在线而导致设备连接失败。解决方法是:多等几分钟,或在路由器后台踢掉ESP32。
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。










