Учебник MicroPython и ESP32 для начинающих
Этот курс проведёт вас от нуля до собственного умного дома на микроконтроллере ESP32, программируемом на MicroPython. Вы узнаете, чем MicroPython отличается от обычного Python и от Arduino C, как прошить плату, мигать светодиодом, читать кнопки и датчики, управлять яркостью через ШИМ и сервоприводами, считывать аналоговые сигналы через АЦП. Затем мы выйдем в сеть: подключим ESP32 к Wi-Fi, научимся слать HTTP-запросы, поднимем веб-сервер прямо на плате и подключимся к брокеру MQTT — основе любого умного дома. В финале соберём настоящие устройства: умную лампу, метеостанцию с отправкой данных в облако, датчик протечки и управляемое реле, разберём энергосбережение через deep sleep и безопасность IoT. Курс рассчитан на тех, кто знает основы Python и хочет перенести код в физический мир.
Курс «MicroPython и ESP32: умный дом» состоит из 8 разделов и 27 уроков: Знакомство с MicroPython и ESP32, Прошивка, REPL и первая программа, GPIO: цифровой вывод и ввод, Аналоговый мир: ШИМ и АЦП, Время, прерывания и датчики, Выходим в сеть: Wi-Fi и HTTP, MQTT и умный дом и Проекты, энергосбережение и безопасность. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Знакомство с MicroPython и ESP32
- Что такое MicroPython и чем он отличается от обычного Python
MicroPython — это Python 3 для микроконтроллеров. Разбираем, что в нём урезано, что добавлено и почему это удобно для умного дома.
- MicroPython против Arduino C: два подхода к одному железу
Сравниваем MicroPython и Arduino C: компиляция против интерпретации, скорость, удобство, REPL. Когда что выбирать для проектов IoT.
- Что такое ESP32: Wi-Fi, Bluetooth, два ядра и GPIO
Знакомство с ESP32: двухъядерный чип с Wi-Fi и Bluetooth, множество GPIO, АЦП и ШИМ. Почему он стал стандартом для IoT и умного дома.
- Что такое MicroPython и чем он отличается от обычного Python
2 Прошивка, REPL и первая программа
- Прошиваем MicroPython на ESP32 через esptool
Пошаговая прошивка MicroPython на ESP32: установка esptool, стирание флеша, заливка прошивки .bin, выбор порта и типичные ошибки.
- REPL и Thonny: разговариваем с платой вживую
Что такое REPL в MicroPython, как подключиться к ESP32 через Thonny, выполнять команды вживую и загружать файлы main.py и boot.py.
- Первая программа: мигаем встроенным светодиодом
Классический Blink на MicroPython и ESP32: machine.Pin, режим OUT, value() и time.sleep. Разбираем встроенный светодиод и тайминг.
- Прошиваем MicroPython на ESP32 через esptool
3 GPIO: цифровой вывод и ввод
- Цифровой выход: управляем внешним светодиодом
Подключаем внешний светодиод к ESP32 через резистор, считаем токоограничивающий резистор, управляем выводом через machine.Pin.
- Цифровой ввод: читаем кнопку и подтягивающий резистор
Читаем кнопку на ESP32 через machine.Pin в режиме IN, разбираем подтягивающие резисторы PULL_UP и плавающий вход в MicroPython.
- Антидребезг: как победить дрожание контактов
Дребезг контактов кнопки и борьба с ним: программный антидребезг по времени в MicroPython, расчёт задержки, отслеживание фронта сигнала.
- Цифровой выход: управляем внешним светодиодом
4 Аналоговый мир: ШИМ и АЦП
- ШИМ: плавная яркость светодиода
Широтно-импульсная модуляция (PWM) на ESP32: управление яркостью светодиода через duty_u16, частота и заполнение, расчёт скважности.
- Сервопривод: управляем углом через ШИМ
Управление сервоприводом на ESP32: ШИМ 50 Гц, длительность импульса 1–2 мс, перевод угла в скважность в MicroPython, расчёт duty.
- АЦП: читаем потенциометр и аналоговые датчики
АЦП на ESP32: чтение аналогового сигнала через machine.ADC, разрядность, диапазон 0–4095, перевод отсчётов в напряжение в MicroPython.
- ШИМ: плавная яркость светодиода
5 Время, прерывания и датчики
- Таймеры и прерывания: реагируем мгновенно
Аппаратные таймеры и прерывания GPIO на ESP32 в MicroPython: machine.Timer, irq по фронту, зачем нужны прерывания вместо опроса.
- Датчик DHT: температура и влажность
Чтение датчика DHT11/DHT22 на ESP32 в MicroPython: модуль dht, измерение температуры и влажности, обработка ошибок чтения, проверка диапазонов.
- PIR и ультразвук: движение и расстояние
Датчик движения PIR и ультразвуковой дальномер HC-SR04 на ESP32: чтение цифрового сигнала PIR и расчёт расстояния по времени эха в MicroPython.
- Шины I2C и SPI: OLED-дисплей и датчики
Шины I2C и SPI на ESP32 в MicroPython: подключение OLED-дисплея, сканирование адресов I2C, разница между протоколами, работа с несколькими устройствами.
- Таймеры и прерывания: реагируем мгновенно
6 Выходим в сеть: Wi-Fi и HTTP
- Подключаемся к Wi-Fi: network и station mode
Подключение ESP32 к Wi-Fi в MicroPython: модуль network, STA_IF, ожидание isconnected, получение IP-адреса, обработка ошибок подключения.
- HTTP-запросы через urequests: общаемся с сервером
HTTP-запросы на ESP32 в MicroPython через urequests: GET и POST, отправка данных на сервер, получение и парсинг JSON-ответа, закрытие соединения.
- Свой веб-сервер на ESP32: управление из браузера
Поднимаем веб-сервер на ESP32 в MicroPython через сокеты: HTML-страница управления, обработка GET-параметров, включение реле из браузера телефона.
- Подключаемся к Wi-Fi: network и station mode
7 MQTT и умный дом
- Что такое MQTT и зачем он умному дому
Основы MQTT: брокер, модель publish/subscribe, топики, отличие от HTTP. Почему MQTT — лёгкий протокол для умного дома и интернета вещей.
- MQTT на практике: publish и subscribe из MicroPython
Практика MQTT на ESP32: библиотека umqtt.simple, подключение к брокеру, публикация показаний датчика и подписка на команды управления в MicroPython.
- JSON-конфиги и обзор Home Assistant
JSON-конфиги для ESP32 в MicroPython: хранение настроек в config.json, парсинг и валидация, обзор интеграции устройств с Home Assistant через MQTT.
- Что такое MQTT и зачем он умному дому
8 Проекты, энергосбережение и безопасность
- Проект: умная лампа и управление реле
Проект умной лампы на ESP32: управление реле через MQTT и веб-страницу, безопасное подключение нагрузки 220 В, сохранение состояния, схема через оптопару.
- Проект: метеостанция с отправкой в облако
Метеостанция на ESP32: датчик DHT22, OLED-дисплей, отправка температуры и влажности в облако через MQTT или HTTP, усреднение и проверка показаний.
- Проект: датчик протечки воды
Датчик протечки воды на ESP32: чтение аналогового сигнала через ADC, порог срабатывания, мгновенное уведомление через MQTT и автозакрытие крана.
- Энергосбережение: deep sleep и батарейное питание
Энергосбережение на ESP32: режим deep sleep, пробуждение по таймеру и пину, расчёт времени работы от батареи, экономия тока в MicroPython.
- Безопасность IoT и отладка частых проблем
Безопасность IoT-устройств на ESP32: пароли, шифрование, изоляция сети, обновления. Отладка частых проблем: питание, дребезг, watchdog, утечки памяти.
- Проект: умная лампа и управление реле