Spisu treści:

Jak korzystać z ESP8266 jako serwera WWW: 5 kroków
Jak korzystać z ESP8266 jako serwera WWW: 5 kroków

Wideo: Jak korzystać z ESP8266 jako serwera WWW: 5 kroków

Wideo: Jak korzystać z ESP8266 jako serwera WWW: 5 kroków
Wideo: Strona internetowa na ESP8266 | Serwer www za 20zł 2024, Grudzień
Anonim
Jak korzystać z ESP8266 jako serwera internetowego
Jak korzystać z ESP8266 jako serwera internetowego

Cześć, obecnie używam systemu Windows 10, NodeMCU 1.0, a oto lista oprogramowania, z którego korzystałem, oraz przewodniki instalacji, których przestrzegałem:

  • IDE Arduino
  • Dodatkowe płyty dla esp8266
  • Spiff

Wykorzystywana biblioteka:

Gniazdo sieciowe

Użyłem NodeMCU jako serwera do obsługi pliku HTML, który stworzyłem z tego samouczka. Aby obsłużyć ten plik, przesłałem plik do systemu plików nodemcu za pomocą Spiffs. Plik HTML wysyła dane do nodemcu za pomocą gniazd sieciowych, które mają zostać wydrukowane na monitorze szeregowym w tym celu. Szybka dwukierunkowa komunikacja za pośrednictwem gniazd sieciowych serwera i klienta umożliwiła użycie tego jako zdalnego sterowania. W kolejnych krokach będę wyjaśniał, jak działa mój kod

Kieszonkowe dzieci

WęzełMCU

Krok 1: Spraw, aby to zadziałało

Niech to działa
Niech to działa
Niech to działa
Niech to działa
Niech to działa
Niech to działa

Oto kroki, jak to działa

  1. Pobierz załączony plik i otwórz plik mousebot.ino
  2. Przejdź do szkicu> pokaż folder szkicu i utwórz nowy folder o nazwie dane
  3. Zapisz plik html z tego samouczka w folderze o nazwie. Nazwałem mój jako "Joystick"
  4. Upewnij się, że Twój spiff już działa, przechodząc do narzędzi i widząc „przesyłanie danych szkicu esp8266”
  5. Prześlij plik html do nodemcu, klikając „przesyłanie danych szkicu esp8266”
  6. Po przesłaniu pliku prześlij do nodemcu plik mousebot.ino, przechodząc do arduino IDE i naciskając ctrl U

Krok 2: Jak działa kod

Najpierw dołączamy biblioteki, których ten kod będzie używał

//aby umożliwić ESP8266 połączenie z WIFI

#include #include #include //Włącza ESP8266 do działania jako serwer #include //Włącza komunikację z serwerem i klientem (podłączonym urządzeniem) #include #include //Aby otworzyć przesłany plik na nodemcu #include

Ustaw esp8266 jako serwer WWW otwarty na porcie 80. Porty to ścieżki, przez które będą przechodzić dane. Jako port serwera wyśle plik HTML do klienta (urządzeń do niego podłączonych).

Dodaje połączenie websocket przy użyciu portu 81 do nasłuchiwania wiadomości od klienta

Websockets ma parametr num, WStype_t, payload i size. Liczba określa numer klienta, payload to wiadomość, którą wysyła, size to długość wiadomości, a WStype_t jest dla różnych zdarzeń, takich jak

  • WStype_DISCONNECTED - po rozłączeniu klienta.
  • WStype_CONNECTED: - gdy klient się łączy
  • WStype_TEXT - Otrzymane dane od klienta

W zależności od typu zdarzenia wykonywane są różne akcje, które są komentowane tutaj

void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length) {

switch (type) { case WStype_DISCONNECTED: Serial.printf("[%u] Disconnected!\n", num); //wypisuje dane do przerwania monitora szeregowego; case WStype_CONNECTED: { Adres IP ip = webSocket.remoteIP(num); //pobiera adres IP klienta Serial.printf("[%u] Połączony z %d.%d.%d.%d url: %s\n", num, ip[0], ip[1], ip[2], ip[3], ładunek); webSocket.sendTXT(liczba, "Połączony"); //wysyła "connected" do konsoli przeglądarki } break; case WStype_TEXT: Serial.printf("[%u] Dane: %s\n", num, payload); //wypisuje numer klienta w %u i dane odebrane jako ciągi w %s\n break;}}

Krok 3: Ustaw NODEMCU jako serwer

ustawia ssid i hasło, których będziesz używać do późniejszego połączenia

const char *ssid = "Spróbuj";

const char *hasło = "12345678";

podczas konfiguracji określamy szybkość, z jaką będą komunikować się nasze nodemcu i pc, czyli 115200.

nieważna konfiguracja (unieważnij){

Serial.początek(115200); Serial.print("\n");

ustaw na true też zobacz wyjście diagnostyczne wifi na terminalu serila

Serial.setDebugOutput(prawda);

zainicjować system plików

SPIFFS.początek();

Skonfiguruj nodemcu jako punkt dostępowy z identyfikatorem ssid i hasłem defend wcześniej i drukuje adres IP nodemcu, z którym będziesz się łączyć wcześniej. domyślnie 192.168.4.1

Serial.print("Konfigurowanie punktu dostępu…");

tryb WiFi (WIFI_AP); WiFi.softAP (SSid, hasło); AdresIP mójIP = WiFi.softAPIP(); Serial.print("Adres IP AP: "); Serial.println(mojeIP);

Zainicjuj websocket na nodemcu, który jest czystym serwerem

webSocket.początek();

Wywołuje funkcję webSocketEvent, gdy wystąpi zdarzenie websocket.

webSocket.onEvent(webSocketEvent);

W celu debugowania wypisz w nowym wierszu napis „Serwer WebSocket uruchomiony”. Ma to na celu określenie linii kodu przetwarzanej przez nodemcu

Serial.println("Serwer WebSocket uruchomiony.");

gdy klient odwiedzi 192.168.4.1, wywoła funkcję handleFileRead i wyśle z nią parametr URI serwera, który w tym przypadku jest naszą informacją o nodemcu. Funkcja handleFileRead będzie obsługiwać plik html z systemu plików nodemcu

server.onNotFound((){

if(!handleFileRead(serwer.uri()))

jeśli nie można go znaleźć, wyświetli „FileNotFound”

server.send(404, "text/plain", "FileNotFound");

});

Uruchamia serwer i drukuj serwer HTTP uruchomiony.

serwer.początek(); Serial.println("Serwer HTTP uruchomiony");

W naszej pętli void umożliwiamy serwerowi ciągłą obsługę komunikacji klienta i jego gniazd sieciowych w następujący sposób:

pusta pętla (pusta){

server.handleClient(); webSocket.loop();}

Krok 4: Załaduj plik HTML

użyjemy funkcji o nazwie handleFileRead do otwarcia i pliku html z systemu plików nodemcu. zwróci wartość logiczną określającą, czy jest załadowany, czy nie.

Kiedy "192.168.4.1/" jest otwarty przez klienta ustawiamy ścieżkę pliku na "/Joystick.html, nazwę naszego pliku w folderze danych

bool handleFileRead(String path){

Serial.println("handleFileRead: " + ścieżka); if(path.endsWith("/")) ścieżka += "Joystick.html"; if(SPIFFS.exists(ścieżka)){ Plik pliku = SPIFFS.open(ścieżka, "r"); size_t wysłany = server.streamFile(plik, "text/html"); plik.zamknij(); zwróć prawdę; } zwróć fałsz; }

Sprawdź, czy istnieje ścieżka do pliku "/Joystick.html"

if(SPIFFS.exists(ścieżka)){

Jeśli istnieje, otwórz ścieżkę w celu jej odczytania, która jest określona przez „r”. Przejdź tutaj, aby uzyskać więcej celów.

Plik pliku = SPIFFS.open(ścieżka, "r");

Wysyła plik do serwera, jak w przypadku typu zawartości "text/html"

size_t wysłany = server.streamFile(plik, "text/html");

zamknij plik

plik.zamknij();

funkcja handleFileRead zwraca true

zwróć prawdę;}

jeśli ścieżka do pliku nie istnieje, funkcja handleFileRead zwraca false

zwróć prawdę; }

Krok 5: Wypróbuj

Image
Image

Połącz się z nodeMCU i przejdź do „192.168.4.1” i wypróbuj!:)

Zalecana: