Монитор погоды на электронной бумаге
- Отображает текущую погоду и почасовой прогноз погоды на 48 часов с OpenWeatheMap.org.
- Используется готовый модуль LilyGo EPD 4.7“, с контроллером ESP32 и 4.7“ E-paper дисплеем 540 х 960 точек.
- Подключается к интернету через WiFi, период обновления данных 30 минут, время автономной работы около 90 суток.
- Ориентирован для тех кто поводит время на открытом воздухе: прогулки, спорт, путешествия, отдых на природе.
Мотивация
Я катаюсь на велосипеде круглый год, езжу на работу и на природу. Поэтому мне интересен наглядный прогноз погоды с почасовым уровнем и вероятностью осадков, графиками температуры и точки росы, направление и скорость ветра. Удобно, когда цифры и графики визуально совмещены по шкале времени. Еще интересна информация насколько градусов в предстоящие сутки теплее или холоднее чем в предыдущие. Это помогает планировать поездки и подбирать экипировку.
Особенности:
- Единая шкала времени для таблицы и графиков.
- График почасового прогноза температуры воздуха и точки росы.
- График почасового прогноза атмосферного давления.
- Столбиковая диаграмма почасового уровня и вероятности осадков.
- Сравнение средней температуры за текущие и предыдущие сутки.
- Сравнение текущего атмосферного давления и среднего за последние 8 часов.
- Открытый исходный код имеет большой потенциал для модернизации.
Распространяется под MIT License. Для тех кто не читал: можете распоряжаться исходным кодом на свое усмотрение, но оставляйте упоминание об авторе и первоисточнике.
C++ не мой родной язык, поэтому прошу снисхождения за код. Конструктивные замечания и предложения принимаются.
Если на основе этого проекта у вас получилось что-то свое, поделитесь пожалуйста своими идеями, пришлите ссылочку.
Экран
Экран визуально разделен на две зоны:
- Слева: информация о текущем состоянии погоды и астрономические данные.
- Справа: почасовой прогноз погоды на 2-е суток в виде таблицы и графиков с единой шкалой времени.
Текущая погода
- Дата и время получения погоды
- Пиктограмма погоды
- Величина осадков в течении ближайшего часа
- Текущая влажность
- Облачность
- Видимость
- Температура текущая
- Максимальная температура сегодня
- Минимальная температура сегодня
- Изменение средней температуры за текущие и предыдущие сутки (на сколько сегодня теплее или холоднее чем вчера)
- Точка росы текущее значение
- Ветер
- Направление
- Скорость
- Порывы
- Давление
- Текущее
- Сравнение текущего со средним значением за последние 8 часов (на сколько изменилось за 8 часов)
- Астрономические данные
- Время восхода и захода Солнца
- Возраст луны
- Процент светимости луны в предстоящую полночь (на 24:00). Стрелка и знаки
±
показывает растёт или убывает луна. - Время восхода и захода Луны
Прогноз погоды на 48 часов
Прогноз погоды скомпонован в виде таблицы и графиков с единой шкалой времени.
Таблица прогноза
Таблица размерностью 8 колонок на 8 строк. Каждая колонка соответствует 6 часам прогноза, и того 48 часов.
Описание строк таблицы:
- Сокращенное название дня недели и время прогноза. Время + 3 часа от начала прогноза каждой колонки.
- Пиктограмма погоды. Из почасового прогноза выбирается преобладающая пиктограмма.
- Пиктограмма осадков. Зонт или снежинка в случае если снега больше чем дождя. Суммарный уровень всех осадков за 6 часов и максимальная вероятность осадков в % за 6 часов.
- Температура максимальная и минимальная за 6 часов. Если минимальная и максимальная температура совпадают, то выводится одно значение.
- Направление ветра в виде стрелки-пиктограммы. Средняя скорость ветра за 6 часов и максимальная скорость порывов ветра.
- Уровень облачности в %. Вычисляется среднее значение за 6 часов.
- Видимость. Выбирается минимальное значение за 6 часов.
- Относительная влажность в %. Вычисляется среднее значение за 6 часов.
Графики прогноза
-
График температуры окружающего воздуха и точки росы.
-
График атмосферного давления и столбиковая диаграмма уровня осадков на каждый час. Вероятность осадков кодируется яркостью столбика.
Для зимнего периода нет однозначного перевода уровня осадков из мм водного столба в уровень выпавшего снега, на это влияет многих различных факторов, но приблизительно можно считать что 1 мм осадков это примерно 1 — 1,5 см снега.
Кнопки
На плате контроллера имеется 5 кнопок. Слева на право:
Reset
- аппаратный сброс;D
- не используется, её невозможно задействовать в проекте;C
- двойным нажатием листает страницы “Weather”, “Logo”, “Icons” (если не в режиме сна);B
- пока ничего не делает;A
- пробуждает контроллер из глубокого сна, долгий клик (~2c) инициирует запрос на получение погоды.
После аппаратного сброса Reset
или пробуждения по кнопке A
контроллер ожидает нажатия кнопок пользователем, если в течении 30 секунд нажатий не происходило, устройство переходит в режим глубокого сна до следующего сеанса получения и отображения данных о погоде.
Сборка проекта
Проект собирался с следующих средах с установленной поддержкой ESP32
:
- Arduino IDE
- Visual Strudio Code & PlatformIO
Инструкция как установить поддержку ESP32 используя Arduino IDE или PlatformIO
Настройка Arduino IDE для ESP32
Библиотеки
Что нужно настроить
- Переименовать файл
Private.sample.h
вPrivate.h
Внести в Private.h
следующие изменения:
- Задать SSID и пароль своего WiFi ;
- Задать широту и долготу местности;
- Рекомендуется получить собственный ключ API, зарегистрировав бесплатную учетную запись разработчик по ссылке. Ключ указанный в файле найден в интернете, он может быть аннулирован в любое время либо можно столкнуться с ограничением лимита запросов.
Можно изменить единицы измерения в файлах Lang.h
и Format.c
Используемые шрифты
Проблемы
- Кнопка
A
не генерирует события долгого нажатия.
Планы
- Более точное соответствие иконок и погодных условий.
- Подключить датчики температуры и влажности в помещении.
Лицензия
Публикуется на условии MIT license
.
Благодарности
- David Bird https://github.com/G6EJD/ за идею и вдохновение.
История изменений
Версия 1.2b 2023-09-22
- Частичная компенсация ухода времени глубокого сна.
- Исправление расчета уровня заряда аккумулятора.
Версия 1.1b 2022-09-14
- Отображение времени восхода и захода Луны.
- Исправлен азимут стрелки направления ветра.
- Информация о часовом поясе получается из прогноза погоды.
Версия 1.0b 2022-08-30
Первая публичная версия
Описание
Интернет погодная станция с экраном на электронных чернилах с почасовым прогнозом погоды на 2 суток с OpenWeaterMap.org на готовом модуле LilyGo EPD 4.7“ E-paper ESP32 #arduino #ESP32 #Weather #WeatherStation #E-paper #E-ink #LilyGo