Вмонтував все у підрозетник, додав налаштування в ESPHome відповідно до інструкцій і отримав... цеглину замість модуля ESP32. Тобто, він перестав вмикатись. Приїхали.
Прийшлось розбирати все з підрозетника і прошивати з USB-TTL. Прошивання вдавалось, але цеглина залишалась цеглиною. Спробував різні конфігурації, але без успіху. Єдине, що було вдало, це завантажити стару прошивку без конфігурації LD2420. І тоді модуль запускався. Явно програмна проблема, пішов шукати на форуми та тематичну тему на
GitHub. В останній було багато описаних проблем, але ні в кого не виникала така ж проблема як у мене. Йшла пів друга ночі і я вже готовий був здатись і відкласти
назавжди на потім.
Та спробував глянути, що ESP32 присилає на UART0 при запуску. Там побачив помилку - спрацьовує watchdog і модуль йде у ребут. Причина цьому явно код для LD2420.
Написав
повідомлення в ту тему. Але ще спробував викинути налаштування LD2420 і просто додати дебагер UART порту - щоб отримувати дані з LD2420, коли він підключений. Прошивка завантажилась, модуль запускався, LD2420 мовчав. Підключив напряму до USB-TTL - живий. А з ESPHome - мовчить.
Так кілька раз пробував різні налаштування і переглянув код інтеграції. Знайшов команду отримання версії прошивки LD2420, думаю, додам собі для тесту. Додав як кнопку. Натискаю, а модуль мовчить. З USB-TTL - є відповідь. Та що ж таке?!
Тут ненароком підключив LD2420 до вже запущеного ESP32 і пішли пакети. Не просто пішли, а побігли десятками. І на кнопку почав відповідати. Ось воно, я, здається, знаю у чому проблема.
ESP32 живлю від вбудованого стабілізатора на 3.3 В. На ньому і ESP32, і BME280, і DB18B20, і, тепер вже, LD2420. І от, останньому не залишається нічого з бюджету потужності. І він просто не може запуститись на етапі запуску ESP32. А код інтеграції LD2420 в ESPHome зависає, якщо модуль LD2420 не запускається. Тому і бачив проблему з watchdog, і тому якщо запускаю модуль після запуску всього, коли на стабілізатор найменше навантаження, LD2420 запускається!
Окей, перша думка в четвертій ранку була не припаяти DC-DC на вихід PoE, щоб збільшити бюджет потужності, а припаяти модуль ключа на мосфеті AOD4184.
Не питайте чому. Припаявши цей модуль, додав кнопку на GPIO, яка би вмикала чи вимикала модуль. І в навантаження модуля вже підключив живлення LD2420. Так отримав можливість вмикати чи вимикати LD2420 за потреби. Ця конфігурація ніби запрацювала, ESP32 запустився, далі вручну (хоч можна і за таймером) вмикається кнопка і запускається сенсор. Запустилось, запрацювало, я пішов спати.
Вже зранку зробив ще один розбір польотів і вирішив, що треба зробити так або так:
1. Додати DC-DC конвертор на вихід 5В з PoE, чи формувати додаткові 3.3 В. Сам конвертор приклеїти до модуля AOD4184, який має бути по замовчуванню увімкнутим. З такою конфігурацією додати нативну інтеграцію в ESPHome із затримкою запуску. Сценарій, в теорії, наступний - запуск ESP32, активація GPIO, запуск DC-DC конвертора, запуск модуля LD2420, запуск інтеграції LD2420. Якщо все запрацює, буде круто - бо і модуль запрацює і буде можливість перевантажити його, відключаючи DC-DC програмно.
2. Викинути LD2420 і поставити старий добрий інфрачервоний сенсор руху. Воно хоч простіше, але надійніше.