十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

IoT-For-Beginners 实战:Wio Terminal + Grove LED 构建光敏小夜灯(数字执行器篇)

IoT-For-Beginners 实战:Wio Terminal + Grove LED 构建光敏小夜灯(数字执行器篇) IoT-For-Beginners 实战Wio Terminal Grove LED 构建光敏小夜灯数字执行器篇【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners本篇技术指南聚焦于开源课程 IoT-For-Beginners 第 1 章第 3 课《传感器与执行器》中 Wio Terminal 的执行器环节为上一课已经接入板载光敏传感器的 Wio Terminal 连接一颗 Grove LED编写代码实现光弱则亮、光强则灭的智能小夜灯。读完本文你将掌握数字执行器的驱动原理、Grove LED 的正确接线方法、pinMode与digitalWrite的 GPIO 控制方式并能在 PlatformIO VS Code 环境中完成代码上传与 Serial Monitor 联调验证。一、硬件准备数字执行器与 LED小夜灯现在需要一个执行器Actuator。执行器与传感器正好相反——传感器把物理世界转成电信号执行器则把 IoT 设备发出的电信号转化为对物理世界的干预例如发光、发声或驱动电机。本次使用的执行器是一颗LED发光二极管当电流流过它时就会发光。它属于数字执行器只有开和关两个状态——发送值1点亮 LED发送值0熄灭 LED。这是一颗外部 Grove 执行器需要连接在 Wio Terminal 上。小夜灯的完整逻辑用伪代码表示为检查光照强度。 如果光照强度小于 300 点亮 LED 否则 熄灭 LED该伪代码对应的真实源码位于 code-actuator/wio-terminal/nightlight/src/main.cpp完整实现如下含上一课的光敏传感器读取逻辑#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); }二、连接 Grove LED从极性到 Grove 插座Grove LED 以模块形式出货附带多颗不同颜色的 LED 供你选择。整个接线过程分四步其中极性方向是最容易出错、也是导致接好了却不亮的头号原因。选择并插入 LED挑一颗你喜欢的 LED把两个引脚插入 LED 模块上的两个孔。LED 是二极管而二极管是只能单向导通电流的电子元件所以必须正反正确否则不会工作。LED 的两个引脚一个为正极、一个为负极LED 并非完美圆形一侧略微扁平——扁平侧是负极引脚。连接时确保圆润侧的引脚插入模块外侧标有的插孔扁平侧插入靠近模块中心的插孔。调高亮度LED 模块上有一个旋钮用于控制亮度先用小号十字螺丝刀逆时针旋到底将亮度调至最大便于后续观察亮灭变化。插入 Grove 线缆将 Grove 线缆一端插入 LED 模块的插座线缆只有一个方向能插进去防呆设计。连接 Wio Terminal在 Wio Terminal 断开电脑或电源的状态下将 Grove 线缆另一端插入 Wio Terminal 屏幕朝向你时的右侧 Grove 插座离电源开关最远的那个插座。 右侧 Grove 插座可用于模拟或数字传感器/执行器左侧插座仅供 I²C 与数字传感器/执行器使用I²C 将在后续课程中讲解。三、编写小夜灯程序GPIO 配置与开环控制上一课已经完成了光敏传感器的读取analogRead(WIO_LIGHT)返回 01023 的模拟值本节只需为 LED 补上输出引脚配置和控制逻辑。3.1 在setup函数中配置输出引脚在setup函数末尾追加一行pinMode(D0, OUTPUT);这行代码配置了通过 Grove 端口与 LED 通信的引脚。D0是右侧 Grove 插座对应的数字引脚将其设为OUTPUT表示它连接的是执行器程序将向该引脚写入数据。与之对照上一课光敏传感器用的pinMode(WIO_LIGHT, INPUT)表示引脚连接传感器并从中读取数据——INPUT/OUTPUT的方向语义正是传感器读与执行器写在代码层面的分界线。3.2 在loop函数中加入控制逻辑在loop函数中delay语句之前加入如下代码if (light 300) { digitalWrite(D0, HIGH); } else { digitalWrite(D0, LOW); }这段代码检查light变量的值若小于 300则向数字引脚D0发送HIGH值 1点亮 LED若光照值大于或等于 300则发送LOW值 0熄灭 LED。 向执行器发送数字值时LOW对应 0VHIGH对应设备的最大电压。对 Wio Terminal 而言HIGH电压为 3.3V。由此形成的控制环是典型的传感器 → 决策 → 执行器闭环雏形每 1 秒delay(1000)保证的采样间隔读取一次光照根据阈值 300 决策 LED 状态。这个阈值与光敏传感器的输出范围01023直接相关示例运行数据中环境光可低至 4、被手遮挡时约 158、正常光照约 343——因此 300 是一个能区分暗环境/亮环境的合理阈值你完全可以根据实际光照环境调整它。四、构建环境与平台配置说明该示例是基于 PlatformIO Arduino 框架构建的工程的平台配置位于 platformio.ini[env:seeed_wio_terminal] platform atmelsam board seeed_wio_terminal framework arduinoplatform atmelsam使用 Atmel SAM 系列Wio Terminal 采用的 ATSAMD51 主控的平台支持包board seeed_wio_terminal指定目标开发板型号framework arduino采用 Arduino 框架因此代码中直接使用pinMode、digitalWrite、analogRead、Serial等标准 API。工程目录结构code-actuator/wio-terminal/nightlight/遵循 PlatformIO 标准布局src/main.cpp存放源代码include/、lib/、test/分别为头文件、库依赖与测试目录。五、烧录与联调验证Serial Monitor 观察阈值行为完成代码编写后按以下步骤烧录并验证重新将 Wio Terminal 连接电脑按之前的方式上传新代码打开 Serial MonitorVS Code 中执行platformio device monitor任务光照值会持续输出到终端。实际运行时终端输出如下波特率 9600 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交替遮盖与揭开Wio Terminal 背面的光敏传感器透过背面板的透明塑料窗可见观察 LED 行为当光照值 ≤ 300 时 LED 点亮 300 时熄灭。 本节完整代码位于 code-actuator/wio-terminal与之配套的传感器阶段代码位于 code-sensor/wio-terminal仅含光敏读取见 main.cpp方便你对照传感器阶段与执行器阶段的代码差异。六、原理纵深数字执行器与信号方向LED 是本课 数字执行器 的典型代表。在 本课主 README 的执行器类型章节中数字执行器被归纳为两类要么像 LED 一样仅有高/低电压两种状态要么内置 DAC数模转换器可将数字信号转为模拟信号。本项目的数字 LED 属于前者——设备发送数字信号1时输出高电压点亮 LED发送0时电压归零熄灭。值得注意的是右侧 Grove 插座同时支持模拟与数字器件这也是把 LED 接到右侧而非左侧的原因而 Wio Terminal 的HIGH输出为 3.3V与板载逻辑电平一致可直接驱动 Grove LED 模块。若要驱动需要更大电压的执行器如继电器、电机则需借助继电器等中间器件以小电压控制大电压——这是后续课程将展开的内容。七、小结至此你的小夜灯已从只读不控进化为完整的感知-决策-执行闭环板载光敏传感器采集光照模拟输入Arduino 程序基于阈值 300 做决策Grove LED 通过D0引脚执行点亮/熄灭动作数字输出。这一最小闭环正是绝大多数物联网应用的基本骨架后续课程中你将把同样的模式迁移到云端、边缘设备乃至基于视觉的检测系统上。【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表