Модуль освещенности на основе микросхемы APDS-9930 представляет цифровой датчик по измерению внешнего уровня яркости. Обеспечивает точность измерений до 0.01 люкс. В одном корпусе расположены ИК-подсветка и система обнаружения движения. Такие датчики используются в системах затемнения подсветки телефона, автоматического выключения режима громкой связи при приближении телефона к уху. Вы можете легко автоматизировать процессы в доме, связанные с уровнем освещения (будильник с рассветом, поднятие/опускание жалюзи).
Датчик APDS-9930 реагирует на жесты, приближение и изменение освещения. Имеется программная настройка для входа в режим энергосбережения. Поставляется без встроенного стабилизатора напряжения, поэтому поддерживает низкий уровень питания (3.3 вольта), что делает его полностью совместимым с ESP8266 и платами Ардуино 3.3-вольтовых версий. 16-битное разрешение встроенного в датчик АЦП обеспечивает высокую точность измерений и делает возможным измерение интенсивности света при очень низком уровне освещенности.
Подключение к контроллеру обеспечивается по двухпроводному последовательному интерфейсу I2C (выводы SDA и SCL). Для удобства программирования в Arduino IDE можете воспользоваться готовой библиотекой.
Технические характеристики:
Напряжение питания: 3.3…3.8 В постоянного тока
Ток потребления: 90 мА (2,2 мА в режиме энергосбережения)
Рабочая частота: 400 кГц
Рабочая температура: -40°C…+85°C
Размеры: 39.4 x 23.6 x 13.5 мм
Схема подключения модуля APDS-9930 к Arduino:
Тестовый программный код:
#define DUMP_REGS
#include <Wire.h>
#include <APDS9930.h>
APDS9930 apds = APDS9930();
float ambient_light = 0;
void setup()
{
Serial.begin(9600);
Serial.println();
if ( apds.init() )
{
Serial.println(F("APDS-9930 initialization complete"));
}
else
{
Serial.println(F("Something went wrong during APDS-9930 init!"));
}
if ( apds.enableLightSensor(false) )
{
Serial.println(F("Light sensor is now running"));
}
else
{
Serial.println(F("Something went wrong during light sensor init!"));
}
delay(500);
}
void loop()
{
if ( !apds.readAmbientLightLux(ambient_light)) {
Serial.println(F("Error reading light values"));
}
else
{
Serial.print(F("Ambient: "));
Serial.println(ambient_light);
}
delay(1000);
}