ESP8266-Arduino编程实例-Si1145红外接近-紫外 (UV) 指数和环境光传感器驱动

Si1145红外接近-紫外 (UV) 指数和环境光传感器驱动

1、Si1145介绍

Si1145/46/47 是一款低功耗、基于反射的红外接近、紫外 (UV) 指数和环境光传感器,具有 I2C 数字接口和可编程事件中断输出。 这种非接触式传感器 IC 包括一个模数转换器、集成的高灵敏度可见光和红外光电二极管、数字信号处理器,以及一个、两个或三个具有 15 个可选驱动电平的集成红外 LED 驱动器。 Si1145/46/47 在宽动态范围和包括直射阳光在内的各种光源下提供出色的性能。 Si1145/46/47 也可以在深色玻璃罩下工作。

在这里插入图片描述

光电二极管响应和相关的数字转换电路对人造光闪烁噪声和自然光颤动噪声具有出色的抗扰性。 通过两个或更多 LED,Si1146/47 能够支持多轴接近运动检测。 Si1145/46/47 器件采用 10 引脚 2×2 mm QFN 封装,能够在 –40 至 +85 °C 温度范围内以 1.71 至 3.6 V 的电压工作。

2、硬件准备

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

硬件接线如下:

传感器引脚 ESP8266开发板引脚
Vin 5v
Gnd Gnd
SCL D1
SDA D2

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

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

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

4、代码实现

本次实例使用如下驱动库:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <Wire.h>
#include "Adafruit\_SI1145.h"

Adafruit_SI1145 uv = Adafruit\_SI1145();

void setup() {
Serial.begin(9600);

Serial.println("Adafruit SI1145 test");

if (! uv.begin()) {
Serial.println("Didn't find Si1145");
while (1);
}

Serial.println("OK!");
}

void loop() {
Serial.println("===================");
Serial.print("Vis: "); Serial.println(uv.readVisible());
Serial.print("IR: "); Serial.println(uv.readIR());

// Uncomment if you have an IR LED attached to LED pin!
//Serial.print("Prox: "); Serial.println(uv.readProx());

float UVindex = uv.readUV();
// the index is multiplied by 100 so to get the
// integer index, divide by 100!
UVindex /= 100.0;
Serial.print("UV: "); Serial.println(UVindex);

delay(1000);
}

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