![AirCube]

AirCube 是一个基于 ESPHome 的 All in One 环境状态监测设备,可以监测各种环境状态,例如温度、湿度、二氧化碳浓度、PM 2.5 浓度、光照强度等,还可以与 Domoticz、Home Assistant 等智能家居系统集成,建立家庭环境数据监测系统。
固件、3D 模型开源地址:[https://github.com/ohdarling/AirCube](https://github.com/ohdarling/AirCube)
## 实物图
![aircube]

## 数据图表
基于 Home Assistant 的历史数据图表:
**CO2 浓度历史数据**
![co2history.jpg]

**光照强度历史数据**
![luxhistory.jpg]

## 功能列表
* 概览页面,可以直观查看各种环境数据的当前数值,例如当前温度、湿度、PM 2.5 以及二氧化碳浓度
* 左右键切换传感器详情界面,可以查看具体细分项数值,例如 PM 1,PM 10 等
* 各项数据的历史趋势数据,通过记录过去 12 小时的数据并通过图表展示环境数据的变化趋势
* 特定传感器的详情数据,例如攀藤 PMS5003 可以同时检测 PM 1.0、PM 2.5、PM 10 浓度,在概览页面无法展示完全,就可以在详情页面展示出来
* 设备信息界面,可以展示当前设备的名称、Wi-Fi 连接情况、运行时间等基础信息
* 数据上报能力,可以通过 MQTT 将数据上报到 Domoticz 或 Home Assistant
* 批量部署能力,通过脚本批量部署设备固件
## 更新日志
* 2023.03.31
* 禁用 MQTT 无法连接时自动重启,防止未配置 MQTT Broker 时 AirCube 定时重启
* 2023.03.08
* 墨水屏在长时间使用后,可能会存在残影现象,建议还是使用 LCD 屏幕
* 2023.02.24
* 与小米温湿度传感器对比后,BME280 温度校正 -2,湿度 +10
* 添加重启功能,长按右键 5 秒以上,会重启 AirCube
* 添加 CO2 传感器校准功能,长按左键 5 秒以上,开启 MH-Z19 或 SenseAir S8 校准功能,校准前请将 AirCube 在室外放置运行 20 分钟以上
* 使用自定义组件读取 BME280 数据,避免 ESPHome 初始化失败的问题
* 可以在 GitHub 获取这个版本 [AirCube 2023.02.24](https://github.com/ohdarling/AirCube/releases/tag/2023.02.24)
## 目录结构
* 3D_Model - 设备外壳 3D 模型文件,可以通过 FDM 类型 3D 打印机打印
* AirCube_Back.stl - 后盖
* AirCube_Eink.stl - 使用 E-ink 屏幕时的外壳模型
* AirCube_Eink_Stand.stl - 使用 E-ink 屏幕时的屏幕支架
* AirCube_LCD.stl - 使用 LCD 屏幕时的外壳模型
* AirCube_LCD_Stand.stl - 使用 LCD 屏幕时的屏幕支架
* Firmware - 基于 ESPHome 的设备固件,因传感器造型可变化,未编译成二进行,可以自行编译
* Hardware - 包含用于制造 PCB 的 Gerber 文件和原理图
## PCB
PCB 尺寸为 6cm x 6cm,四角安装孔直径为 2mm。
* PCB 正面为屏幕及触摸按钮安装位置。
* PCB 底面为传感器及 NodeMCU 安装位置,目前版本预留了 IR、433MHz 以及电源接头,但并未使用。
![aircube-pcb-top.png]

![aircube-pcb-bottom.png]

## 元件选型
| 图片 | 类型 | 型号 | 价格(元) | 说明 |
| ------------------------------------------------------------ | ------------ | --------------- | ---------- | ------------------------------------------------------------ |
| ![aircube-part-bme280.png]

| ![aircube-part-pms5003.png]

| ![aircube-part-mhz19.png]

| ![aircube-part-bh1750.png]

| ![aircube-part-touch-sensor.png]

| ![aircube-part-nodemcu32s.png]

| ![aircube-part-lcd.png]

| ![aircube-part-eink.png]

**注:表格中的价格为淘宝上大致价格,随卖家不同价格也会不太相同。**
**注2:NodeMCU-32S 需要使用 30 PIN 版本。**
## 其他配件
| 配件 | 型号 | 数量 | 用途 |
| ------------------------------------------------------------ | ------------------- | ---- | ----------------------- |
| ![aircube-5p-header-90.png]

| ![aircube-3p-header.png]

| ![aircube-15p-header.png]

| ![aircube-5p-header.png]

| ![aircube-4p-header.png]

| ![aircube-8p-header.png]

| ![aircube-8p-1.25mm.png]

| ![aircube-m2x5-screw.png]

## 焊接
**建议母座焊接顺序**
1. 5P 弯针 2.54mm 排母
2. 8P 1.25mm 直针座
3. 8P 2.54mm 母座
4. 3Px2 2.54mm 母座
5. 15P 2.54mm 母座
6. 5P 及 4P 2.54mm 母座
其中 BME280 预留位置为 6P,使用弯 5P 母座时,请使用下侧 5P,保留最上针脚留空。
建议参考 [立创开源平台 AirCube](https://oshwhub.com/wandaeda/aircube) 项目中的 PCB 来进行焊接。
## 组装
3D 模型中,外壳和后盖均已预置 M2 螺丝孔,组装时使用 M2*5 自攻螺丝将 PCB 固定在外壳上,再将后盖固定在外壳上即可。
**组装顺序**
1. 将 3D 打印的屏幕支架安装在 PCB 上
2. 将屏幕安装到排母上,并且 M2 螺丝固定在屏幕支架上
3. 将 2 个触摸传感器安装在排母上
4. 将 PMS5003 传感器的连接线连接到 1.25mm 针座上
5. 将 NodeMCU-32S 安装在排母上
6. 将 MH-Z19B 安装在排母上
7. 将 BH1750 安装在排母上
8. 将 PCB 放进外壳中(可以倾斜着放进去),使用 M2 螺丝固定
9. 将 PMS5003 固定在后盖上,有必要可以使用双面胶固定
10. 将后盖使用 M2 螺丝固定在外壳上
11. 将 BME280 在侧面安装在排母上
注意,BME280 预设安装位置为外壳外部,因此需要将其他部件安装完成,装入外壳固定好后,再从侧面将 BME280 插入 5P 母座。
另外,BH1750 的开孔是朝上的,如果需要避免积灰,可以使用透明胶带盖住。
## 编译和烧录固件
Firmware 目录中已经提供了 `build.sh` 脚本用于快速编译及烧录固件,需要本地安装乐鑫 `esptool.py`,另外 `build.sh` 还接受以下参数用于定制可替换部分元件型号或上报数据参数:
* DP - 屏幕类型,st7789v 或 eink,默认 st7789v
* CO2 - 二氧化碳传感器型号,mhz19 或 s8,默认 mhz19
* TEMP - 温湿度传感器型号,bme280 或 sht31,默认 bme280
* DOMOTICZ - 是否启用 Domoticz 支持,enable 或 disable,默认 disable
* ROOM - 当前节点所处房间名称,需要英文字符,例如 livingroom
* IP - 当前节点 IP,建议使用固定 IP,便于后续 OTA 更新固件
* IDX_BH1750,IDX_PM25,IDX_CO2,IDX_TEMP,IDX_PRESSURE,IDX_HOCO - Domoticz 中对应传感器的设备 ID
另外,如果设置了 `IDX_HOCO`,将会将 PM 2.5 传感器类型设置为 PMS5003ST。
另外,`build.sh` 还提供了 `upload` 参数,可以在编译完成后马上烧录固件。
如果所有传感器类型与默认一致,可以直接使用以下命令编译及烧录固件,注意,需要提前将 NodeMCU-32S 连接到电脑上:
`./build.sh upload`
如果需要定制传感器型号,例如将温湿度传感器替换为 sht31,可以使用以下命令:
`TEMP=sht31 ./build.sh upload`
## 焊接及组装
建议参考 PCB 来进行焊接和组装,其中 BH1750 和 BME280 传感器建议使用 2.54 弯针排母。
3D 模型中,外壳和后盖均已预置 M2 螺丝孔,组装时使用 M2*5 自攻螺丝将 PCB 固定在外壳上,再将后盖固定在外壳上即可。
## 已知问题
* 温湿度传感器靠近主体,ESP32 主控发热比较大,会影响温度和湿度采集结果,需要与其他传感器对比校准一下
## 为什么会有这个项目
可以参考这篇文章 [超简单 DIY - AirCube 空气检测站](https://xujiwei.com/blog/2022/12/aircube-diy-environment-monitor-station/)。