Измерение освещенности окружающего пространства является важным моментом во многих приложениях домашней автоматики и Интернета вещей. Для выполнения таких измерений существуют специальные датчики, называемые датчики освещенности.
Эти сенсоры довольно просты в применении и стоят не слишком дорого, поэтому их довольно часто применяют радиолюбители в своих проектах. В данном материале рассмотрим использование датчика освещенности вместе с платой Arduino.
TEMT6000 представляет собой датчик с аналоговым выходом, поэтому он совместим с любым микроконтроллером, способным принимать аналоговые сигналы. Поэтому он должен быть подключен к любому из аналоговых входов Arduino (A0-A5). TEMT6000 используется в качестве датчика внешней освещенности для управления подсветкой в мобильных телефонах, ноутбуках, фотоаппаратах и других потребительских устройствах. По своей сути TEMT6000 представляет собой фототранзистор, который подключается в соответствии со схемой, приведенной ниже.
Это устройство чувствительно ко всему световому диапазону видимого света. Если уровень света очень низок, то уровень напряжения на выходе SIG будет также очень мал. При увеличении освещенности на выходе также будет увеличиваться напряжение. Для подключения датчика требуется всего три провода: питание, земля и сигнальный провод. Схема подключения TEMT6000 и платы Arduino Pro Mini 3.3V/8MHz представлена ниже.
Код для взаимодействия платы Arduino с датчиком освещенности TEMT6000 приведен далее. В этом скетче линия аналоговых данных A0 используется для приема сигнала с датчика TEMT6000, который содержит информацию об определенном уровне освещенности в конкретный момент. После приема этого сигнала высчитывается процент текущего уровня освещенности, который отправляется в последовательный порт для информирования пользователя в численном виде. Также при превышении освещенности определенного порога (в данном случае 1000) загорается светодиод на линии D13.
int temt6000Pin = A0;// Переменная аналогового входа для чтения данных с датчика
float light;
int light_value;
void setup() {
Serial.begin(112500);
pinMode(temt6000Pin, INPUT); // Настраиваем temt6000Pin на вход
pinMode(13, OUTPUT);
}
void loop() {
int light_value = analogRead(temt6000Pin);
light = light_value * 0.0976;// расчет процента
Serial.println(light);
delay(100);
if (light_value > 1000) {
digitalWrite(13, HIGH);
}
else {digitalWrite(13,LOW);}
}