| Meshtastic: компиляция прошивки для YD-ESP32-23 |
|
| Добавил(а) microsin |
|
В этом примере конфигурации используется отладочная плата YD-ESP32-23 и LoRa-модуль DX-LR20-900M22S (аналог модуля E22-900M22 [6]) Сначала надо выполнить шаги "Этап 1" и "Этап 2" из [1]. На этих шагах устанавливается PlatformIO и закачивается репозиторий Git проекта Meshtastic. [Этап 3: Адаптация конфигурации для DX-LR20-900M22S] 1. Выберите основу для конфигурации. В папке firmware/variants/esp32s3/ репозитория Meshtastic находится множество готовых конфигураций для различных электронных устройств, где используется проессор ESP32-S3. Я выбрал конфигурацию heltec_v3 которая, как мне показалось, лучше всего подходит для платы YD-ESP32-23. В этой конфигурации надо будет сделать настройку выводов портов для подключения модуля LoRa-радио на чипе LLCC68 (он используется в модуле DX-LR20-900M22S). 2. Сделайте копию папки firmware/variants/esp32s3/heltec_v3 и всего содержимого, что в ней находится, в папку firmware/variants/esp32s3/myvariant2. Замечание: имейте в виду, что имена вариантов глобальны, поэтому задавайте уникальные имена для новых вариантов аппаратуры Meshtastic. 3. Отредактируйте файл myvariant2/variant.h, где задаются номера портов ввода/вывода и другие опции. Для платы 260321mechtastic, в разделе настроек LoRa убедитесь, что присутствует определение USE_SX1262. Исправьте также назначение ножек портов, макросы LORA_xxx. [] 260321meshtastic common view #define LED_POWER LED 4. Установите правильные параметры мощности. Для модуля DX-LR20-900M22S важно указать его максимальную выходную мощность (22 дБм). Обычно это делается с помощью флагов сборки. Найдите их в том же файле variant.h, или добавьте в platformio.ini для вашего окружения следующие строки: #define EBYTE_E22_900M22S // Включает поддержку конкретного модуля 5. Добавьте ваш новый вариант сборки myvariant2 к списку вариантов Meshtastic. Корневой файл firmware\platformio.ini подключает все .ini файлы из папки variants, в том числе и ваш файл platformio.ini в папке myvariant2. extra_configs = Откройте файл firmware/variants/esp32s3/myvariant2/platformio.ini и внесите в него следующие изменения: ; YD-ESP32-23 Development Board [Этап 4: Сборка и заливка прошивки] Теперь, когда конфигурация готова, можно приступить к компиляции. 1. Перейдите в корневой каталог репозитория (в папку firmware): cd ..\..\.. 2. Запустите сборку. В корневой папке firmware загруженного репозитория выполните команду: python3 -m venv pio-env Первая сборка может занять 10-15 минут, так как PlatformIO загрузит все необходимые инструменты и библиотеки. В случае успеха вы увидите сообщение `SUCCESS`, а готовый файл прошивки (`.bin` или `.uf2`) будет находиться в папке .pio/build/myvariant2/. Environment Status Duration
------------- -------- ------------
myvariant2 SUCCESS 00:03:10.597
=============================== 1 succeeded in 00:03:10.597 ==============================
*** Original Arduino "idf_component.yml" restored ***
Building .pio/build/myvariant2/firmware-myvariant2-2.8.0.84d8c22.bin
esptool v5.2.0
Creating ESP32-S3 image...
Merged 4 ELF sections.
Successfully created ESP32-S3 image.
Creating binary "firmware-myvariant2-2.8.0.84d8c22.factory.bin" with:
Offset | File
- 0x0 | bootloader.bin
- 0x8000 | partitions.bin
- 0xe000 | boot_app0.bin
- 0x10000 | firmware-myvariant2-2.8.0.84d8c22.bin
Successfully created combined binary image.
esp32_create_combined_bin([".pio/build/myvariant2/firmware-myvariant2-2.8.0.84d8c22.bin"],
[".pio/build/myvariant2/firmware-myvariant2-2.8.0.84d8c22.elf"])
Generating combined binary for serial flashing
Offset | File
- 0x0 | ~/firmware/.pio/build/myvariant2/bootloader.bin
- 0x8000 | ~/firmware/.pio/build/myvariant2/partitions.bin
- 0xe000 | ~/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin
- 0x10000 | ~/firmware/.pio/build/myvariant2/firmware-myvariant2-2.8.0.84d8c22.bin
Using esptool.py arguments: --chip esp32s3 merge_bin -o ~/firmware/.pio/build/myvariant2
/firmware-myvariant2-2.8.0.84d8c22.factory.bin --flash_mode dio --flash_freq 80m --flash_size
8MB 0x0 ~/firmware/.pio/build/myvariant2/bootloader.bin 0x8000 ~/firmware/.pio/build/myvariant2
/partitions.bin 0xe000 ~/.platformio/packages/framework-arduinoespressif32/tools/partitions
/boot_app0.bin 0x10000 ~/firmware/.pio/build/myvariant2/firmware-myvariant2-2.8.0.84d8c22.bin
Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead.
Warning: Deprecated: Option '--flash_freq' is deprecated. Use '--flash-freq' instead.
Warning: Deprecated: Option '--flash_size' is deprecated. Use '--flash-size' instead.
Warning: Deprecated: Command 'merge_bin' is deprecated. Use 'merge-bin' instead.
esptool v5.2.0
SHA digest in image updated.
Wrote 0x2318d0 bytes to file '~/firmware/.pio/build/myvariant2
/firmware-myvariant2-2.8.0.84d8c22.factory.bin', ready to flash to offset 0x0.
mtjson_esp32_part(["mtjson"], [".pio/build/myvariant2/firmware-myvariant2-2.8.0.84d8c22.bin",
".pio/build/myvariant2/littlefs-myvariant2-2.8.0.84d8c22.bin"])
manifest_gather(["mtjson"], [".pio/build/myvariant2/firmware-myvariant2-2.8.0.84d8c22.bin",
".pio/build/myvariant2/littlefs-myvariant2-2.8.0.84d8c22.bin"])
{'name': 'firmware-myvariant2-2.8.0.84d8c22.elf', 'md5': '9340536cf34c0d56f8f9d3c9e9eb8af0',
'bytes': 4988848}
{'name': 'firmware-myvariant2-2.8.0.84d8c22.bin', 'md5': '236023947a6ae912a54693ca18eea9f8',
'bytes': 2234576, 'part_name': 'app0'}
{'name': 'firmware-myvariant2-2.8.0.84d8c22.factory.bin', 'md5': 'b76065dff62c5ad64c1617703a4d4734',
'bytes': 2300112}
{'name': 'littlefs-myvariant2-2.8.0.84d8c22.bin', 'md5': '0f8a8b1425e02b9df584617a3487bf35',
'bytes': 1572864, 'part_name': 'spiffs'}
=================================== [SUCCESS] Took 386.78 seconds ===================================
Environment Status Duration
------------- -------- ------------
myvariant2 SUCCESS 00:06:26.780
=================================== 1 succeeded in 00:06:26.780 =====================================
3. Запрограммируйте прошивку. После прошивки в папке .pio/build/myvariant2/ окажутся файлы: $ ls -1 .pio/build/myvariant2/
bootloader.bin
firmware-myvariant2-2.8.0.84d8c22.bin
firmware-myvariant2-2.8.0.84d8c22.elf
firmware-myvariant2-2.8.0.84d8c22.factory.bin
firmware-myvariant2-2.8.0.84d8c22.map
firmware-myvariant2-2.8.0.84d8c22.mt.json
libFrameworkArduino.a
littlefs-myvariant2-2.8.0.84d8c22.bin
partitions.bin
Для первой прошивки используйте файл *.factory.bin (т. е. firmware-myvariant2-2.8.0.84d8c22.factory.bin): cd .pio/build/myvariant2 или так: pio run -e myvariant2 -t upload --upload-port /dev/ttyACM0 Вот подробное объяснение каждого файла, который появился после успешной компиляции: [Основные прошивочные файлы (самые важные)] firmware-myvariant2-2.8.0.84d8c22.factory.bin - Назначение: полный образ прошивки для первичной установки - Что включает: всё необходимое для первого прошивания (загрузчик, приложение, разделы) - Когда использовать: - Первая прошивка нового устройства - Как прошить: cd .pio/build/myvariant2 firmware-myvariant2-2.8.0.84d8c22.bin (App) - Назначение: только основное приложение (без загрузчика и разделов) - Что включает: только код прошивки Meshtastic - Когда использовать: обновление существующей прошивки через OTA или через PlatformIO - Как прошить: через веб-интерфейс Flasher или `pio run -t upload` [Системные файлы] bootloader.bin - Назначение: загрузчик системы - Что делает: инициализирует оборудование, загружает основную прошивку - Когда нужен: обычно включён в `.factory.bin`, отдельно используется редко partitions.bin - Назначение: таблица разделов flash-памяти - Что определяет: где и какие данные хранятся (OTA разделы, файловая система, настройки) - Важно: ваша конфигурация `board_build.partitions = default_8MB.csv` определила эту таблицу littlefs-myvariant2-2.8.0.84d8c22.bin - Назначение: образ файловой системы LittleFS - Что хранит: - Веб-интерфейс - Объём: 8MB раздел (согласно вашей конфигурации) Отладочные файлы *.elf (Executable and Linkable Format) - Назначение: исполняемый файл с отладочной информацией - Когда нужен: - Отладка через GDB *.map - Назначение: карта памяти - где расположены функции и переменные - Использование: - Оптимизация размера прошивки - Полезно: при ошибках `not enough memory` *.mt.json (Meshtastic metadata) - Назначение: метаданные для системы обновлений Meshtastic - Содержит: версию, хэши, информацию о совместимости - Используется: для OTA обновлений и веб-флешера libFrameworkArduino.a - Назначение: статическая библиотека Arduino framework - Что это: скомпилированная основа Arduino для ESP32-S3 - Кэшируется: для ускорения пересборки [Практические рекомендации] Для первой прошивки нового устройства: # Используйте factory.bin Для обновления уже работающего устройства: # Через PlatformIO (автоматически выберет правильный файл) pio run -e myvariant2 -t upload или так, с указанием правильного порта: pio run -e myvariant2 -t upload --upload-port /dev/ttyACM0 Альтернативно можно прошить через веб-интерфейс Meshtastic (использует .bin файл). Для OTA обновления (по воздуху): - Используйте файл firmware-myvariant2-2.8.0.84d8c22.bin Для отладки после программного сбоя: - Сохраните `.elf` и `.map` файлы [Типичный сценарий прошивки через PlatformIO] # Сборка и прошивка (автоматически) Что происходит: 1. Компиляция всех файлов Важно: *.factory.bin - это комбинация bootloader.bin + partitions.bin + firmware.bin. Именно этот файл рекомендуется для начальной прошивки, так как он гарантирует правильную конфигурацию всех разделов. [Как проверить работу программы] После успешной прошивки устройства первым делом нужно убедиться, что оно запустилось и работает корректно. Самый простой и надежный способ — подключиться к нему через официальные клиенты - Python CLI [2] или Web CLI [3]. Вот пошаговая инструкция, как это сделать: Проверка через последовательный порт (самый надежный способ) Это лучший вариант для первичной проверки, так как он не зависит от настроек радио и показывает полный журнал запуска устройства. 1. Установите Python и официальный CLI: Если у вас еще не установлен Python, скачайте его с [официального сайта](https://www.python.org/). Установите Meshtastic Python CLI, выполнив в терминале (или командной строке `cmd` от имени администратора в Windows) команду: pip install meshtastic 2. Подключитесь к устройству: - Подключите плату к компьютеру через USB. Для платы YD-ESP32-23 это будет второй интерфейс, который подписан как "COM" на обратной стороне платы. - Выполните команду для просмотра "сырого" вывода данных с устройства. Это поможет увидеть любые ошибки или сообщения о запуске. meshtastic --noproto --port /dev/ttyACM0 - Кратковременно нажмите на кнопку RST. Если вы видите поток сообщений, значит устройство загрузилось и работает. Проверка через Android / iOS приложение (для реального использования) После того как вы убедились, что устройство запускается, можно подключиться к нему через официальное мобильное приложение Meshtastic. 1. Установите приложение Meshtastic из вашего магазина приложений (Google Play или App Store). 2. Включите на телефоне Bluetooth (BLE). Приложение находит устройство именно по Bluetooth, а не через USB. 3. Откройте приложение и нажмите "Connect". Оно должно автоматически обнаружить вашу плату. 4. После подключения вы увидите основную информацию об устройстве и сможете отправлять и принимать сообщения. Функциональная проверка: отправка сообщения Чтобы окончательно убедиться, что все работает, можно отправить тестовое сообщение с помощью Python CLI. # Отправить приветственное сообщение в эфир (на все узлы рядом) # Или отправить сообщение конкретному узлу (укажите его ID) Если команда выполнилась без ошибок, это значит, что и USB-соединение, и радиомодуль работают корректно . [Устранение возможных проблем] Устройство не определяется по USB: проверьте драйверы USB-to-Serial чипа (CH343P). Возможно, потребуется установить драйвер Windows с сайта производителя. CLI не находит устройство: убедитесь, что нет других программ (например, Arduino IDE), которые могли "захватить" порт. Появляются ошибки: обратите внимание на сообщения красным цветом в логе `meshtastic --noproto`. Это поможет понять, корректно ли настроены порты GPIO модуля LoRa в вашем файле variant.h. См. также список часто задаваемых вопросов в статье [4]. [Ссылки] 1. Meshtastic: компиляция прошивки. |