WiFi-LED-Steuerung mit ESP8266
Das Beispiel zeigt, wie Sie mit Arduino Daten über die Website an das ESP8266-Modul senden. Das Programm steuert die an die Arduino-Platine angeschlossenen LEDs.
Das Beispiel verwendet die folgenden Elemente:
- Arduino Uno
- Das Modul basiert auf dem ESP8266-System , zB ESP-01
- LED-Dioden
- Widerstände
- Steckbrett und Drähte
- Ein Computer, der mit einer WiFi-Karte ausgestattet ist
Verbinden von ESP-01 mit Arduino
Die serielle UART-Schnittstelle wird für die Kommunikation zwischen dem WiFi-Modul auf Basis des ESP8226-Systems und dem Arduino-Board verwendet. In diesem Fall wird seine Softwareversion verwendet, der Hardware-UART, d. h. die Pins 1 und 0, bleiben dem Benutzer zur Verfügung. Die Systeme sollten z.B. mit Buchse-Stecker-Kabeln wie folgt verbunden werden:
Stift ESP8266 | Arduino-Stift |
---|---|
Tx | 2 |
Empfang | 3 |
Vcc | 3,3 V |
CH_PD | 3,3 V |
Masse | Masse |
Die LEDs sollten über einen Widerstand, der den Diodenstrom begrenzt , mit den Pins 11, 12 und 13 des Arduino verbunden werden. Sein Wert bestimmt die Helligkeit der LED-Diode, ein zu niedriger Widerstand kann die Diode beschädigen, bei einem zu hohen Widerstand leuchtet sie nicht. Wir empfehlen einen Widerstandswert im Bereich von 220 Ω bis 1,5 kΩ zu wählen.
Programm für Arduino
Im Beispiel wurde folgender Code verwendet:
#include// Aufnahme der Bibliothek zur Unterstützung der Software-UART-Schnittstelle SoftwareSerial esp01 (2,3); // Software-UART-Schnittstelle initialisieren: 2-RX (mit ESP-Modul Tx verbinden); 3-TX (Verbindung zum Rx ESP-Modul) Void-Setup () { Serial.begin (9600); // Initialisierung der Hardware-UART-Schnittstelle bei 9600 bps - für die Kommunikation mit dem Computer über USB esp01.begin (9600); // Initialisierung der Software-UART-Schnittstelle bei 9600 bps - für die Kommunikation mit dem ESP-Modul PinMode (11, AUSGANG); // Pin 11 als Eingang für LED Nr. 1 einstellen digitalWrite (11, NIEDRIG); // Pin 11 Low-Status geben - Diode 1 ist standardmäßig ausgeschaltet PinMode (12, AUSGANG); // Setzen des Pins 12 als Eingang für die LED Nr. 2 digitalWrite (12, NIEDRIG); // Pin 12 Low-Status geben - Diode 2 ist standardmäßig ausgeschaltet PinMode (13, AUSGANG); // Setzen des Pins 13 als Eingang für die LED Nr. 3 digitalWrite (13, NIEDRIG); // Pin 13 niedrigen Status geben - LED 3 ist standardmäßig ausgeschaltet // Initialisierungsbefehle für das ESP-Modul senden sendData ("AT + RSTrn", 2000); // Modul zurücksetzen sendData ("AT + CWMODE = 2yrn", 1000); // im Access Point-Modus eingerichtet sendData ("AT + CIFSRrn", 1000); // eine IP-Adresse erhalten (Standard 192.168.4.1) sendData ("AT + CIPMUX = 1rn", 1000); // Mehrfachverbindungsmodus aktivieren sendData ("AT + CIPSERVER = 1,80rn", 1000); // setze den Server auf Port 80} void loop () {if (esp01.available ()) // prüfe, ob das Modul die Daten empfangen hat {if (esp01.find ("+ IPD,")) {delay (1000) ; // warten, bis der Puffer mit Daten gefüllt ist // Verbindungs-ID lesen int connectionId = esp01.read () - 48; // ASCI-Wert lesen: 48 subtrahiert, weil read() ASCII-Dezimalwert an Position 48 zurückgibt esp01.find ("pin ="); // suchen Sie nach dem Ausdruck "pin =" und platzieren Sie den "Cursor" dort int pinNumber = (esp01.read () - 48) * 10; // erhalte die erste Ziffer, z. B. für Pin 13, die erste Ziffer ist 1, multipliziere sie mit 10 pinNumber + = (esp01.read () - 48); // holen Sie sich die zweite Ziffer, zB für Pin 13, die zweite Ziffer ist 3, addieren Sie sie zum vorherigen Ergebnis digitalWrite (pinNumber,! digitalRead (pinNumber)); // Status des ausgewählten Pins ändern // Verbindung schließen String closeCommand = "AT + CIPCLOSE ="; closeCommand + = Verbindungs-ID; // Verbindungs-ID zuerst lesen closeCommand + = "rn"; sendData (closeCommand, 1000); // sende den Verbindungsabbaubefehl}}} / * * Funktion, die Befehle an das ESP01-Modul sendet * Parameter: * Befehl - zu sendender Befehl * timeout - Zeitüberschreitung für die Antwort * / String sendData (String-Befehl, const int timeout) {String Antwort = ""; esp01.print (Befehl); // Befehl an ESP01 senden long int time = millis (); while ((time + timeout)> millis ()) {while (esp01.available ()) // Wenn Daten vom Modul vorhanden sind, werden sie gelesen {char c = esp01.read (); // die nächste Zeichenantwort lesen + = c; }} Serial.print (Antwort); Rückantwort; }
Holen Sie sich den Code für Arduino
HTML-Code zum Senden von Daten
Kopieren Sie den folgenden Code und verwenden Sie beispielsweise das System Notepad, speichern Sie ihn mit der Erweiterung .html.
|