ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

IoT-For-Beginners 中 Wio Terminal 夜灯实战:用 Grove LED 与 D0 数字引脚实现数字执行器控制

IoT-For-Beginners 中 Wio Terminal 夜灯实战:用 Grove LED 与 D0 数字引脚实现数字执行器控制 IoT-For-Beginners 中 Wio Terminal 夜灯实战用 Grove LED 与 D0 数字引脚实现数字执行器控制【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners本篇技术指南基于 IoT-For-Beginners 课程第 3 课“传感器与执行器”中 Wio Terminal 执行器章节展开完整讲解如何把 Grove LED 作为数字执行器接入 Wio Terminal并通过pinMode(D0, OUTPUT)与阈值判断逻辑实现“环境光低于 300 时点亮 LED”的夜灯功能。读完后你将掌握 Grove 接口的执行器接线规范LED 极性、亮度电位器、左右 Grove 口分工、Arduino 数字引脚输出控制以及如何通过串口监视器验证传感器到执行器的完整闭环。夜灯项目的执行器选型与逻辑设计夜灯项目的前一半见 Wio Terminal 传感器章节已经解决了“感知”问题使用 Wio Terminal 板载光敏传感器读取 0~1023 的环境光模拟值。本篇解决“响应”问题——为系统添加一个执行器Actuator。本例选用的执行器是LED发光二极管。它是一种电流流过时发光的半导体器件属于典型的数字执行器只有两种状态——发送值1HIGHLED 点亮发送值0LOWLED 熄灭。LED 通过 Grove 接口外接需要一根 Grove 线缆连接 Wio Terminal。夜灯的整体控制逻辑用伪代码描述为Check the light level. If the light is less than 300 Turn the LED on Otherwise Turn the LED off即读取光照强度低于 300 就点亮 LED否则熄灭。这是一个最简单的“阈值触发”控制回路也是后续所有 IoT 自动控制场景如土壤湿度触发水泵的原型。硬件Grove LED 模块的接线Grove LED 以“LED 模块”的形式提供板上预留了多颗 LED 的插孔可以自行选择颜色。接线步骤与要点如下插入 LED 并接对极性。LED 是二极管只能单向导电接反则不亮。LED 不是完全圆形的其中一侧略平——略平的一侧是负极阴极。插到模块上时靠近圆润一侧的引脚对应模块外侧标注的插孔较平一侧对应靠近模块中心的插孔。把亮度旋钮拧到最大。LED 模块上有一个旋转电位器用于调节亮度。用一把小型十字Phillips螺丝刀将其逆时针旋到底保证演示时亮度足够。插入 Grove 线缆。Grove 线一端只能按一个方向插入 LED 模块的插口插反插不进去。将另一端接入 Wio Terminal 右侧 Grove 口。插入前先断开 Wio Terminal 与电脑或电源的连接面向屏幕观察时右侧的 Grove 口是距离电源键最远的那个口。一个容易被忽视但很关键的细节Wio Terminal 左右两个 Grove 口的能力不同。右侧 Grove 口既支持模拟传感器/执行器也支持数字传感器/执行器左侧 Grove 口仅支持 I²C 与数字传感器/执行器I²C 在后续课程中讲解。本例 LED 走数字输出接右侧口即可满足要求。代码实现从传感器读数到执行器输出在上一章完成的“读取光强”项目基础上只需两处增量修改就能把传感器数据转化为执行器动作。第一步在setup()末尾配置 D0 引脚在setup函数底部添加pinMode(D0, OUTPUT);这一行配置的是与 Grove 口 LED 通信的引脚D0是 Wio Terminal右侧 Grove 口对应的数字引脚编号设为OUTPUT表示该引脚连接执行器程序将向该引脚写入数据若连接传感器则为INPUT从引脚读取数据。第二步在loop()的delay之前加入阈值判断在loop函数中delay语句之前插入if (light 300) { digitalWrite(D0, HIGH); } else { digitalWrite(D0, LOW); }逻辑说明light是上一章节中analogRead(WIO_LIGHT)读到的环境光值0~1023 的相对量不对应 lux 等标准单位小于 300 时向D0写HIGH等价于数字值 1LED 点亮大于等于 300 时写LOW等价于 0LED 熄灭。 向执行器发送数字值时LOW 对应 0 伏HIGH 对应设备的最高电压。对 Wio Terminal 而言HIGH 电平是 3.3V——这也是 Grove 模块与 Wio Terminal 电平兼容的原因。仓库源码印证完整的夜灯固件课程文档中分散给出的两行代码在仓库中以完整可编译的 PlatformIO 工程形式保存在 code-actuator/wio-terminal 固件完整内容如下#include Arduino.h void setup() { Serial.begin(9600); while (!Serial) ; // Wait for Serial to be ready delay(1000); pinMode(WIO_LIGHT, INPUT); pinMode(D0, OUTPUT); } void loop() { int light analogRead(WIO_LIGHT); Serial.print(Light value: ); Serial.println(light); if (light 300) { digitalWrite(D0, HIGH); } else { digitalWrite(D0, LOW); } delay(1000); }对照课程文档可以看到几个关键实现细节传感器侧与执行器侧的分工pinMode(WIO_LIGHT, INPUT)配置板载光敏传感器的 GPIO 为输入pinMode(D0, OUTPUT)配置右侧 Grove 口数字引脚为输出。一进一出构成最小闭环。调试输出的保留固件在每次判断后先Serial.println(light)打印光强再执行阈值判断。这样即使 LED 状态异常也能从串口值直接定位是传感器读数问题还是逻辑问题。1 秒轮询周期delay(1000)使光照检查每秒执行一次。文档说明该延迟的理由是光照无需连续检查且延迟能降低设备功耗。工程配置platformio.ini 指定了目标板与框架即[env:seeed_wio_terminal]下platform atmelsam、board seeed_wio_terminal、framework arduino。这解释了为何固件能直接使用D0、WIO_LIGHT这类引脚宏——它们由 Arduino 框架针对 Seeed Wio Terminal 的开发板定义提供。与前一阶段 code-sensor/wio-terminal 固件 对比差异恰好就是pinMode(D0, OUTPUT)与if/else判断两段印证了文档“增量式教学”的思路感知层代码完全复用仅在执行器层做增量。上传、烧录与串口验证将 Wio Terminal 重新连接电脑按照之前的方式上传新代码PlatformIO 的 Upload 命令。打开 Serial Monitor。程序会把光强值持续输出到终端典型输出如下 Executing task: platformio device monitor --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time --- More details at http://bit.ly/pio-monitor-filters --- Miniterm on /dev/cu.usbmodem101 9600,8,N,1 --- --- Quit: CtrlC | Menu: CtrlT | Help: CtrlT followed by CtrlH --- Light value: 4 Light value: 5 Light value: 4 Light value: 158 Light value: 343 Light value: 348 Light value: 344注意 Miniterm 行显示的波特率为 9600与固件中Serial.begin(9600)一致/dev/cu.usbmodem101是 macOS 下串口设备路径Linux/Windows 上会显示各自的设备名。用手捂住再移开 Wio Terminal 背面的光敏传感器窗口观察 LED光强 ≤ 300 时 LED 点亮光强 300 时熄灭。串口数值与 LED 状态同步变化即说明传感器→判断→执行器的链路工作正常。小结本文以 IoT-For-Beginners 课程中的 Wio Terminal 夜灯执行为主线完成了数字执行器接入的完整链路环节关键技术点硬件接线LED 极性平边为负极、亮度电位器、Grove 线单向插接、右侧 Grove 口支持模拟/数字引脚配置pinMode(D0, OUTPUT)D0对应右侧 Grove 口数字引脚控制逻辑light 300阈值判断digitalWrite(D0, HIGH/LOW)驱动执行器电平约束Wio Terminal 的 HIGH 为 3.3V与 Grove 模块电平兼容验证手段9600 波特率串口监视器打印Light value与 LED 状态对照完整固件code-actuator/wio-terminal/nightlight该“传感器读取 阈值判断 数字输出”的模式是课程后续农场浇水继电器、运输追踪等课程的共同基础把D0上接的 LED 换成 Grove 继电器同样的if/else结构即可驱动水泵这也是第 2 周农场项目自动浇灌的实现起点。【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表