Serwer sieciowy ESP32 wykorzystujący Arduino IDE

Serwer Sieciowy Esp32 Wykorzystujacy Arduino Ide



ESP32 to płytka mikrokontrolera, która może łączyć się z wieloma urządzeniami za pomocą pinów GPIO. Posiada dwurdzeniowy procesor z wbudowanym interfejsem Wi-Fi i Bluetooth. Obie te cechy sprawiają, że ESP32 jest odpowiednią płytką do projektowania projektów IoT. Jedną z głównych cech płyty ESP32 jest możliwość połączenia z istniejącym punktem dostępowym. Nie tylko to, ale może także utworzyć swój punkt dostępu, aby inne urządzenia mogły się z nim połączyć.

W tym artykule dotyczącym ESP32 przyjrzymy się, jak połączyć płytę ESP32 z punktem dostępowym i zaprojektować jej serwer WWW. Korzystając z tego serwera WWW, będziemy sterować diodami LED i urządzeniami prądu przemiennego za pomocą modułu przekaźnikowego.

Zawartość:

1. Serwer WWW ESP32

Serwer internetowy ma specjalny program, który może przetwarzać i wysyłać strony internetowe do klientów internetowych. Do otwarcia strony internetowej używamy przeglądarki internetowej. Ta przeglądarka internetowa nazywana jest także klientem sieciowym. Witryna, którą chcesz wyświetlić, jest przechowywana na innym komputerze zwanym serwerem internetowym.







Aby ze sobą rozmawiać, serwer WWW i klient WWW używają wspólnego języka zwanego HTTP. Działa to w ten sposób: klient WWW pyta serwer WWW o stronę internetową za pomocą żądania HTTP. Serwer WWW odsyła żądaną stronę internetową. Jeśli strona internetowa nie jest dostępna, zostanie wyświetlony komunikat o błędzie.



W ESP32 możemy zaprojektować serwer WWW, ponieważ ESP32 może nie tylko łączyć się z innymi urządzeniami przez sieć, ale może także utworzyć swój serwer WWW i odpowiadać na otrzymane żądania. To wszystko jest możliwe, ponieważ ESP32 może pracować w trzech różnych trybach:



  • Stacja
  • Punkt dostępu
  • Zarówno stacja, jak i punkt dostępowy

Możesz zapoznać się z tym artykułem, aby uzyskać wgląd we wszystkie trzy tryby ESP32:





Jak ustawić punkt dostępu ESP32 (AP) za pomocą Arduino IDE

2. Jak utworzyć serwer WWW ESP32 przy użyciu Arduino IDE

Aby utworzyć serwer WWW ESP32 za pomocą Arduino IDE, możesz podłączyć ESP32 do punktu dostępowego i wygenerować adres IP dla serwera WWW. Możesz zastosować trochę HTML i CSS do zaprojektowania interfejsu serwera.



Gdy już zrozumiesz działanie punktu dostępowego ESP32, możesz z łatwością zaprojektować serwer WWW ESP32, korzystając z kodu Arduino IDE. Kod serwera WWW ESP32 korzysta z biblioteki Wi-Fi ESP32. Ułatwia nam to pracę, ponieważ biblioteka ta zawiera wszystkie ważne funkcje potrzebne do podłączenia ESP32 do punktu dostępowego.

Zaprojektujmy serwer WWW ESP32 przy użyciu kodu Arduino IDE.

3. Kod serwera internetowego ESP32

Kod serwera WWW ESP32 obejmuje połączenie ESP32 z punktem dostępowym i uzyskanie adresu IP serwera. Po uzyskaniu adresu IP musisz połączyć się z tą samą siecią, aby uzyskać dostęp do serwera internetowego ESP32. Stamtąd możesz sterować diodami LED i innymi urządzeniami.

Otwórz Arduino IDE i podłącz do niego swoją płytkę ESP32:

Instalowanie płytki ESP32 w Arduino IDE

Po podłączeniu karty ESP32 prześlij na nią następujący kod.

/***************

Linuxhint.com
Serwer sieciowy ESP32 do sterowania diodami LED

****************/
// Zaimportuj bibliotekę Do Połączenie WiFi
#include
// Wprowadź nazwę i hasło Wi-Fi
znak stały * ssid = „ESP32” ;
znak stały * hasło = „123456789” ;
// Wybierz numer portu Do serwer WWW
Serwer WiFiServer ( 80 ) ;
// Utwórz zmienną do przechowywania żądania internetowego
Nagłówek ciągu;
// Utwórz zmienne do przechowywania stanu wyjść
Wyjście ciągu znaków26State = 'WYŁĄCZONY' ;
Wyjście string27State = 'WYŁĄCZONY' ;
// Przypisz piny wyjściowe do zmiennych
stała int wyjście26 = 26 ;
stała int wyjście27 = 27 ;
unsigned long currentTime = milis ( ) ;
bez znaku długi poprzedniTime = 0 ;
// Wybierz czas limit Do żądanie internetowe W milisekundy
const długi limit czasu = 2000 ;
pusta konfiguracja ( ) {
Początek numeru seryjnego ( 115200 ) ;
// Ustaw piny wyjściowe Jak wyjścia
tryb pin ( wyjście26, WYJŚCIE ) ;
tryb pin ( wyjście27, WYJŚCIE ) ;
// Wyłącz wyjścia
cyfrowy zapis ( wyjście 26, NISKI ) ;
cyfrowy zapis ( wyjście 27, NISKI ) ;
// Połącz się z siecią Wi-Fi
Wydruk seryjny ( 'Łączenie z ' ) ;
Numer seryjny.drukuj ( SSID ) ;
Rozpocznij WiFi ( SSID, hasło ) ;
// Czekać dopóki połączenie zostało nawiązane
chwila ( Stan Wi-Fi ( ) ! = WL_POŁĄCZONY ) {
opóźnienie ( 500 ) ;
Wydruk seryjny ( „.” ) ;
}
Numer seryjny.drukuj ( „” ) ;
Numer seryjny.drukuj ( „Połączono z Wi-Fi.” ) ;
Numer seryjny.drukuj ( 'Adres IP: ' ) ;
Numer seryjny.drukuj ( WiFi.localIP ( ) ) ;
serwer.rozpocznij ( ) ;
}

pusta pętla ( ) {
Klient WiFiClient = serwer.dostępny ( ) ; // Sprawdzać Do nowi klienci
Jeśli ( klient ) { // Jeśli klient jest podłączony,
bieżący czas = milis ( ) ;
poprzedniCzas = bieżącyCzas;
Numer seryjny.drukuj ( 'Nowy klient.' ) ; // Powiadom port szeregowy
Ciąg bieżącaLinia = „” ; // Utwórz ciąg do przechowywania danych klienta
chwila ( klient.połączony ( ) && bieżący czas - poprzedni czas = 0 ) {
Numer seryjny.drukuj ( „GPIO 26 włączone” ) ;
wyjście26Stan = 'NA' ;
cyfrowy zapis ( moc wyjściowa 26, WYSOKA ) ;
} w przeciwnym razie Jeśli ( nagłówek.indexOf ( „POBIERZ /26/wyłącz” ) > = 0 ) {
Numer seryjny.drukuj ( „GPIO 26 wyłączone” ) ;
wyjście26Stan = 'WYŁĄCZONY' ;
cyfrowy zapis ( wyjście 26, NISKI ) ;
} w przeciwnym razie Jeśli ( nagłówek.indexOf ( „POBIERZ /27/włącz” ) > = 0 ) {
Numer seryjny.drukuj ( „GPIO 27 włączone” ) ;
wyjście27Stan = 'NA' ;
cyfrowy zapis ( moc wyjściowa 27, WYSOKA ) ;
} w przeciwnym razie Jeśli ( nagłówek.indexOf ( „POBIERZ /27/wyłącz” ) > = 0 ) {
Numer seryjny.drukuj ( „GPIO 27 wyłączone” ) ;
wyjście27Stan = 'WYŁĄCZONY' ;
cyfrowy zapis ( wyjście 27, NISKI ) ;
}

klient.println ( '' ) ;
klient.println ( ' ) ;
klient.println ( „dekoracja tekstu: brak; rozmiar czcionki: 30 pikseli; margines: 2 piksele; kursor: wskaźnik; cień ramki: 0 0 20 pikseli #08f;}” ) ;
// Ciemnoszare guziki z efektem blasku
klient.println ( „.button2 {kolor tła: #333; cień ramki: 0 0 20px #333;}” ) ;
// Efekt przejścia Do przyciski
klient.println ( '.button, .button2 {przejście: całe 0,3 s wysunięcia;}' ) ;
// Zaokrąglone guziki
klient.println ( '.button, .button2 {promień obramowania: 50%;}' ) ;
// Tytuł strony internetowej
klient.println ( '

Serwer WWW ESP32

');

// Pokaż stan i przyciski Do GPIO 26
klient.println ( '

GPIO 26 - Stan ' + wyjście26Stan +



) ;
// Pokaż przycisk WŁĄCZ Jeśli stan jest wyłączony
Jeśli ( wyjście26Stan == 'WYŁĄCZONY' ) {
klient.println ( '

GPIO 27 - Stan ' + wyjście27Stan +



) ;
// Pokaż przycisk WŁĄCZ Jeśli stan jest wyłączony
Jeśli ( wyjście27Stan == 'WYŁĄCZONY' ) {
klient.println ( '

}
} else if (c != ' \R ') { // Dodaj bajt do bieżącej linii, jeśli jest' to nie powóz powrót
bieżąca linia += c;
}
}
}
// Zresetuj nagłówek
nagłówek = „” ;
// Zamknij połączenie klienta
klient.zatrzymaj ( ) ;
Numer seryjny.drukuj ( „Klient rozłączony.” ) ;
Numer seryjny.drukuj ( „” ) ;
}
}

Wyjaśnienie kodu

Kod serwera internetowego ESP32 został uruchomiony przez skonfigurowanie połączenia Wi-Fi. Po pierwsze, zawiera bibliotekę WiFi.h. Następnie ten kod wymaga wprowadzenia identyfikatora SSID i hasła sieci, z którą chcesz połączyć swoją kartę ESP32. Następnie utworzyliśmy zmienne przechowujące stan wyjść i do tych zmiennych przypisaliśmy piny wyjściowe. Tutaj używamy pinów GPIO 26 i 27, ale możesz także użyć dowolnych innych pinów GPIO do podłączenia urządzeń lub diod LED.

W drugiej części kodu uruchamiana jest komunikacja szeregowa. Pomoże nam to sprawdzić stan płytki ESP32 i podłączonych do niej urządzeń peryferyjnych. Oprócz tego zdefiniowaliśmy wyjście szeregowe dla różnych stanów dwóch podłączonych diod LED. Można podłączyć diody LED i zdefiniować ich stan jako WŁĄCZONY i WYŁĄCZONY. Ta część kodu wydrukuje również adres IP serwera WWW ESP32 po przesłaniu kodu. Część kodu zawierająca adres IP zostanie wydrukowana tylko raz, ponieważ znajduje się wewnątrz funkcji Setup().



W trzeciej części, czyli wewnątrz funkcji Loop(), zdefiniowaliśmy kod do obsługi żądań WWW i sterowania pinami GPIO. Ta część kodu będzie wielokrotnie wykonywana, tak jak w funkcji pętli(). Sprawdza nowych klientów i odczytuje dane od klientów. Po przeczytaniu analizuje żądania HTTP i wysyła odpowiednią odpowiedź, np. włączenie lub wyłączenie diody LED. Ta część kodu zawiera również informacje na temat podstawowego stylu serwera WWW ESP32. Interfejs zawiera przyciski LED i ich aktualne stany.

4. Adres IP serwera internetowego ESP32

Adres IP serwera WWW ESP32 jest unikalnym identyfikatorem urządzenia w sieci. Aby uzyskać dostęp do serwera internetowego ESP32, będziesz potrzebować tego adresu IP. Po przesłaniu powyższego kodu adres IP jest automatycznie przydzielany przez router, zwany także dynamicznym adresem IP. Można jednak również ręcznie przypisać adres IP, zwany także statycznym adresem IP.

Aby znaleźć adres IP swojego serwera ESP32, możesz sprawdzić monitor szeregowy Arduino IDE po przesłaniu kodu. Pamiętaj, że ten adres IP będzie wyświetlany tylko wtedy, gdy płyta ESP32 zostanie pomyślnie połączona z punktem dostępowym.

Notatka : Jeśli połączenie karty ESP32 z punktem dostępu sprawia Ci trudność, spróbuj zmienić identyfikator SSID routera (punktu dostępu). Staraj się unikać znaków specjalnych w identyfikatorze SSID.

5. Sterowanie diodami LED za pomocą serwera WWW ESP32

Teraz skonfigurujemy dwie diody LED z płytką ESP32 i będziemy nimi sterować za pomocą serwera WWW ESP32. Możesz użyć tych samych pinów GPIO zdefiniowanych w kodzie lub zmodyfikować kod dla dowolnych innych pinów GPIO. Tutaj podłączymy jedną diodę LED do GPIO 26, a drugą do GPIO 27.

Interfejs pulpitu

Gdy sprzęt jest już gotowy, kolejnym krokiem jest uzyskanie dostępu do serwera WWW przy użyciu tego samego adresu IP, jaki podał ESP32 na terminalu Arduino IDE. W tym celu Twój system musi łączyć się z tą samą siecią. Na pulpicie otwórz ustawienia Wi-Fi i połącz się z siecią.

Po nawiązaniu połączenia można uzyskać dostęp do serwera internetowego za pomocą przeglądarki internetowej (Chrome). Wpisz adres IP serwera WWW ESP32 w pasku adresu i naciśnij Wchodzić . Po otwarciu zobaczysz następujący interfejs.

W bieżącym stanie ustawionym w kodzie obie diody LED są wyłączone. Zatem po podłączeniu ESP32 do komputera zobaczysz, że żadna dioda LED się nie świeci.

Zaczniemy od włączenia diody LED na GPIO 26. Przełącz przełącznik OFF, a zobaczysz, że dioda LED będzie się świecić.

Dioda LED na GPIO 26 świeci się.

Podobnie dla diody LED na GPIO 27 przełącz drugi przycisk.

Teraz zobaczysz, że druga dioda LED podłączona do GPIO 27 również będzie się świecić.

Można także włączyć obie diody LED, przełączając ich przyciski.

Po przełączeniu obu diod LED zobaczysz, że obie diody LED będą się świecić.

Interfejs mobilny

Serwer WWW ESP32 nie ogranicza się tylko do przeglądarek komputerowych, można uzyskać do niego dostęp również z dowolnego innego urządzenia, takiego jak smartfon lub tablet. Aby połączyć się z serwerem internetowym ESP32, otwórz ustawienia sieci Wi-Fi i wyszukaj ten sam identyfikator SSID, który zdefiniowałeś w kodzie.

Po wyszukaniu punktu dostępu połącz smartfon z tym punktem dostępu.

Po nawiązaniu połączenia otwórz przeglądarkę na swoim smartfonie i uzyskaj dostęp do serwera internetowego przy użyciu adresu IP ESP32. Interfejs w smartfonie jest podobny do pulpitu. Masz pełną kontrolę nad pinami GPIO, tak jak w przeglądarce na komputerze.

6. Sterowanie urządzeniami prądu przemiennego za pomocą serwera WWW ESP32

Na razie połączyliśmy prostą diodę LED z ESP32 i sterowaliśmy nimi za pomocą serwera WWW ESP32. Ale to tylko prosty program dla serwera WWW ESP32. Możesz zastosować tę samą koncepcję do dowolnego czujnika lub modułu i wygenerować żądany wynik.

Na przykład możesz podłączyć moduł przekaźnika do ESP32 i sterować dowolnym urządzeniem prądu przemiennego za pomocą tego samego kodu serwera WWW, który podano powyżej.

Czytać : Przekaźnik z ESP32 przy użyciu Arduino IDE

Teraz podłączymy żarówkę AC z ESP32 za pomocą modułu przekaźnika. Tutaj zamierzam użyć pinu 26 GPIO do sterowania żarówką AC. Możesz zdefiniować żądane piny GPIO do sterowania przekaźnikiem.

Pin ESP32 Styki modułu przekaźnika
VIN/3V3 Vcc
GND GND
GPIO 26 lub GPIO 27 IN1 lub IN2

Poniżej znajduje się schemat ideowy ESP32 z modułem przekaźnika i żarówką AC.

Po podłączeniu modułu przekaźnikowego otwórz serwer WWW ESP32 i przełącz przełącznik GPIO 26.

Zobaczysz, że żarówka się włączy.

Udało nam się stworzyć serwer WWW ESP32 i sterować za jego pomocą zarówno urządzeniami prądu przemiennego, jak i stałego. Możesz zastosować ten sam kod dla dowolnego innego czujnika i stworzyć własne serwery internetowe dla swojego projektu.

Wniosek

ESP32 to płytka mikrokontrolera, która może łączyć się z punktem dostępu lub działać jako punkt dostępu dla innych urządzeń. Korzystając z tej funkcji ESP32, możesz zaprojektować serwer WWW ESP32. Wszystko, czego potrzebujesz, to podłączyć kartę ESP32 do punktu dostępowego i uzyskać adres IP serwera WWW. Następnie musisz wpisać ten sam adres IP w dowolnej przeglądarce internetowej, a od razu będziesz mieć dostęp do serwera WWW. Upewnij się jednak, że podczas uzyskiwania dostępu do serwera internetowego ESP32 jesteś podłączony do tej samej sieci. Ponadto możesz modyfikować podany kod i sterować dowolnym czujnikiem lub modułem.