之前用闲置的树莓派搭了个室内的温度和空气质量监测器,但是问题是树莓派太贵了,这样的方案不太容易批量复制。另外一种便宜的方案是用 ESP8266(大约十来块钱)来作为传感器和电脑之间的中介,它可以通过自带的 WiFi 和电脑连接。

实物图大概长这样。

ESP8266

传感器还是之前树莓派时候的 AM2320 和 SGP30。至于接线,我们把 AM2320 的 SCLSDA 分别接入 GPIO14 (D5)GPIO12 (D6);把 SGP30 的 SCLSDA 接入标准的 I2C 引脚:GPIO5 (D2)GPIO4 (D1). 大概按照 这里 对应的 ESP8266 12-E NodeMCU Kit 部分的引脚图接线就行。

完成接线后按照 这里 的说明,安装 arduino-cli 和对应的 ESP8266 相关包,设置好 WiFi 密码后编译并且写入固件即可。其中有一个可选的步骤是设置 SGP30 的 baseline,默认情况下可以不进行,这个传感器每次初始化后会自动处理,一般会需要一段时间后会到达稳定。如果想要初始化更快一些,按照 SGP30 说明书可以运行 12 小时后记录对应 baseline 作为初始的值。

传感器的数据获取通过访问 http://对应ESP8266的IP 来进行,下方是一个样例输出:

{ 
    "uptime": 3318604, 
    "am2320": { 
        "status": "ok", 
        "temperature": 28.60, 
        "humidity": 65.10, 
        "last_time": 12154 
    }, 
    "sgp30": { 
        "status": "ok", 
        "eCO2": 408, 
        "TVOC": 273, 
        "last_time": 158 
    }, 
    "sgp30_baseline": { 
        "eCO2": 36622, 
        "TVOC": 41061, 
        "last_time": 12152 
    } 
}

最后,只要按时把数据灌入 grafana 家用灵车传感器就完成了。

ESP8266成品

Update 2023-09-04: 突然发现有些十元一个的小 OLED 屏幕,再买了个面包板又生成了一个新型的环境监测器。