昉·星光系列课程6:昉·星光开发板光敏传感器之光强度数据读取

课程6:昉·星光开发板光敏传感器使用2之光强度数据读取

本次课程为昉·星光开发板IoT开发系列课程的第六讲,将带领同学们在昉·星光开发板上,更进一步的使用光敏传感器。
本次课程,在昉·星光开发板V1和V2上,操作步骤相同。

一、学习目标

  • 学习昉·星光开发板使用光敏传感器的模拟输出

二、准备工作

在开始本次课程的实际操作之前,同学们需要做好一些准备工作,课程中涉及到的硬件如下:

  • 开发板:昉·星光开发板
  • 光线传感器: 带DO输出的光敏传感器
  • 模数转换模块:ADS1115
  • 杜邦线:若干

三、光敏传感器使用原理

本次课程中,使用的光敏传感器模块具体如下:

在这个光敏传感器上,提供了数字输出接口DO和模拟输出接口AO。
因为昉·星光开发板自身没有ADC模块,因此本次课程,专门使用了一块ADC模块,用于帮助开发板读取光敏传感器的模拟输出信息,从而火照光照强度数值。

在这个光敏传感器顶部,有一个光敏电阻,由于光电效应,光照愈强,阻值就愈低,随着光照强度的升高,电阻值迅速降低。反之,输出低电平信号。随着电阻值的变化,其模拟输出口AO的电压信号也会发生变化,再使用ADC模块即可将电压信号转变位数字信号。

本次课程使用的ADC模块为ADS1115,具体如下:

ADS1115是一个16位精度的ADC信号转换模块,使用IIC接口与开发板通讯,能同时测量4组电压信号进行转换,可以工作在2V至5.5V,可以配合多种开发板、单片机使用,在汽车、电视、传感器等非常多的应用场合都能使用。

四、光敏传感器使用

通过上述光敏传感器的原理,我们可以得知,要获取其测量的具体光线强度值,需要通过ADS1115来进行模数转换。

首先,将光敏传感器模块的AO接口与和ADS1115的A0接口相连,使得ADS1115能够获取光敏传感器输出的模拟电压信号。
然后,参考下图,将ADS115连接到昉·星光开发板:

实物连接如下:

注意:
应根据实际使用的传感器,确定供电电压。本次课程中使用的光敏传感器模块和ADS1115模块,均使用5V供电电压。

然后,编写如下的程序:

# -*- coding: utf-8 -*-
# file: ~/projects/light/light_ao.py

import ADS1115
import time
import numpy

# 初始化ADS1115模块
ads = ADS1115.ADS1115()

while True:
    # 读取ADS1115模块通道0的数据,也就是A0
    volt = ads.readADCSingleEnded(0)

    # 转换
    per = numpy.interp(volt, [0, 5000], [0, 100])

    # 输出信息
    print("%d mV of A0, val is %f" % (volt, per))

    # 延时
    time.sleep(0.1)

上述程序的逻辑,通过ADS1115,检测光敏传感器模块的AO输出,然后转换到对应的光照强度数值。

要运行以上的程序,还需要安装相应的第三方支持库numpy和ADS1115。但ADS1115扩展库默认使用的是i2c-1,但是我们的开发板使用的是i2c-0,所以需要在安装扩展库以后,需要进行一下处理才能使用,具体如下:

# 安装扩展库
pip install smbus
pip install numpy
pip install ADS1115

# 修改ADS1115库文件
vi ~/.local/lib/python3.10/site-packages/ADS1115/__init__.py
# 将该文件中的 smbus2.SMBus(1) 修改为 smbus2.SMBus(0),然后保存退出

编写完成后,运行 light_ao.py ,然后尝试不同的光照情况。

python3 light_ao.py

实际运行结果如下:
在明亮的环境下测试的结果如下:

使用不透明材料包裹光线传感器的感光部分:
5.黑暗环境

使用手电筒照射光线传感器的感光部分:
6.手电筒环境

五、总结

在本次课程中,我们学习了光敏传感器的模拟输出信号的读取。
通过光敏传感器获取当前环境光线强度数据,在很多场合都有使用。现在有很多台灯,能够根据当前环境的光线强度,自动调节灯光的来说,号称智能台灯,就是采用了光线传感器。

六、课后作业

  • 了解光敏传感器的模拟输出和ADS1115模数转换器
  • 配合三个LED灯,在当前环境光照太强时,红灯告警,在当前环境光照太弱时,黄灯告警,当光照强度适中时,显示绿灯
  • 使用多颗LED辅助,使得根据当前环境光照情况,自动控制一定数量的LED灯点亮或者熄灭,从而达到一个稳定的光照环境。

七、参考资料

3 Likes