# Cвет в подъезде
Чаще всего требуется просто зафиксировать значение освещения "достаточно темно, пора включать свет" или "достаточно светло, можно выключить свет".
Для измерения уровня освещения используется фоторезистор, например, VT93N2 [[Datasheet](http://www.farnell.com/datasheets/919043.pdf)].
![](/assets/images/iot/02/sens_photores.jpg)
**Спецификация:**
| Параметр | Значение |
| ------------------------------------|----------------|
| максимальная потребляемая мощность | 100 мВт |
| спектральный пик | 540 нм |
| сопротивление при освещении 10 люкс | от 2 до 5 кОм |
| сопротивления в темноте | 500 кОм |
Однако, в этом случае не нужна информация об уровне освещенности.
Можно дополнить фоторезистор логикой на основе компаратора LM393 и подстроечного резистора.
В итоге компаратор будет сравнивать заданный подстроечным резистором сигнал с сигналом от фоторезистора и будет выдавать 1 или 0 в зависимости от разницы сигналов.
Мы будем использовать готовый модуль с фоторезистором и компаратором:
![](/assets/images/iot/pht_module.jpg)
Для настройки порога срабатывания потребуется отвертка.
Компаратор работает от напряжения 5 В, а входы контроллера WeMos D1 расчитаны максимум на 3.3 В, поэтому нам потребуется преобразователь уровня TTL
![](/assets/images/iot/ttl_level_converter.jpg)
### Схема подключения
![](/assets/images/iot/03/light_digital.svg "Схема подключения")
Перед подключением контроллера к компьютера обязательно проверьте, что напряжение на входе VA преобразователя уровней меньше напряжения VB (**VA < VB**).
| WeMos D1 | Конвертер TTL | Модуль фото |
|----------|---------------|-------------|
| 3V3 | VA, OE | - |
| 5V | VB | VCC |
| GND | GND | GND |
| D1 | A1 | - |
| - | B1 | DO |
### Пример программы
```c
#define PHT_PIN D1 // Вход датчика
int delayMS = 1000; // Переиод в мс
long lastMS = 0;
void setup() {
pinMode(PHT_PIN, INPUT);
Serial.begin(115200);
}
void loop() {
if ( millis() - lastMS > delayMS) {
// Считываем значение c выхода компаратора
if ( digitalRead(PHT_PIN) )
Serial.println("Above threshold");
else
Serial.println("Below threshold");
lastMS = millis();
}
}
```
### Итоговое устройство
![](/assets/images/iot/03/light_digital.jpg)
> Рекомендуем не устанавливать модуль фотодатчика в макетную плату, аподключить его проводами типа F-M - так будет удобнее устанавливать порог срабатывания компаратора.
## Задача
Написать прошивку, которая будет
1. обрабатывать ([digitalRead](https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/)) срабатывание датчика и отправлять сигнал - "1" если света достаточно и "0" если света мало, в топик **itschool/dlight**;
2. зажигать светодиод на плате микроконтроллера если темно. Как управлять светодиодом на плате вы уже видели в проекте **Blink**.
[к списку задач](iot/summer/tasks)