当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]一款紧凑型电池供电的桌面气象站,基于UNIHIKER K10(ESP32-S3)芯片构建。它通过重力环境传感器读取温度、湿度、气压、环境光和紫外线,并通过ENS160传感器获取空气质量(AQI / eCO2 / TVOC),然后将所有数据以简洁清晰的暗色霓虹图形界面显示出来。内置的RGB LED灯会根据实时空气质量水平闪烁,而扩展板上的4个RGB LED则可切换不同颜色模式。两个内置按钮无需修改代码即可控制灯光。

一款紧凑型电池供电的桌面气象站,基于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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭