APRS-IS display for ESP32 + SH1106

This commit is contained in:
UA1ZBE
2026-05-22 13:22:39 +03:00
commit ad5ce97152
4 changed files with 716 additions and 0 deletions

83
README.md Normal file
View File

@@ -0,0 +1,83 @@
# 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, парсинг координат, отображение на дисплее, определение метеостанций, давление в мм рт. ст.