LoRa Packet Forwarder JSON Daten
25.12.2024
Elektronik | Funk | Software
Der Technik-Blog
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.
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.
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.
#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>"); }
Mit dem Flash Download Tool können fertig exportierte Programme (.BIN Datei) auf den ESP32/ESP8266 ohne Arduino IDE geladen werden
WeiterlesenDas 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
WeiterlesenAEQ-WEB © 2015-2024 All Right Reserved