В Buildroot external tree в файле external.mk прописал следующую строку: ```include $(sort $(wildcard $(BR2_EXTERNAL_BananaPi_Serial_Logger_PATH)/package/*/*.mk))``` Причем, BananaPi_Serial_Logger - это имя, которое должно совпадать с external.desc, поле name, и убрать кавычки, хабр съел звездочки
Мне понадобилось записать логи с последовательного порта устройства, чтобы отловить программную проблему, но при подключении к компьютеру и подключении терминальной программы давался сигнал сброса на устройство, и багу при таких обстоятельствах не отловить. Плюс, ноутбук оставлять в укромном месте, чтобы только собирал логи - жирно и неудобно. В итоге на одноплатнике запустил 3 bash-скрипта и 2 udev-правила.
Один скрипт - собственно логирование порта, который завершает свою работу, если порт отключается, другой - чистит логи старше 30 дней, а третий - копирует логи на флешку, если она с именем USBLOGS.
Первое udev-правило - запускает скрипт, если видит подключение ttyACM или ttyUSB, а второе - при обнаружении флешки с меткой USBLOGS запускает скрипт на копирование логов. При этом, скопировалось или нет, можно отсмотреть только по индикатору на флешке.
Такое решение помогло отловить проблему.
Первое решение могло логировать только один порт (скрипт работал постоянно, не было udev-правила и складывал только в одну папку). Сейчас решение умеет логировать несколько портов, разделяя логи по папкам с именем НазваниеПорта_СерийныйНомер.
Сейчас этот логгер отдал испытателю, чтобы собирал логи и в случае чего их снял и передал мне на анализ, но у меня уже появилась идея улучшенной версии и ОС для логгера, и программы для логгирования, которую хочу написать на C/C++.
А если ты про миграцию проекта, при этом не хочешь разом все переписывать, то есть компонент esp32-arduino, добавляется либо в папку components, либо прописывается в манифесте idf_components.yaml
Если ты про IDE, то vscode дает возможность создания профилей. Я так и сделал: отдельный профиль (и папка с workspace) под PlatformIO, и отдельный - под ESP-IDF голый.
Отдельный профиль - отдельный набор расширений.
А юнит-тесты на ESP-IDF собираю и провожу через консоль, так как юнит-тест, по сути, проект в проекте, и пока не видел, что он адекватно отрабатывается IDE.
Не помню, начиная с какой версии, но если у тебя поддержки профилей в vscode нет - обнови его.
Рано или поздно всё равно придется мигрировать с PIO на чистый ESP-IDF.
Одна из предпосылок - система сборки. В CMakeLists.txt можно подключать или отключать конкретные файлы исходного кода или компоненты, и указывать зависимости. PlatformIO подхватывает вообще всё, что может вызвать ошибки из исходников, которые не относятся к конфигурации или циклические зависимости
Тоже включал Bluetooth, Bluetooth/WiFi coexistence, запускал Bluetooth одновременно с WiFi. Заработало, но на ESP32S3 осталось после этого свободно ~30 кб ОЗУ (хотя было 100-110 без Bluetooth).
С 30 кб могут происходить сбои при обращении к HTTPS-серверу на контроллере, не запустится скачивание обновления по HTTPS. Использовал mbedTLS для защищенных соединений, по возможности буферы выносил в PSRAM
Заметил, что Postman вообще отказывается отправлять запросы даже в локальной сети, если нет подключения к интернету. Это когда отлаживал API HTTP-сервера на базе ESP32, и очевидно, там не было интернета. Есть ли еще подобные Postman решения, которые работают корректно без интернета и с поддержкой вебсокетов? Curl не поддерживает вебсокеты.
Защита от угона, например. Известен случай, когда у Toyota LandCruiser вырезали в заднем крыле отверстие ножом для консервных банок, затем подключались к CAN-шине и открывали ее, и даже прописывали свои ключи. Ну, и еще один момент на VAG: когда ставишь устройства от другого автомобиля (например, приборную панель или мультимедию), то включается защита компонента, и он не работает, снимается только (около)официальным инструментом ODIS. Но кто знает - тот знает
В основном с android 4.0, 4.1, 7-9 дюймов экраны, в одном из них даже hdmi есть. Есть и экраны отдельные, думал с Banana Pi R2Pro запустить, но все руки не доходят и времени нет
А если некоторые антенны на нижних уровнях разместить? Типа, устройства просматривают верх, некоторые - низ
Есть еще идея: детекция присутствия в комнате, при этом отличая человека от кошки
+взять, например, ESP32S3, и собрать проект с поддержкой USB-хабов, и собирать эти данные. Поддержку хабов вроде как завезли в ESP-IDF v5.5
В Buildroot external tree в файле external.mk прописал следующую строку:
```include $(sort $(wildcard $(BR2_EXTERNAL_BananaPi_Serial_Logger_PATH)/package/*/*.mk))```
Причем, BananaPi_Serial_Logger - это имя, которое должно совпадать с external.desc, поле name, и убрать кавычки, хабр съел звездочки
Много причин
Вот некоторые из которых, чего нет в ESP32, всей серии:
Надо много пинов, и с минимальной задержкой доступа (например, управление асинхронным двигателем)
Те же асинхронники, тоебуется процессор со встроенным модулем для вычислений с плавающей точкой
Нужно подключить esp32 как модем к микропроцессору, например, к Allwinner H3 (на это есть esp-hosted)
Уже есть готовые платы у компании, и там есть разъем под модуль расширения, и они выпускаются серийно
https://docs.espressif.com/projects/esp-at/en/release-v2.2.0.0_esp8266/index_of_abbreviations.html#term-passthrough-mode вот что нашел в документации по прошивке esp-at
Это уже может быть в AT-командах прошивки ESP. Это называется "прозрачный режим". Он еще есть в модемах вроде SIM800
Еще как пример: морда для умного дома, но это надо заморочиться. Интерфейс либо в браузер выводить, либо делать свой интерфейс на базе LVGL или Qt
Как раз мой случай
Мне понадобилось записать логи с последовательного порта устройства, чтобы отловить программную проблему, но при подключении к компьютеру и подключении терминальной программы давался сигнал сброса на устройство, и багу при таких обстоятельствах не отловить. Плюс, ноутбук оставлять в укромном месте, чтобы только собирал логи - жирно и неудобно. В итоге на одноплатнике запустил 3 bash-скрипта и 2 udev-правила.
Один скрипт - собственно логирование порта, который завершает свою работу, если порт отключается, другой - чистит логи старше 30 дней, а третий - копирует логи на флешку, если она с именем USBLOGS.
Первое udev-правило - запускает скрипт, если видит подключение ttyACM или ttyUSB, а второе - при обнаружении флешки с меткой USBLOGS запускает скрипт на копирование логов. При этом, скопировалось или нет, можно отсмотреть только по индикатору на флешке.
Такое решение помогло отловить проблему.
Первое решение могло логировать только один порт (скрипт работал постоянно, не было udev-правила и складывал только в одну папку). Сейчас решение умеет логировать несколько портов, разделяя логи по папкам с именем НазваниеПорта_СерийныйНомер.
Сейчас этот логгер отдал испытателю, чтобы собирал логи и в случае чего их снял и передал мне на анализ, но у меня уже появилась идея улучшенной версии и ОС для логгера, и программы для логгирования, которую хочу написать на C/C++.
А если ты про миграцию проекта, при этом не хочешь разом все переписывать, то есть компонент esp32-arduino, добавляется либо в папку components, либо прописывается в манифесте idf_components.yaml
Если ты про IDE, то vscode дает возможность создания профилей. Я так и сделал: отдельный профиль (и папка с workspace) под PlatformIO, и отдельный - под ESP-IDF голый.
Отдельный профиль - отдельный набор расширений.
А юнит-тесты на ESP-IDF собираю и провожу через консоль, так как юнит-тест, по сути, проект в проекте, и пока не видел, что он адекватно отрабатывается IDE.
Не помню, начиная с какой версии, но если у тебя поддержки профилей в vscode нет - обнови его.
Рано или поздно всё равно придется мигрировать с PIO на чистый ESP-IDF.
Одна из предпосылок - система сборки. В CMakeLists.txt можно подключать или отключать конкретные файлы исходного кода или компоненты, и указывать зависимости. PlatformIO подхватывает вообще всё, что может вызвать ошибки из исходников, которые не относятся к конфигурации или циклические зависимости
Проект на ESP-IDF, использовал HTTPS-сервер+HTTPS клиент для скачивания обновления+MQTT защищенный, SSL/TLS бэкенд - mbedTLS.
В рантайме либо HTTPS-сервер, либо HTTPS клиент+MQTT защищенный.
Возможно, в Вашем проекте HTTPS или MQTTS не задействован
Ну или использовались динамические буферы
Тоже включал Bluetooth, Bluetooth/WiFi coexistence, запускал Bluetooth одновременно с WiFi. Заработало, но на ESP32S3 осталось после этого свободно ~30 кб ОЗУ (хотя было 100-110 без Bluetooth).
С 30 кб могут происходить сбои при обращении к HTTPS-серверу на контроллере, не запустится скачивание обновления по HTTPS. Использовал mbedTLS для защищенных соединений, по возможности буферы выносил в PSRAM
А какие параметры были выставлены/урезаны, чтобы это всё заработало? Динамические буферы?
Обычный вариант ESP32 не переварит одновременно WiFi и BLE, тупо не хватит ОЗУ. Лучше использовать для этого варианты с PSRAM
А почему DMX/RDM не подошел?
Заметил, что Postman вообще отказывается отправлять запросы даже в локальной сети, если нет подключения к интернету. Это когда отлаживал API HTTP-сервера на базе ESP32, и очевидно, там не было интернета. Есть ли еще подобные Postman решения, которые работают корректно без интернета и с поддержкой вебсокетов? Curl не поддерживает вебсокеты.
Защита от угона, например.
Известен случай, когда у Toyota LandCruiser вырезали в заднем крыле отверстие ножом для консервных банок, затем подключались к CAN-шине и открывали ее, и даже прописывали свои ключи.
Ну, и еще один момент на VAG: когда ставишь устройства от другого автомобиля (например, приборную панель или мультимедию), то включается защита компонента, и он не работает, снимается только (около)официальным инструментом ODIS. Но кто знает - тот знает
Могу предложить MCP23S17/MCP23017, как раз SPI-расширитель GPIO двунаправленный, до 5 МГц тактовой частоты держат, как тебе?
В основном с android 4.0, 4.1, 7-9 дюймов экраны, в одном из них даже hdmi есть. Есть и экраны отдельные, думал с Banana Pi R2Pro запустить, но все руки не доходят и времени нет