前面我们学了温度传感器(感知冷热)、倾斜传感器(感知姿态)、震动传感器(感知震动)——今天再给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 | 数字输出(阈值触发) |
第四步:代码——同时读取模拟量和数字量
frommachineimportPin,ADCimporttime# 模拟量ps2_y=ADC(Pin(33))ps2_y.atten(ADC.ATTN_11DB)# 这里配置测量量程为3.3V# 数字量p15=Pin(15,Pin.IN)# 循环检测whileTrue:val_y=ps2_y.read()# 0-4095light=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,准备好相关配件,跟着课件走一遍。
有任何问题或建议,欢迎在评论区留言告诉我们。