ESP8266 to mikrokontroler z wbudowanym modułem Wi‑Fi, który stał się jednym z najpopularniejszych rozwiązań w elektronice hobbystycznej i projektach IoT. Jego popularność wynika z połączenia niskiej ceny, łatwości programowania i szerokiego spektrum zastosowań – od sterowania urządzeniami elektrycznymi po tworzenie serwerów webowych. Mimo nazwy „Arduino IDE”, środowisko to jest w pełni kompatybilne z ESP8266 i bardzo przyjazne dla nowych użytkowników.
Przygotowanie środowiska programistycznego
Instalacja Arduino IDE
Pierwszym krokiem jest pobranie i zainstalowanie Arduino IDE – zintegrowanego środowiska programistycznego, które umożliwia pisanie, kompilowanie i wgrywanie kodu na mikrokontroler. Mimo że nazwa kojarzy się z płytkami Arduino, narzędzie to sprawdza się doskonale również z ESP8266.
Dodanie obsługi ESP8266 do Arduino IDE
Po uruchomieniu Arduino IDE dodaj obsługę płytek ESP8266, wykonując poniższe kroki:
- Wejdź do menu Plik → Preferencje (lub równoważnego w Twojej wersji IDE).
- W polu „Dodatkowe adresy URL menedżera płytek” wklej adres:
https://arduino.esp8266.com/stable/package_esp8266com_index.json - Kliknij OK.
- Przejdź do Narzędzia → Płytka → Menedżer płytek.
- Wyszukaj „ESP8266” i zainstaluj paczkę.
Konfiguracja płytki
Po instalacji wybierz odpowiednią płytkę. Najczęściej stosowany jest moduł NodeMCU 1.0 (ESP-12E Module). Wykonaj następujące działania:
- Wejdź w Narzędzia → Płytka.
- Wybierz NodeMCU 1.0 (ESP-12E Module) z listy dostępnych płytek.
- Upewnij się, że wybrany port komunikacyjny odpowiada portowi, do którego podłączony jest moduł.
Podstawy programowania ESP8266
Języki programowania
ESP8266 obsługuje kilka podejść programistycznych:
- Arduino IDE z C++ – najpopularniejsze wśród początkujących, wykorzystuje znaną składnię z płytek Arduino;
- Lua – język skryptowy, którego składnia bazuje w dużej mierze na C;
- ESP8266 SDK – bezpośrednie programowanie dla bardziej zaawansowanych użytkowników.
Pierwszy program – migająca dioda LED
Klasycznym pierwszym projektem jest sterowanie wbudowaną diodą LED. Na większości płytek NodeMCU jest ona podłączona do pinu D4 (stała LED_BUILTIN). Najprostszy kod w Arduino IDE wygląda następująco:
void setup() {
pinMode(LED_BUILTIN, OUTPUT); // Konfiguracja pinu diody jako wyjście
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // Włącz diodę
delay(500); // Czekaj 500 ms
digitalWrite(LED_BUILTIN, LOW); // Wyłącz diodę
delay(500); // Czekaj 500 ms
}
Ten kod:
- konfiguruje pin diody jako wyjście,
- w nieskończonej pętli
loop()włącza diodę na 500 milisekund, - wyłącza diodę na kolejne 500 milisekund,
- powtarza cykl bez końca.
Zaawansowane sterowanie – timery
Jeśli chcesz, aby pętla loop() wykonywała jednocześnie wiele operacji bez blokowania przez komendy delay(), możesz wykorzystać wewnętrzny timer z przerwaniem:
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
timer1_attachInterrupt(toggleLED); // Dołącz przerwanie
timer1_enable(TIM_DIV16, TIM_EDGE, TIM_LOOP);
timer1_write(500000); // 500 ms w mikrosekundach
}
void toggleLED() {
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); // Odwróć stan LED
}
void loop() {
// Tutaj można wykonywać inne operacje
// bez przerywania migania LED
}
Zaletą tego podejścia jest to, że pętla loop() może być znacznie dłuższa i zawierać inne zadania, a przerwanie timera utrzyma stabilny rytm migania diody.
Połączenie z internetem
Konfiguracja Wi‑Fi
ESP8266 wyróżnia się wbudowanym modułem Wi‑Fi. Aby połączyć się z siecią bezprzewodową, użyj poniższego kodu:
#include <ESP8266WiFi.h>
const char* ssid = "Nazwa_Twojej_sieci";
const char* password = "Haslo_do_sieci";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(250);
Serial.print(".");
}
Serial.println();
if (WiFi.status() == WL_CONNECTED) {
Serial.println("WIFI uruchomione!");
Serial.print("IP: ");
Serial.println(WiFi.localIP());
}
}
void loop() {
// Kod główny
}
Serwer WWW na ESP8266
Jednym z najciekawszych zastosowań jest uruchomienie serwera WWW bezpośrednio na module. Dzięki temu możesz sterować urządzeniami poprzez przeglądarkę internetową. Serwer TCP można utworzyć za pomocą poniższego przykładu w Lua:
srv = net.createServer(net.TCP)
srv:listen(80, function(conn)
conn:on("receive", function(conn, payload)
print(payload)
conn:send('HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\nOK')
end)
conn:on("sent", function(conn)
conn:close()
end)
end)
Port 80 to standardowy port dla protokołu HTTP, a funkcja nasłuchuje przychodzących połączeń.
Zaawansowane zastosowania – sterowanie przekaźnikami
Teoria działania przekaźnika
Przekaźnik to urządzenie elektromechaniczne, które pozwala na sterowanie wysokimi napięciami lub dużymi prądami za pomocą niskiego napięcia sterującego z mikrokontrolera. Wejście wspólne przekaźnika może być przełączane między dwoma wyjściami w zależności od stanu cewki.
Bez zasilania cewki – wejście wspólne jest zwarte do wyjścia nr 4.
Po podaniu zasilania na cewkę (5 V) – wejście wspólne przełącza się do wyjścia nr 3.
Podłączenie modułu przekaźników
Gdy wykorzystujesz Arduino UNO do zasilania modułu przekaźników, masz dostęp do napięcia 5 V niezbędnego do sterowania cewką. Podłącz elementy według poniższych kroków:
- połącz masę (GND) modułu przekaźników z masą Arduino,
- podłącz zasilanie 5 V z Arduino do pinu VCC modułu przekaźników,
- połącz sygnały sterujące z portami wyjściowymi ESP8266.
Sterowanie poprzez HTTP
Aby umożliwić sterowanie przekaźnikami z przeglądarki, zaimplementuj prosty parser żądań HTTP. Format adresu wygląda następująco:
http://IP_ESP/NR_PRZEKAŹNIKA/AKCJA
Przykład włączenia przekaźnika nr 2: http://10.10.1.130/2/on
Przykład wyłączenia przekaźnika nr 2: http://10.10.1.130/2/off
Po odebraniu żądania moduł parsuje numer przekaźnika i akcję, a następnie odpowiednio steruje wyjściami.
Praktyczne porady
Wydajność kodu
Jedną z istotnych różnic między wersjami ESP8266 SDK jest sposób wysyłania danych. W nowszych wersjach całość odpowiedzi HTTP powinna być wysyłana jednym wywołaniem funkcji, a nie kilkoma małymi pakietami – w przeciwnym razie moduł może się zawiesić.
Testowanie
Aby szybko sprawdzić, czy wszystko działa prawidłowo, wykonaj poniższe kroki:
- wejdź w Plik → Przykłady → 01. Basics,
- wczytaj przykład „Blink” (migająca dioda),
- załaduj kod na ESP8266 przyciskiem Upload,
- obserwuj migającą diodę.
Zasoby edukacyjne
W sieci dostępne są liczne kursy i materiały edukacyjne poświęcone ESP8266, zarówno w formie filmów YouTube, jak i artykułów. Materiały te obejmują zarówno podstawy programowania w C/C++, jak i zaawansowaną konfigurację RTOS (Real‑Time Operating System).