4.2 KiB
4.2 KiB
Сборка и прошивка 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. Перед первой заливкой:
-
Убедитесь, что переменная
serverсодержит актуальный адрес APRS-IS сервера:server = "rotate.radiorubka.org";- И в EEPROM по адресу 181 должно быть то же значение.
-
При необходимости сброса 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— плата ESP32PartitionScheme=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) |