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:

  1. Wejdź do menu Plik → Preferencje (lub równoważnego w Twojej wersji IDE).
  2. W polu „Dodatkowe adresy URL menedżera płytek” wklej adres: https://arduino.esp8266.com/stable/package_esp8266com_index.json
  3. Kliknij OK.
  4. Przejdź do Narzędzia → Płytka → Menedżer płytek.
  5. 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:

  1. Wejdź w Narzędzia → Płytka.
  2. Wybierz NodeMCU 1.0 (ESP-12E Module) z listy dostępnych płytek.
  3. 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:

  1. konfiguruje pin diody jako wyjście,
  2. w nieskończonej pętli loop() włącza diodę na 500 milisekund,
  3. wyłącza diodę na kolejne 500 milisekund,
  4. 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:

  1. połącz masę (GND) modułu przekaźników z masą Arduino,
  2. podłącz zasilanie 5 V z Arduino do pinu VCC modułu przekaźników,
  3. 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:

  1. wejdź w Plik → Przykłady → 01. Basics,
  2. wczytaj przykład „Blink” (migająca dioda),
  3. załaduj kod na ESP8266 przyciskiem Upload,
  4. 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).