Занятие 1
Знакомство с ESP32-S3 и средой разработки
- Что такое микроконтроллер и чем он отличается от компьютера.
- Обзор платы ESP32-S3 N16R8: процессор, Flash, PSRAM, Wi-Fi, Bluetooth, сенсорные пины.
- Встроенный RGB-светодиод и кнопка BOOT — бесплатное «железо» на борту.
- Установка Arduino IDE, драйвера CH340/CP2102, пакета esp32 от Espressif.
Занятие 2
Основы C++
- Структура скетча: setup() и loop().
- Типы данных: int, float, bool, String, unsigned long.
- Условный оператор if / else if / else.
- Циклы for и while.
- Логические операторы &&, ||, !.
- Область видимости переменных.
Занятие 3
Функции и структуры данных
- Зачем нужны функции: повторное использование кода, читаемость.
- Объявление и вызов функций, параметры и возвращаемые значения.
- Массивы: объявление, индексация, перебор.
- Строки (String): методы length(), indexOf(), substring(), toInt().
- Разбор строки-команды из Serial.
Занятие 4
Сенсорные пины: управление касанием
- Как работают ёмкостные сенсорные пины ESP32-S3: измерение изменения ёмкости при касании пальцем.
- Функция touchRead() и touchAttachInterrupt().
- Настройка порога срабатывания.
- Защита от шума: усреднение нескольких показаний.
- Применение: кнопки без механических деталей, слайдеры, интерактивные поверхности.
Занятие 5
Встроенные возможности чипа: температура, случайность, время
- Встроенный термодатчик ESP32-S3: функция temperatureRead(), погрешность и область применения.
- Аппаратный генератор случайных чисел (RNG): esp_random() — настоящая случайность из физического шума.
- Системное время: millis(), micros(), работа с временными интервалами.
- Перевод в часы/минуты/секунды.
Занятие 6
Симулятор Wokwi: виртуальное железо в браузере
- Что такое симулятор Wokwi и зачем он нужен.
- Поддерживаемые компоненты: виртуальные кнопки, потенциометры, светодиоды, OLED, датчики, сервоприводы.
- Работа в браузере без установки.
- Импорт/экспорт проектов.
- Ограничения симулятора vs реальное железо.
Занятие 7
Wi-Fi: подключение к сети и веб-сервер
- Стек Wi-Fi в ESP32-S3: режимы Station (STA) и Access Point (AP).
- Класс WiFi, этапы подключения.
- Протокол HTTP: запрос и ответ, статус-коды.
- Класс WebServer из библиотеки ESP32.
- Понятие IP-адреса и маршрутизации в локальной сети.
Занятие 8
Красивый веб-интерфейс
- Основы HTML: теги, структура страницы.
- CSS: стили, цвета, кнопки.
- JavaScript: обработка событий, fetch() для запросов к ESP32.
- Хранение HTML/CSS/JS файлов в LittleFS на Flash-памяти ESP32-S3.
- Разделение логики (C++) и интерфейса (HTML).
Занятие 9
WebSocket: двусторонняя связь в реальном времени
- Разница между HTTP (запрос-ответ) и WebSocket (постоянное соединение).
- Библиотека AsyncWebServer + AsyncWebSocket.
- Broadcast — рассылка всем подключённым клиентам одновременно.
- Применение: чаты, дашборды реального времени, онлайн-игры.
Занятие 10
Bluetooth: управление со смартфона
- Bluetooth Classic vs BLE (Bluetooth Low Energy): отличия, расход энергии, дальность.
- Bluetooth Serial (SPP) на ESP32: эмуляция COM-порта по воздуху.
- Приложение Serial Bluetooth Terminal (Android) и аналоги для iOS.
- Протокол обмена: текстовые команды, разбор строки.
Занятие 11
BLE (Bluetooth Low Energy): маяки и уведомления
- Архитектура BLE: GATT, сервисы и характеристики, роли Central/Peripheral.
- Отличие от Bluetooth Classic: режим рекламы (advertising), очень низкое энергопотребление.
- BLE-маяк (beacon): широковещательная передача данных без подключения.
- Приложение nRF Connect для просмотра BLE-устройств.
Занятие 12
Файловая система LittleFS: хранение данных и конфигурации
- Зачем нужна файловая система на микроконтроллере. LittleFS vs SPIFFS: журналирование, надёжность при отключении питания.
- Загрузка файлов через LittleFS Data Upload плагин.
- Операции: создание, чтение, запись, удаление, листинг.
- JSON как формат конфигурации: библиотека ArduinoJson.
Занятие 13
Таймеры и прерывания
- Проблема delay(): программа замирает и пропускает события.
- Паттерн millis() для параллельного выполнения задач.
- Аппаратные прерывания: attachInterrupt(), типы RISING/FALLING/CHANGE.
- Кнопка BOOT как источник прерывания.
- Флаги в прерываниях, volatile-переменные.
- Аппаратные таймеры ESP32: timerBegin(), timerAttachInterrupt().
Занятие 14
MQTT и IoT-платформы: данные в интернете
- Концепция IoT: устройства, данные, облако.
- Протокол MQTT: брокер, топики, подписка и публикация, QoS.
- Публичный брокер broker.hivemq.com. Библиотека PubSubClient.
- Платформа HiveMQ Cloud и MQTT Explorer для визуализации.
Занятие 15
ESP-NOW: прямая связь между платами без интернета
- Протокол ESP-NOW: прямая передача данных между ESP32 без роутера. MAC-адреса, одноранговая (peer-to-peer) и широковещательная передача.
- Структура пакета данных.
- Сравнение с Wi-Fi и Bluetooth: задержка <1 мс, дальность до 200 м на открытом пространстве.
- Применение: распределённые сенсорные сети, пульты управления.
Занятие 16
FreeRTOS: настоящая многозадачность
- Операционная система реального времени FreeRTOS встроена в ESP32.
- Задачи (tasks): создание через xTaskCreatePinnedToCore(), приоритеты, ядра Core0 и Core1.
- Очереди (Queue) для безопасного обмена данными между задачами.
- Мьютекс для защиты общих ресурсов. Разница с паттерном millis().
Занятие 17
OTA-обновления
- OTA (Over-The-Air) — обновление прошивки без физического подключения кабеля.
- Библиотека ArduinoOTA.
- Как это работает: ESP32 запускает UDP-сервер, Arduino IDE находит его в сети.
- Безопасность OTA: пароль, хеш.
- Применение в реальных устройствах: обновление умных ламп, термостатов без демонтажа.
Занятие 18
Wokwi: продвинутый уровень
- Продвинутые возможности Wokwi: виртуальный логический анализатор, осциллограф, I2C-сканер.
- Wokwi CLI для автоматического тестирования.
- Написание собственных кастомных чипов на JavaScript в Wokwi.
- Диаграммы подключения (diagram.json) — описание схемы в коде.
Занятие 19
Энергосбережение
- Режимы питания ESP32-S3: Active (~100 мА), Light Sleep (~2 мА), Deep Sleep (~10 мкА), Hibernation (~5 мкА).
- Источники пробуждения: таймер, внешний сигнал (EXT0/EXT1), сенсорный пин, ULP-сопроцессор. RTC-память: данные, переживающие Deep Sleep.
- Расчёт времени автономной работы от батарейки.
Занятие 20
Безопасность IoT
- Почему безопасность важна для IoT-устройств: примеры реальных атак на умные устройства. HTTPS vs HTTP: TLS-шифрование, сертификаты.
- Хранение паролей: не в коде, а в config.json или NVS (Non-Volatile Storage).
- Хеширование паролей.
- Базовая HTTP-аутентификация.
- Защита OTA-обновлений паролем.
Занятие 21
Парсинг данных из интернета
- REST API: что это и как работает.
- Формат JSON: структура, парсинг через ArduinoJson.
- Библиотека HTTPClient для HTTP-запросов.
- Публичные API без авторизации: погода (Open-Meteo), курсы валют, случайные факты, время (worldtimeapi.org).
- Обработка ошибок сети.
Занятие 22
Многопользовательская игра по Wi-Fi
- Архитектура клиент-сервер для игр.
- UDP vs TCP: скорость против надёжности, применение в играх.
- Синхронизация состояния между участниками.
- Понятие игрового цикла (game loop).
- Структуры данных для описания состояния игры.
Занятие 23
Голосовое управление
- Что такое машинное обучение простыми словами.
- TinyML — нейросети на микроконтроллерах.
- Платформа Edge Impulse: сбор данных, обучение, экспорт модели.
- Wake Word Detection — распознавание ключевого слова.
- Встроенный АЦП ESP32-S3 как источник аудио (через встроенный пин без микрофона — через прикосновение к пину).
Занятие 24
Создание собственной прошивки-фреймворка
- Что такое прошивка-фреймворк: единая база, на которой строятся все проекты.
- Паттерн «конфигурация через JSON»: одна прошивка, разное поведение на разных устройствах.
- Модульная архитектура: отдельные .h/.cpp файлы для Wi-Fi, веб-сервера, BLE, хранилища.
- Принципы SOLID применительно к C++ на микроконтроллерах.
Занятие 25
Финальный проект
- Этапы разработки продукта: идея → техническое задание → архитектура → реализация → тестирование → презентация.
- Как писать техническое задание.
- Декомпозиция задачи на подзадачи.
- Управление версиями кода (базовое знакомство с git).
Занятие 26
Презентация и защита
- Финализация проектов — доработка кода, тестирование, подготовка демонстрации.
- Презентация: идея и задача, архитектурное решение, демонстрация работы в реальном времени, что было сложнее всего и как решили.
- Вопросы и обратная связь от одноклассников и педагога.
- Подведение итогов курса.
- Пути дальнейшего развития.