前面我们学了温度传感器(感知冷热)、倾斜传感器(感知姿态)、震动传感器(感知震动)------今天再给ESP32加上一项新感官:感光能力。
手机屏幕根据环境亮度自动调节亮度、路灯天黑自动亮起、楼道声控灯白天不工作......这些功能的背后,都是光敏传感器在工作。
今天这节课,我们就用光敏传感器,让ESP32能"看见"光的强弱!
第一步:找到课程,看看成品效果
打开逗脑IDE,点击顶部 "文档" ,在 "课程" → "ESP32 + MicroPython" 分类下,找到光敏传感器。

打开课件,你会看到本节课的最终效果:终端实时打印光线数据------用手遮住传感器,数值变大;移开手,数值变小。


第二步:什么是光敏传感器?
本节课使用的是光敏电阻模块,它包含一个光敏电阻和一个比较器电路。
光敏电阻的原理:
光敏电阻的阻值随光照强度变化而变化。
- 光线越强 → 电阻越小
- 光线越弱 → 电阻越大
这个模块非常贴心地提供了两路信号输出,可以满足不同场景的需求:
| 引脚 | 信号类型 | 输出值 | 说明 |
|---|---|---|---|
| AO | 模拟输出 | 0~4095 | 数值越小 ,光线越强 ;数值越大 ,光线越弱 |
| DO | 数字输出 | 0 或 1 | 光线充足时输出0 ,光线暗时输出1(阈值可调) |

第三步:动手接线
光敏传感器模块有4个引脚:
| 传感器引脚 | 连接ESP32 | 说明 |
|---|---|---|
| VCC | 3.3V | 电源正极 |
| GND | GND | 电源地 |
| AO | GPIO33 | 模拟输出(接ADC引脚) |
| DO | GPIO15 | 数字输出(阈值触发) |

第四步:代码------同时读取模拟量和数字量
python
from machine import Pin, ADC
import time
# 模拟量
ps2_y = ADC(Pin(33))
ps2_y.atten(ADC.ATTN_11DB) # 这里配置测量量程为3.3V
# 数字量
p15 = Pin(15, Pin.IN)
# 循环检测
while True:
val_y = ps2_y.read() # 0-4095
light = p15.value()
print(val_y, light)
time.sleep(0.1)
两路信号的解读:
| 信号 | 取值 | 含义 |
|---|---|---|
| AO(模拟量) | 数值越小 | 光线越亮 ☀️ |
| 数值越大 | 光线越暗 🌑 | |
| DO(数字量) | 0 | 光线充足(有光) ☀️ |
| 1 | 光线不足(无光) 🌑 |
第五步:保存运行,看光线变化!
按 Ctrl + S 保存,选择ESP32开发板设备 ,给文件命名(比如light.py),点击保存。

点击运行按钮,终端开始打印数据。
试试看:
- 传感器对着光源(光线充足)→ 数值小,数字量输出0
- 用手遮住传感器(光线变暗)→ 数值变大,数字量输出1
光敏传感器能做什么?
| 应用场景 | 原理 |
|---|---|
| 自动照明 | 环境变暗时自动开灯 |
| 智能窗帘 | 光线过强时自动拉上窗帘 |
| 手机/屏幕亮度调节 | 根据环境光自动调节屏幕亮度 |
| 路灯控制 | 天黑自动亮起,天亮自动熄灭 |
| 温室补光 | 光线不足时自动开启补光灯 |
| 相机测光 | 检测环境光线,提示曝光参数 |
结合继电器: 光敏传感器 + 继电器 = 天黑自动开灯的智能路灯!
全程回顾
| 步骤 | 操作 | 效果 |
|---|---|---|
| 找到课程 | 文档→课程→ESP32+MicroPython→光敏传感器 | 了解光敏传感器 |
| 认识原理 | 光线强→电阻小,光线弱→电阻大 | 理解AO和DO两种输出 |
| 动手接线 | VCC→3.3V, GND→GND, AO→GPIO33, DO→GPIO15 | 硬件就位 |
| 打开代码 | 点击"打开"按钮 | 代码进入编辑器 |
| 保存运行 | Ctrl+S → 选择ESP32 → 运行 | 终端打印数据 |
| 遮住传感器 | 用手遮住光敏电阻 | 数值变化! |
如果你对本节课感兴趣,去官网(www.dounao.cn)下载逗脑IDE,准备好相关配件,跟着课件走一遍。
有任何问题或建议,欢迎在评论区留言告诉我们。