84 lines
3.5 KiB
Markdown
84 lines
3.5 KiB
Markdown
# 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, парсинг координат, отображение на дисплее, определение метеостанций, давление в мм рт. ст.
|