昉·星光系列课程5:昉·星光开发板光敏传感器使用

昉·星光系列课程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报警提示;如果有蜂鸣器,可连接蜂鸣器报警

七、参考资料