11270

Мой открытый проект метеостанции с монохромным дисплеем

Дописал документацию к своей железке. Хотел бы показать чего получилось

Метеостанция Волна 2BW42

Метеостанция Волна 2BW42

Если вкратце про сам проект - метеостанция рассчитана на интеграцию в систему умного дома - данные о внешнем датчике устройство получает через Home Assistant или Domoticz, и так же может отправлять свои данные по MQTT (в HA девайс подхватывается через Auto Discovery, в Domoticz через виртуальные датчики)

Прошивка совместима с ESP8266 и ESP32 (Arduino Framework, C++, PlatformIO); внутренний датчик температуры \ влажности BME280. Прошивка работает с дисплеями на электронных чернилах 4.2' и 1.54' дюйма (таблицы совместимости с теми производителями с которыми тестил можно найти на сайте с документацией). Сами E-Ink дисплеи своеобразны в работе и значительно медленней отрисовывают всю область экрана в сравнении с обычными жк, но не требуют постоянного питания для отображения картинки и для автономного девайса подходят хорошо, позволяя очень существенно экономить расход батареи. В живую картинка на таком экране читается приятно, как с обычного листа бумаги.

В режиме работы от аккума устройство просыпается раз минуту для обновления области часов на экране и раз в 10 минут для полного обновления (датчики температуры и другая статистика), WiFi-соединение (синхронизация данных по внешнему датчику, отправка своих данных по MQTT) раз в час в целях экономии заряда; аккума 18650 2000 мА*ч хватает на ~несколько месяцев. Все таймауты при желании можно перенастроить.

Оформление интерфейса изначально делал под дисплеи 4.2' (400х300), с котиком-индикатором который меняется от погодных условий \ времени.

интерфейс по умолчанию

интерфейс по умолчанию

Некоторые зарисовки иконок которые делал для проекта, часть задействованы для индикатора :

В актуальных обновлениях прошивки добавлен конструктор интерфейсов без строгой привязки к разрешению экрана и необходимости лезть непосредственно в код \ перепрошивки чтобы можно было залить свою картинку в качестве фона и расположить "виджеты" просто через веб-интерфейс устройства.

Пример настройки кастомного оформления (фоновая картинка может быть и на весь экран) :

редактор интерфейсов

редактор интерфейсов

интерфейс для мелких дисплеев 1.54'

интерфейс для мелких дисплеев 1.54'

Еще некоторые фотографии с процесса сборки под разные варианты корпуса

Основание корпуса-подставки

Основание корпуса-подставки

вариант полностью закрытого корпуса (чуть промахнулся с размерами, в исходниках модельки 3д принта уже поправил)

вариант полностью закрытого корпуса (чуть промахнулся с размерами, в исходниках модельки 3д принта уже поправил)

Опционально в прошивке реализована возможность вывода картинок c 4 цветном режиме (2-bit). Если сам e-ink экран поддерживает такой режим работы, то можно загрузить картинку фона в таком режиме.

Пример отрисовки фона в градациях серого :

Тестовый "толстый" корпус с доступом к внутренностям. Использовался экран с двойным слоем чернил (красный \ черный), к сожалению они значительно медленней в плане отрисовки

Тестовый "толстый" корпус с доступом к внутренностям. Использовался экран с двойным слоем чернил (красный \ черный), к сожалению они значительно медленней в плане отрисовки

Такой проект получился. Более детально по каждому аспекту, касательно сборки, скорости отрисовки, совместимости с конкретными модулями экранов, процессу прошивки и первичной настройки, примерам моделек корпусов и т.п. постарался подробно описать на сайте проекта.

Проект полностью открытый, можно использовать как для коммерческих так и для личных целей. Если вдруг есть идеи с какими открытыми сервисами погоды можно было бы еще добавить интеграцию (например если кому то захочется использовать вне системы "умного дома"), можно так же написать или мб еще есть какие идеи; поизучаю апишки, мб что-нибудь выберу для дальнейших доработок.


Сайт с документацией (Метеостанция Волна 2BW42)
GitHub страница с прошивкой

Вы смотрите срез комментариев. Показать все
0
Автор поста оценил этот комментарий

День добрый. Думал будет легко - ага щас. У меня включается монитор моргает всеми цветами по очереди и останавливается на красном, а vs пишет одинаково при пустом запуске и с обвязкой. Где должен появиться ip для вебморды?

Иллюстрация к комментарию
раскрыть ветку (7)
1
Автор поста оценил этот комментарий

Привет. видно что он в режиме точки доступа ожил. По умолчанию точка VOLNA42-EINK с паролем volnaaccess. На экран выводит свой IP в свое сети - 192.168.1.1 или IP в локальной сети если не в режиме точки

Все предварительные настройки сети в UserSettings.h но можно и через панель управления один раз в пользовательскую память записать и при перепрошивке терятся не будет


Касательно дисплея - вот вывод поумолчанию если ничего не подключено - должен просто отрисовывать интерфейс если завелся. Моргать в процессе отрисовки должен только чб ~ секунд 7-8, т.к. второй буфер исходя из конфига выключен. Дисплей для теста взял Waveshare 4.2 R + BW rev 2.1 v2.


То что мусор выводит или не выводит ничего но моргает, это уже что то - значит питание есть и как минимум какие-то команды принимает но возможно какие-то конкретные пины перепутаны или неконтачат. Если просто моргает, похоже на недостаток времени на отрисовку - возможно BUSY пин не читается и команды идут дальше без ожидания

Иллюстрация к комментарию
Иллюстрация к комментарию
Иллюстрация к комментарию
раскрыть ветку (5)
0
Автор поста оценил этот комментарий

Так с этим разобрался, спасибо. Действительно залез туда, куда не надо и поправил что не следовало. Сбросил на стоковый файл и теперь всё ок. А вот с экраном я даже хз. Видео к комментарию не добавляются. Он запускает серый цвет, на секунду, потом моргает им. Запускает белый - мограет. Запускает чёрный - моргает. Запускает красный, так же моргает и оставляет. Пин d3 перебросил на d4, всё так же

Иллюстрация к комментарию
Иллюстрация к комментарию
раскрыть ветку (4)
1
Автор поста оценил этот комментарий

Понял. Тогда скорее всего все таки сам дисплей какой то другой ревизии, есть небольшие отличия на самой плате - не как у меня, ты уже протестил возможные варианты и скорее всего контроллер ведет себя как то иначе.

Глянул что официально пишут на этот дисплей (https://www.waveshare.com/wiki/4.2inch_e-Paper_Module_(B)_Ma... сам производитель, могу предложить предварительно потестить с официальными примерами - я их чуть подправил чтобы нормально компилились под PlatformIO и не крешелись от недостатка памяти на ESP8266. Как пользоваться описал в редми - в моем случае сработали способы EPD_4in2b_V2_test_old и EPD_4in2bc_test с параметром EPD_4IN2B_V2_INIT_METHOD 1

Вот исходники тестового проекта
https://volna42.com/esp8266_42RBW_test_waveshare.zip

распиновка таже что и в Volna42 поумолчанию

Как только поймем с какими алгоритмами инициализации дисплей дружит, можно будет перенести их в основную прошивку

1
Автор поста оценил этот комментарий

UPD. Еще у одного человека нашелся похожий красно-чб дисплей, проработали с ним вариант поддержки конкретно под его ревизию, вынес в дефайн WAVESHARE_RY_BW_42_UC8176_B https://github.com/NC22/Volna42BW/blob/main/Volna42/src/User...


но возможно у тебя еще какой то другой, в любом случае как вариант для тестов если еще актуально


доработки в основной ветке, не с релизов

https://github.com/NC22/Volna42BW/archive/refs/heads/main.zi...

раскрыть ветку (2)
0
Автор поста оценил этот комментарий
Спасибо, попробую. Всё никак времени не было поковыряться с ней.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

ага, понятное дело. Тогда если еще какая инфа будет появлятся, сюда тоже буду пока кидать

1
Автор поста оценил этот комментарий

Попробовал сломать распиновку \ выставить неправильный драйвер


Если выставить WAVESHARE_BW_42_UC8176 вместо WAVESHARE_RY_BW_42_UC8176

то просто рисует красным но картинка остается, можно для теста его тоже глянуть


Если выставить WAVESHARE_BW_42_SSD1683 то картинка пропадает совсем


Если допустить разрыв контакта DC то появляется поведение похожее на ваше - моргает то черным \ то красным, остается на красном шуме. Можно проверить контакт \ перекинуть на свободный пин #define EPD_DC_PIN   2 // выставить GPIO 2 - D4 вместо GPIO 0 D3

Иллюстрация к комментарию
Иллюстрация к комментарию
Иллюстрация к комментарию
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку