ESP8266-Arduino编程实例-TSL2561亮度传感器驱动

TSL2561亮度传感器驱动

1、TSL2561介绍

TSL2560 和 TSL2561 是第二代环境光传感器器件。每个都包含两个集成模数转换器 (ADC),用于集成来自两个光电二极管的电流。两个通道的整合同时发生。转换周期完成后,转换结果分别传送到通道 0 和通道 1 数据寄存器。传输是双缓冲的,以确保保持数据的完整性。传输后,设备自动开始下一个集成周期。与设备的通信是通过标准的两线 SMBus 或 I2C 串行总线完成的。

因此,TSL256x 器件可以轻松连接到微控制器或嵌入式控制器。信号调节不需要外部电路,因此也节省了 PCB 空间。由于 TSL256x 器件的输出是数字的,因此与模拟信号相比,输出有效地不受噪声影响。

TSL256x 器件还支持中断功能,无需轮询传感器以获取光强度值,从而简化和提高系统效率。中断功能的主要目的是检测光强度的有意义的变化。用户可以根据光强度和时间或强度变化的持续性来定义有意义的变化的概念。 TSL256x 器件能够定义高于和低于当前光照水平的阈值。当转换值超过这些限制中的任何一个时,将产生中断。

2、硬件准备

  • ESP8266 NodeMCU开发板一块
  • TSL2561传感器模块一个
  • 面板板一个
  • 杜邦线若干
  • 数据线一条

硬件接线如下:

在这里插入图片描述

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

在前面的文章中,对如何搭建ESP8266开发环境做了详细的介绍,请参考:

ESP8266 NodeMCU的引脚介绍在前面的文章中做了详细的介绍,请参考:

4、代码实现

本次使用的TSL2561的驱动库如下:

1)导入依赖库头文件

1
2
3
4
5
6
7
#include <Wire.h>
#include <Adafruit\_Sensor.h>
#include <Adafruit\_TSL2561\_U.h>

// 创建设备
Adafruit_TSL2561_Unified tsl = Adafruit\_TSL2561\_Unified(TSL2561_ADDR_FLOAT, 12345);

2)设备初始化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void setup(void) 
{
// 初始化串口
Serial.begin(9600);
Serial.println("Light Sensor Test");
Serial.println("");

/\* 初始化传感器 \*/
if(!tsl.begin())
{
Serial.print("No TSL2561 detected");
while(1);
}
// 设置传感器参数
tsl.enableAutoRange(true);
tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_13MS);

Serial.println("");
}

3)数据采集

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void loop(void) 
{
/\* 创建传感器事件 \*/
sensors\_event\_t event;
tsl.getEvent(&event);

/\*读取传感器数据 \*/
if (event.light)
{
Serial.print(event.light);
Serial.println(" lux");
}
else
{
Serial.println("Sensor overload");
}
delay(250);
}


文章来源: https://iotsmart.blog.csdn.net/article/details/126152659