欢迎光临,嵌入式开源博客

基于APDS9960打造环境光检测系统

摘要:本系统实现环境光照强度的检测,可以应用多种测试方案场景,如灯控系统,光照采集系统,光照测试系统等等。

方案设计:

电路主要包含三个模块: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。

APDS9960

软件方案原理:

  1. UART串口初始化,配置串口参数,DMA通道,串口采用的空闲中断,空闲中断就是STM32检测串口数据线为空闲状态时就会产生中断,进入中断函数。
  2. 定时器初始化,定时器参数配置100ns产生一次中断,白话就是100ns进入一次定时器中断函数。
  3. WIFI模块初始化,socket模式参数设置。设置wifi模块为AP模式,wifi名字,密码,配置WIFI模块为多连接(最多五台设备连接),建立server服务器。
  4. 9960初始化,配置9960参数、模式。
  5. 环境光初始化,此时会记录下当前环境的亮度数据。
  6. 每100ms读取一次9960传感器的数值通过滤波检测算法记录当前稳定的光照值。
  7. 串口接收到的数据会放入串口队列,串口解析程序会解析串口队列的数据,解析出正确的串口命令。一旦收到PC端发送的设备控制命令后,会进入监测程序。检测当前环境的亮度和上一次检测的亮度变化值大小,超过一定的阈值,认为设备控制成功,返回给PC端控制成功的命令并记录此次检测的光照值。如果检测当前的环境亮度的变化值一直小于阈值,并且检测15秒任然未发生变化,返回给PC端控制失败的命令。

成果展示:

通过电路PCB制作与焊接测试,最终硬件设备可以达到方案预计实际效果。

电路PCB图

赞(2) 打赏
未经允许不得转载:Huangea Blog 嵌入式博客 » 基于APDS9960打造环境光检测系统
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

一个很有意思的网站

留言板友链

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏