Kategorie: Wi-Fi

Jak podłączyć moduł Wifi do Arduino – firmware i konfiguracja

Opublikowany przez
Mark Dabrowski

ESP8266 to popularny kontroler potrafiący zorganizować komunikację bezprzewodową podczas projektowania systemu Smart Home. Jego “budowa” pozwala mu na zapewnienie wymiany danych za pośrednictwem standardów Wifi. Dzięki temu projekty oparte na Arduino mają dostęp do internetu w celu zdalnego zbierania i udostępniania danych. Popularne płytki takie jak WeMos i NodeMcu bazują na tym układzie, jak również na domowej technologii. W tym artykule wyjaśnimy, czym jest Arduino Wifi ESP8266, jak skonfigurować moduł Arduino Wifi i jak współdziała on z innymi narzędziami.

1f15a70798895e7fbd3a4dee4f258b821f15a70798895e7fbd3a4dee4f258b82

Opis ESP8266

ESP8266 to kontroler współpracujący ze standardem Wifi, który jest w stanie wykonywać kod programu z wbudowanej pamięci flash. Układ został zaprojektowany i wyprodukowany przez chińską firmę Espressif i od razu stał się jednym z najpopularniejszych do tego celu.

Sam moduł wifi do Arduino Wifi jest dość tani i zawiera niewiele elementów zewnętrznych, mając następującą specyfikację:

  • Obsługuje protokoły Wifi b/g/n z algorytmami szyfrowania i ochrony danych WEP, WPA, WPA2;
  • Czternaście portów wejściowych i wyjściowych, szeregowy interfejs peryferyjny SPI, I2C, UART oraz 10-bitowy przetwornik analogowo-cyfrowy;
  • Obsługa pamięci zewnętrznej do 16 MB;
  • Wystarczające napięcie zasilania od 2,2 do 3,6 V i pobór prądu do 300 mA, który zależy od trybu pracy.

Ważne: Mikrokontroler nie posiada pamięci nieulotnej użytkownika. Wszystkie programy są wykonywane z zewnętrznych pamięci trwałych i ładowane dynamicznie. Dostęp do wewnętrznych interfejsów odbywa się poprzez zestaw bibliotek API, a nie poprzez dokumentację. Ilość pamięci RAM wynosi około 50kB.

Cechy tablicy

Sterownik posiada następujące cechy:

  • Łatwe podłączenie do komputera PC poprzez interfejs portu USB. Zasilanie jest również dostarczane przez ten sam interfejs;
  • Wbudowany konwerter napięcia 3,3V;
  • 4 MB pamięci flash;
  • Dostępność przycisków reset i reflash;
  • Porty są poprowadzone do kontrolera w dwóch rzędach w odstępach co 2,5 mm.

Obszary zastosowania

Moduł jest często wykorzystywany w różnych projektach w połączeniu z innymi urządzeniami do:

  • Automatyzacja procesów;
  • Własnoręczne tworzenie systemów Smart Home obejmujących sterowanie warunkami w domu (temperatura i oświetlenie), alarmami i kamerami wideo oraz bezprzewodowym sterowaniem urządzeniami;
  • Urządzenia mobilne;
  • Tagi wykorzystujące identyfikatory;
  • Zabawki dla dzieci;
  • Sieci typu Mesh.

Pinout

Ważne jest, aby zrozumieć, że istnieje wiele wariantów modułu. Ilustracja na końcu poprzedniego podrozdziału pokazuje tylko kilka z nich. Szczególnie popularny jest sterownik ESP-01. Wykonanie kodu programu jest ustalane przez stan portów GPIO0, GPIO2 i GPIO15: włączenie i wyłączenie zasilania. Istnieją dwa ważne tryby pracy:

  • Kod jest wykonywany z uniwersalnego asynchronicznego transceivera (UART) z kombinacją GPIO0 = 0, GPIO2 = 1 i GPIO15 = 0. Te czynności są wykonywane w celu reflashowania pamięci flash;
  • Kod jest wykonywany z zewnętrznej pamięci ROM przy kombinacji GPIO0 = 1, GPIO2 = 1 i GPIO15 = 0 dla normalnej pracy.

Podany jest oficjalny opis wszystkich kontaktów:

  • 1 to masa, a 8 to zasilanie płytki. Napięcie musi być przyłożone do 3,6V w przeciwieństwie do Arduino, które jest zasilane napięciem 5V;
  • 6 – Przycisk Reset, wymagany do zresetowania układu scalonego;
  • 4 – CP_PD – wprowadza układ w tryb oszczędzania energii;
  • 7 lub 0 – Piny sprzętowe RXD0 i TXD0 dla uniwersalnego asynchronicznego transceivera wymaganego do reflashingu;
  • 2 – TDX0, do którego podłączona jest dioda LED, która jest wyzwalana w przypadku transmisji danych FPGA lub przy podłączeniu niskiego poziomu logicznego;
  • 5 – GPI0, umożliwiający wejście i wyjście oraz wprowadzenie sterownika w tryb programowania;
  • 3 – GPIO2 – standardowy port I/O.

Główne różnice między Arduino a ESP8266

Moduł ESP różni się od równie popularnego Arduino Wifi następującymi cechami:

  • Obecność większej ilości pamięci flash i brak pamięci nieulotnej;
  • Szybszy procesor;
  • Obecność modułu Wifi;
  • Pobiera więcej prądu niż Arduino

Programowanie ESP8266 w Arduino IDE

Dla ułatwienia programowania na mikrokontrolerze, do zestawu dołączone są

  • Kompilator kodu dla programu typu GNU;
  • Biblioteki do pracy ze standardami Wifi i TCP/IP;
  • Narzędzia programowe do ładowania danych do pamięci chipowej;
  • Zintegrowane środowisko rozwoju programu.

Ważne: Standardowe oprogramowanie firmowe modułu pozwala na sterowanie nim z innego sterownika oraz organizowanie obsługi Wifi i modemu. Oprócz fabrycznego oprogramowania firmowego istnieje wiele innych gotowych rozwiązań, które można skonfigurować za pomocą interfejsu internetowego.

Programowanie możliwe jest również z poziomu środowiska programistycznego Arduino. Nie tylko ułatwia ono pisanie programów, ale także pozwala na ich załadowanie do kontrolera i flashowanie. Co najlepsze, nie potrzebujesz do tego samej płytki Arduino.

Funkcje obsługiwane przez mikrokontroler:

  • Większość funkcji języka programowania Wiring;
  • Kontrola czasu i opóźnienia w celu przekazania czasu, jaki upłynął od startu układu, zakończenia lub wstrzymania wykonywania kodu;
  • Funkcje Serial, Serial1, które są podobne do Arduino, pracują z danymi i blokują zapis lub odczyt danych w zależności od potrzeb;
  • Makro PROGMEM umożliwiające przeniesienie danych do pamięci flash w celu ich odczytania;
  • Magistrala I2C do wyboru za pomocą funkcji Wire.pins(int sda, int scl);
  • Biblioteki SPI i OneWire.

Wykorzystanie układu ESP8266 do komunikacji radiowej Arduino WiFi

Dzięki ESP można zorganizować podłączenie Arduino lub przekaźnika do Wifi. Ważnym punktem połączenia jest to, że napięcie zasilające dla tych mikrokontrolerów jest różne i muszą być one połączone przez dzielniki rezystancyjne. Ogólny schemat połączeń wygląda tak: pin 3,3 V z Arduino jest podłączony do CH_PD na ESP, a masa z Arduino jest podłączona do masy na ESP. 0 do TX i 1 do RX.

Dalsze podłączenia wykonuje się zgodnie z instrukcją:

  1. Połączenie USB-TTL z portem USB i ESP;
  2. Uruchom środowisko programistyczne Arduino;
  3. W ustawieniach wybierz wymagane ustawienia dla pamięci, portu i płyty;
  4. Przejdź do Plik – Przykłady – ESP – WifiServer;
  5. Zapisz identyfikator SSID i kod zabezpieczający sieci bezprzewodowej;
  6. Rozpocząć proces kompilacji i ładowania;
  7. Oczekiwanie na zakończenie pracy firmware i odłączenie pinu GPI0 od masy;
  8. Ustawienie prędkości w okolicach 115 200;
  9. Połącz się i uzyskaj nowy adres IP;
  10. Następnie otwieramy przeglądarkę internetową i w polu wyszukiwania wpisujemy ciąg IP numer/gpio/1;
  11. Monitoruj port i sprawdź, czy dioda LED świeci się, jeśli jest podłączony.

NodeMCU oparte na esp8266

NodeMCU to jedna z najpopularniejszych platform opartych na układzie ESP. Najczęściej wykorzystywana jest do sterowania układami na odległość za pomocą komunikacji bezprzewodowej Wifi. Sama płytka jest niedroga, lekka i posiada port USB. Jest on oflankowany przyciskami do restartu i debugowania platformy. Zasilanie najlepiej dostarczyć do 12V, ale nie mniej niż 10V.

Ważne: Największą zaletą płytki jest niski pobór mocy. Dlatego też NodeMCU jest często stosowany w układach zasilanych bateryjnie. Ponadto NodeMCU posiada zestaw API do wprowadzania i wyprowadzania danych w trybie sprzętowym, co minimalizuje ilość konfiguracji i obsługi.

WeMos oparty na ESP8266

Drugim popularnym rozwiązaniem opartym na ESP jest WeMos. Również obsługuje komunikację WiFi, rozwój na Arduino IDE, a nawet zawiera złącze dla zewnętrznej anteny Wifi. Maksymalne napięcie to 3,3V. Na płytce znajduje się 11 portów wejściowych i wyjściowych, obsługujących standardowe technologie ESP i Arduino. Podobnie jak NodeMCU, WeMos posiada również port USB. Do pracy z platformą należy zainstalować sterownik CH340 oraz skonfigurować Arduino IDE do pracy z ESP.

Przykłady wykorzystania i przesyłania danych z AArduino do AArduino lub PC przez Wifi

Jako przykład można stworzyć program dla NodeMCU w środowisku Arduino. W tym celu należy zainstalować na komputerze oprogramowanie modułu Arduino Wi fi i skonfigurować go do współpracy z ESP8266.

Następnie np. płytka NodeMCU łączy się z analogowym fotorezystorem i wysyła dane do serwera za pomocą protokołu MQTT. Schemat połączenia został przedstawiony poniżej.

Do napisania i uruchomienia kodu potrzebna jest biblioteka pubsubclient. Po jej pobraniu należy umieścić pliki z archiwum w folderze IDE libraries i otworzyć szkic _2.ino w środowisku. Aby kod działał poprawnie należy wprowadzić następujące zmiany (SSID i hasło):

  • const char* ssid = “twój_wifi_hotspot”;
  • const char* password = “twoje_wifi_hasło”;

Następnie ładujemy oprogramowanie na płytkę, otwieramy monitor portu szeregowego i obserwujemy wynik na zdjęciu.

Po wykonaniu wszystkich tych czynności płytka połączy się przez Wifi z MQTT, a ten wyświetli dane z fotorezystora.

W podobny sposób zorganizowany jest serwer Arduino Wifi oparty na ESP. Można do tego wykorzystać język skryptowy LUA. Poniższy skrypt tworzy prosty serwer, który wyświetla informacje, gdy urządzenia uzyskują dostęp do tablicy:

  • serverport = 80
  • server=net.createServer(net.TCP)
  • server:listen(serverport,
  • function(connection)
  • connection:send(«HTTP/1.1 200 OKnContent-Type: text/htmlnRefresh: 10nn» ..
  • «<!DOCTYPE HTML>» .
  • «<html><body>» ..
  • «<b>Server </b></br>» ..
  • » ChipID : » .. node.chipid() .. «<br>» ..
  • » MAC : » .. wifi.sta.getmac() .. «<br>» ..
  • » Heap : » .. node.heap() .. «<br>» ..
  • » Timer Ticks : » .. tmr.now() .. «<br>» ..
  • «</html></body>»)
  • connection:on(«sent»,function(connection) connection:close() end)
  • end
  • )

Kod należy zapisać w pliku server1.lua, a następnie uruchomić. Aby sprawdzić działanie, można połączyć się z punktem dostępowym i wpisać w przeglądarce adres IP http://192.168.4.1:

Podsumowując, ESP to chyba najlepszy moduł Wifi dla Arduino. Podłączenie Arduino do Wifi nie jest najłatwiejszym procesem, ale nie ma tam też nic supernowoczesnego. Nowoczesne płytki i kontrolery pozwalają Arduino bez problemu wykonać transfer przez Wifi.

Opublikowany przez
Mark Dabrowski