У меня устройство висит в коридоре у входной двери и его главное предназначение махнув рядом с ним рукой узнать:
- как сегодня одеваться?
- тащить ли с собой зонтик?
- какая погода предполагается завтра?
В верхней части экрана на 1-й странице отображаются:
- дата, время, день недели;
- температура воздуха на улице;
- время восхода и заката солнца;
- температура воздуха и влажность в помещении (под закатом);
Нижняя часть экрана разбита на 4 части и отображает прогноз погоды на текущий день. УТРО/ДЕНЬ/ВЕЧЕР/НОЧЬ. Чтобы одеться по погоде этих данных необходимо и достаточно.
ЛИЧНО Я:
- данные по закату солнца я использую из тех соображений, что живу в таком месте где он необычайно красив и стараюсь его не пропускать.
- Если температура в помещении ниже чем температура на улице - это повод закрыть окна и включить кондиционер.
В самоделку каждый вкладывает тот функционал который нужен именно ему, и если что-то не нужно именно Вам это еще не значит что это 100% больше ни кому не нужно. Код открыт - можете вытаскивать любые нужные именно Вам данные.
Махнув рукой слева на право можно перейти на вторую страницу. Прогноз погоды на сегодня уезжает в верхнюю часть экрана, в нижней части экрана отображается прогноз погоды на завтра. (можно получить общее представление похолодает завтра или потеплеет)
Градации такие же: УТРО/ДЕНЬ/ВЕЧЕР/НОЧЬ. Бесплатный тариф от от Яндекс не отдает данные по прогнозу более чем на 1 день вперед, а поскольку ночь начинается после 00:00 в последнем квадратике я просто нарисовал логотип Яндекса.
По факту на этот дисплей выводится информация с этой веб-страницы
Махнув рукой справа на лево возврат на первую страницу. Если еще раз махнуть рукой в том-же направлении подсветка дисплея отключатся, а само устройство переводится в спящий режим.
Электрическая принципиальная схема
Проект выполнен на базе ESP32 WROOM DevKit v1. Дисплей монохромный 4.7" 240*128 на контроллере T6963C. Подсветкой дисплея управляет транзистор Q1. Потенциометр номиналом 10к предназначен для установки контрастности. К шине I2C подключены модуль распознавания жестов PAJ7620U2 и датчик температуры/влажности SHT3X. Схема и печатная плата были разработаны в бесплатной программе EasyEDA.
Печатная плата и корпус
Плата односторонняя - была "шлепнута" утюгом.
Для экономии места ESP32 впаяна без PBS гнезд.
Корпус выполнен из фанеры методом лазерной резки (в мастерской на заказ)
И покрашен из баллончика белой акриловой краской.
Датчик температуры вынесен за пределы корпуса (через PBS разъем)
Для изготовления корпуса потребуются только эскизы верхней и нижней панелей:
Саму коробочку любая мастерская с удовольствием спроектирует и изготовит самостоятельно (допуск на конкретный лазер все равно рядовому юзеру неизвестен)
Если вы находитесь в Ярославле - рекомендую этих толковых ребят
Питание и энергопотребление
Ночью на дисплей никто не смотрит, поэтому на ночь устройство можно увести в спящий режим. Данные разных режимах при входном напряжения 5V:
- подсветка выключена - 80mA ~ 0.4Вт;
- подсветка включена - 120mA ~ 0.6Вт;
- подсветка включена + Wi-Fi - 130mA ~ 0.6Вт;
- подсветка включена + Wi-Fi(обмен данными) 170mA ~ 0.85Вт;
- сон ESP32 и дисплей работают только датчики и обвес ESP32 - 32mA ~ 0.16Вт.
Устройство запитано телефонным кабелем 2*0.5 от 2А блока питания для смартфона.
Периоды и источники обновления данных
После первого включения выдается страница диагностики:
Дальше обновление данных происходит автоматически:
- синхронизация времени с сервера NTP - один раз в сутки;
- обновление температуры на улице - один раз в 5 минут;
- запрос прогноза погоды с личного кабинета Яндекс - один раз в 2 часа;
- датчик комнатной температуры (мигание точками) - один раз в секунду;
Интервалы отмеряются часами которые встроены в ESP32. Часы продолжают ходить и в спящем режиме - т.е. разбудив устройство утром, будут автоматически получены свежие данные о погоде.
Настройка прошивки
В прошивке необходимо указать
Данные для подключения к сети Wi-Fi
Данные для подключения к личному кабинету Яндекс погода (для получения прогноза). Что это такое читаем тут.
Температура на улице запрашивается по инструкции от автора "Project A.L.T." - у него есть свой канал на Дзен
В ней можно прочитать как найти ID для GET запроса
https://yandex.com/time/sync.json?geo=16
Запрос работает без регистрации и СМС.
Насчет настройки получения времени с NTP серверов есть замечательная статья от автора K12 :: О ESP32 и не только
Код и все библиотеки для проекта качайте по этой ссылке
Оглавление канала доступно тут:
Всем удачи.