Maschinensteuerung über WLAN mit ESP8266 NODEMCU. Anschlussmerkmale Wi-Fi-Modul ESP8266 nach Arduino

Firmware, Updates, Updates und andere Daten durch Löten von Eisen und Drähten übertragen - nicht die beste Lösung für Arduino. Mikrocontroller für Arduino Wi-Fi sind jedoch nicht niemand, und es gibt nicht immer den Bedarf an ihnen, warum Benutzer sie bevorzugen, sie in ihren Projekten ohne Notwendigkeit zu verwenden.

Das nächste chinesische Produkt erhielt jedoch den Markt, Wi-Fi Jammer ESP8266 kann an der Arduino-Board oder einem anderen System angehängt werden, und Sie erhalten erhalten stabile Verbindung mit einer Reihe anderer Vorteile. Lassen Sie uns also mit Arduino Uno Wi-Fi umgehen, und ob es sich lohnt, dieses Modul zu kaufen, und auch, dass es tatsächlich einen ähnlichen Mikrocontroller auf Wi-Fi-Arduino darstellt.

Nun sorgen der größten Teil der Benutzer Arduino nicht mehr Sorgen um den Preis dieser Geräte, obwohl ein weiteres 3-jähriges Arduino-Wi-Fi-Modul als Luxus betrachtet wurde. All dies dank der Wi-Fi-Jammer ESP8266, deren Hersteller perfekt auf den Markt eingeführt wurden neues Produktdas sich auf seine Funktionalität betrifft und gleichzeitig recht billig ist, was einen wesentlichen Beitrag leistete und den Wettbewerb in diese Richtung ergab.

So wird das Arduino Wi-Fi ESP8266 nun als das erschwinglichste Modul auf dem Markt als auch all seinen Kerl betrachtet. Der Preis auf Fremdseiten beginnt also von 2 Dollar, wodurch Pakete, um diese Module zu erwerben, und nicht tausend Mal reflammt, um die Kontakte umzuführen, um die Leistung aufrechtzuerhalten.

Zuerst dieses Wi-Fi Das Arduino-Modul wurde verwendet, hauptsächlich als Arduino-Wi-Fi-Shield, da es die billigste Option war und den ursprünglichen nicht gerütigt hatte. Das Gerät ist wirklich praktisch legendär, denn, wann keine gewichtigen Minuten für seine Kosten nicht gefunden werden. Es gibt viele Bibliotheken, einschließlich des Benutzers, und unterstützt auch die Arbeiten durch serielle Reifen und das einfachste im und im + -Tamm-Team. Dank dieser, keine Semantik berüchtigt C99, da es häufig mit anderen Mikrocontroller von Drittanbietern passiert, nicht studieren.

Dementsprechend wird selbst der Neuankömmling über Sekunden herausfinden, und der Fachmann kann geerntete Bibliotheken anwenden. Andere Vorteile sind:

  1. Der Prozessor beträgt 160 MHz, es ist jedoch 32-Bit, was einen gewissen Aufdruck der Leistung auferlegt. Es lohnt sich jedoch, daran zu erinnern, dass das Modul immer noch in einem Bündel mit Arduino-Boards verwendet wird, die sich selbst hohe Frequenzen schneiden und die meisten der für das unbekannten Ressourcen essen.
  2. Der Hersteller, der das Wi-Fi-Modul ESP8266 veröffentlicht hat, interessante Projekte wurden dies nicht beendet, und jetzt gibt es eine ganze Reihe von Mikrocontrollers überprüfter Qualität.
  3. Moderne Netzwerkschutzstandards. Natürlich sind WPA und WPA2 seit langem nicht so sicher, wie wir möchten, aber ihre Anwesenheit kann sich nicht in einem solchen billigen Controller freuen.
  4. 16 Ausgangsanschlüsse, einschließlich 10-Bit, So können Sie mit der Tafel experimentieren.

Noch wichtiger ist, dass der dauerhafte Speicher von bis zu 4 Megabyte je nach Art der Platine von der Box auf Sie wartet, und dies vereinfacht die Arbeit mit großen Bibliotheken und sogar in einigen Mediendateien. Immerhin gelten auf den meisten Arduino-Boards und 1 Megabytes als unvollständiger Luxus.

Die Merkmale des ESP8266 Wi-Fi werden sicherlich bitte, insbesondere im Vergleich zu seinen teureren Wettbewerbern, aber der Benutzer, der zuvor mit diesen Gebühren nicht mehr Erfahrung hatte, ergibt sich die Frage, wie Sie es verbinden können. Tatsache ist, dass das Modul viel mehr Pins hat als diejenigen, die zum Sehen der Neuankömmlinge verwendet werden, und dementsprechend beginnt die Panik. Wenn Sie jedoch die Situation verstehen, gibt es dabei nichts kompliziert. Vollstrumpf und Löten von Eisen und Lesen Sie einfach die Anweisungen.

So verbinden Sie das Wi-Fi-Modul in Arduino

Schauen wir uns die Verbindung von ESP8266 ESP 12E an und was ist ESP8266 wi-Fi-Brücke UART. Immerhin ist es die Verbindung und Konfiguration des Moduls, das die meisten Fragen verursacht.


Entscheiden Sie zuerst welche Version des Mikrocontrollers in Ihren Händen. In der ersten, LEDs sind die LEDs in die Nähe von Pins eingebettet, und auf dem zweiten, das vor kurzem zu produzieren begann, sind die Signallichter in der Nähe der Antenne.

Bevor Sie die Verbindung herstellen, sollten Sie laden letzte FirmwareSo können Sie den Wechselkurs von Paketen bis zu 9600 Informationseinheiten pro Sekunde erhöhen. Und wir überprüfen die Verbindung über das USB-TTL-Kabel und das entsprechende Terminal von coolterm.


Pins zum Anschließen des obigen Kabelstandards, aber das Lebensmittel geht mit einem 3,3-Spannungs-IDus mit Arduino durch. Es ist wichtig, daran zu erinnern, dass die maximale Festigkeit des Stroms besteht, es ist nicht möglich, 150 mA zu setzen, und ESP8266 ESP 07 und ESP8266 Witty Cloud Wi-Fi-Modul für Arduino benötigen 240 mA.

Wenn jedoch keine andere Stromquelle vorhanden ist, können Sie die Standardversion von Arduino verwenden, aber die Boost-Macht leidet jedoch. Obwohl mit keiner starken Last, genug und 70 mA, auf plötzliche Neustarts des Mikrocontrollers in den Spitzenpunkten der Last vorbereitet und die Software schreibt, sodass er gefiltert und die Dateien brach, ohne die Platine überlastet zu werden.


Eine andere Verbindung ist unten. Wichtig - RX-TX-Kontakte sind mit dem Fadenkreuz verbunden. Da die Signale des ESP8266 3.3b-Moduls und der Arduino 5b einen Widerstandsspannungsteiler verwenden müssen, um den Signalpegel umzuwandeln.

Wir registrieren Wi-Fi-Modul in Arduino

Wie Sie wissen, können Sie mit der richtigen Erfahrung mit einem Smartphone mit dem ESP8266 EX 12E mit einem Smartphone übereinstimmen, aber die Neuankömmlinge und die Registrierung von ESP8266 ESP 12 im Arduino-System verursachen Schwierigkeiten. In der Tat reicht es aus, das Modul anzuschließen und seine Leistung zu überprüfen, wobei mehrere Standards an Befehlen durch das Debug-Menü werfen.

Sie können beispielsweise Blinken mit einer regulären LED (für das Verbindungsschema oben) hinzufügen:

#Define TXD 1 // gpio1 / txd01 void setup () (PINMode (TXD, Ausgang);) Void-Loop (digitalwrite (TXD, hoch); Verzögerung (1000); Digitalwrite (TXD, Niedrig); Verzögerung (1000) ;)

Sobald die Gebühr bestätigt, dass er einen Mikrocontroller im System sieht, können Sie mit ihm volle Arbeit beginnen. Es ist jedoch erwähnenswert, dass, wenn das Arduino-Board selbst im Projekt verwendet wird, nur um diesen Controller zu verbinden - es ist irrational.

Ein USB-UART-Konverter reicht aus, da der ESP8266 das "Gehirne" von Arduino nicht verwendet, und reicht für seinen Flash-Speicher aus, um das Paar von Basisbibliotheken und Firmware zu speichern. Dementsprechend gibt es keinen Punkt in der Ausgabe auf einer Tochtergesellschaft, wenn Sie einfach auf den Konverter und den weiteren Einsatz im Projekt fallen können. Gleichzeitig, indem Sie die Hilfsnetzteile anschließen und sich nicht sorgen, dass die Daten aufgrund des Mangels an Macht des Systems auf den verantwortungsvollsten Moment übertragen werden.

Wichtige Bemerkung! Laden Sie für die letzte Skizzekreis in Arduino wie üblich, aber da das ESP8266-Modul jedoch mit den Kontakten 0 und 1 verbunden ist, wird die Programmierung unmöglich. Der Compiler zeigt einen Fehler an. Trennen Sie die Drähte, die in ESP8266 von den Kontakten 0 und 1 gehen, die Programmierung vornehmen, und geben Sie die Kontakte an den Ort zurück und klicken Sie auf die Schaltfläche Zurücksetzen in Arduino.

Guten Tag!

Kürzlich an der Idee der Erstellung interessiert " intelligentes Zuhause" Seitdem aus den erforderlichen Bauteilen in meiner Verfügung, bisher nur Arduino und das Telefon auf Android, wurde beschlossen, mit der Erstellung eines Bedienfelds und seiner Verbindung mit dem Rest des Systems zu beginnen.

Meine Vision des Systems sieht so aus:

Ich denke, es lohnt es sich, die Heim- und Webserver zu kombinieren, einen statischen Aypishnik zu kaufen, aber zum ersten Mal wird es heruntergefahren. Beginnen wir mit einem einfachen - lernen, die LED und das LCD-Display remote zu steuern.

Webserver
Erstellen Sie auf einem Webserver eine Datenbank mit zwei Tabellen - LEDs und Texten. Die LEDs-Tabelle enthält 2 Felder - ID und Status. Es enthält einen Eintrag mit dem tatsächlichen Zustand der LED. Tabellenstexte enthält 2 Felder - ID und Text. Es enthält auch einen Eintrag mit dem Text, der derzeit auf der LCD-Anzeige angezeigt wird.

Schreiben Sie nun ein paar Skripts, die vom Telefon anrufen und Informationen für die Datenbank übertragen. Wir schreiben auf PHP.

LED.php-Skript (LED-Steuerung):

Msg.php-Skript (LCD-Anzeige):

Ich denke, dass es aus den Kommentaren klar ist, wie diese Skripts funktionieren. Das ist alles, was auf dem Webserver ist. Wir wenden sich jetzt an den Home-Server (oder einfach einfacher, wobei der Computer, an den Arduino angeschlossen ist).

Home Server.
Es wird ständig das Programm bearbeiten (Sie können es sogar anrufen - einen Daemon), senden Sie Anfragen an die Datenbank und wenn die Informationen dort geändert werden, sendet den entsprechenden Befehl an den COM-Anschluss mit Arduino. Das Programm wird in der Verarbeitung schreiben:

Importieren von Verarbeitung.Serial. *; //-Bibliothek für das Arbeiten mit dem COM-Port Import de.bezier.data.sql. *; //-Bibliothek für die Arbeit mit MySQL Serial Port-Datenbank; MySQL dbconnection; INT PREVEDSATE \u003d 0; // Vorheriger Status der String Prevs \u003d "" LED; // Vorheriger Text, niedergedrückt auf dem VOID-Setup () LCD-Display (Port \u003d Neuer seriell (dies, "COM4", 9600); // Initialisieren COM-Port 4 (Arduin wird nicht ausgelöst), Wechselkurs ist 9600 Bode-Port. Pufferweit ("\\ n"); String-Benutzer \u003d "Benutzername"; String Pass \u003d "Passwort"; String-Datenbank \u003d "name_bd"; dbconnection \u003d new mysql (dies, "your_domen.ru", Datenbank, Benutzer, Pass); / / Verbinden Sie sich mit dbconnection.connect-Datenbank;) Void Draw () (// Befolgen Sie die Informationen über die LED in der dbconnection.query-Datenbank ("Select * aus LEDs, in der ID \u003d" 1 "); // eine Anforderung an die LEDs-Tabelle erstellen (dbconnection.next ()) // Vergleichen Sie das Beispiel aus dem Abfrageergebnis ("Status"); // Erhalten Sie den Wert aus dem Status, wenn Feld (n! \u003d VorherigeState) //, wenn er sich im Vergleich zum vorherigen Takte geändert hat "des Programms, dann einen Befehl an den COM-Anschluss (Hervor ausgedehntState \u003d n; port.write (" 1 "); // Das erste sendete Symbol bedeutet der Code des Betriebs: 1 - LED-Steuerung, 2 - LCD-Steuerung lem port.write (n); )) // Uhren auf Informationen zum LCD-Display in dbconnection.Query-Datenbank ("Select * aus Texten, in der ID \u003d" 1 "); // Wir erstellen eine Anfrage an die Texte während der Tabelle (dbconnection.next ()) // Vergleichen Sie ein Beispiel aus dem Abfrageergebnis (String s \u003d dbconnection.getString ("Text"); // Erhalten Sie den Wert aus dem Text, wenn Feld angezeigt wird (S! \u003d Prevs) (prevs \u003d s; port.write ("2"); port.write (s);)) Verzögerung (50); // eine Verzögerung von 50 ms vornehmen, um die Anforderungen nicht kontinuierlich zu senden)
Ich werde diesen Code auch nicht erklären, alles ist so verständlich.
1 mehr wichtiger Moment. Damit das Programm von unserem Computer an die Datenbank wenden könnte remote-ServerEs ist notwendig, es zu lösen. Wir betreten unsere IP in die Liste der erlaubten Liste:

Telefonanwendung
Ich habe ein Telefon Android, denn er und schreibe. Ich werde nicht sehr in die Details gehen (sehr gut (sehr gut wie die Installation der Programmierumgebung und das Schreiben der ersten Anwendung ist hier in diesem Artikel - Link).

Das Erscheinungsbild des Antrags sieht ziemlich bescheiden aus, aber in diesem Fall ist es nicht wichtig:

Ich werde nur Passagen des Android-Codes geben. Die Funktion, die das Skript ruft, das die LED steuert:
Public Void Changeled () (versuchen (URL URL1 \u003d neue URL ("http: //vash_domom.s/led.php"); httpurlconnection url1.openconnection (); Versuchen Sie (InputStream in \u003d neuer Pufferedinputstream (URLConnection .getinputstream () );) Endlich (urlconnection.disconnect ();)) fang (Ausnahme e) ())
Funktion Senden von Text, um auf dem LCD-Display anzuzeigen:
Public void Submissionsg () (Final EDITTEXT TT \u003d (EDITTENT) FindViewByID (R.ID.EDITTEXT1); VERTRY (URL URL1 \u003d NEUE URL ("http: //vash_domen.ru/msg.php? Msg \u003d" + TT.GetText) ()); Httpurlconnection urlconnection \u003d (httpurlconnection) url1.openconnection (); versuchen (Eingangstream in \u003d neuer Pufferedinputstream ());) schließlich (urlconnection.disconnect ();)) Fang (Ausnahme e) ())
Nun, die Hauptfunktion, in der es eine Bindung von Ereignishandlern zu den Tasten gibt:
Öffentliche Leere Oncreate (super.oncreate (savedinstancestate); setcontentView (R.Layout.Main); Endtaste BTN1 \u003d (Button) FindViewByID (R.ID.Button1); BTN1.SetonClickListener (neuer Button.onclickListener () (Ansicht V) // Klicken Sie auf die Schaltfläche (wechselt ();)); Final-Taste BTN2 \u003d (Button) FindViewByID (R.ID.Button2); BTN2.SetonClickListeer (neuer Button.onclickListener () (Public Level OnClickLick (View V) // Klicken Sie auf die (Submissionsg ();))););););
Und ein weiterer wichtiger Punkt ist es, die Erlaubnis der Anwendung in das Internet hinzuzufügen. Dazu ist die androidmanifest.xml-Datei (es ist in den Verzeichnissen unserer Android-Anwendung) Sie müssen eine Zeile hinzufügen:

Wir exportieren unsere Anwendung in datei apk. Und installieren Sie am Telefon. Schalttafel intelligentes Zuhause bereit!

Arduino.
Nun, schließlich ist der letzte, aber nicht nach Wert die Verbindung von Arduino und seiner Firmware. Der LCD-Bildschirm und die LED-Schaltung an der Arduino-UNO-LED sehen so aus:

Der Widerstand nimmt 220 Ohm. Sie können hier mehr lesen, um den LCD-Bildschirm hier anzuschließen - Link

Aber wie alles in Wirklichkeit sieht:

Wahr schön?

Die Aufgabe von Arduino hört darauf, dass das Dämonprogramm auf home Server. Sendet an den COM-Anschluss, an den Arduino angeschlossen ist (obwohl die Verbindung eigentlich über ein USB-Kabel läuft, der Computer jedoch als serielle Anschluss erkennt). Nach Erhalt von Daten vom Computer erkennt der Controller auf dem ersten Zeichen der übertragenen Informationen den Befehlscode (d. H. Nun, der jetzt verwaltet werden soll - das LCD-Display oder die LED). Weiter, abhängig vom Code und den folgenden Informationen, erfolgt er entweder ein- / aus der LED oder der Ausgabe an die angezeigte Nachricht. Also, hier ist der eigentliche Code:

#Einschließen. // Eingebaute Bibliothek zur Arbeit mit der LCD-Anzeige boolean iSexecuting \u003d FALSE; // Eine Variable, die widerspiegelt, dass es bereits ein Befehl einiger Befehl // Caspusa gibt, erklärt, warum es notwendig ist. Für jeden "TACT" -Rop-Cycle liest Arduino den Code eines Symbols aus dem COM-Anschluss. // Daher wird die Zeichenfolge für mehrere Uhren übertragen. Zur gleichen Zeit vor jedem der beiden mögliche Teams. (Ändern des Status der LED- und Textübertragung an das Display) // Gibt den Code dieses Befehls (1 bzw. 2) an. Um die Befehlscodes von den übertragenen weiteren Informationen (LED- oder Textstatus für das Display) zu trennen, wird // diese Variable verwendet. Liquidechstal LCD (4,5,10,11,12,13); // Anzeige initialisierung int ledpin \u003d 8; // Nummer Pina Arduino, auf die die INT PREVEDStatus \u003d 0-LED angeschlossen ist; // Vorheriger LED-Status (EIN / AUS) int NewledStatus \u003d 0; // neuer Status LED int cmd \u003d 0; // Code des VOID-Setup () (Serial.Begin (9600) Befehl (9600); // COM-Port-Initialisierung (9600 - Bodache-Wechselkurs) PINMode (LEDPIN, Ausgang); // Initialisierung des 8. Pina Arduino als LCD-Ausgang. Beginn (20.4); // Initialisierung des LCD-Displays (4 Zeilen von 20 Zeichen)) Void-Loop () (wenn (seriell.Vailable ()\u003e 0) // Wenn einige Informationen an den COM-Anschluss kamen (wenn (iSexeCUTING \u003d\u003d FALSE) // Wenn im Moment kein Befehl ausgeführt wird (cmd \u003d serial.wesene () - "0"; // Lesen Sie den Code des ISEXECUTING \u003d TRUE-Befehls, // Nun zeigt die Variable, dass die Ausführung anzeigt des Befehls begann (CMD \u003d\u003d 1) // LED-Steuerung (CMD \u003d\u003d 1) // serial.Lead (); // Lesen Sie den neuen Status der IF LED (NewledStatus! \u003d prevledstatus) // Wenn sich geändert hat Verglichen mit dem aktuellen Status, dann den aktuellen Status ändern (DigitalWrite (LEDPIN, Fresserstatus); PrevledStatus \u003d Fresserstatus;)) else // Anzeigesteuerung (if (iSexecuting \u003d\u003d false) // Wenn derzeit nicht ging Ich bin jedes Team (lcd.clear (); // den Bildschirm reinigen) else (lcd.print (char) serial.wesene ()); // das Symbol auf dem Display anzeigen))) anders // Wenn keine Informationen an den COM-Anschluss gekommen sind (Verzögerung (50); // Wir erstellen eine Verzögerung von 50 ms, wenn (seriell.Verfügbare ()<= 0) //если информации по-прежнему нет isExecuting = false; //считаем, что никакая команда не выполняется } }
Ich denke, er braucht keine Erklärung, da ich alles in den Kommentaren ausführlich gemalt habe. Das einzige, was darauf hingewiesen werden sollte, ist einige Einschränkungen für die zur Anzeige übertragenen Linien. Sie sollten keine Räume enthalten (diese Einschränkung wird durch die Unvollkommenheit meines Algorithmus auferlegt) und sollte nicht kyrillisch enthalten (da es nicht von allen Anzeigen unterstützt wird, und wenn sie unterstützt wird, erfordert er die Übertragung von Symbolcodes in seiner eigenen Kodierung, Stellen Sie Zeichen um, in die es keinen Wunsch gibt).

Fazit
Das ist es. Es stellte sich heraus, dass es ziemlich einfach ist.
Das Video, wie alles funktioniert:

Der ESP8266-Chip ist eines der beliebtesten Tools für die Organisation der drahtlosen Kommunikation in den Projekten eines Smart Home. Mit einem drahtlosen Controller können Sie die Kommunikation über WiFi-Schnittstelle organisieren, die Arduino-Projekte zur Verfügung stellen, um auf das Internet zuzugreifen, und die Fähigkeit zur Fernbedienung und Datenerhebung. Basierend auf ESP8266 werden solche beliebten Boards als Wemos und Nodemcu erstellt, sowie eine große Anzahl hausgemachter Projekte. In diesem Artikel lernen wir von Ihnen ESP82266, den es seine Sorten gibt, wie Sie mit ESP8266 in der ärrigen IDE arbeitet.

ESP8266 ist ein WLAN-Mikrocontroller, der die Möglichkeit hat, Programme aus dem Flash-Speicher auszuführen. Das Gerät wurde 2014 vom chinesischen ESPRESSIF veröffentlicht und wurde fast sofort beliebt.

Der Controller ist kostengünstig, hat eine kleine Anzahl externer Elemente und hat die folgenden technischen Parameter:

  • Unterstützt Wi-Fi 802.11 B / G / N-Protokolle mit WEP, WPA, WPA2;
  • Besitzt 14 Ein- und Ausgabeanschlüsse, SPI, I2C, UART, 10-Bit-ADC;
  • Unterstützt den externen Speicher bis zu 16 MB;
  • Erforderliche Stromversorgung von 2,2 bis 3,6 V, Verbrauchsstrom bis zu 300 mA je nach ausgewählten Modus.

Ein wichtiges Merkmal ist das Fehlen eines nichtflüchtigen Anwenderspeichers auf dem Kristall. Das Programm wird aus dem externen SPI-ROM mit der dynamischen Belastung der erforderlichen Programmelemente ausgeführt. Der Zugriff auf die interne Peripherie kann nicht aus der Dokumentation erhalten werden, sondern von der API des Bibliothekseteils. Der Hersteller weist auf die ungefähre RAM - 50 KB an.

Features ESP8266 Gebühr:

  • Bequeme Verbindung zu einem Computer - über das USB-Kabel, das davon angetrieben wird;
  • Das Vorhandensein eines eingebauten Spannungswandlers 3.3V;
  • Verfügbarkeit von 4 MB Flash-Speicher;
  • Eingebaute Schaltflächen zum Neustart und Blinken;
  • Alle Anschlüsse werden auf den Füßen an zwei Kämmen mit einem Abstand von 2,5 mm entfernt.

ESP8266-Modulanwendungen.

  • Automatisierung;
  • Verschiedene Systeme für Smart Home: Drahtlose Steuerung, drahtlose Buchsen, Temperatursteuerung, Zugabe von Signalsystemen;
  • Mobile Electronics;
  • Label-ID;
  • Kinderspielzeug;
  • Mesh-Netzwerk.

Pickup ESP8266.

Es gibt eine große Menge an Sorten des ESP8266-Moduls. Die Figur zeigt einige von ihnen. Die beliebteste Option ist ESP 01.

Die Ausführung des Programms ist erforderlich, um die Zustände der Ports GPIO0, GPIO2 und GPIO15 einzustellen, wenn die Stromversorgung endet. 2 Wichtige Modi können hervorgehoben werden - wenn der Code aus dem UART (gpio0 \u003d 0, gpio2 \u003d 1 und gpio15 \u003d 0) ausgeführt wird (GPIO0 \u003d 0), um die Flash-Karte zu blinken und beim Ausführen aus dem äußeren ROM (gpio0 \u003d 1, gpio2 \u003d 1 und gpio15 \u003d 0) im regulären Modus.

Die PINOUT für das ESP01 ist auf dem Bild dargestellt.

Kontaktbeschreibung:

  • 1 - Erde, 8 - Mahlzeiten. Durch die Dokumentation wird die Spannung an 3,6 V geliefert - es ist wichtig, wenn Sie mit Arduino arbeiten, auf dem 5 V.
  • 6 - RST, ist erforderlich, um den Mikrocontroller neu zu starten, wenn der niedrige logische Niveau eingereicht wird.
  • 4 - CP_PD, auch zum Übersetzen des Geräts in den Energiesparmodus.
  • 7 und 0 - RXD0 und TXD0 Dies ist eine Hardware-UART, die zum Blinken des Moduls erforderlich ist.
  • 2 - TXD0, die LED ist mit diesem Kontakt verbunden, der mit einem niedrigen Logikpegel auf gpio1 und beim Übertragen von Daten an das UART leuchtet.
  • Mit 5 - GPIO0, Ein- und Ausgangsport können Sie auch das Gerät in den Programmiermodus übersetzen (beim Anschließen des Ports mit einem niedrigen logischen Pegel und Spannungsversorgung).
  • 3 - GPIO2, Eingangsport und Ausgabe.

Pickup ESP-12

Hauptunterschiede Arduino von ESP8266

  • ESP8266 hat eine größere Menge an Flash-Speicher, während ESP8266 keinen nichtflüchtigen Speicher hat;
  • ESP8266-Prozessor schneller als Arduino;
  • Das Vorhandensein von Wi-Fi in ESP8266;
  • ESP8266 verbrauchen mehr aktuell als für Arduino;

Programmierung ESP8266 in der Arduino-IDE

Das ESP8266-Entwickler-Software-Kit enthält:

  • Compiler von GNU Compiler Collection-Paket.
  • Bibliotheken, WLAN-Stapel von WLAN, TCP / IP-Protokollen.
  • Information Download-Tool im Controller-Programm.
  • Betriebsjungen.

Zunächst werden die ESP8266-Module mit der Firmware des Herstellers geliefert. Damit können Sie das Modul von einem externen Mikrocontroller steuern, um die Arbeit mit Wi-Fi als Modem zu implementieren. Es gibt auch viele andere fertige Firmware. Einige von ihnen ermöglichen es Ihnen, den Betrieb des Moduls mithilfe der Weboberfläche anzupassen.

Sie können von der Arduino-IDE-Umgebung programmieren. Wenn es geholfen wird, können Sie leicht Skizzen schreiben und sie in ESP8266 herunterladen, um ESP8266 zu blinken, während das Arduino-Board selbst erforderlich ist. Arduino-IDE unterstützt alle Arten von ESP8266-Modulen.

Derzeit können Sie für ESP8266 folgende Funktionen implementieren:

  • Die Hauptfunktionen der Verdrahtungssprache. Sie können GPIO-Ports auf dieselbe Weise wie Pins auf Arduino-Board steuern: Pinmode, DigitalDead, DigitalWrite, Analogwrite. Mit dem Befehl AnalloGread (A0) können Sie die ADC-Werte zählen. Mit dem Befehl Analogwrite (PIN, VALUE) können Sie den PWM an der gewünschten GPIO-Ausgabe anschließen. Mit Wert \u003d 0 ist das PWM ausgeschaltet, der Maximalwert erreicht eine Konstante von 1023. Mit dem Attachinterrupt-Funktionen kann AetReTRUPT auf einem beliebigen GPIO-Anschluss mit Ausnahme von 16 unterbrochen werden.
  • Timing und Verzögerung. Verwenden von Millis- und MicroS-Befehlen können Sie MS und ISS zurückgeben, die seit dem Start bestanden haben. Verzögerung ermöglicht Ihnen, die Ausführung des Programms zur richtigen Zeit anzuhalten. Die Funktion der Verzögerung (...) ermöglicht es Ihnen, den normalen Wi-Fi-Betrieb beibehalten, wenn große Elemente in der Skizze vorhanden sind, die mehr als 50 ms durchgeführt werden. Ausbeute () ist ein Analogon der Verzögerungsfunktion (0).
  • Seriell und seriell1 (UART0 und UART1). Serielle Arbeit an der ESP8266 ähnelt der Arbeit auf dem Arduino. Erfassung und Lesen der Datenblockcodeausführung Wenn das FIFO 128 Bytes beträgt und der Softwarepuffer für 256 Bytes gefüllt ist. Das serielle Objekt genießt Hardware UART0, Sie können Pins GPIO15 (TX) und GPIO13 (RX) anstelle von GPIO1 (TX) und GPIO3 (RX) einstellen. Um dies zu tun, nach der serial.begin () -Funktion; Sie müssen serial.swap (); anrufen. In ähnlicher Weise verwendet serielle1 UART1, die auf der Übertragung läuft. Erforderliche Pin für diesen GPIO2.
  • Makro Progmem. Seine Arbeit ist ähnlich der Arbeit in Arduino. Ermöglicht das Bewegen der Nur-Lese-Daten und String dauerhaft im Flash-Speicher. Gleichzeitig werden dieselben Konstanten nicht in ESP8266 gespeichert, was zu einer zusätzlichen Sektion des Flash-Speichers führt.
  • I2c. Bevor Sie mit dem Arbeiten mit dem I2C-Bus beginnen, werden Reifen mithilfe der Funktion von draht.pins (int sda, int scl) ausgewählt.
  • SPI, OneWire - sind vollständig unterstützt.

Verwendung von ESP8266 für die Arduino-Kommunikation durch WLAN

Bevor Sie sich an Arduino anschließen, ist es wichtig, sich daran zu beachten, dass die Versorgungsspannung von ESP8266 nicht höher als 3,6 sein kann, während auf der Arduinospannung die Spannung 5 V beträgt, um 2 Mikrocontroller mit Widerstandsteilen zu verbinden. Bevor Sie das Modul anschließen, müssen Sie mit der ausgewählten PinTout ESP8266 vertraut machen. Verbindungsdiagramm für ESP8266-01 ist in der Figur dargestellt.

3.3 v mit Arduino - auf VCC & CH_PD auf dem ESP8266-Modul, Land mit Arduino - bis erd mit ESP8266, 0 - TX, 1 - RX.

Um einen stabilen Betrieb zu unterstützen, erfordert der ESP8266 eine Quelle der konstanten Spannung um 3,3 V und den maximalen Strom von 250 mA. Wenn der Strom vom USB-TTL-Konverter stammt, können Fehlfunktionen auftreten und Fehlfunktionen.

Die Arbeit mit der Wi-Fi-Bibliothek für ESP8266 ähnelt einer Bibliothek für einen gewöhnlichen Schild. Es gibt mehrere Funktionen:

  • mODE (M) - Um einen der drei Modi auszuwählen: Client, Zugangspunkt oder beide Modi gleichzeitig.
  • softP (SSID) ist erforderlich, um einen offenen Zugangspunkt zu erstellen.
  • softP (SSID, Passwort) - Erstellt einen Passwortzugangspunkt, der aus mindestens 8 Zeichen bestehen soll.
  • WIFI.MACADDRESS (MAC) und WIFI.SOFTAPMACADDRESS (MAC) - Bestimmt die MAC-Adresse.
  • Wifi.localip () und wifi.softapip () - Definition der IP-Adresse.
  • printdiag (seriell); - lernen Sie, die diagnostischen Daten kennenzulernen.
  • WIFIUDP - Unterstützung für die Übertragung und den Empfang des Multicast-Pakets im Client-Modus.

Die Arbeit wird gemäß dem folgenden Algorithmus durchgeführt:

  • Anschließen von USB-TTL an USB und ESP.
  • Starten Sie Arduino-IDE.
  • Wählen Sie im Menü Extras den gewünschten Anschluss, Gebühr, Häufigkeit und Größe des Flash-Speichers aus.
  • Datei - Beispiele - ESP8266WIFI - WifiWebServer.
  • Schreiben Sie in SSID-Skizze und Wi-Fi-Kennwort.
  • Beginnen Sie Compilation und Download-Code.
  • Warten Sie auf das Ende des Firmware-Prozesses, trennen Sie den GPIO0 von der Erde.
  • Setzen Sie die Geschwindigkeit von 115200 ein.
  • Eine Verbindung wird angeschlossen, die IP-Adresse wird aufgezeichnet.
  • Öffnen Sie den Browser, geben Sie die IP / GPIO / 1-Nummer in der Adressleiste ein
  • Sehen Sie sich den Port-Monitor an, wenn die LED mit dem GPIO2-Ausgang verbunden ist, sollte er aufleuchten.

NODEMCU Basierend auf ESP8266

NODEMCU ist eine Plattform, die auf dem ESP8266-Modul basiert. Wird verwendet, um das Schema in einer Entfernung mit dem Internet über WLAN zu steuern. Das Board ist klein, kompakt, es ist billig, auf der Vorderseite befindet sich ein USB-Anschluss. In der Nähe der Taste zum Debuggen und Neustarten des Mikrocontrollers. ESP8266-Chip ist ebenfalls installiert. Versorgungsspannung - von 5 bis 12 V ist es wünschenswert, mehr als 10 V einzureichen.

Der große Vorteil des Boards ist der geringe Energieverbrauch. Oft werden sie in den Schemata mit autonomem Essen verwendet. Auf dem Brett gibt es nur 11 allgemeine Port-Ports, einige von ihnen haben spezielle Funktionen:

  • D1 und d2 - für die i2c / twi-Schnittstelle;
  • D5-D8- für die SPI-Schnittstelle;
  • D9, d10 - für uart;
  • D1-D10 - kann als PWM arbeiten.

Die Plattform verfügt über eine moderne API für Hardwareeingabe und -ausgabe. Auf diese Weise können Sie die Anzahl der Aktionen reduzieren, während sie mit Geräten arbeitet, und wenn sie konfiguriert ist. Mit der NODEMCU-Firmware können Sie das gesamte Arbeitspotenzial verwenden, um das Gerät schnell zu entwickeln.

WEMOS basierend auf ESP8266

WEMOS ist eine andere Art von Plattform, die auf dem ESP8266-Mikrocontroller basiert. Dementsprechend gibt es ein Wi-Fi-Modul, ARDUINO IDE wird unterstützt, es gibt einen externen Antennenanschluss. Die Platine hat 11 digitale Ein- / Ausgänge, die (außer D0) Unterstützung von Interrupt / PWM / I2C / One-Draht unterstützen. Die maximale Versorgungsspannung erreicht 3,3 V. Auch auf der Plattform gibt es einen USB-Anschluss. Analoger Eingang 1 mit einer maximalen Spannung von 3,2 V.

Um mit dem Modul zu arbeiten, müssen Sie den CH340-Treiber installieren und ARDUINO IDE unter ESP8266 konfigurieren. Dazu müssen Sie die Adresse http://arduino.esp8266.com/stable/package_esp8266com_esp8266 hinzufügen) im Menü "Zusätzliches Link" im Menü "Zusätzliche Link" im Menü "Einstellungen" hinzufügen.

Danach möchten Sie das ESP8266 von ESP8266-Paket finden und installieren. Dann müssen Sie die WEMOS D1 R2-Mikrocontroller-Tools im Menü auswählen und die gewünschte Skizze schreiben.

Schlussfolgerungen von ESP8266.

Mit Boards basierend auf dem ESP8266-Chip können Sie die Gelegenheit des "großen Internets" Ihrer Projekte hinzufügen, um sie viel intelligenter zu machen. Fernbedienung, Datenerfassung und -analyse auf dem Server, Sprachverarbeitung und Bildarbeiten - All dies wird verfügbar, wenn wir unser WLAN-Projekt mit dem Internet anschließen. In den folgenden Artikeln werden wir im Detail berücksichtigen, wie es möglich ist, die ESP8266-Datenbankgeräte programmieren zu können, und achten Sie auch auf solche beliebten Zahlungen wie WEMOS und NODEMCU.

Von vorn anfangen.

Chip ESP. 8266

Der ESP8266-Chip ist speziell für das "Internet der Dinge" ausgelegt. Es gibt zwei Möglichkeiten, diesen Chip zu verwenden. Der erste ist als UART-WiFi-Bridge zum Anschließen an einen Mikrocontroller und die Steuerung an Befehlen. Die zweite Option - Der Chip selbst führt die Rolle des Controllers aus. Nach meinen Schätzungen im Medium der Elektronikliebhaber wird der Chip häufig als Controller-Controller verwendet.

Chip-Merkmale:

  • Unterstützung 802.11 b / g / n
  • Eingebauter 32-Bit-MCU-Niedriger Stromverbrauch
  • Eingebaute 10-Bit-ADC
  • Eingebauter TCP / IP-Stack
  • Eingebauter WF-Signalverstärker
  • Unterstützung für die Trennung von Antennen
  • WIFI 2.4 GHz, WPA / WPA2-Unterstützung
  • STA / AP / STA + AP-Modus-Unterstützung
  • SDIO 2.0, (H) SPI, UART, I2C, I2S, IR-Fernbedienung, PWM, GPIO
  • STBC, 1x1 Mimo, 2x1 Mimo
  • A-MPDU & A-MSDU-Aggregation und 0,4s Guard-Intervall
  • Ausgangsleistung +20 dBm im 802.11b-Modus

Der Chip ist eine hochintegrierte Lösung für das Arbeiten mit WLAN. Im Inneren des Chips gelang es, alles zu platzieren, was Sie brauchen. Typisch minimal notwendig für die Arbeit Die Blockierung des Chips besteht aus allen sieben Elementen.

Fotos, um die Anzahl der Komponenten ähnlicher Lösungen zu vergleichen.

Laut allgemeinem Charme wird der 32-Bit-CPU Xtensa LX106-Kern gemäß anderen Data-Tensilica-L106-Diamanten verwaltet. Unter dem Mikroskop sieht aus verwandten Elementen wie ein Chip als eine ganze Stadt aus.

Eine der wichtigsten Eigenschaften ist der Stromverbrauch. ESP8266 Es ist einfach erstaunlich:

  • 215mA im kontinuierlichen Übertragungsmodus.
  • 1mA im Verbindungsmodus mit Zugangspunkt
  • 10UA im tiefen Schlafmodus mit Echtzeituhr
  • 0,5UA im Ausgabemodus

Die für das Erwachen erforderliche Zeit und der Beginn der Übertragung des Pakets beträgt weniger als 2 ms. Zum Beispiel, wenn Sie die Temperatur alle 100 Sekunden messen und an den Zugangspunkt und die Übertragung der angesammelten Daten alle 300 Sekunden (alle anderen Zeiten des Chips schlafen), ist der durchschnittliche Strom um 1 mA. Dies ist mehr als drei Monate Arbeit von drei Fingerbatterien mit einer Kapazität von 2600 mA / h.

Über Module ESP.

Derzeit sind die beliebtesten Module auf ESP8266-Chips ESP-01, ESP-02, ESP-03, ESP-04, ESP-05, ESP-06, ESP-07, ESP-08, ESP-09, ESP-10, ESP-11, ESP-12, ESP-12E. Sie unterscheiden sich in der Menge der verdünnten Pins, das Vorhandensein eines Verbinders zum Anschließen einer externen Antenne, Größen.

Jetzt können Sie den ESP8266-Elder-Bruder bereits finden - dies ist ein ESP-32-Modul. Bei AliExpress haben nur zwei Verkäufer diese Module. Preis ca. 250 Rubel gegen 110 Rubel für ESP-12e. Das neue Modul ist noch mehr Brötchen.

Die Hauptmerkmale von ESP-32. (Klicke zum Zeigen)

W-lan
- 802.11 b / g / n / e / i
- 802.11 n (2,4 GHz), bis zu 150 Mbps
- 802.11 I Sicherheitsfunktionen: Vorauthentifizierung und TSN
- 802.11 E: Mehrere Warteschlangenmanagement, um die QoS-Verkehrspriorisierung vollständig zu verwenden
- Wi-Fi-geschützter Zugang (WPA) / WPA2
- Wi-Fi-geschütztes Setup (WPS)
- UMA-kompatibel und zertifiziert
- Antennendiversität ND-Sektion
- A-MPDU- und A-MSDU-Aggregation
- WMM Power S VE U-APSD
- Fragmentierung und Defragmentierung
- Wi-Fi Direct (P2P), P2P Discovery, P2P Group Eigentümermodus und P2P Power Management
- Infrastruktur BSS Station Mode / Soft AP-Modus
- Automatische Beacon Monitoring / Scannen
- SSL-Stapel mit Hardware-Acceleratoren

Bluetooth
- CMOS Single-Chip Voll integriertes Radio und Basisband
- Bluetooth-Piconet und Scatternet
- Bluetooth 4.2 (Br / EDR / BLE)
- Adaptiver Frequenzsprung (AFH)
- smp
- CLASS-1, CLASS-2- und CLASS-3-Sender im Wert von AL-Leistungsverstärker
- +10 dbm tra Smiting Power
- Nzif-Empfänger mit -90 dBm Sensititivität
- Bis zu 4 Mbps High Speed \u200b\u200bUART HCI
- SDIO / SPI HCI
- CVSD und SBC
- Energieeffizient
- Minimale externe Komponente

CPU und Erinnerung.
- XtenSa® Dual-Core 32-Bit-LX6-Micro-PR-Cess RS, bis zu 400mips
- 128 KB ROM
- QSPI Flash / SRAM bis zu 4 x 16 MB
- Stromversorgung: 2,5 V bis 3,6 V
- 416 KB SRAM

Uhren und Timer.
- 2 MHz bis 40 MHz Kristalloszillator
- Interner 8 MHz-Oszillator mit Kalibrierung
- externer 32 kHz-Oszillator für RTC mit Kalibrierung
- Interner RC-Oszillator mit Kalibrierung
- Zwei Timer-Gruppen, darunter 3 x 64-Bit-Timer und 1 x Watchdog in jeder Gruppe
- RTC-Timer mit Sub-Second-Genauigkeit
- RTC Watchdog.

Fortgeschrittene periphere Schnittstellen.
- 12-Bit-SAR ADC bis 16 Kanäle
- 2 x 10-Bit-D / A-Wandler
- 10 x Touchssensoren
- Temperatursensor (-40 + 125 ° C)
- 4 x SPI
- 2 x i2s
- 2 x I2C
- 2 x UART
- 1 Host (SD / EMMC / SDIO)
- 1 Slave (SDIO / SPI)
- Ethernet-Mac-Schnittstelle mit dedizierter DMA- und IEEE 1588-Unterstützung
- kann 2.0.
- IR (TX / RX)
- Motor PWM.
- LED PWM bis 16 Kanäle

Sicherheit
- IEEE 802.11 Standardsicherheitsfunktionen Alle unterstützt, einschließlich WFA, WPA / WPA2 und WAPI
- Sicherer Startvorgang
- Flash-Verschlüsselung.
- 1024-Bit-OTP, bis zu 768 Bit für Kunden
- Cryptographcc-Hardwarebeschleunigung:
- AES 128/192/256.
- Hash-Bibliothek (SHA-2)
- RSA.
- Radom-Nummer-Generator

Besonders an der deklarierten Unterstützung des CAN-Busses interessiert. Bald, um die Autosysteme zu kontrollieren, und es ist möglich, das WLAN direkt vom mobilen Gerät zu diagnostizieren.

Aber zurück zu esp-12e. Die NODEMCU-Plattform ist auf der Grundlage dieses Moduls erstellt.

Über Plattform

Die Plattform verwendet die Funktionen des ESP-12-Moduls, hat keinen eigenen Mikrocontroller. Die Chinesen produzieren viele Klone mit unterschiedlichen Schnittstellenkonvertern, und die Plattformen selbst haben unterschiedliche Größen.

Standardmäßig wird die NODEMCU-Firmware mit Unterstützung des LUA-Skriptsprachen-Interpreters auf die Plattform heruntergeladen. Skripts setzen das Verhalten des Vorstands ein.

Ich schreibe und gießt das Programm mit Arduino-IDE. Um mit der Plattform zu arbeiten, müssen Sie Bibliotheken installieren. Bibliotheken sind eine große Anzahl von Programmbeispielen.

Bibliotheken am Mittwoch installieren Arduino. Ide für die Arbeit S. Nodemcu. .

Um die Bibliotheken festzulegen, müssen Sie in die ARDUINO IDE-Einstellungen gehen und die Adresse http://carduino.esp8266.com/package_esp8266) _INDEX.JSON in das Feld Zusatzrat eingeben

Verbreiten Sie die Liste herunter und finden Sie ESP8266 von ESP8266 Community und installieren Sie Bibliotheken.

Schließen Sie "Boards Manager". Gehen Sie zu "Tools" und wählen Sie die NODEMCU-Karte entsprechend Ihrer Version aus.

Um zu verstehen, welches Modul, das Sie installiert sind, und welche Version auswählen soll, schauen Sie sich das Modul an. Wenn sich die Kontakte auf drei Seiten befinden, ist dies ein ESP-12E, wenn nur von zwei ESP-12 ist.

NODEMCU-Plattformschlussfolgerungen

Funktionen, die von Bibliotheken unterstützt werden Arduino. Ide .

Ausführliche Beschreibung Sie können hier https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_ru and russisch. Ich werde über grundlegende Funktionen sprechen.

GPIO-Kontrolle wird auf dieselbe Weise wie Arduino durchgeführt. PinMode, DigitalDead, DigitalWrite, Analogwrite-Funktion wie üblich. Anallograde (A0) liest den ADC-Wert von einem analogen Eingang A0. Analogwrite enthält Software PWM. PWM-Häufigkeit der Größenordnung von 1 kHz. PWM reicht von 0 bis 1023, Arduino, wie wir uns erinnern, bis zu 255. Interrupts werden auf jedem GPIO außer GPIO16 unterstützt. Die Funktionen von Millis () und MicroS () werden an Millisekunden und Mikrosekunden zurückgegeben, die vom Modul gestartet wurden. Die Verzögerungsfunktion von NoDemcu arbeitet von arduino unterschiedlich. Hier ist die Anwendung der Verzögerung willkommen und nötig in großen Programmen erforderlich. Wenn das Modul WIFI-Verbindung unterstützt, muss es viele Hintergrundaufgaben ausführen, mit Ausnahme Ihrer Skizze. WiFi- und TCP / IP-Funktionen der SDK-Bibliotheken haben die Möglichkeit, alle Ereignisse in der Warteschlange nach Abschluss jedes Zyklus Ihrer Schleife () -Funktion oder während der Ausführung der Verzögerung (...) zu verarbeiten. Wenn Ihr Code Fragmente mit mehr als 50 Millisekunden läuft, ist es erforderlich, Verzögerung (...) zu verwenden, um die normale Leistung des WLAN-Stacks aufrechtzuerhalten. Erlösermicroseconds () blockiert jedoch die Ausführung anderer Aufgaben und wird nicht für Verzögerungen von mehr als 20 Millisekunden empfohlen. Seriell verwendet eine Hardware UART0, die auf PIO1 (TX) und GPIO3 (RX) arbeitet.

Programm zur Verwaltung von vier Relais von einer mobilen Anwendung

Nachdem die Bibliotheken auf die Plattform eingestellt sind, verbinden wir einen Block mit 4 Relais an die Pins D1, D2, D3, D4, das der GPIO 5, 4, 0, 2 entspricht. Dann verbinden wir die Macht an die Plattform und an die Relaiseinheit. Ich habe einen Relaisblock, den es ein Merkmal gibt. Um das Relais einzuschalten, müssen Sie den Pin am Boden festziehen. Das heißt, logisch 0 enthält Relais, und 1 schaltet sich aus.

Ich werde drei Optionen für die Steuerung des Relaisblocks berücksichtigen.

Erstes Programm Verwendet die beliebte Bibliothek des Arest https://github.com/marcoschwartz/arest

Dies ist eine API-Handler-Bibliothek. Ermöglicht das Verwalten von GPIO über HTTP-Anforderungen des Typs http://192.168.0.10/digital/6/1 seine Funktionen: Installieren von GPIO in Digital oder Analog (PWM), Set 0 oder 1, um die PIN zu stecken In digitalem Modus, Rückgabevariablen und Lesen des Status der Pins.

Ich habe das Programm zusammengestellt und von den Beispielen mit der Bibliothek heruntergeladen. Aus Sicht der Verwendung - ist es einfacher.

Im Setup wird eine Verbindung auf den Zugriffspunkt eingestellt, wie über den COM-Anschluss berichtet. Und Loop sieht so aus:

void loop () (

Wificlient Client \u003d Server.Vailable ();

Wenn (! Kunde) (

Rückkehr;

}

Während (! - Client.Ververfügbar ()) (

Verzögerung (1);

}

Rest.Handle (Client);

}

Alles. Was passiert, ist nicht klar. Funktioniert, aber in der Tat programmieren wir nichts. Führen Sie einfach das Programm aus, alles andere macht die Bibliothek. Es ist jedoch interessanter, mit GPIO-Händen zu arbeiten. Ja, übrigens hatte ich nach unbestimmter Zeit ein Programm. Manchmal nach 40 Minuten, manchmal in 5-6 Stunden. Nach 8 Stunden nach Hause kommen, habe ich immer entdeckt, dass das Programm nicht funktioniert. Gleichzeitig zeigt der Router an, dass der WiFi-Client verbunden ist und die IP-Adresse ausgegeben wird. Mein Interesse an meiner Bibliothek verschwand schnell. Auf den Hängen von Arest auf russischsprachigen Foren erfüllten keine Beschwerden. Ich habe an NoDemcu oder instabilen Lebensmitteln gesündigt, aber weitere Experimente haben sich bewiesen, dass das Programm in meinem Fall schuld ist. Am wahrscheinlichsten habe ich einen Sonderfall. Ich argumentiere nicht, dass die Bibliothek nicht funktioniert.

Mit Arest sortiert.

Zweites Programm Verwendet unabhängig voneinander nur eine verbundene Bibliothek #include . Das Programm ist einfach und zeigt eindeutig, wie Sie Pins über Webanforderungen verwalten. Dieses Programm kann nur logische Zustände bei D1-D4-Schlussfolgerungen verwalten und Informationen zur Betriebszeit des Programms als Testabfrage anzeigen. Wenn es ein Bedürfnis gibt, können Sie ein Programm für den Rest von GPIO hinzufügen, "Teach", um es an PWM zu geben usw. An den D4-Ausgang ist eine blaue LED an dem ESP-12E-Modul angeschlossen. Nach der Qual mit den Hängen von Arest trenne ich das Relais 4 vorübergehend von D4 und beendete in meinem Programm ein paar Linien zum blinken von dieser LED. Ich kam nach der Arbeit nach Hause, ich schaue - blinkt, dann funktioniert es. Gut aus dem Handy geprüft - es funktioniert genau. Das Programm arbeitete seit 8 Tagen ohne Einfrierungen, würde länger arbeiten, aber ich habe ein Nodemcu, also studierte ich es weiter und erfüllte das Programm, das ich aufhören musste.

Nach dem Kompilieren und Herunterladen des Programms in den seriellen Port-Monitor berichtet das Programm über den Verbindungsstatus und die IP-Adresse, die die Plattform vom Zugangspunkt erhalten wird.

Um die Relaiseinheit für diese beiden Programme zu steuern, wurde ein Antrag auf einem Mobiltelefon mit Android OS erstellt. Die Anwendung ist sehr einfach, er wurde im App Inventor 2. Ich werde die Anwendung der Anwendung später beschreiben. Erstens die dritte Version der Relaisverwaltungslösung.

Dritte Option Komplex. Firmware-Plattform und Android-Programm von einem Entwickler. Ich habe den Bynk-Service verwendet. Es ist ein Cloud-Service zum Erstellen von Grafiksteuerelementen und eignet sich für eine Vielzahl von Mikrocomputer und Mikrocontroller.

So erstellen Sie Ihr eigenes Projekt mit dem Bynk-Steuerelement, benötigen Sie ein bisschen: Installieren Sie die Anwendung (verfügbar für iOS und Android) oder verwenden Sie das Webformular. Dies erfordert eine Registrierung in einem Schritt - E-Mail- und Kennwort eingeben. Tatsache ist, dass Bynk eine Cloud-Lösung ist, und ohne Registrierung kann jeder Benutzer die Kontrolle über das Eisenstück erhalten.

Der Wunsch kann den Server lokal installieren. In diesem Fall ist der Zugriff auf das Internet nicht erforderlich.

Ich werde den Prozess selbst beschreiben. Es besteht aus zwei Teilen.

Erster Teil. Laden Sie Schlynk mit Google Play herunter. Installieren und ausführen Sie das Programm

  1. Drücken Sie "Neues Projekt erstellen"
  2. Genießen Sie den Namen des Projekts und wählen Sie Nodemcu im Feld Hardwaremodell aus. Auth-Token lernen von Herzen oder schreiben Sie auf ein Blatt Papier, schicken Sie sich an die Post. Klicken Sie auf "Erstellen".
  3. Klicken Sie in der Ecke auf "+".
  4. Wählen Sie "Button". Wenn Sie bereits aufmerksam gemacht haben, ist jedes dem Projekt hinzugefügte Element Energie wert. Standardmäßig wird es Ihnen 2000 erteilt. Da die Energy-Widgets hinzugefügt werden, wird die Energie ausgegeben. Wenn Sie mehr Widgets platzieren müssen, muss ich Energie für Geld kaufen.

  1. So erschien unser Knopf. Klick es an. Die Einstellungen werden geöffnet.
  2. Wählen Sie den Namen, den PIN, an den er sich handelt, den Modus der Schaltfläche oder den Schalter, der Name für den Status "Aktiviert" und "OFF". Invertieren des Signals von der Taste kann nicht invertiert werden. Für meine Relais: Die Taste ist ausgeschaltet - 0 Am Ausgang wird das Relais eingeschaltet und umgekehrt. Sie können logische Betriebsregeln vorschreiben. Sie können den Server auf dem lokalen Computer installieren.
  3. Drücken Sie als nächstes die Dreiecke rechts oben. Das Programm läuft aus dem Modus der Bearbeitung zur Arbeit.
  4. Knöpfe funktionieren. Multitouch ist bemerkenswert. Ich habe versucht, gleichzeitig 6 Tasten zu drücken. Alles funktioniert (am Telefon nach Beschreibung 10 Klickseiten).

Der zweite Teil von - Dies ist die NoDemcu-Firmware. Laden Sie Bynk-Bibliotheken herunter und installieren Sie die Installation von Bynk-Bibliotheken https://github.com/blynkkkkkkynk-library. Start von Arduino IDE - Datei - Proben - Bynk - Boardsandshields - ESP8266_Standalone.

Genießen Sie das Auth-Token-Beispiel mit einem geheimen Postpapier. Und auch SSID Ihr WLAN-Netzwerk und Ihr Passwort Zugriff darauf.

Alles. Kompilieren und nähen. Alles hat das erste Mal verdient. Vorbehaltlich der Verwendung von Cloud-Service in das Internet muss der Zugang zu einem Mobiltelefon und einem Mobiltelefon und einem NODEMCU ausgestattet sein.

Erstellen einer Anwendung B.App. Erfinder.

App Inventor - Android-Anwendungsvisuelle Entwicklungsumgebung, die ein Minimal-Programmierkenntnis erfordern. Ursprünglich in Google Labs gestaltet, wurde nach der Schließung dieses Labors in das technologische Institut des Massachusetts übertragen. Zur Programmierung im App Inventor wird eine grafische Schnittstelle verwendet, eine visuelle Programmiersprache ist der Kratzersprache und der StarLogo TNG sehr ähnlich. Um mit dem Schreiben fertig zu werden, ist ein Antrag nicht so schwierig. Ich habe keine nützliche Dokumentation in Russisch gefunden, sondern viele Videos auf YouTube.

Der Dienst hat zwei Hauptregisterkarten. Der erste ist "Designer", hier im visuellen Editor sind Komponenten aufgestellt. Die Schnittstist aufgrund eines Merkmals des APP-Erfinderdienstes sehr hoch. Sie müssen den mit App Inventor 2-Companion-Antrag auf das mobile Gerät installieren. Starte es. Wählen Sie auf der Website Connect - AI Companion aus. Es wird erstellt und auf dem QR-Code-Bildschirm angezeigt. In der Anwendung müssen Sie auf "QR-Code scannen" und Scancode klicken. Nach ein paar Sekunden erscheint die Anwendung auf dem Bildschirm des mobilen Geräts. Neue Elemente oder beliebige modifizierte Daten buchstäblich über eine Sekunde wird zum Scannen auf einem mobilen Gerät verfügbar.

Auf dem Bildschirm werden platziert: Eingabefeld zum Eingeben der IP-Adresse, der Installationsschaltfläche und senden Sie die Testabfrage. Nachfolgend finden Sie die Komponente "Webviewer", wird es in Antwort auf NODEMCU-Seite angezeigt. Nachfolgend finden Sie 4 Gruppen von zwei Tasten, die das Relais enthalten und ausschalten. Benötigen Sie auch eine "TinyDB" -Komponente, wir speichern eine Variable, um eine Abfrage aufzubauen. Ich füge auch eine Spracherkennungskomponente hinzu, um die Relais mit Sprachbefehlen verwalten zu können. Um den Action-Algorithmus zu beschreiben, wenn der Text erkannt wird, werde ich nicht, da es extrem unbequem ist, diese Funktion zu verwenden. Zuerst müssen Sie auf die Schaltfläche klicken, dann wird das Fenster von Google mit der Inschrift "sprechen" angezeigt, dann wird das Team ausgesprochen. Und nach dem Ende der Aussprache des Teams wartet das Erkennungssystem auf eine Weile, dann scheint, dass alles schon gesagt ist. Dann gibt es eine Spracherkennung und die Textantwort ist. Es muss mit vorgeehnte Phrasen verglichen werden. Und erst danach wird der Befehl ausgeführt. Einfacher, um den Knopf zu tippen.

Die zweite Registerkarte wird als "Blöcke" bezeichnet. Hier ist der gesamte "Programm" -Teil der Anwendung in Form von Blöcken angegeben.

Hier bestehen die Blöcke aus dem Arbeitsalgorithmus des Programms. Der Hauptteil des Algorithmus befindet sich auf dem Screenshot. Ich werde beschreiben, was hier passiert.

  • Wenn Set.Click - Wenn die Taste "SET" gedrückt wird, rufen Sie die IP-Funktion an
  • Als nächstes kommt die IP-Funktion selbst. Es speichert die IP-Adresse aus dem Eingabefeld in der TinyDB und fügt zuerst "http: //" hinzu. Dann nimmt webviewer.gotourl die Adresse von TINYDB an, fügt "/ test" am Ende hinzu und übergibt an dieser Adresse. Ich bekomme "http://192.168.0.1/test". Auf dem Webviewer werden Informationen auf dem Bildschirm geladen, dass der Test übergeben wird und der Dauerbetrieb von NODEMCU angezeigt wird. Wenn die IP-Adresse falsch eingegeben wurde, erhalten wir eine Meldung über die Unfähigkeit, die Seite zu öffnen.
  • Wenn on1.click (auf diesen Schaltflächennamen) die On1-Funktion aufruft.
  • Die On1-Funktion übernimmt die Adresse von TINYDB, fügt dem "/ d1 / 0" hinzu, er stellt sich "http://192.168.0.1/d1/0" und sendet eine Anfrage. NODEMCU, nachdem Sie diese Anfrage erhalten haben, erscheint es, dass Sie 0 auf PIN D1 installieren müssen. Futieht und sendet die Antwort "GPIO SET OK", die wir in Webviewer sehen.
  • Die nächste OFF1-Taste ist dasselbe, nur am Ende fügt "/ d1 / 1" hinzu. Setzt logische 1 auf Pin D1. Das Relais ist ausgeschaltet.

Die verbleibenden Tasten wirken auf dieselbe Weise und ändern die Anforderungsnummer der Pins und den erforderlichen Zustand.

Nachdem alles überprüft und läuft, klicken Sie auf Build-App (Save .apk an meinem Computer speichern). Es gibt eine Kompilierung und Herunterladen einer APK-Dateianwendung. Es muss auf dem mobilen Gerät installiert sein, wobei die Einstellungen die Installation von Anwendungen aus Quellen von Drittanbietern ermöglicht. Nun beginnt die Anwendung unabhängig. AI-Begleiter ist auch nicht mehr benötigt und kommuniziert auch mit dem Internet.

So ist es möglich, eine Anwendung für das Android-Gerät zu erstellen, um die Last auf dem WLAN-Netzwerk zu steuern.

NODEMCU und Mobiltelefon sind mit einem Heimrouter verbunden. Wenn kein WLAN-Zugangspunkt vorhanden ist, kann NODEMCU Zugriffspunktfunktionen ausführen, um ein mobiles Gerät direkt an ESP8266 anzuschließen. Zum Beispiel das Öffnen der Öffnung der Garagentor und der Einbeziehung von Licht in die Garage.

P. Erhöhen Sie den Zugangspunkt auf der Plattform, bis ich noch nicht gelungen bin. Ein Beispiel wird mit Bibliotheken geliefert, die nicht kompiliert sind. Arduino-IDE hängt einfach im Kompilationsvorgang. Ich muss noch damit umgehen.

P.p.s. Der Punkt auf der Plattform erhoben, aber angemessene Arbeiten ist noch nicht erreicht. Befehle wurden durchgeführt oder mit einer Verzögerung in ein paar Sekunden oder überhaupt nicht durchgeführt. Während das Studium des Moduls suspendiert ist. Beschäftigter Autoservice.

In diesem Artikel werden Informationen darüber, wie Sie Ihren Tank sammeln, der mit einer Webkamera ausgestattet ist und vom WLAN-Router überschaubar ist.

Notwendige Materialien:

  1. Web-Kamera.
  2. TP-Link TL-MR3020-Router
  3. Servos sg90 - 2 stücke
  4. Kamera-Plattform-Anti-Vibration
  5. Akkumulator 7,2 V 5000mAh.
  6. Batterie 5V 2000mAh.
  7. Nano 3.0 Atmel atmega328
  8. L298N Motorfahrer
  9. Drähte, Wärmerohre, USB-Nabe, Dioden und mehr.
  10. Plattform für Ihren Geschmack, ich entschied mich für DD1-1

Unser Monster zusammenbauen
Festlegen des MR3020-Routers.
Lassen Sie uns zunächst mit dem Router beginnen. Ich dachte lange dachte, oder wrt oder cyberwraft. OR-WRT flexibriert in den Einstellungen, aber alle Bearbeitung und Abgabe Ihrer Einstellungen werden mit Hilfe des Putty-Programms über das Terminal durchgeführt. Und seit ich Angst hatte, an diesen Müttern durch das Terminal zu arbeiten, wählte ich, wo sich eine grafische Schnittstelle befindet, zyberwrt ist, und es ist möglich, über den USB-Anschluss herzustellen.
Um die Firmware unseres Routers zu ändern, müssen Sie die Firmware der CyberWraT-MR3020 herunterladen.

Wie wir heruntergeladen haben, tun Sie Folgendes:

1) Schalten Sie den Router ein und warten Sie auf den Download.
2) Geh und anmelden um 192.168.0.254 (Standardadministrator \\ Admin)
3) Suchen Sie im Menü auf den linken System-Tools, gibt es den System-Upgrade-Punkt und gießen Sie die Firmware über das Webformular
4) Warten Sie auf Neustart (ca. 4 Minuten)
Der Router ist zur Konfiguration bereit.

Sie können einen der Modi auswählen: "Zugangspunkt" und "Wi-Fi Network Client". So konfigurieren Sie den Client-Modus:
- Wählen Sie den Wi-Fi-Netzwerk-Client-Modus aus
- Die IP-Adresse Ihres Geräts (Ihr Gerät ist an dieser Adresse verfügbar. Versuchen Sie, eine unbesetzte IP auszuwählen. Zum Beispiel: 192.168.1.100)
- Subnetzmaske (255.255.255.0)
- Gateway (zum Beispiel IP Ihres Heimrouters oder Gateways - 192.168.1.1)
- Art der Verschlüsselung (Verschlüsselungstyp, die in Ihrem Heimnetzwerk verwendet wird)
- Passwort (Passwort, Zugriff auf Ihr Heimnetzwerk)

Wenn Sie alles richtig gemacht haben, gehen Sie an der Unterseite des Bildschirms RSS-Zeichenfolge.

Wenn alles verdient hat, haben Sie ein Abschnittsmodule, da Sie das Modul "Roboter" finden. Installieren. Bereit.

Verbinden Sie L298N, Arduino Nano, MR3020, Kamera und andere

Auf dem Bild ist alles klar gezeigt, aber nur für den Fall, dass ich schreiben werde.

Arduino digital 4 - bis in1-Modulkiefer.
Arduino digital 5 Ausgang - in 2 Modulkiefer.
Schlussfolgerung Arduino Digital 6 - bis IN3 PIN-Modul.
Schlussfolgerung Arduino Digital 7 - bis in4 Modulkiefer.
Arduino GND-Ausgang - zum GND-Modul-Terminal.
GND-Clem-Modul - Minus-Batterie.
7.2V-Modul-Terminal - Plus-Batterie.
RM-Modul Clem ist der rechte Motor.
LM-Modul Clem - Linker Motor.
USB-Arduino-Port - Verbinden Sie sich mit USB-Hub
Web-Kamera - Verbinden Sie sich mit USB-Hub
USB-Hub - Verbindung zum USB-Router herstellen

Mahlzeiten sagen also die Logistik, die von der zweiten Batterie durchgeführt wird. Kapazität 2000 mA / h 5V, um den Router nicht zu verbrennen. Ja, und mit zwei Batterien arbeitet der Roboter stabil. Also verbinden wir es einfach in den Micro-USB-Anschluss. Durch einen USB-Hub, der mit der Rootette-Ernährung verbunden ist, erhält bereits die Kamera und unsere Arduux.

Skizze für Arduino Nano
Sie müssen die Cyberlib-Bibliothek herunterladen, es ist nur für Atmega 328 gedacht.

/ * Version 1.5 Wifi Tanka auf DD1-1 Implementiert: 1) Kamerabehrung über x und y 2) Piepton 3) Scheinwerfer 4) Sound, wenn aktiviert * / #include // Verbinden Sie die Bibliothek #include // Verbinden Sie die Servo-Myservo1-Servo-Drive-Bibliothek; Servo myservo2; Lange vorherige Millis; // brauchen für den Int LEDSTEP \u003d 0 TIMER; // counter für led int i; #define robot_go (D4_High; D5_Low; D6_Low; D7_High;) #define robot_back (D4_Low; D5_High; D6_High; D7_Low;) #define robot_stop (D4_Low; D5_Low; D6_Low; D7_Low;) #define robot_rotation_right (D4_High; D5_Low; D6_High; D7_Low ;) #define robot_rotation_left (d4_low; d6_high; d6_low; d6_high;) #define led_on (d13_high;) #define led_off (d13_low;) #define headlamp_on (d8_high;) #define headlamp_off (d8_high;) #define summer (ton (11 , 494, 500);) #defin init (d4_out; d5_out; d6_out; d7_out; d8_out; d13_out;) uint8_t Inbyte; void setup () (myservo1.attach (9); // Anschlussservoantriebe an Port myservo2.attach (10); // Anschlussservoantriebe an Port D11_OUT; D11_LOW; // headlamp_off-lautsprecher; // Flame Standard-Scheinwerfer (UINT8_T I \u003d 0; ich<12; i++) beep(80, random(100, 2000)); //звуковое оповещение готовности робота init; // Инициализация портов //Buzzer; // Инициализация портов динамика UART_Init(57600);// Инициализация порта для связи с роутером wdt_enable (WDTO_500MS); } void loop() { unsigned long currentMillis = millis(); // Обновление таймера if (LedStep == 0 && currentMillis - previousMillis > 500) (// Verzögerung 0,5 Sek. VorherigeMillis \u003d currentmillis; // Update LED_ON; // Schalten Sie LEDSTEP \u003d 1; // Schrittzähler) ifstep \u003d\u003d 1 && currentmillis - PreviousMillis\u003e 500) (// Verzögerung 0,5 Sek. VorherigeMillis \u003d currentmillis; // Aktualisieren von Timer LED_OFF; // Deaktivieren Sie LEDSTEP \u003d 2; // Schritt Zähler) ifstep \u003d\u003d 2 && currentmillis - PreviosMillis\u003e 500) (// Verzögerung 0,5 Sek. LEDSTEP \u003d 0; // Schritt Zähler), wenn (UART_READBYTE (INBYTE)) // EXLY Etwas kam (Switch (Inbyte) // Watch, welcher Befehl kam (Fall "x": // osontovka robot_stop-Roboter; Pause; Fall "W": // Vorwärts Robot_Go; Pause; Fall "D": // Swing nach links robot_rotation Schreiben (I - \u003d 20); Pause; Fall "J": // Servo wird von myservo1.write abgesenkt (i + \u003d 20); Pause; Fall "H": // servo dreht sich nach links myservo2. Schreiben (i + \u003d 20); Unterbrechung; Fall "k": // servo wird nach rechts myservo2.write gedreht (i - \u003d 20); Unterbrechung; Fall "Y": // Servo dreht 85 myservo1.write (85); Myservo2.write (85); Unterbrechung; Fall "F": // Scheinwerfer aktivieren; Unterbrechung; CASE "V": // Scheinwerfer schalten Scheinwerfer ausschalten; Unterbrechung; Fall "I": // Summer Hodk; Unterbrechung; )) WDT_RESET (); )

Änderungen an dem Router vornehmen
Um die Kameras zu steuern, wurden Änderungen an der Router-Bibliothek durchgeführt. Sie müssen den geänderten Code herunterladen und die Quelldateien ersetzen.

Fortsetzung des Themas:
Os

Ich habe einen Web-Service, den ich überregte, den ich als "Link zum Service hinzufügen" registriert habe, für den HTTPS erforderlich ist, und Zertifikat. Unten ist mein Code zum Erstellen einer Instanz ...