Events

:

:

Elektronik | Funk | Software

Der Technik-Blog

  • Social Media

    Werbung:


    Neue Artikel


    Events

    • Keine zukünftigen Events vorhanden

    Der Technik-Blog

    ESP32 WiFi HTTP Webserver

    ESP32 WiFi Webserver

    Alex @ AEQ-WEB

    In diesem Beispielcode zeigen wir, wie mit dem ESP32 ein einfacher Webserver erstellt wird, der die verfügbaren WLAN-Netzwerke in der Umgebung in einer HTML-Tabelle anzeigt. In diesem Beispiel verwendet der ESP32 ein bereits verfügbares WLAN-Netzwerk und lässt sich vom DHCP-Server eine IP-Adresse zuweisen. Anfänger müssen zuerst den ESP32 im Arduino IDE installieren.

    ESP32 Webserver

    Dieses Codebeispiel benötigt lediglich die WiFi-Bibliothek, welche standardmäßig mit der Installation der Entwicklungsumgebung mitgeliefert wird. Im Serial Monitor vom Arduino IDE werden Informationen über den Status der Verbindung sowie die aktuelle IP-Adresse des Boards angezeigt. Damit mit dem Computer auf den ESP32 zugreifen werden kann, müssen sich beide Geräte im selben Netzwerk befinden.

    Werbung:

    Wird die IP-Adresse des Boards im Browser eingegeben, so zeigt das Board seine eigene MAC-Adresse an. Zusätzlich zeigt es die Signalstärke zum verbundenen Accesspoint in dBm an. In der Tabelle sind die WLAN-Netzwerke der Umgebung und dessen Signalstärke ersichtlich.

    ESP_Webserver.ino
    Download
    #include <WiFi.h>
    
    // Set your Network Name and Password
    const char* ssid = "YOURNETWORK";
    const char* password = "PASSWORD";
    
    WiFiServer server(80);
    
    char linebuf[80];
    int charcount = 0;
    
    void setup() {
    
    //Initialize serial and wait for port to open:
    Serial.begin(115200);
    Serial.println();
    Serial.print("Connecting to ");
    Serial.println(ssid);
    WiFi.begin(ssid, password);
    
    while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    }
    
    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
    
    server.begin();
    }
    
    void loop() {
    // listen for incoming clients
    WiFiClient client = server.available();
    if (client) {
    Serial.println("New client");
    long rssi = WiFi.RSSI();
    memset(linebuf, 0, sizeof(linebuf));
    charcount = 0;
    boolean currentLineIsBlank = true;
    while (client.connected()) {
    if (client.available()) {
    char c = client.read();
    Serial.write(c);
    linebuf[charcount] = c;
    if (charcount < sizeof(linebuf) - 1) charcount++;
    if (c == '\n' && currentLineIsBlank) {
    // send a standard http response
    client.println("HTTP/1.1 200 OK");
    client.println("Content-Type: text/html");
    client.println("Connection: close");
    client.println();
    client.println("<!DOCTYPE HTML><html><head>");
    client.println("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"></head>");
    client.println("<h1>ESP32 WiFi HTTP Server</h1>");
    client.print("<p>RSSI: ");
    client.print(rssi);
    client.println(" dBm</p>");
    client.print("<p>Local MAC: ");
    getMacAddress(client);
    client.println("</p>");
    client.print("<p>Neighborhood networks:</p>");
    getNetworks(client);
    client.println("");
    client.println("</html>");
    break;
    }
    if (c == '\n') {
    currentLineIsBlank = true;
    memset(linebuf, 0, sizeof(linebuf));
    charcount = 0;
    } else if (c != '\r') {
    // you've gotten a character on the current line
    currentLineIsBlank = false;
    }
    }
    }
    delay(1);
    client.stop();
    Serial.println("client disconnected");
    }
    }
    
    void getMacAddress(WiFiClient client) {
    byte mac[6];
    WiFi.macAddress(mac);
    client.print(mac[5], HEX);
    client.print(":");
    client.print(mac[4], HEX);
    client.print(":");
    client.print(mac[3], HEX);
    client.print(":");
    client.print(mac[2], HEX);
    client.print(":");
    client.print(mac[1], HEX);
    client.print(":");
    client.println(mac[0], HEX);
    }
    
    void getNetworks(WiFiClient client) {
    
    int numSsid = WiFi.scanNetworks(); client.println("<table border='1' style='width: 300px'>");
    client.println("<tr>");
    client.println("<th style='width: 15px'>NR</th>");
    client.println("<th style='width: 255px'>Name</th>");
    client.println("<th style='width: 20px'>dBm</th>");
    client.println("</tr>");
    for (int thisNet = 0; thisNet < numSsid; thisNet++) {
    client.println("<tr>");
    client.println("<td>");
    client.print(thisNet);
    client.println("</td>");
    client.println("<td>");
    client.print(WiFi.SSID(thisNet));
    client.println("</td>");
    client.println("<td>");
    client.print(WiFi.RSSI(thisNet));
    client.println("</td>");
    client.println("</tr>");
    }
    client.println("</table>");
    }


    122X122

    Über den Autor

    Alex, der Gründer von AEQ-WEB. Seit über 10 Jahren beschäftigt er sich mit Computern und elektronischen Bauteilen aller Art. Neben den Hardware-Projekten entwickelt er auch Webseiten, Apps und Software für Computer.

    Top Artikel in dieser Kategorie:

    ESP Program Export HEX/BIN & Flash Tool Upload

    ESP32 Flash Tool Upload

    • Video
    • DE/EN

    Mit dem Flash Download Tool können fertig exportierte Programme (.BIN Datei) auf den ESP32/ESP8266 ohne Arduino IDE geladen werden

    Weiterlesen
    Lilygo TTGO ESP32 NEO6 GPS Board

    ESP32 TTGO GPS Inbetriebnahme

    • Video
    • DE/EN

    Das TTGO Board mit ESP32 und NEO 6M GPS Modul von UBLOX ermöglicht den Bau eines LoRa GPS Trackers. Inbetriebnahme und GPS Auswertung der GPS-Koordinaten

    Weiterlesen

    Social Media

    Werbung:


    Neue Artikel


    Events

    • Keine zukünftigen Events vorhanden