📖 Как это работает

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 на стриме!

📊 На все фоновые задачи + видеопоток уходит всего ~10% процессорного времени. Микроконтроллер работает на частоте 180 MHz.

🛠️ Спецификация

⚡ Компоненты (Железки):
🤖 MCU STM32F446RE 🌐 Wi-Fi ESP8266mod 📟 Экран 128x160 🕹️ Джойстик 🔊 Динамик 🔌 Модуль питания ⚡ Оптрон 🎛️ Потенциометр 📿 Резисторы / Транзисторы / Конденсаторы 🪧 Макетная плата
🛠️ Инструментарий и Софт:
CubeIDE CubeMX CubeProgrammer Saleae Logic Postman Packet Sender VS Code
🚀 Стек Разработки:
  • ➔ BACKEND WEB: FastAPI, Python3, асинхронный TCP-сервер, Nginx, Docker, Django (админка), CI/CD через GitHub Actions (Git Workflow).
  • ➔ FIRMWARE STM32: C/C++, freeRTOS, HAL, LVGL (вывод графической оболочки на дисплей).
🎨 Frontend:

Просто нейрослоп HTML страничка, всё в одной куче. Никогда не любил фронт :)

Сообщения от сервера (Публичные)
Ожидание первого сообщения...