Привет, Хабр! В этой статье я расскажу о своем опыте разработки системы уличного освещения, построенной на микроконтроллере ESP8266. Хоть данная идея и не нова и в интернете огромное количество готовых проектов на базе данного микроконтроллера, я хотел бы поделиться тем, что у меня получилось в надежде, что для кого-нибудь это окажется полезным. Прежде чем начать, позвольте добавить немного предыстории. Я живу в частном доме и улица, на которой расположен мой дом, не имеет хорошего освещения. Особенно данная проблема остро ощущается зимой, когда темнеет очень рано. Именно в один из таких дней, припарковав автомобиль и закрывая за ним ворота в полной темноте я решил, что пора заняться внешним освещением. Первая мысль была - повесить светодиодный прожектор с датчиком движения и освещенности. Вариант отличный, но мне хотелось все сделать самому, к тому же предыдущий Pet-project был закончен и время позволяло заняться чем-то другим. Обдумав различные варианты реализации, включая как с датчиками так и без, а также учитывая, что на тот момент у меня в наличии уже было несколько модулей реле с ESP-01S, купленных ранее для ознакомления, я остановился на следующем - реализовать систему уличного освещения на базе ESP8266 с управлением через web-интерфейс. В качестве экспериментальной площадки было выбрано место парковки автомобиля. История ESP8266 началась в 2014 году. За это время он оброс серьезным комьюнити и получил широкую популярность благодаря наличию Wi-Fi, а также ввиду его относительно низкой стоимости. На базе ESP8266 построено большое количество различных модулей, более подробно о которых можно почитать на Хабре здесь и здесь. В данной статье речь будет идти о модуле ESP-01S, который я приобрел в паре с модулем реле для него.  Небольшая справка - модуль реле для ESP-01S уже содержит стабилизатор напряжения AMS1117, обеспечивающий питание микроконтроллера равное 3.3V. При этом собственное напряжение питание модуля реле составляет 5V, что существенно упрощает его использование. Управление реле осуществляется посредствам GPIO0. Однако, для большей наглядности, во всех последующих схемах совместно с ESP-01S будет использоваться обычное реле, которое при желании всегда может быть заменено на модуль реле для ESP-01S. Процесс программирования ESP-01S в подробностях описан на Хабре здесь и здесь, поэтому я решил не повторяться, а ограничиться лишь схемой подключения, которую я использовал во время разработки. Для подключения к компьютеру я использовал кабель USB <–> UART TTL. В качестве среды разработки я выбрал Arduino IDE, процесс настройки которой, для работы с ESP8266, в деталях описан на Хабре здесь и здесь. Поэтому опять же не станем останавливаться на нем подробно. Прежде чем продолжить, я хотел бы отметить, что одним из неоспоримых преимуществ Arduino IDE является то, что она содержит огромное количество готовых примеров, которые могут быть использованы для ознакомления или просто взяты в качестве основы, что значительно упрощает разработку.   Поскольку управление освещением планировалось осуществлять через web-интерфейс, то первым делом я подготовил следующую html страницу.   Для обеспечения работы ESP-01S в качестве web-сервера, а также для поддержки базовой аутентификации был выбран класс ESP8266WebServer. При этом исходный код html-страницы был преобразован в шестнадцатеричный вид и записан в качестве содержимого массива `data_light_html`.  Логика работы следующая. После старта выполняется попытка подключения к точке доступа Wi-Fi, используя в качестве SSID и пароля значения WIFI_SSID и WIFI_PASSWORD. В случае успешного выполнения соединения запускается веб-сервер на 80 порту и html-страницой, доступной по адресу `http://<ip адрес>/light`. Логин и пароль, используемые при аутентификации, указаны в WWW_USER и WWW_PASSWORD. Для удобства отладки, а также для вывода дополнительной информации присутствуют вызовы `Serial.println`, результат работы которых можно увидеть в `Serial Monitor`. Так, например, среди выводимой информации можно увидеть ip адрес, который был присвоен при подключении к точке доступа Wi-Fi. Прежде чем приступить к сборке рабочего варианта, который будет управлять уличным освещением, я собрал простую схему на макетной плате с использованием светодиода вместо прожектора. В моем случае, используя модуль реле для ESP-01S, это выглядело следующим образом. Для сборки рабочего образца я приобрел несколько светодиодных прожекторов и распаячную коробку, куда поместил модуль реле. В качестве источника питания для модуля реле я решил использовать сетевое зарядное устройство, а точнее его содержимое, мощностью 5 Вт. Для того чтобы веб-страница была также доступна за пределами домашней сети на роутере было добавлено правило, выполняющее проброс порта на ESP-01S.  Разрешите продемонстрировать, что получилось в итоге. Спасибо за внимание!