如何将UNIHIKER K10与空气质量传感器结合,构建一个室内空气质量监测系统
一款紧凑型电池供电的桌面气象站,基于UNIHIKER K10(ESP32-S3)芯片构建。它通过重力环境传感器读取温度、湿度、气压、环境光和紫外线,并通过ENS160传感器获取空气质量(AQI / eCO2 / TVOC),然后将所有数据以简洁清晰的暗色霓虹图形界面显示出来。内置的RGB LED灯会根据实时空气质量水平闪烁,而扩展板上的4个RGB LED则可切换不同颜色模式。两个内置按钮无需修改代码即可控制灯光。
它做什么
•读取Gravity SEN0501传感器的温度、湿度、气压、环境光(勒克斯)和紫外线。
•读取来自EN160传感器的空气质量数据——AQI(1–5级)、等效CO2(eCO2)和总挥发性有机物(TVOC)。
•读取扩展板上的电池百分比。
•在240×320的暗色霓虹卡式用户界面中显示全部内容,包含空气质量面板和彩色AQI徽章。
•车载RGB LED灯会根据空气质量颜色闪烁(绿色 → 黄色 → 橙色 → 红色),随着空气质量恶化,闪烁速度加快。
•扩展板RGB LED可选择显示不同颜色氛围(彩虹、海洋、火焰、森林、紫色、白色)。
•按钮A用于切换哪些LED灯亮起:全部 → 仅UNIHIKER → 仅BASE → 关闭。
•按钮B可循环切换基础LED颜色模式。
硬件组件
它是如何工作的
I2C总线
UNIHIKER K10 的 I2C 总线使用 SDA = GPIO47 和 SCL = GPIO48。重力传感器端口、扩展板边缘连接器以及内置传感器均共享这一总线,因此每个设备只需一个唯一的地址:
由于它们都位于同一辆巴士上,传感器可以连接在重力端口上,并通过地址与每个传感器通信。
扩展板很智能
MBT0044扩展板并非被动式解码器。它在地址0x33处拥有自己的I2C协处理器,用于处理电机、舵机、功能引脚以及电池电量检测。电池百分比数据从寄存器0x87读取(该协议是根据DFRobot官方micro:bit MakeCode扩展程序逆向工程并移植到Arduino C++实现的)。然而,该板上的四个RGB LED为普通的WS2812芯片,连接至micro:bit边缘引脚P1,该引脚对应K10上的GPIO2——因此这些LED通过NeoPixel库直接驱动,而非经由协处理器控制。
空气质量 → 颜色
EN160 返回一个从 1(优秀)到 5(不健康)的空气质量指数(AQI)。该指数通过颜色和脉冲速度进行映射:
因此,空气质量越差,机载LED灯闪烁得就越急促——这就像你在房间另一头就能察觉到的环境警报。
显示屏
K10屏幕在竖屏模式下分辨率为240×320。用户界面绘制在离屏画布(k10.canvas)上,通过updateCanvas()一次性推入,从而避免闪烁。布局包括六个计量卡(温度、湿度、气压、光照、紫外线、电池)以及一个全宽空气质量面板,显示状态文字、彩色AQI徽章、eCO2和TVOC数据。
按钮
两个按钮通过 k10.buttonA->isPressed() 和 k10.buttonB->isPressed() 进行读取。代码使用简单的边缘检测(仅在新按压时触发),因此每次点击都会前进一步:
•按钮A → LED电源模式:全部 → 仅UNIHIKER → 仅BASE → 关闭。
•按钮B → 基础LED颜色模式:彩虹 → 海洋 → 火焰 → 森林 → 紫色 → 白色。
设置
1. 安装 UNIHIKER K10 板件包
在 Arduino IDE 中,添加 UNIHIKER 板件(根据 DFRobot 的 K10 维基),然后选择板子 UNIHIKER K10。使用 arduino-cli 时,板子目标(FQBN)为:
2. 安装库文件
unihiker_k10 和 Adafruit_NeoPixel 会随 K10 板子套装一同提供。请从库管理器(或 DFRobot 的 GitHub)安装这两个传感器库:
•DFRobot_环境传感器
•DFRobot_ENS160
3. 两个K10特有的陷阱
串口监视器显示无内容?K10默认禁用了“启动时启用USB CDC”,这会导致串口输出被发送到UART0,而非USB端口。若要通过USB查看串口输出,请在工具菜单中启用“启动时启用USB CDC”(或使用FQBN选项UNIHIKER:esp32:k10:CDCOnBoot=cdc)。屏幕界面无需此功能,仅用于调试。
4. 接好电线
1. 将UNIHIKER K10卡入扩展板的边缘连接器。
2. 将 SEN0501 和 ENS160 传感器插入 Gravity 的 I2C 接口(它们共用总线——可串联使用,或同时使用两个 I2C 接口)。
3. 将充满电的18650电池插入扩展板并打开电源(用于电池读数和基础LED灯)。
4. 连接USB-C数据线以上传。
布线与组装
所有设备即插即用,无需焊接。两个重力传感器共享K10的单个I2C总线,K10可直接插入扩展板的边缘连接器。
装配步骤
1. 将UNIHIKER K10卡入扩展板的边缘连接器。
2. 将 SEN0501 和 ENS160 传感器插入 Gravity 的 I2C 接口(两者共用总线)。
3. 插入一块充满电的18650电池,并打开电路板(电池读数和基础LED灯需要此操作)。
4. 连接 USB-C 以上传固件。
代码
总结:
本项目展示了如何通过炫酷的灯光效果和模块化扩展板来扩展UNIHIKER K10,从而打造互动性强、富有教育意义的体验。通过结合清晰易懂的示例代码与易于获取的硬件,该项目突出了创客们如何快速原型化基于情绪驱动的物联网应用。
本文编译自hackster.io





