昉·星光系列课程5:昉·星光开发板光敏传感器使用
本次课程为昉·星光开发板IoT开发系列课程的第五讲,将带领同学们在昉·星光开发板上,使用光敏传感器。
本次课程,在昉·星光开发板V1和V2上,操作步骤相同。
一、学习目标
- 学习昉·星光开发板使用光敏传感器
二、准备工作
在开始本次课程的实际操作之前,同学们需要做好一些准备工作,课程中涉及到的硬件如下:
- 开发板:昉·星光开发板
- 光线传感器: 带DO输出的光敏传感器
- 杜邦线:若干
三、光敏传感器使用原理
本次课程中,使用的光敏传感器模块具体如下:
在这个光敏传感器上,提供了数字输出接口DO和模拟输出接口AO。
因为昉·星光开发板自身没有ADC模块,所以本次课程主要讲解DO输出的使用。后续会配合外接ADC模块,来通过AO输出获取光照的强度数值。
在这个光敏传感器顶部,有一个光敏电阻,由于光电效应,光照愈强,阻值就愈低,随着光照强度的升高,电阻值迅速降低。当电阻值下降到一定阈值,DO就会输出高电平信号。反之,输出低电平信号。
具体的阈值,通过模块右边的灵敏度调节电位器来控制。通过适当的调节,使得一定强度的照射触发DO高电平输出。
四、光敏传感器使用
通过上述光敏传感器的原理,我们可以得知,当光线强度达到阈值,则DO输出高电平,反之输出低电平。因此,我们可以通过一个数字引脚,例如GPIO51,来接收该信号。
首先,参考下图,将光敏传感器模块,连接到昉·星光开发板:
实物连接如下:
注意:
应根据实际使用的传感器,确定供电电压。本次课程中使用的光敏传感器模块使用5V供电电压。
然后,编写如下的程序:
# -*- coding: utf-8 -*-
# file: ~/projects/light/light_do.py
# pip3 install gpio
import os
import time
from time import sleep
#导入 GPIO库
import gpio as GPIO
import time
#定义 GPIO 引脚
GPIO_DO = 51
#设置 GPIO 的工作方式 (IN / OUT)
GPIO.setup(GPIO_DO, GPIO.IN)
while True:
if GPIO.input(GPIO_DO) == 1:
print("阈值触发")
else:
print("未达阈值")
sleep(1)
上述程序的逻辑较为简单,通过GPIO51,检测光敏传感器模块的DO输出,根据高低电平输出不同的结果。
编写完成后,运行 light_do.py ,然后尝试不同的光照情况。
# 安装GPIO模块
sudo pip3 install gpio
# 如果遇到错误,可以使用sudo python3 light_do.py运行:
python3 light_do.py
实际运行结果如下:
当光线弱时候,光敏传感器上的信号输出灯(图中模块引脚上方)不亮:
当光线增强到一定阈值,光敏传感器上的信号输出灯(图中模块引脚上方)点亮:
五、总结
在本次课程中,我们学习了光敏传感器的基本使用。
光敏传感器在很多场合都有使用,如智能灯控、防盗报警等。现在很多马路边的路灯,根据光照强度,在太阳落山后,待光线弱到一定程度的时候,控制路灯点亮,能够非常有效的优化电能的使用。
六、课后作业
- 了解光敏传感器
- 配合LED灯,在太阳落山后,屋里暗到一定程度时,点亮LED灯
- 配合LED灯,制作一个暗室防盗报警器,当暗室打开时,闪烁LED报警提示;如果有蜂鸣器,可连接蜂鸣器报警