摘要:本系统实现环境光照强度的检测,可以应用多种测试方案场景,如灯控系统,光照采集系统,光照测试系统等等。
方案设计:
电路主要包含三个模块:MCU 主控模块、WIFI 通讯模块、APDS9960 环境光检测模块。MCU 和 WIFI 通讯采用 UART 异步通讯,MCU 和 9960 采用 IIC 通讯。
电路原理图:
电路原理图主要分为6个部分组成,分别如下图所示。
硬件单元:
MCU:是意法半导体的STM32103 一共64个引脚,M3内核,MCU电路主要是一个STM32最小系统。MCU和WIFI模块通过STM32的UART1接口(两个引脚RX和TX)连接,主要用于WIFI模块的模式配置及数据的收发。
STM32103
APDS9960:9960是一款集成ALS、红外LED 和接近检测器的光学模块和环境亮度感测(ALS, Ambient Light Sensing)的环境亮度传感器,MCU和APDS9960是通过IIC接口连接,IIC接口是通过STM32普通GPIO模拟时序实现的,IIC接口是两根线,一根SCL,一根SDA。SCL是时钟信号线,主要用于两个设备的同步信号,SDA是数据线,通过读取SDA上的电平变化,来接收数据。每一个IIC设备都会有一个地址。APDS9960的IIC地址是0x39。
软件方案原理:
- UART串口初始化,配置串口参数,DMA通道,串口采用的空闲中断,空闲中断就是STM32检测串口数据线为空闲状态时就会产生中断,进入中断函数。
- 定时器初始化,定时器参数配置100ns产生一次中断,白话就是100ns进入一次定时器中断函数。
- WIFI模块初始化,socket模式参数设置。设置wifi模块为AP模式,wifi名字,密码,配置WIFI模块为多连接(最多五台设备连接),建立server服务器。
- 9960初始化,配置9960参数、模式。
- 环境光初始化,此时会记录下当前环境的亮度数据。
- 每100ms读取一次9960传感器的数值通过滤波检测算法记录当前稳定的光照值。
- 串口接收到的数据会放入串口队列,串口解析程序会解析串口队列的数据,解析出正确的串口命令。一旦收到PC端发送的设备控制命令后,会进入监测程序。检测当前环境的亮度和上一次检测的亮度变化值大小,超过一定的阈值,认为设备控制成功,返回给PC端控制成功的命令并记录此次检测的光照值。如果检测当前的环境亮度的变化值一直小于阈值,并且检测15秒任然未发生变化,返回给PC端控制失败的命令。
成果展示:
通过电路PCB制作与焊接测试,最终硬件设备可以达到方案预计实际效果。
电路PCB图