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

资讯详情

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

基于树莓派与 Grove LED 构建 IoT 夜灯:数字执行器的接入、编程与验证全流程(IoT-For-Beginners 实战篇)

基于树莓派与 Grove LED 构建 IoT 夜灯:数字执行器的接入、编程与验证全流程(IoT-For-Beginners 实战篇) 基于树莓派与 Grove LED 构建 IoT 夜灯数字执行器的接入、编程与验证全流程IoT-For-Beginners 实战篇【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners本篇文章围绕 Microsoft IoT-For-Beginners 课程第 3 课Sensors and Actuators中 Raspberry Pi 部分的执行器实践完整讲解如何将 Grove LED 接入树莓派并在上一步光传感器读取的基础上用一段简单的 Python 逻辑实现光暗即亮灯的 IoT 夜灯闭环。读完本文你将掌握数字执行器的基本概念、Grove 硬件接线规范、GroveLed库的调用方式以及完整的运行验证与故障排查方法代码可直接基于 code-actuator/pi 目录复现。执行器是什么LED 作为数字执行器在 IoT 设备中传感器负责感知物理世界而**执行器Actuator**恰恰相反——它把来自 IoT 设备的电信号转换成对物理世界的交互例如发光、发声或驱动电机。本文构建的夜灯需要的执行器是一个LED发光二极管电流通过时即发出光线。LED 是典型的数字执行器只有两个状态发送数字值1LED 点亮高电平输出设备最高电压发送数字值0LED 熄灭0V。Grove LED 属于外部 Grove 执行器需要通过 Grove 线缆连接到树莓派上的 Grove Base hat。夜灯的整体逻辑可以用如下伪代码描述Check the light level. If the light is less than 300 Turn the LED on Otherwise Turn the LED off即持续检测光照强度当光照值低于 300 时点亮 LED否则熄灭 LED。这个逻辑是上一课 pi-sensor.md 光传感器采集代码的自然延伸两者组合便构成传感器 → 决策 → 执行器的完整 IoT 闭环。硬件准备连接 Grove LED 到树莓派任务一连接 LEDGrove LED 以模块形式提供并附带多种颜色的 LED 供你挑选。选择并插入 LED挑选你喜欢的 LED将两只引脚插入 LED 模块的两个开孔中。LED 是二极管属于只能单向导通电流的电子器件因此必须正确区分极性否则无法工作。LED 的一只引脚是正极另一只是负极LED 外壳并非完全圆形其中一侧略为扁平——略扁平的一侧即为负极。插入时请确保圆润一侧的引脚接入模块外侧标记的插座扁平侧接入更靠近模块中央的插座。调高亮度旋钮LED 模块带有一个可调亮度的旋转电位器。开始时请使用小号十字螺丝刀将其逆时针旋转到底即调至最大亮度便于后续观察亮灭效果。插入 Grove 线缆将 Grove 线缆一端插入 LED 模块上的插座该接口只允许单向插入。连接树莓派在树莓派断电状态下将 Grove 线缆另一端连接到 Grove Base hat 上标记为D5的数字插座。这个插座位于与 GPIO 引脚相邻的那一排插座的左起第二个位置。 接线务必在断电状态下进行这也是所有 Grove 外设接线的通用安全原则。编写夜灯程序完成接线后即可编程。本步骤以上一课创建的 nightlight 项目为基础如果尚未创建请先完成 pi-sensor.md 中的光传感器部分通过 VS Code 直接在树莓派上打开项目或使用 Remote SSH 扩展远程连接。任务二编写夜灯逻辑步骤 1导入 GroveLed 库在app.py顶部、其他import行下方添加from grove.grove_led import GroveLedfrom grove.grove_led import GroveLed从 Grove Python 库中导入GroveLed类。该库封装了与 Grove LED 交互的全部底层代码我们无需关心 GPIO 寄存器或电平切换细节。步骤 2创建 LED 实例在light_sensor声明之后添加led GroveLed(5)GroveLed(5)创建了一个绑定到D5 引脚的实例——即 LED 实际连接的 Grove 数字引脚。Grove Base hat 上的每个插座都有唯一引脚编号模拟引脚0、2、4、6数字引脚5、16、18、22、24、26。这也解释了为什么光传感器模拟要接 A0 引脚、而 LED数字要接 D5 引脚。步骤 3在 while 循环中加入判断逻辑在while循环内部、time.sleep之前添加if light 300: led.on() else: led.off()这段代码检查light的当前值若小于 300调用GroveLed类的on方法向 LED 发送数字值1将其点亮若大于或等于 300调用off方法发送数字值0将其熄灭。 注意缩进该代码必须与print(Light level:, light)处于同一缩进层级才能保证位于while循环体内。 关于数字电平向执行器发送数字值时0代表 0V1代表设备最大电压。对于搭配 Grove 传感器与执行器的树莓派而言1对应的电压为3.3V。完整代码参考结合以上所有片段app.py的完整形态与仓库中 code-actuator/pi/nightlight/app.py 完全一致import time from grove.grove_light_sensor_v1_2 import GroveLightSensor from grove.grove_led import GroveLed light_sensor GroveLightSensor(0) led GroveLed(5) while True: light light_sensor.light print(Light level:, light) if light 300: led.on() else: led.off() time.sleep(1)对比上一课 code-sensor/pi/nightlight/app.py本阶段的改动集中在三处新增GroveLed导入、新增led GroveLed(5)实例、在循环内新增if/else控制分支。time.sleep(1)让程序每秒采样一次既满足夜灯需求又降低了设备的持续功耗。运行与验证步骤运行夜灯程序在 VS Code 终端中执行python3 app.py光照值将持续输出到控制台类似piraspberrypi:~/nightlight $ python3 app.py Light level: 634 Light level: 634 Light level: 634 Light level: 230 Light level: 104 Light level: 290测试闭环效果用手遮挡光传感器再移开观察 LED 的变化——当光照值降到 300 或以下时 LED 点亮升到 300 以上时 LED 熄灭程序实时响应。 若 LED 始终不亮请依次检查LED 是否正负极插反扁平侧朝模块内侧、亮度旋钮是否已调到最大、Grove 线缆是否插到位且方向正确。从单板到闭环本实践的课程定位与扩展本任务对应课程 3-sensors-and-actuators 的 README.md 中 Use an actuator 一节的 Raspberry Pi 路线其完整工作流——读取光照、阈值判断、控制 LED——正如课程中的 assignment 流程图所概括光传感器负责采集代码负责决策LED 负责执行。围绕同一夜灯逻辑课程还提供了两条等价实现路径可对照学习无硬件环境virtual-device-actuator.md 使用 CounterFit 虚拟 IoT 硬件与counterfit_shims_grove兼容库模拟 LED单片机路线wio-terminal-actuator.md 使用 Wio Terminal 与 C 实现其 main.cpp 同样采用if (light 300)的阈值判断。值得注意的是本课代码在后续课程中会被直接复用与演进例如第 4 课连接互联网的 code-mqtt/pi/nightlight/app.py 依然使用GroveLed(5)这一实例化方式只是在此基础上增加了 MQTT 通信。因此扎实掌握本文的接线与编码要点将为后续物联网通信、云端遥测等进阶内容打下直接基础。小结通过本实践你已完成了一个完整的 IoT 闭环使用 Grove 光传感器采集光照模拟信号通过GroveLed(5)控制接入 D5 引脚的数字执行器 LED并以 300 为阈值实现了光暗即亮的夜灯。关键要点可归纳为执行器分类LED 是二态数字执行器1点亮3.3V、0熄灭0V接线规范注意 LED 极性扁平侧为负极、亮度旋钮、断电插拔、接入 D5 数字插座编程模式GroveLed(5)实例化 循环内if light 300判断 time.sleep(1)节流验证方法通过控制台光照输出与遮挡测试确认闭环完整源码见 code-actuator/pi。至此你的树莓派夜灯程序已成功跑通可以放心进入下一课把它接入互联网了。【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表