Примечание :
Интерфейс в прошивке оптимизирован под дисплеи 4.2' с разрешением 400х300, реализация поддержки других разрешений возможна, но требует оптимизации интерфейса и написания драйвера под конкретный дисплей.
Прошивка совместима с дисплеями 1.5' - реализован вывод интерфейса адаптированного под разрешение 200х200, можно выводить свою графику, но такие дисплеи были не в приоритете и часть виджетов могут быть не оптимизированы (фото интерфейса по умолчанию)
см. также Список поддеживаемых дисплеев
Для прошивки потребуется установить Microsoft Visual Studio и расширение к нему Platform IO
Файл platformio.ini содержит конфигурацию подходящую для ESP8266 D1 Mini и похожих плат. Для микроконтроллера ESP32 можно переименовать или скопировать конфигурацию из файла platformio.esp32.ini
Конфигурация под ESP32 подготовлена для платы YD-ESP32-23 - esp32-s3-devkitc-1 (ESP32S3, 8мб FLASH) и может отличатся от требуемой вам - все зависит от конкретной платы \ модели ESP32 - разные модели могут отличаться как по количеству выводов так и по нумерации ножек и общей конфигурации.
Если конфигурация не совпадает, можно поискать пример конфигурации на сайте PlatformIO
Для первичной проверки микроконтроллера можно заливать прошивку и без подключения внешних модулей (дисплей, датчик температуры). См. схему сборки для подключения дисплея и других опций
#define WAVESHARE_BW_42_UC8176 | WaveShare 4.2 BW rev 2.1 |
#define WAVESHARE_BW_42_SSD1683 | WaveShare 4.2 BW 4-color grayscale rev 2.2 WeAct 4.2 BW |
#define WAVESHARE_RY_BW_42_UC8176 | WaveShare 4.2 BW + Yellow rev 2.1 V2 WaveShare 4.2 BW + Red rev 2.1 |
#define HELTEC_BW_15_S810F | Heltec 1.5 BW |
Русский - #include <LocaleRu.h> #include <ui/out/locale_ru/locale.h>
Английский - #include <LocaleEn.h> #include <ui/out/locale_en/locale.h>
Настройки вашей домашней WiFi сети в целях безопасности явно прописывать в файл настроек необязательно т.к. по умолчанию устройство создает точку доступа при отсутствии настроек или неправильно указанной wifi сети
Точка доступа по умолчанию
название : VOLNA42-EINK, пароль : volnaaccess
Подключившись к этой точке доступа и перейдя на http://192.168.1.1/ можно задать настройки вашей WiFi сети для корректного авто определения времени \ синхронизации данных датчиков.
Если это версия с аккумулятором, то для настройки нужно временно выключить переключатель BAT_SENSOR и перезапустить метеостанцию (выкл. \ вкл. или нажать RST).
Тогда метеостанция перейдет в режим постоянной работы и покажет свой IP адрес на экране для дальнейшей настройки.
По завершению настройки, так же включить BAT_SENSOR обратно и перезапустится (можно через веб интерфейс) -> устройство вернется в энергосберегающий режим
Это необязательная настройка интеграции. В этом разделе информация о том как подключить метеостанцию к системе умного дома, чтобы она передавала туда свои данные с датчика BME280. Предполагается что у вас уже настроен сервер с MQTT брокером и системой контроля умного дома - Domoticz или Home Assistant
Все запросы выполнять относительно корневого пути URL
Пример запроса. Перезагрузка устройства
GET /api/cui/select?filename=fairy
GET /api/clear
Очищает экран и ставит все события на паузу (частичное и полное обновление экрана) до обновления экрана через панель управления вручную или до полной перезагрузки
GET /api/update
POST /api/reboot?reboot=1
POST /api/cui/format?confirm-format=1
POST /api/reset?reset=1&reset-wifi=1
POST /api/clearrom?confirm-clear=1
Полностью вычистить память EEPROM (там где хранятся все настройки, авторизационные данные от WiFi) и заменить данные на нулевые значения.
POST /api/partialtest
Принудительно обновляет область часов для тестирования функционала
Некоторые неофициальные клоны плат D1 Mini могут иметь подобную проблему. Предварительно проверьте корректно ли подлкючен пин D0 к пину RST (для корректной перепрошивки должен быть подключен через резистор 510 Ом, но для тестов режима сна достаточно просто перемычки)
В прошивке предусмотрено несколько режимов выхода из сна на случай "плат клонов", метод выхода из сна можно поменять в файле UserDefines.h параметром FIX_DEEPSLEEP (если параметра нет, скачайте актуальную прошивку с основной ветки проекта на GitHub
Попробуйте выставить значение параметра FIX_DEEPSLEEP в 1 или 2 и проверить снова. Если проблема сохранится, скорее всего микроконтроллер поврежден или имеет более серьезные проблемы
По умолчанию метеостанция пытается синхронизировать время по NTP-серверу. Устройство должно быть подключено к точке доступа WiFi с разрешенным интернет-соединением.
Если вы уверены, что нет никаких проблем с подключением к интернету, попробуйте перезагрузить устройство, чтобы переинициализировать синхронизацию по NTP, или измените NTP-сервер в настройках.
Для переинециализации времени без перезагрузки, можно перейти в панель управления устройства и кликнуть пункт меня (далее после информации что команда выполнена - "Управление экраном" -> "Обновить экран")
Если у вас нет подключения к Интернету, вы можете установить время вручную, настроив параметры "Дата и время" в разделе "Общие параметры". Можно очистить опцию "Часовой пояс", чтобы она дополнительно не влияла на вывод.
Актуально для ESP8266
Актуально для ESP32
Если есть уверенность что выбран правильный тип дисплея в UserDefines.h (а вариантов по сути всего два - либо дисплеи с префиксом SSD1683 либо с UC8176 - вывода совсем не будет в случае если неправильно указан контроллер), то скорее всего неправильно подключены пины или где-то нет контакта. Нужно перепроверить что все пины подключены правильно. Если нет уверенности что и сама плата esp рабочая, можно попробовать подключить к другой плате ESP. Предварительно минимально проверить работоспособность еспшки \ отдельных выводов можно например написав простой скетч реализующий кнопку или моргание светодиодом. Но обычно если плата esp оказывалась бракованной то проблемы начинались еще на этапе прошивки (либо прошивалась через раз, либо вообще не прошивалась). У меня обычно проблема решалась именно перепроверкой всех пинов и запуском каких-то минимальных примеров от производителя для подтверждения что ошибка точно не в моем коде.
Возможно нарушен контакт пина BUSY или неправильно установлено его значение в UserDefines.h -> EPD_BUSY_PIN (например перепутан с EPD_RST_PIN)
Производитель обычно указывает сам точно ли поддерживается такой режим работы или нет. Даже если контроллер дисплея частичное обновление поддерживает, оно все равно может фактически не работать тк не заявлено производителем платы. Можно проверить по примерам предоставляемым самим производителем, есть ли там методы частичного вывода или нет.
Если проблема сохраняется стабильно и никаких доп. факторов кроме подключенного дисплея на это не влияет и полное выключение не помогает, нужно проверить какой пин на такое поведение влияет, попробовать переназначить то что на него навешено, на другой пин.
Я пробовал использовать оставшиеся пины например для переключателей и это приводило к подобной проблеме т.к. у ESP8266 всего несколько GPIO пинов безопасны GPIO14, GPIO12, GPIO13, GPIO4, GPIO5, все остальные не должны быть в определенном логическом состоянии при старте.
Сейчас распиновка подключения конкретно дисплея подобрана так, чтобы не нарушать логику работы esp и она не вызывала у меня проблем при подключении разных дисплеев, но возможно она вам не подходит если вы выяснили что проблема именно в подключении дисплея (например используется непроверенный новый экран который выдает другие сигналы)
Вот так же альтернативная распиновка которая использовалась мной раньше с использованием пина D4 через резистор. Устройство иногда могло подвисать после перепрошивки и рестарта по UART на разных дисплеях, но в штатном режиме работы все работало без проблем.
Такое было с одним esp контроллером, возможно был бракованный, но после замены самой еспшки на другую, проблема пропала. В случае с ESP8266 можно так же попробовать поменять метод выхода из сна в файле UserDefines.h выставив его через параметр FIX_DEEPSLEEP