项目介绍和创意介绍
本项目参加的是方向三:工业控制,整体设计并实现了智能灯光控制系统,核心功能分为两部分:
- 手动模式:通过检测输入信号独立控制 LED 灯光的开启与关闭
- 自动模式:通过采集外部输入传感器信号,根据预设阈值自动判断并控制灯光亮灭,实现环境自适应控制。
整个系统有三路数字输入、三路模拟量输入、三路数字输出、一路TTL串口,可以在此基础上进一步的扩展更多不同的功能逻辑。
硬件介绍
本项目核心硬件为Seeed Studio XIAO nRF52840 Sense开发板,硬件参数与功能如下:
- 强大的无线能力:Bluetooth 5.0,板载天线
- 强劲 CPU:Nordic nRF52840,ARM® Cortex®-M4 32 位处理器,带 FPU,64 MHz
- 超低功耗:待机功耗小于 5μA
- 电池充电芯片:支持锂电池充放电管理
- 板载 2 MB Flash
- 板载 PDM 麦克风
- 板载 6 轴 LSM6DS3TR-C IMU
- 超小尺寸:21 x 17.8mm,Seeed Studio XIAO 系列可穿戴设备经典外形
- 丰富接口:1xUART、1xI2C、1xSPI、1xNFC、1xSWD、11xGPIO(PWM)、6xADC

方案框图

原理图和PCB介绍


整个系统有三路数字输入、三路模拟量输入、三路数字输出、一路TTL串口。其中数字输入和数字输出都做了光耦隔离,可以更好有效的保护主控。
软件流程图
本次代码尝试使用图形化编程的方式,踩了不少坑总结下来觉得还是敲代码方便。


变量:
- Mode:工作模式,0 - 手动控制模式;1 - 自动控制模式。
- State:开关状态,0 → LED灭;1 → LED亮;
控制对象:
- ADC1模拟输入
- D3按键(模式切换)
- D4按键(开关切换)
- D9 LED输出
流程:
通过 Mode(模式) 和 State(状态) 两个变量实现 LED 的双模式控制。按下 D3 按键可在自动模式和手动模式之间切换:在自动模式下,系统实时读取 A0 口的模拟量,当数值大于等于 90 时关闭 LED,否则点亮 LED;在手动模式下,按下 D4 按键可切换 State 状态,从而控制 LED 的亮灭。程序中加入了 300ms 延时用于按键消抖,并通过显示 Mode、State 和 ADC1 的数值方便调试和观察运行状态。整体实现了基于传感器阈值判断与按键控制相结合的双模式 LED 控制功能。
功能展示图
展示场景 | 图片说明 | 功能描述 |
|---|---|---|
初始状态 | 开发板通电,LED 熄灭,默认进入手动模式 | 系统上电初始化,无操作时灯光关闭 |
手动模式 - 开灯 | 按下手动控制按键,LED 点亮 | 手动模式下,按键触发灯光开启 |
手动模式 - 关灯 | 再次按下手动控制按键,LED 熄灭 | 手动模式下,按键触发灯光关闭 |
模式切换 | 按下模式切换按键,系统进入自动模式 | 按键切换后,手动按键失效,ADC 开始工作 |
自动模式 - 关灯 | ADC 采集值<阈值,LED 保持熄灭 | 模拟环境亮度充足,自动关灯 |
自动模式 - 开灯 | ADC 采集值>阈值,LED 自动点亮 | 模拟环境亮度不足,自动开灯 |


设计中遇到的难题和解决方法
看到XIAO nRF52840支持MicroBlocks(图形化编程),看之前说图形化编程都是很容易上手的,于是这个项目就打算使用这个玩一下,结果发现有些局限性并且用着有点不习惯,可能敲代码几分钟就完成了,结果在捣鼓图形化这个东西捣鼓了许久^,而且在有些功能上有点局限性
心得体会
本次基于 XIAO nRF52840 和 MicroBlocks 的智能灯光项目设计,让我收获颇丰。作为入门级智能硬件实践,我首次完成了手动控制 + 自动感应的融合设计,掌握了按键输入、ADC 模拟采集、LED 输出控制、模式逻辑判断等核心知识点。