Подход
Уроки построены на реальной архитектуре 4DUK: ученики собирают схемы, отправляют UDP-пакеты и видят, как устройства реагируют. Никаких симуляторов — только реальное железо и локальная сеть.
Степаныч, давай охолаживай: лучший урок — когда лампочка включается от пакета, который ученик сам отправил.
Программа
- Знакомство с UDP. Что такое broadcast, порт 9009, пакет. Смотрим пакеты в Wireshark.
- ESP01 + реле. Собираем схему, подключаем к Wi-Fi, отправляем первую команду
device:. - Кнопка и devstate. Добавляем кнопку, отправляем
devstate:при нажатии. - Devping и keep-alive. Настраиваем отправку
devping:каждые 180 секунд. - Cold start. Отправляем
devstate:при включении. Пассивная авто-регистрация. - JSONB-дерево. Знакомимся с описанием устройств: native/standard функции.
- Интеграция с Алисой. Настраиваем навык, отправляем команду голосом.
- Муксис. Собираем колонку на SU-03T + ESP, управляем голосом без интернета.
Что нужно для занятий
- ESP01 или ESP32 (по 1 на пару учеников)
- Реле и кнопки
- Wi-Fi роутер (AP Isolation отключена)
- ПК с Wireshark для сниффинга
- SU-03T для урока 8 (Муксис)
- Postgresql на школьном сервере (по желанию)
Готовый код для урока 2
#include <ESP8266WiFi.h>
#include <WiFiUDP.h>
const char* ssid = "SCHOOL_WIFI";
const char* password = "SCHOOL_PASS";
WiFiUDP udp;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) delay(500);
udp.begin(0);
pinMode(0, OUTPUT); // реле на GPIO0
}
void loop() {
// Получаем команду
int sz = udp.parsePacket();
if (sz) {
char buf[128];
udp.read(buf, sz);
buf[sz] = '\0';
if (strstr(buf, "value:1")) digitalWrite(0, HIGH);
if (strstr(buf, "value:0")) digitalWrite(0, LOW);
}
}