📖 Как это работает
1. Подключения:
Плата STM32 и джойстик имеют отдельное питание от динамика, экрана и Wi-Fi. Их связывает только общая земля (GND).
- ➔ STM32 — Экран: SPI + DMA [Яркость через ШИМ (TIM) + оптрон для гальванической развязки 3V] + электролитический конденсатор
- ➔ STM32 — Джойстик: DMA + ADC [+ керамический конденсатор на питании]
- ➔ STM32 ⬌ WiFi: DMA + UART + электролитический и керамический конденсаторы
- ➔ STM32 — Динамик: через NPN-транзистор + потенциометр
2. Обмен данными (Логика платы):
- 💬 Сообщения: Отправляются на сервер через стандартный протокол HTTP POST.
- ⚙️ Команды: Отдельная задача FreeRTOS непрерывно парсит сырой входящий поток TCP.
- 📺 Стрим экрана: Плата «плюется» в сеть пачками по 7 строк дисплея с помощью быстрого протокола UDP (размер пакета строго до 1500 байт под сетевой стандарт MTU).
NB: Отдать большее количество байт за раз невозможно — упремся в лимит внутреннего буфера Wi-Fi модуля, а выделять RAM под кэширование на стороне STM накладно. Но благодаря оптимизации, мы получаем отличные, стабильные 20-30 FPS на стриме!
🛠️ Спецификация
- ➔ BACKEND WEB: FastAPI, Python3, асинхронный TCP-сервер, Nginx, Docker, Django (админка), CI/CD через GitHub Actions (Git Workflow).
- ➔ FIRMWARE STM32: C/C++, freeRTOS, HAL, LVGL (вывод графической оболочки на дисплей).
Просто нейрослоп HTML страничка, всё в одной куче. Никогда не любил фронт :)