Bemerkung
Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.
Warum beitreten?
Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [ hier ] und treten Sie heute bei!
WiFi-gesteuerte LED (Access Point)
Dieses Projekt ermöglicht es Ihnen, eine LED über eine Web-Oberfläche zu steuern. Das Arduino-Board fungiert als WiFi-Zugangspunkt und erstellt sein eigenes lokales Netzwerk, mit dem Sie sich über einen Webbrowser verbinden können. Einmal verbunden, können Sie im Webbrowser die IP-Adresse des Geräts aufrufen, wo Sie Optionen finden, um eine LED (an Pin 13 des Boards angeschlossen) ein- und auszuschalten. Das Projekt bietet Echtzeit-Feedback über den LED-Status über den seriellen Monitor, was das Debuggen und Verstehen des Ablaufs der Operationen erleichtert.
1. Laden Sie den Code hoch
Öffnen Sie die Datei 01-wifi_ap.ino im Pfad elite-explorer-kit-main\r4_new_feature\01-wifi_ap oder kopieren Sie diesen Code in die Arduino IDE.
Bemerkung
Wi-Fi® wird über die integrierte WiFiS3-Bibliothek aktiviert, die mit dem Arduino UNO R4 Core geliefert wird. Die Installation des Cores installiert automatisch die WiFiS3-Bibliothek.
Sie müssen auch arduino_secrets.h erstellen oder bearbeiten, ersetzen Sie SECRET_SSID und SECRET_PASS durch den Namen und das Passwort Ihres WiFi-Zugangspunkts. Die Datei sollte enthalten:
//arduino_secrets.h header file
#define SECRET_SSID "yournetwork"
#define SECRET_PASS "yourpassword"
2. Code-Erklärung
Importieren erforderlicher Bibliotheken
Importieren der
WiFiS3-Bibliothek für Wi-Fi-Funktionalitäten undarduino_secrets.hfür sensible Daten wie Passwörter.#include "WiFiS3.h" #include "arduino_secrets.h"
Konfiguration und Variableninitialisierung
Definieren Sie WiFi-SSID, Passwort und Schlüsselindex sowie den LED-Pin und den WiFi-Status.
char ssid[] = SECRET_SSID; char pass[] = SECRET_PASS; int keyIndex = 0; int led = LED_BUILTIN; int status = WL_IDLE_STATUS; WiFiServer server(80);
Funktion
setup()Initialisieren der seriellen Kommunikation und Konfigurieren des Wi-Fi-Moduls.
void setup() { // ... setup code ... // Create access point status = WiFi.beginAP(ssid, pass); // ... error handling ... // start the web server on port 80 server.begin(); }
Wir überprüfen auch, ob die Firmware-Version von Uno R4 WiFi auf dem neuesten Stand ist. Wenn nicht, wird eine Aufforderung zum Upgrade angezeigt. Sie können Aktualisieren der Radio-Modul-Firmware auf Ihrem UNO R4 WiFi-Board für das Firmware-Upgrade konsultieren.
... String fv = WiFi.firmwareVersion(); if (fv < WIFI_FIRMWARE_LATEST_VERSION) { Serial.println("Please upgrade the firmware"); } ...
Sie möchten möglicherweise den folgenden Code ändern, um die Standard-IP von Arduino ändern zu können.
WiFi.config(IPAddress(192,48,56,2));
Hauptfunktion
loop()Die Funktion
loop()im Arduino-Code führt mehrere Schlüsseloperationen aus, insbesondere:Überprüfen, ob ein Gerät sich mit dem Zugangspunkt verbunden oder getrennt hat.
Abhören von eingehenden Clients, die HTTP-Anfragen stellen.
Lesen der Clientdaten und Ausführen von Aktionen basierend auf diesen Daten – wie das Ein- oder Ausschalten einer LED.
Hier zerlegen wir die Funktion
loop(), um diese Schritte verständlicher zu machen.Überprüfen des WiFi-Status
Zuerst überprüft der Code, ob sich der WiFi-Status geändert hat. Wenn sich ein Gerät verbunden oder getrennt hat, wird die Information entsprechend auf dem seriellen Monitor angezeigt.
if (status != WiFi.status()) { status = WiFi.status(); if (status == WL_AP_CONNECTED) { Serial.println("Device connected to AP"); } else { Serial.println("Device disconnected from AP"); } }
Abhören von eingehenden Clients
WiFiClient client = server.available();wartet auf eingehende Clients.WiFiClient client = server.available();
Behandlung von Clientanfragen
Lauscht auf eingehende Clients und liefert ihnen die HTML-Webseite. Wenn ein Benutzer auf den Link „Hier klicken, um die LED einzuschalten“ oder „Hier klicken, um die LED auszuschalten“ auf der bereitgestellten Webseite klickt, wird eine HTTP-GET-Anfrage an den Arduino-Server gesendet. Speziell werden die URLs „http://yourAddress/H“ zum Einschalten der LED und „http://yourAddress/L“ zum Ausschalten aufgerufen.
WiFiClient client = server.available(); if (client) { // ... client.println("HTTP/1.1 200 OK"); client.println("Content-type:text/html"); client.println(); client.print("<p style=\"font-size:7vw;\">Click <a href=\"/H\">here</a> turn the LED on<br></p>"); client.print("<p style=\"font-size:7vw;\">Click <a href=\"/L\">here</a> turn the LED off<br></p>"); // ... }
Der Arduino-Code lauscht auf diese eingehenden GET-Anfragen. Wenn er am Ende einer eingehenden Textzeile (HTTP-Header)
GET /Herkennt, setzt er die mit Pin 13 verbundene LED auf HIGH und schaltet sie somit ein. Ähnlich wird die LED auf LOW gesetzt und somit ausgeschaltet, wennGET /Lerkannt wird.while (client.connected()) { // loop while the client's connected delayMicroseconds(10); // This is required for the Arduino Nano RP2040 Connect - otherwise it will loop so fast that SPI will never be served. if (client.available()) { // if there's bytes to read from the client, char c = client.read(); // read a byte, then Serial.write(c); // print it out to the serial monitor if (c == '\n') { // if the byte is a newline character ... } else { // if you got a newline, then clear currentLine: currentLine = ""; } } else if (c != '\r') { // if you got anything else but a carriage return character, currentLine += c; // add it to the end of the currentLine } // Check to see if the client request was "GET /H" or "GET /L": if (currentLine.endsWith("GET /H")) { digitalWrite(led, HIGH); // GET /H turns the LED on } if (currentLine.endsWith("GET /L")) { digitalWrite(led, LOW); // GET /L turns the LED off } }
Referenz