Files
pr133/BUILD.md
2026-05-22 13:22:39 +03:00

4.2 KiB
Raw Blame History

Сборка и прошивка ESP32 APRS-ретранслятора

Требования

  • Установленный Arduino CLI
  • ESP32 (чип ESP32-D0WD-V3)
  • USB-кабель, порт /dev/ttyUSB0

1. Установка ядра ESP32

arduino-cli config init
arduino-cli core update-index
arduino-cli core install esp32:esp32@3.3.8

Если arduino-cli core install падает с ошибкой 403 — скачайте архив вручную и распакуйте в ~/.arduino15/packages/esp32/hardware/esp32/3.3.8/.

Также может потребоваться dfu-util:

sudo ln -s /usr/bin/dfu-util /home/ua1zbe/.arduino15/packages/esp32/tools/dfu-util/0.11.0-1/dfu-util 2>/dev/null

2. Установка библиотек (из GitHub)

Arduino Library Index недоступен (403), поэтому библиотеки ставятся вручную.

cd ~/Arduino/libraries
git clone https://github.com/olikraus/U8g2.git
git clone https://github.com/lora-aprs/APRS-IS-Lib.git
mv APRS-IS-Lib APRS-IS
git clone https://github.com/lora-aprs/APRS-Decoder-Lib.git
cd APRS-Decoder-Lib
# Нужна версия 0.0.1, где есть класс APRSMessage
git checkout v0.0.1
cd ~/Arduino/libraries
git clone https://github.com/ropg/esp-logger.git

3. Патчи библиотек

3.1 APRS-IS

Создать файл ~/Arduino/libraries/APRS-IS/logger_compat.h:

#pragma once
#define logPrintlnE(msg)
#define logPrintlnE_FN(fn, msg)
#define logPrintlnD(msg)

В начале APRS-IS.cpp перед последним #include добавить:

#include "logger_compat.h"

Также заменить в APRS-IS.cpp строчку:

this->_ssid = "";
this->_pass = "";

на:

this->_ssid = "";

3.2 APRS-Decoder-Lib (v0.0.1)

В APRSMessage.h добавить метод:

String encode() { return toString(); }

4. Подготовка скетча

Скетч лежит в файле pr133.ino. Перед первой заливкой:

  1. Убедитесь, что переменная server содержит актуальный адрес APRS-IS сервера:

    • server = "rotate.radiorubka.org";
    • И в EEPROM по адресу 181 должно быть то же значение.
  2. При необходимости сброса EEPROM — измените чек-байт в setup():

// Было:
if(((readByteFromEEPROM(0, 0, 0x0))) != 164)
// Стало (любое другое число):
if(((readByteFromEEPROM(0, 0, 0x0))) != 165)

5. Компиляция и заливка

arduino-cli compile --fqbn esp32:esp32:esp32:PartitionScheme=huge_app \
  -u -p /dev/ttyUSB0 "/home/ua1zbe/Рабочий стол/pr133"

Ключ -u означает «залить после компиляции». Размер скетча ~1.7 МБ, поэтому обязателен huge_app.

Параметры fqbn:

  • esp32:esp32:esp32 — плата ESP32
  • PartitionScheme=huge_app — 3 МБ под приложение (по умолчанию 1.2 МБ)

6. Монитор порта

python3 -c "
import serial
s = serial.Serial('/dev/ttyUSB0', 115200)
while True:
    line = s.readline()
    if line:
        print(line.decode('utf-8', errors='replace').strip())
"

7. Типовые проблемы

Проблема Решение
Ошибки компоновки — partition scheme Используйте PartitionScheme=huge_app
Не находится APRSMessage Проверьте версию APRS-Decoder-Lib — нужна v0.0.1
Ошибка logger/logger.h not found Подключите logger_compat.h (см. п. 3.1)
Нет WiFi из-за getAutoConnect() Закомментируйте или удалите вызовы WiFi.getAutoConnect() и setAutoConnect()
При загрузке виден старый сервер (ua1zbe.ml) Сбросьте EEPROM, сменив чек-байт (п. 4)
Скетч зависает на подключении к APRS-IS Патч в APRS-IS.cpp: добавлен таймаут 10 с в _connect() вместо while(true)