APRS-IS Display для ESP32 + SH1106 OLED
Приём и отображение APRS-пакетов через WiFi на OLED-дисплее 128×64.
Возможности
- Подключение к APRS-IS серверу через WiFi (основная + резервная сеть)
- Фильтр по радиусу 300 км от дома (67.37°N, 32.49°E)
- Отображение станций на дисплее
- Обычные станции: позывной (крупно), направление/расстояние, комментарий
- Метеостанции: бейдж
[WX], позывной, температура (°C), влажность (%), давление (мм рт. ст.)
- Автоматическое обновление экрана — всегда виден последний принятый пакет
- Сплэш-экран «APRS» при старте
- Счётчик принятых пакетов в статус-баре
- Переподключение при потере связи (WiFi и APRS-IS)
Аппаратное обеспечение
- ESP32 (ESP32-D0WD-V3)
- OLED-дисплей SH1106 128×64, I2C
- Питание через USB
Схема подключения
| ESP32 | SH1106 |
|---|---|
| 3.3V | VCC |
| GND | GND |
| GPIO21 | SDA |
| GPIO22 | SCL |
Прошивка
Требования
- Arduino CLI
- Ядро ESP32 3.3.8
- Библиотеки: U8g2, APRS-IS-Lib, APRS-Decoder-Lib v0.0.1
Компиляция и загрузка
arduino-cli compile --fqbn esp32:esp32:esp32:PartitionScheme=huge_app \
-u -p /dev/ttyUSB0 "/home/ua1zbe/Рабочий стол/pr133"
Обязателен PartitionScheme=huge_app (3 МБ под приложение).
Настройка
Параметры заданы константами в начале скетча pr133.ino:
- WiFi —
WIFI_SSID1,WIFI_PASS1(основная сеть),WIFI_SSID2,WIFI_PASS2(резервная) - APRS-IS —
APRS_USER,APRS_PASS,APRS_SERVER,APRS_PORT,APRS_FILTER - Домашние координаты —
HOME_LAT,HOME_LON(для расчёта расстояния и направления)
Формат пакетов
Метеостанции
Распознаются по наличию полей tNNN (температура в °F), hNN (влажность %), bNNNNN (давление в десятых долях гПа).
На дисплей выводятся:
- Температура в °C (автоконвертация)
- Влажность (если есть)
- Давление в мм рт. ст. (×0.75 от гПа)
Обычные станции
Показываются позывной, направление/дистанция от дома, оставшийся текст комментария.
Структура проекта
pr133.ino — основной скетч
BUILD.md — инструкция по сборке с нуля
README.md — данное описание
pr133.ino.backup — оригинальный автосгенерированный скетч (на всякий случай)
История версий
- v1.0 — чистый rewrite с нуля: сплэш APRS, приём пакетов через APRS-IS, парсинг координат, отображение на дисплее, определение метеостанций, давление в мм рт. ст.
Description
Languages
C++
100%