ARTICLE DETAIL

资讯详情

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

树莓派夜灯项目实战:接入 Grove 光传感器(IoT-For-Beginners 第 3 课 Raspberry Pi 篇)

树莓派夜灯项目实战:接入 Grove 光传感器(IoT-For-Beginners 第 3 课 Raspberry Pi 篇) 树莓派夜灯项目实战接入 Grove 光传感器IoT-For-Beginners 第 3 课 Raspberry Pi 篇【免费下载链接】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 光传感器并通过 Python 代码实时读取环境光照强度。读完本文你将掌握 Grove 模拟传感器的硬件接线方法、GroveLightSensor类的编程用法以及模拟量到数字量ADC转换的底层原理为后续用光敏值控制 LED 构建完整夜灯应用打下基础。本指南对应的孟加拉语文档位于 translations/bn/1-getting-started/lessons/3-sensors-and-actuators/pi-sensor.md其英文权威版本位于 1-getting-started/lessons/3-sensors-and-actuators/pi-sensor.md。硬件Grove 光传感器本课使用的传感器是光传感器light sensor它内部利用 光敏二极管photodiode 将光照转换为电信号。它是一个模拟传感器analog sensor输出一个表示相对光照强度的整数值。需要说明的是该数值不对应 lux勒克斯 这类标准光照度量单位课程文档中将其描述为 0 到 1,000 之间的相对值而实际编程读取时使用的量程为 0–1,023详见下文源码分析两者都只是相对亮度的数字化表示。该光传感器是一个外部 Grove 模块必须通过 Grove 线缆连接到树莓派上的Grove Base Hat才能工作。硬件清单可参见仓库根目录的 hardware.md其中确认了 Grove Base Hat 与 Grove Light Sensor v1.2 是该课程树莓派路线所需的官方配件。连接光传感器将 Grove 光传感器连接到树莓派的操作步骤如下对应原文档中的 Task 环节将 Grove 线缆的一端插入光传感器模块的插槽中。插槽有方向限制只能以一个方向插入。在树莓派断电状态下将 Grove 线缆的另一端连接到 Grove Base Hat 上标注为A0的模拟插槽。该插槽位于 GPIO 引脚旁那排插槽中从右侧数第二个。提示为什么强调断电连接因为树莓派 GPIO 与 Grove Base Hat 的模拟接口在带电插拔时可能产生浪涌电流损坏传感器或引脚规范的硬件操作应遵循断电接线原则。编程读取光传感器数值传感器接线完成后即可对树莓派进行编程。整个流程分为五步导入库、创建传感器实例、编写无限读取循环、加入休眠延时、运行程序。第一步导入所需库打开 VS Code 中之前创建的 nightlight 项目既可以在树莓派上直接运行 VS Code也可以通过 Remote SSH 扩展远程连接打开app.py并清空原有代码然后添加以下导入语句import time from grove.grove_light_sensor_v1_2 import GroveLightSensorimport time导入 Python 的time模块稍后用于在循环中插入休眠延时。from grove.grove_light_sensor_v1_2 import GroveLightSensor从 Grove Python 库中导入GroveLightSensor类。该库封装了与 Grove 光传感器交互的代码在课程前序树莓派环境搭建环节中已被全局安装到 Pi 系统里。第二步创建传感器实例在导入语句之后添加如下代码创建管理光传感器的类实例light_sensor GroveLightSensor(0)GroveLightSensor(0)创建了连接到A0引脚的实例——A0 正是光传感器所接的 Grove 模拟引脚。这里传入的0是 Grove 引脚编号在 Grove Base Hat 的寻址体系中对应 A0 模拟通道。第三步编写无限读取循环接着添加一个无限循环持续读取传感器值并打印到控制台while True: light light_sensor.light print(Light level:, light)通过GroveLightSensor类的light属性读取当前光照值。该属性读取的是引脚上的模拟值量程为 0–1,023。读取到的数值随后被打印到控制台。第四步加入一秒延时在循环末尾追加time.sleep(1)让程序每秒采样一次time.sleep(1)光照水平并不需要被无间断地轮询加入延时可以显著降低设备功耗这也是真实 IoT 设备低功耗设计的基本手法。第五步运行程序在 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可以看到环境正常亮度下读数约为 634遮挡传感器后骤降至 230、104 等低值移开遮挡后又回升到 290。这正是相对光强的直观体现——数值越大代表越亮。源码级解析完整可运行代码上述所有片段组合后就是仓库中保存的完整示例。打开 code-sensor/pi/nightlight/app.py 可以看到成品代码import time from grove.grove_light_sensor_v1_2 import GroveLightSensor light_sensor GroveLightSensor(0) while True: light light_sensor.light print(Light level:, light) time.sleep(1)这段代码与教程步骤一一对应是硬件接线 → 实例化 → 轮询读取这一传感器编程范式的标准模板后续课程如连接互联网、上报遥测都会在此基础上扩展。例如仓库中 4-connect-internet/code-mqtt/pi/nightlight/app.py 就是在本例基础上叠加 MQTT 消息发布逻辑足见本节代码是整条课程链路的基石。原理纵深模拟信号如何变成数字量为什么光传感器返回的是 0–1,023 的整数而不是电压值这背后是模拟/数字转换ADC机制。在课程 3-sensors-and-actuators 课程总览 中有详细解释IoT 设备本质上是数字设备只能处理 0 和 1无法直接理解模拟电压因此模拟传感器的读数必须被转换为数字信号后才能被程序处理。在 Seeed Grove 树莓派的组合中模拟传感器连接到的 Grove Base Hat 内建了 ADC光传感器输出某个电压例如 3.3V 供电下输出 1VHat 上的 ADC 按量程将其换算成 0–1,023 之间的整数1V 对应数值约 300再以二进制0000000100101100形式送入树莓派 GPIO 处理。从编码角度看这一转换完全被 Grove 传感器库封装——对开发者而言只需调用light属性即可无需关心底层换算。此外从同课的 pi-actuator.md 可以确认 Grove Base Hat 的完整引脚布局0、2、4、6 为模拟引脚5、16、18、22、24、26 为数字引脚。光传感器必须接在模拟引脚A0上而 LED 等数字执行器则接在 D5 等数字引脚接错端口类型将无法正常读取。延伸把传感器升级为夜灯读懂光传感器之后下一步就是把读数变成动作——这正是传感器感知与执行器行动协同的 IoT 核心模式。课程 pi-actuator.md 展示了完整的夜灯逻辑伪代码Check the light level. If the light is less than 300 Turn the LED on Otherwise Turn the LED off实现时引入GroveLed类并复用本节创建的光传感器实例在while循环内判断光照阈值并调用led.on()/led.off()即可。这也解释了为什么本节读取到的数值要能被反复、快速地刷新——它将成为控制执行器的判断依据。完成本节的传感器接入你就已经具备了构建完整树莓派夜灯应用的核心传感能力。【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表