news 2026/9/15 4:33:23

IoT 传感器与执行器调研指南:用四维框架分析 Grove 光敏传感器与 LED(IoT-For-Beginners 第 3 课作业详解)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
IoT 传感器与执行器调研指南:用四维框架分析 Grove 光敏传感器与 LED(IoT-For-Beginners 第 3 课作业详解)

IoT 传感器与执行器调研指南:用四维框架分析 Grove 光敏传感器与 LED(IoT-For-Beginners 第 3 课作业详解)

【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners

导读

本文对应 IoT-For-Beginners 仓库第 1 章第 3 课《通过传感器和执行器与物理世界交互》的课后作业——调研并描述一个可与 IoT 开发套件搭配使用的传感器执行器。文章将作业要求中的四个分析维度(功能、内部硬件、模拟/数字属性、单位与量程)拆解为可复用的"四维框架",并以本课真实使用的 Grove 光敏传感器与 Grove LED 为例给出完整范例,同时深入传感器/执行器的模拟与数字原理(ADC、电压、PWM 等),并给出可运行的参考代码路径。读完本文,你既能独立完成本课作业,也能建立起评估任何 IoT 外设的通用分析方法。


作业任务:调研一个传感器与一个执行器

本课(第 3 课完整讲义)的核心内容是两类硬件——传感器(sensor)执行器(actuator)。作业(作业原文)要求你选择一个可接入 IoT 开发套件的传感器和一个执行器,分别围绕以下4 个维度进行调研与描述:

  1. 它做什么(What it does)——该器件感知或产生何种物理量,在系统中承担什么角色;
  2. 内部使用的电子/硬件(The electronics/hardware used inside)——内部由哪些电子元件构成,如何实现功能;
  3. 它是模拟还是数字(Is it analog or digital)——输出/输入信号的类型及其含义;
  4. 输入或测量的单位与量程(What the units and range of inputs or measurements is)——具体数值范围、对应物理单位,以及是否映射到标准计量单位。

评估标准(Rubric)分为三档:完整覆盖全部 4 个维度为"优秀";仅覆盖 2-3 个维度为"合格";只覆盖 1 个维度则"需要改进"。因此,一篇高质量作业的关键在于四个维度缺一不可,且最好能落到可验证的数值与实现细节上。

先理解两个基本概念

在动手调研前,先明确本课的两个核心定义(出自第 3 课 README):

  • 传感器:感知物理世界的硬件设备,测量周围的一个或多个属性,并把信息发送给 IoT 设备。常见的有温度传感器、按钮、光敏传感器、摄像头、加速度计、麦克风等。所有传感器的共同点是——把感知到的物理量转换为 IoT 设备能解释的电信号
  • 执行器:与传感器相反,它把来自 IoT 设备的电信号转换为对物理世界的交互,如发光、发声或驱动电机。常见的有 LED、扬声器、步进电机、继电器、屏幕等。

本课的教学场景是把两者组合起来搭建一个"夜灯(nightlight)":用光敏传感器读取环境光强,当光强过低时点亮 LED。这正是作业调研对象的天然样本——光敏传感器与 LED。


传感器范例:Grove 光敏传感器

以本课在 Raspberry Pi 与虚拟设备上使用的Grove 光敏传感器为例,展示四个维度如何逐一展开。该传感器在 pi-sensor.md 与 wio-terminal-sensor.md 中有详细说明。

维度一:它做什么

它检测环境光强度。在夜灯项目中,它负责持续读取当前光照水平,供程序判断是否需要开灯。

维度二:内部电子/硬件

内部核心元件是光电二极管(photodiode)——一种能将入射光转换为电信号的半导体元件。在 Raspberry Pi 方案中,传感器作为 Grove 外设模块通过 Grove 线缆接入 Grove Base Hat 的A0 模拟插座;在 Wio Terminal 方案中,光敏传感器则直接集成在板载,透过机身背面的透明塑料窗口可见,对应WIO_LIGHTGPIO 引脚。

维度三:模拟还是数字

模拟传感器。传感器输出的是随光强连续变化的电压值,IoT 设备(数字系统)无法直接理解模拟电压,需要经过**模数转换器(ADC)**转为数字量。在 Grove 生态中,Raspberry Pi 的 Grove Base Hat 内置了 ADC,把电压换算为整数读数;Wio Terminal 的 MCU 则通过analogRead完成片上 ADC 采样。从编码角度看,转换通常由传感器配套库封装完成,开发者无需手写转换逻辑。

维度四:单位与量程

输出为0 到 1,023 的整数,表示相对光强——这是一个相对值,不对应任何标准测量单位(如 lux)。量程上限 1,023 是 10 位 ADC 的典型满量程(2¹⁰ − 1)。在 3.3V 供电的系统中,若传感器返回 1V,对应读数约为 300(对应二进制0000000100101100)。

参考代码

Raspberry Pi / 虚拟设备(Python,见 虚拟设备传感器代码):

import time from grove.grove_light_sensor_v1_2 import GroveLightSensor light_sensor = GroveLightSensor(0) # 连接到 Grove 模拟引脚 A0 / CounterFit 引脚 0 while True: light = light_sensor.light # 读取 0-1023 的相对光强 print('Light level:', light) time.sleep(1) # 每秒采样一次,降低功耗

Wio Terminal(C++,见 wio-terminal-sensor 源码目录):

pinMode(WIO_LIGHT, INPUT); // 在 setup() 中配置引脚为输入 int light = analogRead(WIO_LIGHT); // 在 loop() 中读取 0-1023 Serial.print("Light value: "); Serial.println(light); delay(1000); // 每秒采样一次

实际运行中,遮挡/揭开传感器时读数会明显变化,例如:

Light level: 634 Light level: 230 Light level: 104 Light level: 290

模拟与数字:理解信号世界的分水岭

对传感器(以及执行器)做"模拟/数字"判定时,需要先理解背后的电压与转换机制。

模拟传感器与电压

模拟传感器由 IoT 设备供电,传感器内部元件(如电位器、热敏电阻)改变这个电压,设备再测量返回的电压得到数值。例如电位器:设备送入 5V,旋钮在 0(关闭)位置时返回 0V,旋到最大(11)时返回 5V,中间位置返回中间电压。

又如基于**热敏电阻(thermistor)**的模拟温度传感器:其电阻随温度变化,输出电�压可经代码换算为开尔文,再转成 °C 或 °F。这类读数可能是任意值,也可能映射到标准单位。

由于 IoT 设备本质上是数字的(只处理 0 和 1),模拟值必须经 ADC 转换。ADC 可能内置于设备芯片、连接板(如 Grove Base Hat)或传感器自身。

数字传感器

最简单的数字传感器是按钮/开关:只有开、关两种状态。GPIO 引脚可直接读为 0 或 1——送入 3.3V、返回 3.3V 时为 1,返回 0V 时为 0,无需 ADC。注意电压存在容差:例如 Raspberry Pi 的 GPIO 以 3.3V 工作,将高于 1.8V 的返回信号判为 1,低于 1.8V 判为 0。

更高级的数字传感器(如数字温度传感器)内部依然使用热敏元件测量,但由板载 ADC把模拟读数转为二进制数字信号后再发送给 IoT 设备,省去了连接板或设备端的 ADC。数字化还让传感器可以传输更复杂的数据(如摄像头以 JPEG 格式传图、甚至加密数据)。

判断技巧:如果器件只有两种状态(通/断、开/关)且直接输出高低电平,通常是数字的;如果输出连续变化的电压、需要 ADC 参与,则通常是模拟的。


执行器范例:Grove LED

夜灯的第二个主角是Grove LED(详见 pi-actuator.md、wio-terminal-actuator.md 与 virtual-device-actuator.md)。

维度一:它做什么

电流流过时发出可见光。在夜灯中,当检测到的光强低于阈值(300)时被点亮,模拟"夜间自动照明"。

维度二:内部电子/硬件

核心是发光二极管(light-emitting diode,LED)。二极管是单向导电器件,因此 LED 必须区分正负极正确安装(圆形一侧为正极,稍扁平的一侧为负极),接反则不亮。Grove LED 模块附赠多种颜色的 LED 供选择,并带有可调亮度的旋钮(初始建议用螺丝刀逆时针旋到最大)。Raspberry Pi 方案中模块接入 Grove Base Hat 的D5 数字插座;Wio Terminal 方案中接入右侧 Grove 插座,对应D0数字引脚。

维度三:模拟还是数字

数字执行器,具有开、关两种状态:发送数字值 1 时点亮,发送 0 时熄灭。对 Raspberry Pi 的 Grove 引脚,1 对应 3.3V;对 Wio Terminal 的D0HIGH(1)为 3.3V,LOW(0)为 0V。

维度四:单位与量程

输入为二进制数字信号,取值域是 {0, 1}(对应 0V 与设备最高电压,本课环境中为 3.3V)。不存在连续的模拟输入范围——这正是"两态数字执行器"的特征。若需调节亮度或速度等连续量,则属于模拟执行器或 PWM 范畴(见下文)。

参考代码

Python(完整夜灯代码:虚拟设备):

from grove.grove_led import GroveLed led = GroveLed(5) # 连接到数字引脚 D5 / CounterFit 引脚 5 if light < 300: led.on() # 发送数字值 1,点亮 else: led.off() # 发送数字值 0,熄灭

C++(完整夜灯代码:Wio Terminal):

pinMode(D0, OUTPUT); // 在 setup() 中配置引脚为输出 if (light < 300) { digitalWrite(D0, HIGH); // 1 -> 点亮 } else { digitalWrite(D0, LOW); // 0 -> 熄灭 }

执行器的模拟世界:可调光与 PWM

作业要求调研的"执行器"不限于 LED,理解模拟执行器能帮助你写出更全面的描述。

模拟执行器与 DAC

模拟执行器接收模拟信号,交互强度随电压变化。最典型的例子是可调光灯:供给电压越高越亮。由于 IoT 设备输出的是数字信号,需要数模转换器(DAC)(内置于设备或连接板)把 0/1 序列转换成执行器可用的模拟电压。

脉冲宽度调制(PWM)

不用 DAC 也能实现"伪模拟"的另一条路径是PWM(脉冲宽度调制)——发送大量短促的数字脉冲,让执行器表现出如同模拟信号的行为,常用于控制电机转速。

以 5V 供电的电机为例:向电机发送一个 0.02s 的高电平(5V)脉冲,电机可转 1/10 圈(36°),随后 0.02s 低电平(0V)暂停。每个"开-关"周期 0.04s,一秒内有 25 个脉冲,电机每秒转 2.5 圈,即 150 RPM:

25 pulses per second x 0.1 rotations per pulse = 2.5 rotations per second 2.5 rotations per second x 60 seconds in a minute = 150rpm

把高电平脉冲减半为 0.01s、低电平延长到 0.03s(周期仍为 0.04s),每个脉冲只让电机转 1/20 圈,转速降为每秒 1.25 圈,即 75 RPM——仅靠改变数字脉冲的宽度就把模拟电机转速减半

25 pulses per second x 0.05 rotations per pulse = 1.25 rotations per second 1.25 rotations per second x 60 seconds in a minute = 75rpm

当信号一半时间开、一半时间关时,称为50% 占空比(duty cycle);占空比即信号处于开启状态的时间百分比。理解 PWM 后,你可以为"电机类执行器"写出第四个维度:输入为数字脉冲序列,单位为 RPM,量程取决于脉冲宽度(占空比)的调节范围。


组合成系统:夜灯的完整闭环

作业之外,本课还要求把传感器与执行器组合起来。夜灯的伪代码逻辑(源自 README)如下:

Check the light level. If the light is less than 300 Turn the LED on Otherwise Turn the LED off

这一闭环展示了传感器与执行器的协作方式:传感器负责"感知"(读光强),设备负责"决策"(阈值判断),执行器负责"行动"(开/关 LED)。Python 与 C++ 的完整可运行代码分别位于 code-actuator/virtual-device/nightlight/app.py 与 code-actuator/wio-terminal/nightlight/src/main.cpp。无实体硬件时,可使用 CounterFit 应用创建虚拟传感器与执行器,并支持手动设值或随机值模拟环境变化(详见 virtual-device-sensor.md)。


评分标准与作业自查表

提交作业前,可按官方 Rubric 逐项自检(完整标准见 assignment.md):

标准优秀合格需要改进
传感器描述完整覆盖全部 4 个维度仅覆盖其中 2-3 个维度仅覆盖 1 个维度
执行器描述完整覆盖全部 4 个维度仅覆盖其中 2-3 个维度仅覆盖 1 个维度

自查清单

  • 明确了该器件"感知/产生什么物理量、在系统中的角色";
  • 说清了内部关键电子元件(如光电二极管、发光二极管、热敏电阻、继电器线圈等);
  • 明确判定模拟或数字,并解释信号形式(连续电压 / 两态高低电平 / 数字数据流);
  • 给出单位与量程(如 0-1,023 相对光强、{0,1} 数字状态、0-5V、占空比 0-100%、RPM 等),并说明是否对应标准计量单位(如 lux);
  • 若可能,附上对应的驱动库调用或硬件接线信息,增强可信度。

延伸学习:从本课继续深入

若想进一步扩充调研素材或验证实现,可继续阅读仓库内以下资源:

  • 第 3 课完整讲义(含模拟/数字传感器、ADC、PWM、常见器件清单);
  • Raspberry Pi 光敏传感器实操 与 Raspberry Pi LED 实操;
  • Wio Terminal 板载光敏传感器实操 与 Wio Terminal LED 实操;
  • CounterFit 虚拟设备传感器/执行器实操;
  • 本课全部参考代码(code-sensor 与 code-actuator)。

本课配套的课后挑战还提供了一个很好的实践入口:把你此前列出的家中/学校/工作场所的 IoT 设备逐一分析——它们连接了哪些传感器和执行器?每个传感器/执行器的用途是什么?这正是对"四维框架"的最佳反复练习。

【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 4:32:25

Python树叶识别系统源码解析:传统特征与PyQt5界面集成

简介&#xff1a;基于Python语言的树叶识别系统源码&#xff0c;是针对课程设计、期末大作业和毕业设计场景开发的完整项目&#xff0c;适合Python初学者、计算机专业学生以及需要快速构建图像识别应用的开发者。系统以树叶图像为识别对象&#xff0c;将图像处理算法与交互式界…

作者头像 李华
网站建设 2026/9/15 4:31:01

在线封装双端APP源码,服务器部署与Nginx配置实战指南

简介&#xff1a;面向需要快速搭建并上线双端应用的开发者与运维人员&#xff0c;这份在线封装APP源码将Android/iOS兼容处理整合为可直接运行的PHP工程&#xff0c;部署到服务器或虚拟主机即可使用。包内含PHP入口与业务逻辑、JavaScript交互组件、CSS界面样式、Logo与背景图&…

作者头像 李华
网站建设 2026/9/15 4:28:41

Linux包管理核心机制与实战:从yum/apt到依赖解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/15 4:26:19

家装公司如何选对AI智能体?五大落地场景与实操指南

“家装公司适合什么 AI 智能体&#xff1f;”这个问题&#xff0c;我几乎每周都会被装修公司的老板或运营负责人问一遍。说实话&#xff0c;这比两三年前大家问“我要不要做抖音”还要普遍&#xff0c;因为现在做装修生意的人都知道AI有用&#xff0c;但大部分人打开ChatGPT或者…

作者头像 李华
网站建设 2026/9/15 4:26:02

ADS1232与STC15F32S2高精度采集与RS485通信底板程序设计解析

简介&#xff1a;底板程序V1.1是一套面向STC15系列单片机与ADS1232高精度ADC的嵌入式工程包&#xff0c;专为需要实现24位数据采集与串行通信&#xff08;RS-232/RS-485&#xff09;的开发者设计&#xff0c;适用于称重、应变测量、工业仪表等低噪声模拟信号处理场景。包内共70…

作者头像 李华
网站建设 2026/9/15 4:25:16

Selenium定位成功但点击失败?三种解法帮你彻底解决

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华