Github上硬核的嵌入式项目——ESP32-P4+10.1寸屏直接干成全屋环境监测中枢

桌面上放一台天气站,显示明天明天天气如何,这个既简单也没什么新鲜的。但如果同一块屏能看到屋内CO₂、颗粒物变化,还能接收阳台和房间里的电池传感器,立即就不一样了。Harald Kreuzer做的ESP32 Weather Station and Air Quality Monitor,把这些功能都装进了10.1英寸触摸屏。

该项目ESP32 Weather Station and Air Quality Monitor,主控用的是ESP32-P4,本地挂着Sensirion SEN66空气质量模块,远端数据靠LoRa和ESP-NOW两条链路汇进来。仓库放在GitHub上,仓库结构覆盖了主机、无线接收器、好几种传感节点,还有独立的界面工程。硬件几乎全用现成开发板拼出来,不需要先画一版PCB才能动手,从系统集成的角度切入门槛低了不少。

Github地址:

https://github.com/HarryVienna/ESP32-Weather-Station-and-Air-Quality-Monitor/tree/develop

从仓库中可以看到主要器件及成本,硬件成本大致是:Waveshare ESP32-P4-Module-DEV-KIT-C约78美元,Heltec V4板约30美元,SEN66约62美元,BH1750几块钱,C4001毫米波模块约13美元,主机部分加起来至少185美元,当然还没算螺丝、打印耗材和额外节点的物料。

整机长这样

这里顺便打个广告,如需要IOS/安卓 APP开发,微信小程序开发,欢迎私信,特别擅长各种APP,小程序与各种无线硬件设备(NFC,BLE,Wi-FI,4G)之间的交互。

主机、接收器、传感节点,三块板子各干各的

主机负责显示,联网和无线接收各交给一颗独立芯片去扛。主机基于Waveshare ESP32-P4-Module-DEV-KIT-C,模组上是ESP32-P4搭配32MB PSRAM,屏幕是1280×800的10.1寸IPS面板,对比度800:1,亮度400 cd/m²。但P4自己没有Wi-Fi和蓝牙,联网、拉取天气数据、固件在线更新,全靠板载的ESP32-C6顶上。选板子的时候要留意这一点,别把开发套件整体的无线能力,误以为是P4芯片本身自带的。

无线这块另外还有一块Heltec WiFi LoRa 32 V4(ESP32-S3)专职做Sensor-Receiver,同时收LoRa和ESP-NOW两种包,收完再以I2C从设备身份把数据递给P4。这么拆开的好处是,传感器那边发包出问题,不会牵连到界面刷新逻辑;显示端要的只是一份干净、稳定的数据,不用关心包是从哪条链路飘过来的。

主机本体自带的Sensirion SEN66,一颗芯片能出PM1.0/PM2.5/PM4.0/PM10、氮氧化物(NOx)和VOC相关读数,走I2C接线,省了单独拼好几块传感板的麻烦。这里有个容易被忽略的细节:VOC和NOx给出的是指数而不是具体气体浓度,不能拿这几条曲线当校准过的专业仪器数据来用,读数上屏只是第一步。

BH1750光照传感器负责按环境光调节亮度,DFRobot C4001(12米量程版)24GHz毫米波传感器负责判断有没有人在附近。人走近了自动调亮,没人的时候暗下来,除了省电和不刺眼,也顺带减少了屏幕长时间点亮对旁边温度读数的干扰。真要复刻,得给整机留出走风的空间,让传感器离热源远一点,最好拿一支独立温度计做个对照,不能直接照搬别人机壳里调好的补偿参数。

仓库里能看到六种预置的无线节点,各自有对应的硬件方案:Sensor-LORA-BME280(温湿压,Heltec WiFi LoRa 32 V3/V4)、便宜版的Sensor-LORA-BME280-HTCC-AB01(用CubeCell HTCC-AB01 V2,没有屏,成本更低)、Sensor-LORA-SHT45(温湿度)、两版辐射计数节点Sensor-LORA-RadiationD(基于RadiationD-v1.1盖革管),以及最早期的Sensor-ESP-NOW-BME280,用的是普通ESP32板子。界面上留了六个无线传感器位,每个位置能显示名称、电池电量和信号质量,这些节点都是同一套系统里的角色,不是几个独立小项目硬凑在一起的演示。

界面用EEZ Studio画,LVGL负责渲染

主机界面是EEZ Studio设计、LVGL渲染的,基础配置能直接在触摸屏上完成并存进NVS,本地会显示实时传感数据、24小时历史曲线和天气预报,天气源可以在Open-Meteo、OpenWeatherMap、Visual Crossing之间切。本地测量数据不需要经过任何厂商云,但天气预报和固件OTA还是要联网。项目里还带了节点离线提示和电池状态展示,过期数据比没数据更容易误导人,作者的处理思路是把“最后一次上报时间”直接摆在卡片上,而不是让屏幕一直显示一个可能已经是几小时前的读数。

关注公众号“嵌入式杂谈”,了解更多有趣好玩的嵌入式信息,感谢大家的点赞,在看。

发表评论