Mikrocontroller ESP8266: Anschluss und Konfiguration. Aktualisieren der Firmware des ESP8266 Wi-Fi-Moduls

So testen Sie ESP8266

Um den soeben gekauften ESP8266 zu testen, benötigen Sie Folgendes.

Aufmerksamkeit!Der zulässige Versorgungsspannungsbereich für das ESP8266-Modul liegt zwischen 3,0 und 3,6 Volt. Das Anlegen einer erhöhten Versorgungsspannung an das Modul führt garantiert zum Ausfall des ESP8266.

Um den ESP8266 ESP-01 zu testen, verbinden Sie einfach drei Pins: VCC und CH_PD (Chip-Aktivierung) mit einer 3,3-Volt-Stromversorgung und GND mit Masse. Wenn Sie kein ESP-01 haben, aber ein anderes Modul und GPIO15 darauf ausgegeben wird, müssen Sie GPIO15 zusätzlich mit Masse verbinden.

Wenn die werkseitige Firmware auf dem ESP8266-Modul erfolgreich gestartet wurde, leuchtet die rote LED auf (bei einigen Versionen des Moduls, z. B. ESP-12, fehlt möglicherweise die Betriebsanzeige) und die blaue LED blinkt einige Male (Dies ist ein Indikator für die Datenübertragung vom Modul zum Terminal über die TX-RX-Leitung, es kann eine andere Farbe haben) und in Ihrem drahtloses Netzwerk Es sollte ein neuer Zugangspunkt mit dem Namen „ESP_XXXX“ erscheinen, den Sie von jedem WLAN-Gerät aus sehen können. Der Name des Access Points hängt vom Firmware-Hersteller ab und kann unterschiedlich sein, zum Beispiel AI-THINKER_AXXXXC. Wenn der Zugangspunkt erscheint, können Sie die Experimente weiter fortsetzen. Wenn nicht, überprüfen Sie die Stromversorgung, CH_PD und GND erneut. Wenn alles richtig angeschlossen ist, liegt höchstwahrscheinlich ein fehlerhaftes Modul vor, aber es besteht die Hoffnung, dass das Die Firmware im Modul weist nicht standardmäßige Einstellungen auf. Vielleicht hilft Ihnen das Flashen.

So verbinden Sie ESP8266 schnell

Das Mindestkit zum Anschließen und Flashen des ESP8266-Moduls umfasst:

Aufmerksamkeit! In der rechten Abbildung verbinden Sie den UTXD (TX) und URXD (RX) des ESP8266-Moduls auf eigene Gefahr und Gefahr mit der Fünf-Volt-TTL-Logik! In der Dokumentation zum ESP8266 SoC heißt es, dass das Modul nur 3,3-V-Logik toleriert. In den meisten Fällen wird der ESP8266 durch den Anschluss eines ESP8266 an eine Fünf-Volt-Logik NICHT beschädigt, Ihr Modul kann jedoch Pech haben. Um das Risiko eines Ausfalls des ESP8266-Moduls auszuschließen, wird die Verwendung eines 3,3-Volt-USB-TTL-Wandlers oder eines TTL-5-V-3,3-V-Wandlers oder eines Widerstandsteilers (in der Abbildung nicht dargestellt) empfohlen. Sie können mehr über die Koordination auf logischer Ebene lesen. Risikofreudige Geeks wie ich schließen den ESP8266 direkt an die Fünf-Volt-TTL-Logik an und kümmern sich nicht darum.

Aufmerksamkeit! Die rechte Abbildung zeigt den Anschluss des Leistungsstabilisators 1117 ohne zusätzliche Verkabelung. Dies funktioniert, wir empfehlen jedoch dennoch die Verwendung eines Anschlussplans mit Kondensatortrimmung – überprüfen Sie den Anschlussplan mit dem Datenblatt Ihres Stabilisators oder verwenden Sie ein vorgefertigtes Modul auf Basis von 1117.

ESP8266 – Verbindung

Rot – 3,3-V-Stromversorgung

Schwarz - Masse

Gelb – auf der ESP8266-Seite – RX, auf der USB-TTL-Seite – TX

Grün – ESP8266-Seite – TX, USB-TTL-Seite – RX

Orange – CH_PD (CHIP ENABLE) – muss immer mit Strom verbunden sein

Blau – GPIO0 – über einen Schalter mit Masse verbunden, um den Modul-Blinkmodus zu aktivieren. Für einen normalen Start des Moduls kann GPIO0 nirgendwo angeschlossen bleiben.

Rosa im rechten Diagramm - unstabilisierte Stromversorgung 5-8 Volt

4. Um das Modul zu starten, unterbrechen Sie den GPIO0-GND-Kreis und Sie können Strom anlegen (und in genau dieser Reihenfolge: Zuerst stellen wir sicher, dass GPIO0 „in der Luft hängt“, dann versorgen wir VCC und CH_PD mit Strom).

Aufmerksamkeit! In den oben genannten, tatsächlich funktionierenden Beispielen für den Anschluss des ESP8266 verwenden sie die Verbindung der ESP8266-Pins „direkt“ mit Masse und Strom oder „in der Luft hängen“, da wir RESET nirgendwo angeschlossen haben, was absolut falsch ist und auch so ist Nur für die ersten paar Experimente geeignet, funktioniert aber bei den meisten Modulen recht gut. Nur der VCC-Pin ist „direkt“ mit der Stromversorgung verbunden; die restlichen Pins: CH_PD, RESET, GPIO0, GPIO2 müssen über einen Widerstand von 4,7 bis 50 kOhm an die Stromversorgung (VCC) hochgezogen (Pullup) werden. „Direkt“ verbinden wir nur GND mit dem Minuspol (gemeinsamer Draht) der Stromversorgung und ziehen GPIO0 (Pulldown) auch über einen Widerstand bis zu 10k an GND, um das Modul in den Firmware-Download-Modus zu versetzen. Wenn Sie mit dem ESP8266 weiter experimentieren möchten, gehen Sie genauso vor wie bei allen anderen Mikrocontrollern. Detaillierte Beschreibung Pullup und Pulldown gehen über den Rahmen dieses Artikels hinaus, aber Sie können die Beschreibung einfach googeln korrekte Verbindung Ein-/Ausgabeanschlüsse. Die „ “-Verbindung ermöglicht es Ihnen, viele „Wunder“ und Probleme zu vermeiden und ist unweigerlich notwendig, wenn Sie Schwierigkeiten beim Starten oder Flashen des ESP8266-Moduls haben.

So schließen Sie den ESP8266 richtig an

Wenn Sie den ESP8266 länger als einen Abend nutzen möchten, benötigen Sie eine Verbindungsmöglichkeit, die eine höhere Stabilität bietet. Nachfolgend finden Sie zwei Anschlussdiagramme: mit und ohne Unterstützung für das automatische Laden der Firmware.

Anschlussplan für ESP8266 (ohne die Firmware automatisch zu laden, flashen wir sie, indem wir zuerst den BURN-Jumper installieren und das Modul neu starten)

Anschlussplan mit Unterstützung für das automatische Laden der Firmware von Arduino-IDE, UDK, Sming. Das Flash Download Tool und XTCOM_UTIL müssen möglicherweise RTS/DTR deaktivieren. Wenn es für Sie unpraktisch ist, RTS und DTR zu deaktivieren, können Sie der Schaltung Jumper hinzufügen

Diese Diagramme zeigen nicht die Verbindung von ADC und freien GPIOs – ihre Verbindung hängt davon ab, was Sie implementieren möchten. Wenn Sie jedoch Stabilität wünschen, vergessen Sie nicht, alle GPIOs an die Stromversorgung (Pullup) und den ADC an Masse (Pulldown) zu ziehen ) durch Pull-Up-Widerstände .

Widerstände bei 10k können durch andere von 4,7k bis 50k ersetzt werden, mit Ausnahme von GPIO15 – sein Wert muss bis zu 10k betragen. Der Wert des Kondensators, der hochfrequente Pulsationen glättet, kann unterschiedlich sein.

Wenn Sie den Tiefschlafmodus verwenden, müssen Sie RESET und GPIO16 über einen 470-Ohm-Tiefschlafwiderstand verbinden: Um den Tiefschlafmodus zu verlassen, startet sich das Modul neu, indem es einen niedrigen Pegel an GPIO16 anlegt. Ohne diese Verbindung wird der Tiefschlaf für Ihr Modul ewig dauern.

Auf den ersten Blick scheinen diese Diagramme darauf hinzudeuten, dass GPIO0, GPIO2, GPIO15, GPIO1 (TX), GPIO3 (RX) ausgelastet sind und Sie sie nicht für Ihre Zwecke nutzen können, aber das ist nicht der Fall. Ein hoher Pegel auf GPIO0 und GPIO2 sowie ein niedriger Pegel auf GPIO15 sind nur zum Starten des Moduls erforderlich. Anschließend können Sie sie nach eigenem Ermessen verwenden. Denken Sie jedoch daran, die erforderlichen Pegel sicherzustellen, bevor Sie das Modul neu starten.

Sie können TX und RX als GPIO1 bzw. GPIO3 verwenden. Vergessen Sie nicht, dass beim Start des Moduls jede Firmware TX zieht und Debugging-Informationen mit einer Geschwindigkeit von 74480 an UART0 sendet. Nach erfolgreichem Laden können Sie sie jedoch nicht nur als UART0 für verwenden Daten mit einem anderen Gerät austauschen, aber auch wie normale GPIOs.

Bei Modulen mit einer geringeren Anzahl verdrahteter Pins, wie z. B. ESP-01, ist das Anschließen gelöster Pins nicht erforderlich, d. h. Beim ESP-01 sind nur VCC, GND, GPIO0, GPIO2, CH_PD und RESET verkabelt – man zieht sie einfach fest. Es besteht keine Notwendigkeit, direkt an den ESP8266EX-Chip zu löten und nicht verlegte Pins anzuziehen, sondern nur, wenn Sie dies benötigen.

Diese Verbindungsdiagramme entstanden nach vielen Experimenten unserer Forumsmitglieder und wurden nach und nach aus verstreuten und zunächst unzugänglichen Dokumentationen unserer Community zusammengetragen. Ich habe einfach versucht, dieses Wissen an einem Ort zu vereinen. Sie finden viele Anschlusstipps. Dort können Sie Fragen stellen, die Sie interessieren oder finden. Wenn Ihnen in diesem Artikel ein Fehler oder eine Ungenauigkeit auffällt oder Sie etwas hinzufügen möchten, dann .

Aufmerksamkeit! Selbst diese Schemata können nicht als „ideal“ bezeichnet werden. Der Perfektion sind keine Grenzen gesetzt: Es ist praktisch, einen zweiten USB-TTL an UART1 anzuschließen (bei ESP8266 können Sie nur GND und UTXD1, also GPIO2, verwenden), um ein Debugging-Terminal anzuschließen (Sie benötigen einen zweiten USB-TTL-Konverter) - Dann können Sie das ESP8266-Modul über UART0 flashen, ohne das Debugging-Terminal auf UART1 zu deaktivieren. Es wäre eine gute Idee, kleine Widerstände an die Pins beider UARTs anzuschließen, eine Diode in die RTS-Leitung einzubauen, der Stromleitung einen Kondensator hinzuzufügen, um niederfrequente Impulse zu dämpfen usw. Dies ist beispielsweise bei diesem Debug-Board sehr praktisch: LEDs sind an alle GPIOs angeschlossen, ein Fotowiderstand ist an den ADC angeschlossen, aber es ist schade, dass es keine RESET-Taste gibt und es nur einen Jumper auf GPIO0 gibt.

Es wäre richtig, Ihnen zu sagen, dass es gleichzeitig kein Ideal gibt universelles Schema ESP8266-Verbindungen. Die Sache ist, dass viel von der Firmware abhängt, die Sie dort hochladen. Die obigen Diagramme sind für Anfänger gedacht, die gerade erst anfangen, den ESP8266 zum Experimentieren zu beherrschen. Bei realen Projekten müssen Sie das Diagramm möglicherweise ein wenig ändern. Beispielsweise müssen Sie RTS mit GPIO15 und CTS mit GPIO13 verbinden. Ich empfehle außerdem, bei realen Projekten besonders auf die Ernährung zu achten.

ESP8266 über Arduino verbinden

Wenn Sie keinen 3,3-V-USB-TTL-Konverter zur Hand haben, aber einen Arduino mit eingebautem USB-TTL-Konverter haben, können Sie diesen Anschlussplan verwenden

Worauf Sie achten sollten:

1. Arduino Reset ist mit GND (blaues Kabel) verbunden, damit der Mikrocontroller auf Arduino nicht startet. In dieser Form verwenden wir Arduino als transparenten USB-TTL-Konverter

2. RX und TX sind nicht über Kreuz verbunden, sondern direkt - RX - RX (grün), TX - TX (gelb)

3. Alles andere ist auf die gleiche Weise verbunden wie in den vorherigen Beispielen

Aufmerksamkeit! Diese Schaltung erfordert auch die Anpassung der TTL-Pegel von 5 Volt beim Arduino und 3,3 Volt beim ESP8266, funktioniert aber auf diese Weise gut.

Aufmerksamkeit!Auf dem Arduino ist möglicherweise ein Leistungsstabilisator installiert, der dem vom ESP8266 benötigten Strom nicht standhält. Überprüfen Sie daher vor dem Herstellen der Verbindung das Datenblatt des von Ihnen installierten Stabilisators. Schließen Sie keine anderen stromverbrauchenden Komponenten gleichzeitig mit dem ESP8266 an, da die Gefahr einer Beschädigung des integrierten Leistungsreglers des Arduino besteht.

Die Verbindung zum seriellen Port erfordert ein wenig Magie: Aufgrund der Firmwarevielfalt für den ESP8266 kann die Verbindung mit unterschiedlichen Geschwindigkeiten hergestellt werden. Die erforderliche Geschwindigkeit lässt sich durch einfaches Durchsuchen der drei Optionen ermitteln: 9600, 57600 und 115200. Wie sucht man? Stellen Sie im Terminalprogramm eine Verbindung zu Ihrem virtuellen seriellen Port her, indem Sie die folgenden Parameter einstellen: 9600 8N1. Anschließend starten Sie das Modul neu, indem Sie CH_PD (Chip-Enable) von der Stromversorgung trennen (USB-TTL bleibt mit USB verbunden) und es wieder einschalten (d. h. Schalten Sie einfach CH_PD um, warum verzerren wir nicht die Stromversorgung? Lesen Sie, Sie können RESET auch mit Masse kurzschließen, um das Modul neu zu starten) und die Daten im Terminal beobachten. Zunächst sollten die LEDs am ESP8266 aufleuchten, wie am Anfang des Artikels im Abschnitt beschrieben. Zweitens sollten Sie im Terminal einen „Müll“ verschiedener Zeichen sehen, der mit der Zeile „bereit“ endet. Wenn wir nicht „bereit“ sehen, verbinden wir uns mit einer anderen Geschwindigkeit erneut mit dem Terminal und starten das Modul erneut.

Bei einer der „ready“-Geschwindigkeitsoptionen sehen Sie immer noch: Herzlichen Glückwunsch, Ihr Modul ist einsatzbereit. Wenn nicht, dann willkommen – wir werden versuchen zu helfen, aber lesen Sie zuerst.

Noch ein bisschen zum Thema „Müll“. Tatsache ist, dass beim Start der Firmware der UART des ESP8266-Moduls auf eine Baudrate von 74.880 umschaltet (diese Chinesen sind so lustig), Debugging-Informationen an den UART ausgibt und dann die Portgeschwindigkeit auf 115200 (oder 9600 oder 57600, abhängig von der Firmware-Version), daher erscheinen uns diese Debugging-Informationen als Müll, weil Wir verbinden uns mit einer anderen Geschwindigkeit mit dem Modul. Sie können eine Verbindung zum ESP8266 mit einer Geschwindigkeit von 74.880 herstellen (unterstützt diese Geschwindigkeit) und Sie werden diese Debugging-Informationen sehen, die etwa so aussehen:

wdt reset laden 0x40100000, len 25052, Raum 16 Schwanz 12 chksum 0x0b ho 0 Schwanz 12 Raum 4 laden 0x3ffe8000, len 3312, Raum 12 Schwanz 4 chksum 0x53 laden 0x3ffe8cf0, len 6576, Raum 4 Schwanz 12 chksum 0x0d cs ähm 0x0d

wdt zurückgesetzt

Laden Sie 0x40100000, Länge 25052, Raum 16

Laden Sie 0x3ffe8cf0, Länge 6576, Raum 4

Schwanz 12

Prüfsumme 0x0d

csum 0x0d

ABER! Sie sehen nicht „Bereit“ und können das Modul erst dann steuern, wenn Sie wieder die Geschwindigkeit erreichen, mit der die Firmware ausgeführt wird.

Was macht man als nächstes

Wenn Sie haben neues Modul, dann ist höchstwahrscheinlich eine der alten benutzerdefinierten AT-Firmwares darin geflasht. Höchstwahrscheinlich handelt es sich hierbei um eine Art AI-THINKER AT v0.16 SDK v0.9.2. Sie können die Firmware-Version mit dem Befehl „AT+GMR“ überprüfen, d. h. Geben Sie direkt im Terminalprogramm AT+GMR ohne Anführungszeichen ein und drücken Sie die Eingabetaste. Das Modul sollte mit „OK“ antworten und die Firmware-Version anzeigen (z. B. „0016000092“ - in verschiedene Versionen Das Ausgabeformat der AT-Firmware-Version ist unterschiedlich. Die Steuerung des ESP8266-Moduls mit AT-Befehlen verdient einen separaten Artikel, aber Sie können es leicht selbst herausfinden, indem Sie eines unserer Nachschlagewerke zu AT-Befehlen verwenden:

Zum Zeitpunkt des Schreibens dieses Artikels)

2. Laden Sie je nach Betriebssystem eines der Dienstprogramme zum Flashen des ESP8266 aus dem Abschnitt auf unserer Website herunter

... Im Allgemeinen ist dieses Material nicht auf nur ein Arduino-Thema beschränkt.

Das Thema ESP8266 ist ein ziemlich schwieriges Thema. Aber wenn man damit arbeitet Wi-Fi-Modul Wir arbeiten in der Entwicklungsumgebung Arduino IDE – die Einstiegsschwelle sinkt auf ein für den durchschnittlichen Arduino-Benutzer akzeptables Niveau. Und nicht nur der Arduino-Typ, sondern jeder, der Lust hat, etwas zu diesem Thema zu entwickeln, ohne viel Zeit damit zu verbringen, die Dokumentation für den Chip zu lesen und die API für diese Module zu studieren.

Dieses Video ist eine vollständige Vervielfältigung des im folgenden Artikel präsentierten Materials.

Nun, wir wissen bereits, wie man den ESP8266 anschließt und in den Programmiermodus versetzt. Kommen wir nun zu etwas Nützlicherem.

Ich möchte gleich sagen, dass wir, sobald wir das Modul in der Arduino-Entwicklungsumgebung programmieren, die native Firmware zerstören und nicht mehr in der Lage sein werden, mit dem Modul über AT-Befehle zu arbeiten. Persönlich macht mich das nicht kalt/heiß, aber wenn es jemand braucht, werde ich gegen Ende des Artikels zeigen, wie man die native Firmware wieder in das Modul oder eine Art Bootloader wie NodeMcu flasht.

Laden Sie zunächst die neueste Version der Arduino IDE von der offiziellen Website herunter, derzeit ist es 1.6.7. Ältere Versionen wie 1.0.5. passen nicht, weil sie einfach nicht über die nötige Funktionalität verfügen und uns das Tanzen mit einem Tamburin nicht interessiert, oder?

Wir starten die Entwicklungsumgebung und gehen sofort zu Datei/Einstellungen:

Http://arduino.esp8266.com/stable/package_esp8266com_index.json

Gehen Sie dann zu Tools/Board:/Board Manager...:

Vor uns erscheint ein Board-Manager-Fenster, scrollen Sie bis ganz nach unten und wenn alles richtig gemacht ist, sehen wir etwa Folgendes:

Klicken Sie mit dem Cursor auf die Aufschrift „ esp8266 von ESP8266-Community„Danach müssen wir die Schaltfläche „Installieren“ auswählen die benötigte Version, ich nehme die neueste Version, ab heute ist es 2.1.0. und installieren Sie es. Die Entwicklungsumgebung lädt die benötigten Dateien herunter (ca. 150 Megabyte) und gegenüber steht die Aufschrift „ esp8266 von ESP8266-Community Es erscheint „INSTALLED“, d. h. installiert:

Wir scrollen in der Liste der Boards nach unten und sehen, dass wir viele verschiedene ESPs in der Liste haben. Nehmen Sie „Generic ESP8266 Module“:

Gehen Sie zu „Extras“ und wählen Sie den gewünschten COM-Port aus (bei mir ist es COM32), dann stellen Sie die Upload-Geschwindigkeit ein: „115200“:

Wir stellen die Geschwindigkeit auf 74880 und „NL & CR“ ein, schalten das Gerät erneut aus und schalten es ein, woraufhin es mit einigen Debugging-Informationen antwortet:

Beachten Sie, dass 74880 nicht die Hauptgeschwindigkeit des ESP8266 ist, sondern lediglich Debugging-Informationen an ihn sendet. Wenn das Modul nichts an die Konsole sendet, ist möglicherweise etwas falsch angeschlossen.

Standardmäßig sollte die Geschwindigkeit 115200 betragen, in einigen Fällen kann sie jedoch 9600 und in anderen Fällen ... Versuchen Sie also, sie zu finden.

Nachdem wir die gewünschte Geschwindigkeit ausgewählt haben, senden wir das „AT“-Modul und es sollte antworten, dass alles „OK“ ist. Der Befehl „AT+GMR“ zeigt Informationen zur Firmware an.

Bevor Sie mit dem Flashen des ESP8266 in der Arduino IDE beginnen, empfehle ich Ihnen, den Artikel bis zum Ende zu lesen.

Versuchen wir nun, den ESP8266 über die Arduino IDE zu flashen. Wir haben das Modul in den Programmiermodus versetzt (wie das geht, habe ich in geschrieben).

Fügen wir dem Blinker eine Standard-LED hinzu:

// Von Mr. PodelkinTs youtube.com/RazniePodelki // speziell für site/post/271754/ #define TXD 1 // GPIO1/TXD01 void setup() ( pinMode(TXD, OUTPUT); ) void loop() ( digitalWrite( TXD, HIGH); Verzögerung(1000); digitalWrite(TXD, LOW); Verzögerung(1000); )

Geflasht? Es wurde also alles richtig gemacht. Woher habe ich, dass die LED mit dem ersten Pin verbunden ist? Im vorherigen Artikel gibt es ein Bild mit Pinbelegungen verschiedener Module und eine Markierung der Ports bei Verwendung des Arduino-Bootloaders (Pins sind rosa markiert).

Das Blinken einer LED ist natürlich gut, aber wir müssen eine Art Webserver installieren oder anfangen, die LED zumindest über Schaltflächen im Browser zu steuern, oder? Aber davon erzähle ich euch ein andermal.

Und jetzt So flashen Sie die native Firmware zurück und wie man sogar ein Modul mit Bootloadern von Drittanbietern flasht. Für ESP8266 gibt es ein solches Programm wie NodeMCU Flasher, das ursprünglich zum Flashen des NodeMCU-Bootloaders gedacht ist. Aber wie sich herausstellte, flasht es andere Firmware perfekt.

Der Einfachheit halber werde ich dem Artikel ein Archiv mit diesem Programm und dieser Firmware beifügen, Sie können es jedoch jederzeit herunterladen neue Version NodeMCU-Flasher.

Im Ordner „nodemcu-flasher-master“ befinden sich zwei Ordner, Win64 und Win32. Wählen Sie je nach Bittiefe Ihres Betriebssystems den Ordner aus, den Sie benötigen. Als nächstes führen Sie im Release-Ordner „ESP8266Flasher.exe“ aus und sehen sich die Programmoberfläche an:

Wählen Sie den gewünschten COM-Port aus und gehen Sie zum Reiter „Config“, entfernen Sie das Kreuz neben „INTERNAL://NODEMCU“ und setzen Sie es einen Punkt tiefer, wie im Screenshot:

(Wenn Sie den NodeMCU-Bootloader flashen möchten, entfernen Sie das Kreuz dort, wo es nicht war, und platzieren Sie es dort, wo es war, also in der Nähe von „INTERNAL://NODEMCU“).

Dann klicken wir auf das Zahnrad und wählen aus, wo sich unsere Firmware befindet. Die Firmware liegt normalerweise im *.bin-Format vor (im angehängten Archiv ist es „v0.9.5.2 AT Firmware.bin“, das sich im Hauptordner befindet) und Wählen Sie außerdem „0x00000“ und höher.

Wir kehren wieder zur Registerkarte „Betrieb“ zurück, versetzen das Modul in den Programmiermodus und klicken auf „Flash“:

Das war's, das Modul hat mit dem Flashen begonnen. Vergessen Sie nach dem Flashen nicht, das Modul neu zu starten, und voilà, es ist mit der Firmware geflasht, die wir benötigen.

Wir überprüfen mit dem AT-Befehl „AT+GMR“, ob wir alles richtig gemacht haben:

Wie Sie sehen, hat alles reibungslos geklappt.

Viele Benutzer haben bereits ihre Aufmerksamkeit auf den von Espressif veröffentlichten ESP8266-12-Chip gelenkt. Die Kosten sind im Vergleich zu einer Standard-Bluetooth-Adapterplatine deutlich günstiger und trotz der geringeren Abmessungen verfügt es über deutlich größere Leistungsfähigkeiten. Jetzt haben alle Hobbybastler die Möglichkeit, daran zu arbeiten Wi-Fi-Netzwerke in zwei Modi gleichzeitig, d. h. verbinden Sie Ihren Computer mit beliebigen Zugangspunkten oder schalten Sie ihn als solchen ein.

Andererseits müssen Sie richtig verstehen, dass es sich bei solchen Platinen nicht nur um Abschirmungen handelt, die nur für die Wi-Fi-Kommunikation gedacht sind. Der ESP8266 selbst ist ein Mikrocontroller, der über eigene UART-, GPIO- und SPI-Schnittstellen verfügt, also als völlig autonomes Gerät eingesetzt werden kann. Nach der Veröffentlichung dieses Chips nannten ihn viele eine echte Revolution, und im Laufe der Zeit werden solche Geräte sogar in die meisten Geräte eingebaut einfache Typen Technologie, aber bisher ist das Gerät relativ neu und es gibt keine stabile Firmware dafür. Viele Spezialisten auf der ganzen Welt versuchen, ihre eigene Firmware zu erfinden, denn das Hochladen auf die Platine ist eigentlich nicht schwierig, aber trotz diverser Schwierigkeiten kann das Gerät bereits als durchaus brauchbar bezeichnet werden.

Derzeit werden nur zwei Möglichkeiten zur Nutzung dieses Moduls in Betracht gezogen:

  • Verwendung der Platine in Kombination mit einem zusätzlichen Mikrocontroller oder einem Computer, der das Modul über UART steuert.
  • Eigenständiges Schreiben der Firmware für den Chip, wodurch Sie ihn später als autarkes Gerät nutzen können.

Es ist ganz natürlich, dass wir in diesem Fall keine unabhängige Firmware in Betracht ziehen.

Im Hinblick auf Benutzerfreundlichkeit und gute Leistung bevorzugen viele Menschen unter den vielen Mikrocontrollern das Modell ESP8266. Verbindung und Firmware-Update dieses Geräts ist äußerst einfach und erschwinglich und wird auf derselben Hardware hergestellt, auf der das Gerät an den Computer angeschlossen ist. Also auch über einen USB-TTL-Konverter oder, wenn jemand andere Anschlussmöglichkeiten bevorzugt, über RPi und Arduino.

Wie zu überprüfen?

Um die Funktionalität eines neu gekauften Geräts zu überprüfen, müssen Sie eine spezielle stabilisierte Spannungsquelle mit einer Nennspannung von 3,3 Volt verwenden. Es ist sofort erwähnenswert, dass der tatsächliche Versorgungsspannungsbereich dieses Moduls zwischen 3 und 3,6 Volt liegt und die Bereitstellung einer erhöhten Spannung sofort dazu führt, dass Sie Ihren ESP8266 einfach beschädigen. Nach einer solchen Situation kann es sein, dass Firmware und andere Software nicht mehr richtig funktionieren und Sie das Gerät reparieren oder auf andere Weise reparieren müssen.

Um die Funktionalität dieses Mikrocontroller-Modells zu bestimmen, müssen Sie lediglich drei Pins verbinden:

  • CH_PD und VCC sind an die 3,3-Volt-Versorgung angeschlossen.
  • GND verbindet sich mit Masse.

Wenn Sie nicht ESP-01, sondern ein anderes Modul verwenden und dieses bereits über einen GPIO15-Ausgang verfügt, müssen Sie es in diesem Fall zusätzlich mit Masse verbinden.

Wenn die werkseitige Firmware normal gestartet ist, können Sie in diesem Fall sehen, dass das blaue Licht ein paar Mal blinkt. Es ist jedoch zu beachten, dass nicht alle Geräte der ESP8266-Serie über eine rote Betriebsanzeige verfügen. Die Firmware einiger Geräte sieht das Aufleuchten der roten Anzeige nicht vor, wenn das Modul nicht über eine solche verfügt (dies gilt insbesondere für das Modell ESP-12).

Sobald die Verbindung hergestellt ist, wird ein neuer Zugangspunkt in Ihrem drahtlosen Netzwerk aktiviert, der ESP_XXXX heißt und von jedem Gerät aus erkannt werden kann, das Zugriff auf WLAN hat. In diesem Fall hängt der Name des Access Points direkt vom Hersteller der von Ihnen verwendeten Firmware ab und kann daher unterschiedlich sein.

Wenn der Punkt erscheint, können Sie mit dem Experimentieren fortfahren. Andernfalls müssen Sie die Stromversorgung sowie die Richtigkeit der GND- und CH_PD-Anschlüsse erneut überprüfen. Wenn alles richtig angeschlossen ist, versuchen Sie es höchstwahrscheinlich immer noch Verwenden Sie ein defektes Modul oder es ist einfach Firmware mit nicht standardmäßigen Einstellungen installiert.

Wie kann ich es schnell anschließen?

Das zum Anschluss dieses Moduls erforderliche Standardkit umfasst Folgendes:

  • das Modul selbst;
  • lötfreies Steckbrett;
  • Ein kompletter Satz Mutter-Vater-Kabel für Steckbrett, oder ein spezielles Kabel DUPONT M-F;
  • USB-TTL-Konverter basierend auf PL2303, FTDI oder einem ähnlichen Chip. Am besten ist es, wenn RTS und DTR auch an den USB-TTL-Adapter ausgegeben werden, da dieser ausreichend erreichen kann schnelles Laden Firmware von einem UDK, Arduino IDE oder Sming, ohne GPIO0 manuell auf Masse schalten zu müssen.

Wenn Sie einen 5-Volt-Wandler verwenden, müssen Sie in diesem Fall einen zusätzlichen Leistungsstabilisator auf Basis des 1117-Chips oder eines ähnlichen Chips sowie eine Stromquelle (für einen Standard-1117 sogar einen gewöhnlichen 5-Volt-Wandler) erwerben. Ein Volt-Smartphone-Ladegerät ist durchaus geeignet). Es wird empfohlen, nicht die Arduino IDE oder USB-TTL als Stromquelle für den ESP8266 zu verwenden, sondern eine separate zu verwenden, da dadurch letztendlich viele Probleme beseitigt werden können.

Ein erweiterter Satz zur Gewährleistung eines komfortablen und konstanten Betriebs des Moduls erfordert den Einsatz zusätzlicher Widerstände, LEDs und DIP-Schalter. Darüber hinaus können Sie auch einen kostengünstigen USB-Monitor verwenden, mit dem Sie den Stromverbrauch ständig überwachen und den USB-Bus ein wenig davor schützen können

Was müssen wir machen?

Zunächst ist zu beachten, dass die Bedienelemente beim ESP8266 je nach verwendetem Modell leicht unterschiedlich sein können. Heutzutage gibt es eine ganze Reihe solcher Module. Als Erstes müssen Sie das von Ihnen verwendete Modell identifizieren und sich für die Pinbelegung entscheiden. In dieser Anleitung sprechen wir über die Arbeit mit dem ESP8266 ESP-01 V090-Modul. Wenn Sie ein anderes Modell mit einem GPIO15-Pin (HSPICS, MTDO) verwenden, müssen Sie es für den Standardstart auf den Boden ziehen des Moduls und zur Nutzung des Firmware-Modus.

Überprüfen Sie anschließend noch einmal, ob die Versorgungsspannung des angeschlossenen Moduls 3,3 Volt beträgt. Der zulässige Bereich liegt wie oben erwähnt bei 3 bis 3,6 Volt, bei einem Anstieg fällt das Gerät aus, allerdings kann die Versorgungsspannung sogar deutlich unter den in den Unterlagen angegebenen 3 Volt liegen.

Wenn Sie einen 3,3-Volt-USB-TTL-Konverter verwenden, schließen Sie das Modul genau wie auf der linken Seite des Bildes unten an. Wenn Sie ausschließlich Fünf-Volt-USB-TTL verwenden, dann achten Sie auf die rechte Seite der Abbildung. Vielen mag es vorkommen, dass die richtige Schaltung effizienter ist, da sie eine separate Stromquelle verwendet. Tatsächlich ist es jedoch bei Verwendung eines 5-Volt-USB-TTL-Konverters äußerst wünschenswert, auch einen zu erstellen zusätzlicher Widerstandsteiler, um die Anpassung der Logikpegel von drei Volt und fünf Volt sicherzustellen, oder verwenden Sie einfach das Pegelumwandlungsmodul.

Verbindungsfunktionen

Die rechte Abbildung zeigt den Anschluss von UTXD (TX) sowie URXD (RX) dieses Moduls an die Fünf-Volt-TTL-Logik. Solche Vorgänge erfolgen nur auf eigene Gefahr und Gefahr. Für den ESP8266 heißt es in der Beschreibung, dass das Modul nur mit 3,3-Volt-Logik effektiv funktioniert. In den allermeisten Fällen fällt das Gerät auch beim Arbeiten mit Fünf-Volt-Logik nicht aus, jedoch treten solche Situationen gelegentlich auf, sodass ein solcher Anschluss nicht zu empfehlen ist.

Wenn Sie keine Möglichkeit haben, einen speziellen 3,3-Volt-USB-TTL-Konverter zu verwenden, können Sie einen Widerstandsteiler verwenden. Es ist auch erwähnenswert, dass im rechten Bild der Leistungsstabilisator 1117 ohne zusätzliche Verkabelung angeschlossen ist, und dies ist eine wirklich funktionierende Technologie, es ist jedoch immer noch am besten, den 1117-Anschlussplan mit Kondensatorverkabelung zu verwenden – Sie müssen dies mit überprüfen Lesen Sie das ESP8266-Datenblatt für Ihren Stabilisator oder verwenden Sie ein komplett fertiges Modul auf Basis der 1117-Basis.

Um das Modul zu starten, müssen Sie den GPIO0-TND-Schaltkreis öffnen, danach können Sie Strom anlegen. Es ist erwähnenswert, dass alles in genau dieser Reihenfolge durchgeführt werden muss, d. h. zunächst sicherstellen, dass GPIO0 „in der Luft hängt“ und erst dann CH_PD und VCC mit Strom versorgen.

Wie verbinde ich mich richtig?

Wenn Sie mehr als einen Abend Zeit haben, um das ESP8266-Modul ordnungsgemäß anzuschließen, können Sie eine stabilere Option verwenden. Im Diagramm oben sehen Sie eine Verbindungsmöglichkeit mit automatischem Firmware-Download.

Es ist erwähnenswert, dass das obige Bild nicht die Verwendung kostenloser GPIOs oder ADCs zeigt und deren Verbindung direkt davon abhängt, was genau Sie implementieren möchten. Wenn Sie jedoch Stabilität gewährleisten möchten, denken Sie daran, alle GPIOs an die Stromversorgung und ADCs anzuschließen mit Pull-Up-Widerständen auf Masse legen.

Bei Bedarf können 10k-Widerstände durch beliebige andere im Bereich von 4,7k bis 50k ersetzt werden, mit Ausnahme von GPIO15, da sein Wert nicht mehr als 10k betragen sollte. Der Wert des Kondensators, der hochfrequente Pulsationen glättet, kann geringfügig abweichen.

Die Verbindung von RESET und GPIO16 über einen 470-Ohm-Tiefschlafwiderstand kann bei Verwendung des entsprechenden Modus erforderlich sein, da das Modul zum Verlassen des Tiefschlafmodus einen vollständigen Neustart durchführt, indem es einen niedrigen Pegel an GPIO16 anlegt. Mit Abwesenheit dieser Verbindung Der Tiefschlafmodus Ihres Moduls bleibt für immer bestehen.

Auf den ersten Blick mag es scheinen, dass GPIO0, GPIO1 (TX), GPIO2, GPIO3 (RX) und GPIO15 ausgelastet sind, sodass Sie sie nicht für Ihre Zwecke verwenden können, aber tatsächlich ist dies bei weitem nicht der Fall. Ein ausreichend hoher Pegel auf GPIO0 und GPIO2 sowie ein niedriger Pegel auf GPIO15 sind möglicherweise nur für die Erstinbetriebnahme des Moduls erforderlich und können in Zukunft nach eigenem Ermessen verwendet werden. Das Einzige, was es zu beachten gilt, ist, daran zu denken, die erforderlichen Werte sicherzustellen, bevor Sie ein vollständiges Zurücksetzen Ihrer Ausrüstung durchführen.

Alternativ zu GPIO1 und GPIO3 können Sie auch TX, RX verwenden. Vergessen Sie jedoch nicht, dass nach dem Start des Moduls jede Firmware beginnt, TX zu „ziehen“, während gleichzeitig Debugging-Informationen mit einer Geschwindigkeit von 74480 an UART0 gesendet werden, jedoch nach dem Wenn der Download erfolgreich ist, können sie nicht nur als UART0 verwendet werden, um Daten mit einem anderen Gerät auszutauschen, sondern auch als Standard-GPIOs.

Bei Modulen mit einer geringen Anzahl verdrahteter Pins (z. B. ESP-01) ist es nicht erforderlich, ungenutzte Pins anzuschließen, d. h. nur GND, CH_PD, VCC, GPIO0, GPIO2 und RESET sind am ESP-01 verdrahtet , und das ist es, was Sie brauchen, muss verschärft werden. Es besteht keine Notwendigkeit, direkt an den ESP8266EX-Chip zu löten und dann die blanken Stifte herauszuziehen, es sei denn, Sie benötigen es wirklich.

Solche Schaltpläne wurden nach einer Vielzahl von Experimenten von qualifizierten Fachleuten verwendet und aus vielen verschiedenen Informationen zusammengetragen. Es ist anzumerken, dass selbst solche Systeme nicht als ideal angesehen werden können, da eine Reihe anderer, nicht weniger wirksamer Optionen genutzt werden können.

Verbindung über Arduino

Wenn Sie aus irgendeinem Grund keinen 3,3-Volt-USB-TTL-Konverter haben, kann das ESP8266-WLAN-Modul über Arduino mit integriertem Konverter angeschlossen werden. Hier müssen Sie Ihre Aufmerksamkeit zunächst auf drei Hauptelemente richten:

  • Bei der Verwendung mit dem ESP8266 wird Arduino Reset zunächst mit GND verbunden, um den Start des Mikrocontrollers zu verhindern, und wurde in dieser Form als transparenter USB-TTL-Konverter verwendet.
  • RX und TX wurden nicht „an der Kreuzung“ verbunden, sondern direkt – RX-RX (grün), TX-TX (gelb).
  • Alles weitere wird genau wie oben beschrieben angeschlossen.

Was ist zu beachten?

Diese Schaltung erfordert auch die Anpassung der TTL-Pegel von 5 Volt auf dem Arduino sowie 3,3 Volt auf dem ESP8266, funktioniert aber in beiden Fällen recht gut.

Wenn der Arduino an einen ESP8266 angeschlossen ist, ist er möglicherweise mit einem Leistungsregler ausgestattet, der den vom ESP8266 benötigten Strom nicht verarbeiten kann. Daher müssen Sie vor der Aktivierung das Datenblatt des von Ihnen verwendeten Reglers überprüfen. Versuchen Sie nicht, andere stromverbrauchende Komponenten mit dem ESP8266 zu verbinden, da dies dazu führen kann, dass der im Arduino integrierte Leistungsregler einfach ausfällt.

Es gibt auch ein weiteres ESP8266- und Arduino-Verbindungsschema, das SoftSerial verwendet. Da für die SoftSerial-Bibliothek die Portgeschwindigkeit von 115200 zu hoch ist und keinen stabilen Betrieb garantieren kann, ist diese Verbindungsmethode nicht zu empfehlen, obwohl es einige Fälle gibt, in denen alles recht stabil funktioniert.

Verbindung über RaspberryPi

Wenn Sie überhaupt keinen USB-TTL-Konverter haben, können Sie RaspberryPi verwenden. In diesem Fall erfolgt beim ESP8266 die Programmierung und der Anschluss nahezu identisch, allerdings ist hier nicht alles so komfortabel und zusätzlich muss noch ein 3,3-Volt-Leistungsstabilisator verwendet werden.

Zunächst verbinden wir RX, TX und GND unseres Geräts mit dem ESP8266 und nehmen GND und VCC von dem für 3,3 Volt ausgelegten Gerät. Dabei ist besonders darauf zu achten, dass alle GND-Geräte, also der RaspberryPi-Stabilisator und ESP8266, angeschlossen werden müssen. Wenn der in Ihrem Gerätemodell eingebaute Stabilisator einer zusätzlichen Belastung von bis zu 300 Milliampere standhält, ist der Anschluss des ESP8266 in diesem Fall ganz normal, dies geschieht jedoch nur auf eigene Gefahr und Gefahr.

Parameter einrichten

Nachdem Sie herausgefunden haben, wie Sie den ESP8266 anschließen, müssen Sie sicherstellen, dass die Treiber für Ihre Geräte korrekt installiert sind, wodurch dem System ein neuer virtueller serieller Port hinzugefügt wurde. Hier müssen Sie ein Programm verwenden – ein Terminal mit serieller Schnittstelle. Im Prinzip können Sie jedes Dienstprogramm nach Ihrem Geschmack wählen, Sie müssen jedoch richtig verstehen, dass jeder Befehl, den Sie an die serielle Schnittstelle senden, am Ende die Zeichen CR+LF enthalten muss.

Die Dienstprogramme CoolTerm und ESPlorer sind weit verbreitet. Letzteres ermöglicht es Ihnen, den ESP8266 nicht selbst einzugeben, und erleichtert gleichzeitig die Arbeit mit Lua-Skripten unter NodeMCU, sodass er als Standardterminal verwendet werden kann.

Um eine normale Verbindung herzustellen, müssen Sie viel Arbeit leisten, da die Firmware für den ESP8266 meist vielfältig ist und die Aktivierung mit unterschiedlichen Geschwindigkeiten erfolgen kann. Um sich für die beste Option zu entscheiden, müssen Sie drei Hauptoptionen durchgehen: 9600, 57600 und 115200.

Wie sortiere ich?

Stellen Sie zunächst eine Verbindung zum virtuellen seriellen Port im Terminalprogramm her, stellen Sie die Parameter auf 9600 8N1 ein, führen Sie dann einen vollständigen Neustart des Moduls durch, trennen Sie CH_PD (Chip-Freigabe) von der Stromversorgung und reaktivieren Sie es anschließend wieder, indem Sie CH_PD ruckeln. Sie können auch einen kurzen RESET auf Masse durchführen, um das Modul zurückzusetzen und die Daten im Terminal zu beobachten.

Zunächst sollten die LEDs des Geräts genau so aussehen, wie im Testablauf dargestellt. Sie sollten auch eine Reihe unterschiedlicher Zeichen im Terminal beobachten, die dazu führen, dass die Leitung bereit ist. Wenn sie nicht vorhanden sind, wird eine erneute Verbindung zum Terminal mit einer anderen Geschwindigkeit durchgeführt, gefolgt von einem Neustart des Moduls.

Wenn Sie eine der Geschwindigkeitsoptionen sehen diese Linie, kann das Modul als betriebsbereit betrachtet werden.

Wie aktualisiere ich die Firmware?

Sobald Sie den ESP8266 installiert haben, dauert es nur wenige Sekunden, das Gerät anzuschließen, und dann können Sie mit der Aktualisierung der Firmware beginnen. Um ein neues zu installieren Software Sie müssen Folgendes tun.

Laden Sie zunächst die neue Firmware-Version von der offiziellen Website herunter und laden Sie sie ebenfalls herunter besonderer Nutzen für Firmware. Hier sollte besonders darauf geachtet werden, was operationssystem auf der Maschine installiert, mit der der ESP8266 arbeitet. Am besten schließen Sie das Gerät an Systeme an, die älter als Windows 7 sind.

Für Standard-Windows-Betriebssysteme wäre es optimal, ein Programm namens XTCOM UTIL zu verwenden, das besonders praktisch ist, wenn die Firmware nur aus einer Datei besteht. Die beste Multiplattform-Option ist das Dienstprogramm esptool, das jedoch Python sowie die Notwendigkeit der Angabe von Parametern über erfordert Befehlszeile. Darüber hinaus ermöglicht Ihnen der ESP8266 den bequemen Anschluss grundlegender Funktionen Flash-Programm Download-Tool, das über eine ziemlich große Anzahl von Einstellungen verfügt, sowie komfortable Technik Firmware aus mehreren Dateien installieren.

Trennen Sie als Nächstes Ihr Terminalprogramm von der seriellen Schnittstelle und trennen Sie CH_PD vollständig von der Stromversorgung. Verbinden Sie GPIO0 des Moduls mit GND. Danach kann CH_PD zurückgebracht werden. Letztendlich führen Sie einfach das modulare Firmware-Programm aus und laden es in das ESP8266-Relais.

In den allermeisten Fällen wird die Firmware mit einer Geschwindigkeit von etwa 115200 in das Modul geladen, ein spezieller Modus sorgt jedoch für eine automatische Geschwindigkeitsverteilung, wodurch die Firmware mit einer Geschwindigkeit von mehr als 9600 aktualisiert werden kann die verfügbaren Funktionen des ESP8266. Für den Anschluss wurde Arduino oder USB-TTL verwendet – hier spielt es keine besondere Rolle, und hier hängt die maximale Geschwindigkeit bereits von der Länge der Leitungen, dem verwendeten Konverter und einer Reihe weiterer Faktoren ab.

Nach ihrem Erscheinen erfreuten sich Boards, die auf dem WLAN-Chip ESP8266 basieren, großer Beliebtheit. Riesige Möglichkeiten und ein Mindestpreis, der selbst zu Beginn des Verkaufs und Einzelhandels nicht mehr als 5 US-Dollar betrug, haben ihren Zweck erfüllt. Rund um den Chip haben sich Gemeinschaften gebildet, in denen Menschen Informationen austauschen und Software erstellen.

Was ist neben dem niedrigen Preis der Grund für diese Beliebtheit?

Tatsache ist, dass ESP8266-Boards nicht nur Module für die WiFi-Kommunikation sind. Der Chip ist im Wesentlichen ein Mikrocontroller mit eigenen SPI-, UART- und GPIO-Ports, was bedeutet, dass das Modul autonom ohne Arduino und andere Platinen mit Mikrocontrollern verwendet werden kann.

Information

Unsere chinesischen Kameraden produzieren bereits etwa zwölf Arten von Boards auf Basis von ESP8266: mit externer Antenne, mit Keramikantenne, mit PCB-Antenne, ohne Antenne. Außerdem verfügen verschiedene Module über eine unterschiedliche Anzahl von GPIOs. Weitere Details finden Sie auf der russischsprachigen Website.

In diesem Test werde ich eines der allerersten Boards verwenden ESP-01. Um den Chip vollständig nutzen zu können, benötigen Sie außerdem einen Konverter USB/UART, empfehle ich, eine Rezension dazu gab es bereits auf mysku.

Verbindung

Die Pinbelegung des ESP-01-Steckers ist in der Abbildung dargestellt:

Wenn Sie in Ihren Projekten nicht über genügend zwei Ausgangs-GPIOs verfügen und sich nicht auf „Dirty Hacks“ einlassen möchten, empfehle ich zum Beispiel den sofortigen Kauf neuer Boards ESP-07 oder ESP-12. Bedenken Sie jedoch, dass diese Platinen eine unabhängige Verkabelung erfordern und dafür spezielle Mini-Kits erhältlich sind.

Fotos dieser Boards


Beispielsweise wurde ESP-01 von Dave Allan gehackt. Zusätzlich erhalten Sie 4 GPIOs: GPIO14, GPIO12, GPIO13 und GPIO15

Schaltplan:
- ESP-01 VCC zu USB/UART VCC (+3,3 V);
- ESP-01 GND zu USB/UART GND;
- ESP-01 URXD zu USB/UART TXD;
- ESP-01 UTXD zu USB/UART RXD;
- ESP-01 CH_PD zu USB/UART VCC (+3,3V);
- ESP-01 GPIO0 zu USB/UART GND - nur während Firmware-Update!..

Firmware

Für den ESP8266 gibt es ein SDK und Original-Firmware von Espressif Systems, aber viele sind aufgrund seiner „Rohheit“ damit nicht zufrieden, sodass nicht-Original-Firmware veröffentlicht wird, wie zum Beispiel NodeMCU, Frankenstein und andere.

In diesem Test wird nicht die ursprüngliche NodeMCU-Firmware verwendet. Eine Liste der Befehle und Beispiele finden Sie unter.

Wir aktualisieren die ursprüngliche „Werks“-Firmware auf NodeMCU:
- Laden Sie das Dienstprogramm zum Flashen - ;
- Firmware laden - ;
- Wir verbinden über ESP-01 mit USB/UART gemäß dem oben dargestellten Diagramm. Vergessen Sie nicht, GPIO0 mit GND zu verbinden. USB/UART einstecken USB-Anschluss Computer;
- Führen Sie XTCOM_UTIL.exe aus, gehen Sie zu Extras -> Gerät konfigurieren, wählen Sie den COM-Port aus, an den das Board angeschlossen ist, stellen Sie die Portgeschwindigkeit auf 57600 ein, klicken Sie auf „Öffnen“ und dann auf „Verbinden“. Das Programm sollte „Mit Ziel verbinden OK!“ sagen. Schließen Sie das Einstellungsfenster. Gehen Sie zum API-TEST-Menü, wählen Sie (4) Flash Image Download, geben Sie den Pfad zur Datei „nodemcu_512k_latest.bin“ an, belassen Sie die Adresse bei 0x00000 und klicken Sie auf „Herunterladen“. Der Firmware-Download sollte beginnen und nach Abschluss wird eine Meldung angezeigt.
- Schalten Sie die Stromversorgung der Platine aus, trennen Sie den GPIO0-Pin vom gemeinsamen Kabel und schalten Sie die Stromversorgung ein. Starten Sie das Terminal Putty, CoolTerm oder andere (ACHTUNG! Ändern Sie die Portgeschwindigkeit auf 9600) und überprüfen Sie die Bereitschaft des Boards mit dem Befehl
> print(node.chipid())
10013490

Erstes Drehbuch

Wenn Sie Probleme bei der Arbeit mit Skripten haben, wird empfohlen, die 3,3-V-Stromversorgung nicht über USB/UART, sondern über eine separate Quelle bereitzustellen. Die Spannung sollte genau 3,3V betragen, beispielsweise durch ein stabilisiertes Netzteilmodul am AMS1117 3,3V 800mA.

Um Skripte in den ESP8266 zu schreiben und zu laden, wird eine kleine und praktische IDE verwendet:

Unser erstes Skript schaltet die LED alle 2 Sekunden aus und wieder ein:
- Schalten Sie den Strom aus, schließen Sie einen Widerstand und eine LED an GPIO2 an. Schalte den Strom an;
- Starten Sie ESPlorer, wählen Sie die gewünschte COM- und Portgeschwindigkeit 9600 aus, klicken Sie auf Öffnen;
- Fügen Sie den Code ein und klicken Sie auf „In ESP speichern“.

Pin = 4 --GPIO2 gpio.mode(pin, gpio.OUTPUT) für i=1, 10, 1 für gpio.write(pin, gpio.LOW) tmr.delay(2000000) gpio.write(pin, gpio.HIGH ) tmr.delay(2000000) Ende
- Klicken Sie zum Neustart auf DoFile.

Anschluss des DHT11-Sensors

Um fortgeschrittenere Arbeiten mit der NodeMCU-Firmware zu demonstrieren, verbinden wir den DHT11-Sensor mit dem ESP-01:
- DHT11 VCC zu USB/UART VCC
- DHT11 GND zu USB/UART GND
- DHT11-Ausgang zu USB/UART GPIO2

Code vom Benutzer Pigs Fly aus dem ESP8266.com-Forum

Funktioniert für DHT11 auf ESP-07 (Version mit 16 Pins) und ESP-01 – nur Firmware 20141219 getestet. --Der Zeitpunkt der Datenstromerfassung ist entscheidend. Es ist kaum genug Geschwindigkeit vorhanden, um dies zu ermöglichen. --In der Schleife verwendete Variablen vorab zuweisen. bitStream = () für j = 1, 40, 1 tun bitStream[j]=0 end bitlength=0 pin = 4; gpio.mode(pin, gpio.OUTPUT) gpio.write(pin, gpio.LOW) tmr.delay(20000) – Verwenden Sie den Trick von Markus Gritsch, um das Lesen/Schreiben auf GPIO zu beschleunigen gpio_read=gpio.read gpio_write= gpio.write gpio.mode(pin, gpio.INPUT) --bus wird irgendwann immer nachlassen, kümmere dich nicht um Timeout while (gpio_read(pin)==0) do end c=0 while (gpio_read(pin)= =1 und c<100) do c=c+1 end --bus will always let up eventually, don"t bother with timeout while (gpio_read(pin)==0) do end c=0 while (gpio_read(pin)==1 and c<100) do c=c+1 end --acquisition loop for j = 1, 40, 1 do while (gpio_read(pin)==1 and bitlength<10) do bitlength=bitlength+1 end bitStream[j]=bitlength bitlength=0 --bus will always let up eventually, don"t bother with timeout while (gpio_read(pin)==0) do end end --DHT data acquired, process. Humidity = 0 HumidityDec=0 Temperature = 0 TemperatureDec=0 Checksum = 0 ChecksumTest=0 for i = 1, 8, 1 do if (bitStream >2) then Humidity = Humidity+2^(8-i) end end for i = 1, 8, 1 do if (bitStream > 2) then HumidityDec = HumidityDec+2^(8-i) end end for i = 1, 8, 1 do if (bitStream > 2) then Temperature = Temperature+2^(8-i) end end for i = 1, 8, 1 do if (bitStream > 2) then TemperatureDec = TemperatureDec+2^(8-i ) end end for i = 1, 8, 1 do if (bitStream > 2) then Checksum = Checksum+2^(8-i) end end ChecksumTest=(Humidity+HumidityDec+Temperature+TemperatureDec) % 0xFF print ("Temperature: "..Temperature.."."..TemperatureDec) print ("Humidity: "..Humidity.."."..HumidityDec) print ("ChecksumReceived: "..Checksum) print ("ChecksumTest: "..ChecksumTest )


Ich entschuldige mich für die Qualität des Videos, ich habe es mit meinem Handy gefilmt.

HTTP-Server

Ein Beispiel für die Verbindung zu einem WLAN-Zugangspunkt und die Beantwortung einer Anfrage über HTTP.

Wifi.setmode(wifi.STATION) wifi.sta.config("SSID","password") print(wifi.sta.getip()) srv:listen(80,function(conn) conn:on("receive", function(conn,payload) print(payload) conn:send("

Hallo Benutzer.

") Ende) Ende)

Epilog

Der ESP8266-Chip ist definitiv ein Durchbruch, vor allem im Hinblick auf das Preis-Leistungs-Verhältnis. Natürlich sind die bestehenden Probleme in der Original- und Nicht-Original-Firmware erwähnenswert, aber die Arbeit ist im Gange und ich hoffe, dass in Zukunft ähnliche Chips in jeden Wasserkocher eingebaut werden. Ich plane den Kauf von +156 Zu den Favoriten hinzufügen Die Rezension hat mir gefallen +103 +196

So toll, dass es neben Firmware für die Nutzung des ESP8266 als WLAN-Modul, das von einem externen Mikrocontroller gesteuert wird, auch jede Menge Firmware für die Nutzung als Mikrocontroller für verschiedene Zwecke gibt, auch im Bereich des Internets der Dinge. In dieser Artikelserie werden wir die Möglichkeiten erkunden ESP8266 mit Firmware NodeMCU und lernen Sie eine Skriptsprache LUA.

Was ist ESP8266?

ESP8266 ist ein Mikrocontroller mit einer WiFi-Schnittstelle. Es kann als WiFi-Modul und als Mikrocontroller verwendet werden.

Vorteile von ESP8266: WiFi-Schnittstelle, 32-Bit-Kern mit ausreichender Leistung, niedriger Preis.
Nachteile: Im Vergleich zu anderen 32-Bit-Mikrocontrollern sind die Peripheriegeräte enttäuschend.

ESP8266 ist ideal für Heimprojekte und das Internet der Dinge. Der ESP8266 wird über die serielle UART-Schnittstelle programmiert, sodass zum Flashen seiner Firmware kein spezieller Programmierer erforderlich ist. Die Besonderheit dieses Mikrocontrollers besteht darin, dass er ein Programm ausführen kann, das sich auf einem externen Flash-Speicher befindet. Dadurch kann der Hersteller die Flash-Lautstärke „erhöhen“, was ebenfalls ein Pluspunkt ist.

Es stehen verschiedene Module auf Basis von ESP8266 zur Verfügung:

ESP-01
ESP-02
ESP-03
ESP-04
ESP-05
ESP-06
ESP-07
ESP-08
ESP-09
ESP-10
ESP-11
ESP-12S
ESP-12E
ESP-12F

Existiert verschiedene Versionen Platinen mit bereits verlöteten ESP8266-Modulen, Spannungsstabilisatoren, einer Mikroschaltung zur Sicherstellung des Betriebs der seriellen UART-Schnittstelle über USB und Pins, Tasten etc., zu einem Kamm verdrahtet. Um mit solchen Karten zu arbeiten, schließen Sie sie einfach an den USB-Anschluss Ihres Computers an. Es ist keine zusätzliche Ausrüstung erforderlich. Es ist sehr bequem. Ein solches Board ist NodeMCU. In den Beispielen verwende ich ein NodeMCU-Board mit einem ESP-12F-Modul. Sie können jedoch problemlos ein Modul, beispielsweise ESP-01, nehmen, einen UART-USB-Adapter daran anschließen und auf die gleiche Weise damit arbeiten. ESP-01 wird haben weniger Speicher und weniger Stifte, die verwendet werden können, aber ansonsten ist die Arbeit damit ähnlich.


Was ist NodeMCU?

NodeMCU ist ein offenes, kostenloses Projekt, das auf der Skriptsprache Lua basiert. Die Firmware ist recht leistungsstark und ermöglicht die sehr schnelle Umsetzung diverser Standardprojekte. Als Einführung werden wir heute beispielsweise eine WLAN-Steckdose erstellen, die von gesteuert wird Mobiltelefon und mit einer Weboberfläche. Die Firmware kann Lua-Skripte sowohl vom seriellen UART-Port (ähnlich den AT-Befehlen) als auch vom internen Flash-Speicher (Ausführen von Skripten) ausführen. Lua-Skripte werden in Flash im internen Dateisystem gespeichert. Das Dateisystem ist flach und vereinfacht. Diese. keine Unterverzeichnisse. Trotzdem ist es cool. Vergessen Sie nicht, dass der ESP8266 nur ein Mikrocontroller ist. Über Skripte können Sie auch auf Dateien zugreifen sowie verschiedene Informationen lesen und speichern. NodeMCU ist modular. Dadurch können Sie einerseits die Funktionalität erhöhen und andererseits die Firmware nur aus den erforderlichen Modulen zusammenstellen, ohne Speicher zu verschwenden.

NodeMCU arbeitet mit Datenaustauschprotokollen – HTTP, MQTT, JSON, CoAP.
Unterstützt verschiedene Sensoren
Beschleunigungsmesser ADXL345,
Magnetometer HMC5883L,
L3G4200D Gyroskope,
Temperatur- und Feuchtigkeitssensoren AM2320, DHT11, DHT21, DHT22, DHT33, DHT44
Temperatur-, Feuchtigkeits- und Luftdrucksensoren BME280,
Temperatursensoren, Atmosphärendruck BMP085,
Viele Displays arbeiten mit I2C- und SPI-Bussen. Mit der Möglichkeit, mit verschiedenen Schriftarten zu arbeiten.
TFT-Displays ILI9163, ILI9341, PCF8833, SEPS225, SSD1331, SSD1351, ST7735,
Intelligente LEDs und LED-Controller – WS2812, tm1829, WS2801, WS2812,
Unterstützte Schnittstellen – 1-Wire, I2C, SPI, UART,

Sie können auch ein Verschlüsselungsmodul, einen Taskplaner, eine Echtzeituhr, ein Uhrensynchronisationsprotokoll über das Internet SNTP, Timer, einen ADC-Kanal (einen) verwenden, Audiodateien abspielen, ein PWM-Signal an den Ausgängen erzeugen (bis zu 6), Sockets verwenden, es gibt Unterstützung für FatFS, d.h. man kann SD-Karten anschließen und so weiter.

Was ist Lua-Sprache?

Lua ist eine interpretierte Sprache, die wie die meisten modernen interpretierten Sprachen kompilierte Versionen von Skripten speichern kann. Dadurch können Sie die Arbeitsgeschwindigkeit erhöhen. Lua wird als Multiparadigma positioniert. Es ist nicht kompliziert und wenn Sie bereits in einer beliebigen Sprache programmiert haben, werden Sie Lua sehr schnell lernen. Wenn Sie gerade erst mit dem Programmieren beginnen, wird Sie Lua mit seiner Zugänglichkeit für Anfänger überraschen.

Bei der Arbeit mit Lua auf NodeMCU gibt es einige Besonderheiten. Dies liegt vor allem an der begrenzten Speicherkapazität des ESP8266-Mikrocontrollers. Muss bleiben einfache Regeln und den Stil der Zusammenarbeit mit Lua beibehalten. Über diese Regeln erzähle ich euch etwas später. Wenn Sie den gleichen Stil wie beim Schreiben von Programmen in C beibehalten, werden Sie die volle Leistungsfähigkeit von Lua und nicht spüren NodeMCU-Firmware. Wenn Sie anfangen, in Lua zu schreiben, wird es fesselnd und Sie beginnen, immer größere Aufgaben umzusetzen. Sie verlieren das Gefühl, mit einem Mikrocontroller zu arbeiten und belasten sich unwissentlich mit Aufgaben, die über die Möglichkeiten eines Mikrocontrollers hinausgehen. Es muss beachtet werden, dass der ESP8266 über begrenzte Ressourcen verfügt und nicht mit Aufgaben belastet werden sollte, die Mikrocomputer oder vollwertige Computer ausführen können.

LUA-Dokumentation auf Russisch: http://www.lua.ru/doc/
Lernen Sie LUA in 15 Minuten: http://tylerneylon.com/a/learn-lua/

Wo kann ich NodeMCU herunterladen?

Natürlich können Sie es herunterladen Quellcodes NodeMCU (https://github.com/nodemcu/nodemcu-firmware/releases/) und mit den erforderlichen Parametern kompilieren. Aber das werden wir nicht tun. Es gibt eine Website https://nodemcu-build.com, auf dem Sie NodeMCU mit den benötigten Modulen zusammenbauen können. Markieren Sie einfach die Module, die Sie benötigen, geben Sie Ihre E-Mail-Adresse an und klicken Sie unten auf die Schaltfläche „ Starten Sie Ihren Build„. Zunächst wird ein Brief an die angegebene E-Mail-Adresse gesendet, in dem mitgeteilt wird, dass die Montage begonnen hat. Und dann eine Benachrichtigung über den Abschluss und Download-Links ganze Zahl Und schweben Versionen. Wenn Sie in Ihrem Projekt keine Gleitkommaberechnungen verwenden, laden Sie „ ganze Zahl„. Seien Sie nicht gierig und fügen Sie Module hinzu, die Sie nicht verwenden möchten. Sie können es jederzeit abholen neue Firmware durch Hinzufügen des fehlenden Moduls. Als Beispiel habe ich NodeMCU mit den folgenden Modulen erstellt:

Wie lade ich NodeMCU auf ESP8266 hoch?

Da wir nun die NodeMCU-Firmwaredatei haben, müssen wir sie auf den ESP8266 hochladen. Wenn Sie das NodeMCU-Board an Ihren Computer anschließen, entsteht zunächst eine virtuelle Com Hafen. Allgemein, letzte Version Windows-Installation keine Treiber erforderlich. Ubuntu erkennt das angeschlossene Gerät sofort.

NodeMCU-Firmware für Windows

Git-Klon https://github.com/themadinventor/esptool.git

Flashen Sie mit dem Befehl:

Sudo python esptool.py --port /dev/ttyUSB0 write_flash 0x00000 The_Path_To_The_NodeMCU_Firmware.bin

/Dev/ttyUSB0– der Port, an dem der ESP8266 hängt.
The_Path_To_The_NodeMCU_Firmware.bin– Pfad zur Firmware-Datei.

Übrigens, esptool kann auch unter Windows verwendet werden. esptool geschrieben in Python, um unter Windows zu funktionieren, müssen Sie Python installieren.

esptool nützlich für uns zum Hochladen von Binärdateien Dateisystem NodeMCU. Sie können beliebige Dateien hochladen, auch Skripte. Sie können Skripte sogar im Notepad schreiben, aber ich bevorzuge ESPlorer.

ESPlorer, init.lua – Schreiben des ersten Skripts

Zum Schreiben und Hochladen von Skripten verwenden wir das Programm ESPlorer. Dies ist ein plattformübergreifendes Programm, in das geschrieben wurde Java und erfordert auch keine Installation. Funktioniert unter Windows und Ubuntu gleich.

Entpacken Sie das Archiv.

Unter Windows führen wir die Datei aus ESPlorer.bat

Sudo java-jar ESPlorer.jar

Geben Sie den Port und die Geschwindigkeit an 9600 :

Und drücke " Offen„. Wir werden es als nächstes sehen

ESPlorer hat eine miese Funktion. Es stellt nicht immer eine eindeutige Verbindung zur NodeMCU her. Wenn Sie versuchen, einen Befehl zu senden (mithilfe der Schicken) Müll fliegt in der Konsole statt einer normalen Antwort. Manchmal wird nach ein paar Wiederholungen alles besser. Wenn Sie das stört, versuchen Sie, die Verbindungsgeschwindigkeit auf 115200 zu ändern.


Beginnen wir mit der Erstellung des ersten Skripts in Lua. Skript mit Namen init.lua startet automatisch nach dem Start von NodeMCU. Lassen Sie uns eine Datei erstellen init.lua.

Lassen Sie uns nur eine Zeile drucken:

Print("Ja, es funktioniert!")

Speichern Sie die Datei unter init.lua. Nach dem Speichern wird die Datei ausgeführt und das erste Skript sollte ausgeführt werden.

Standardmäßig wird die Datei auf der Computerfestplatte gespeichert und auf den ESP8266 hochgeladen.

Nun zum größten Problem, das NodeMCU hat. Im Falle einiger kritischer Fehler (dies kommt nicht sehr oft vor, aber wenn es passiert, bleibt es lange im Gedächtnis) wird NodeMCU möglicherweise neu gestartet. Und das Schlimmste, was passieren kann, ist ein zyklischer Neustart. Dies geschieht, wenn Sie dies zulassen kritischer Fehler in einem Skript, das automatisch startet. NodeMCU startet, führt ein „fehlerhaftes“ Skript aus, stellt einen kritischen Fehler fest und führt einen Neustart durch. Und so weiter bis ins Unendliche.

Um mich beim Erlernen von NodeMCU zu schützen, verwende ich die unten beschriebene Technik. Im Startskript init.lua Wir starten einen Timer, der nur einmal funktioniert und nach einer bestimmten Zeit (in diesem Fall 5 Sekunden) den Vorgang zum Starten eines anderen Skripts ausführt (in diesem Fall). main.lua). Nichts anderes im Drehbuch init.lua wir nicht. Alle Operationen werden im Skript ausgeführt main.lua. Wenn wir also einen Fehler im Drehbuch machen main.lua, und NodeMCU führt einen zyklischen Neustart durch. Nach dem Neustart haben wir 5 Sekunden Zeit, um das „fehlerhafte“ Skript zu entfernen oder zu reparieren.

init.lua-Text:

Print ("Warten ...") tmr.register (0, 5000, tmr.ALARM_SINGLE, function (t) tmr.unregister (0); print ("Starting ..."); dofile ("main.lua") Ende) tmr.start (0)

Darüber hinaus erleichtert dieser Ansatz die Einbindung aller erforderlichen Skripte in den Startvorgang, einfach in die Datei init.lua anstatt main.lua Geben Sie den Namen eines anderen Skripts an. Dies ist sehr praktisch, wenn Sie mehrere Projekte oder mehrere Versionen eines Skripts auf einem Board testen.

Stellen Sie eine Verbindung zu WLAN her oder erstellen Sie Ihren eigenen WLAN-Punkt

Um eine Verbindung zu WLAN herzustellen, erstellen Sie main.lua und schreiben Sie:

WLAN-Einrichtung wifi.setmode(wifi.STATION) local cfg=() cfg.ssid="MyWiFi" cfg.pwd="MyWiFiPassword" wifi.sta.config(cfg) cfg = nil Collectgarbage()

Nach erfolgreicher Verbindung erhält das Modul eine IP-Adresse. Das können Sie mit dem Befehl herausfinden:

Wifi.sta.getip()

Wenn wir möchten, dass der ESP8266 seinen eigenen WLAN-Hotspot erstellt:

WLAN-AP-Einrichtung wifi.setmode(wifi.STATIONAP) cfg=() cfg.ssid="ESPWIFI" cfg.pwd="1234567890" wifi.ap.config(cfg) cfg = nil Collectgarbage()

Notiz: WLAN-Hotspot funktioniert nicht, wenn das Passwort kürzer als 8 Zeichen ist. Standardmäßig lautet die IP-Adresse des Punkts immer 192.168.4.1

Das können Sie mit dem Befehl herausfinden:

Wifi.ap.getip()

Was Collectgarbage()? Funktion Müll sammeln ist ein Müllsammler. Es sollte am Ende jedes Skripts aufgerufen werden. Bitte beachten Sie die Variable cfg deklariert als lokal. Es wird nur im aktuellen Skript verfügbar sein. Wenn lokal entfernen, dann die Variable cfg wäre global und in anderen Skripten verfügbar.

GPIO. Blinkende LED

Um das Relais zu steuern (schließlich bauen wir eine WLAN-Buchse), müssen Sie lernen, mit den Pins umzugehen GPIO. Versuchen wir zunächst, es zu verwenden GPIO Pin als Ausgang und stellen Sie den Signalpegel auf hoch und niedrig ein. Der Übersichtlichkeit halber schließen wir die LED wie im Diagramm gezeigt an.

My_pin_number = 1 – Legen Sie den Betriebsmodus als Ausgang fest. gpio.mode (my_pin_number, gpio.OUTPUT) – Legen Sie den hohen Pegel von gpio.write fest (my_pin_number, gpio.HIGH) – Legen Sie den niedrigen Pegel von gpio.write fest ( my_pin_number, gpio.LOW) – Blinkt die LED 10 Mal gpio.serout (1, gpio.HIGH, (+990000,990000), 10, 1)

Pin-Nummerierung:

IO-IndexESP8266-Pin
0 GPIO16
1 GPIO5
2 GPIO4
3 GPIO0
4 GPIO2
5 GPIO14
6 GPIO12
7 GPIO13
8 GPIO15
9 GPIO3
10 GPIO1
11 GPIO9
12 GPIO10

D0(GPIO16) kann nur als GPIO-Lese-/Schreibzugriff verwendet werden. Keine Unterstützung für open-drain/interrupt/pwm/i2c/ow

NodeMCU-Board

Hinweis: Es gibt mehrere Versionen von Nodemcu-Boards. Die Pinbelegung Ihrer Platine kann variieren.

Websocket

Jetzt erstellen wir einen Server, der auf dem angegebenen Port arbeitet (es sei 333). Anschließend verbinden wir uns über ein Terminalprogramm mit unserem Server und geben dessen IP und Port an. Und dann werden wir Daten austauschen.

Main.lua-Skript:

WLAN-AP-Einrichtung wifi.setmode(wifi.STATIONAP) cfg=() cfg.ssid="ESPTEST" cfg.pwd="1234567890" wifi.ap.config(cfg) --Create Server sv=net.createServer(net.TCP ) Funktion Receiver(sck, Daten) – Empfangene Daten drucken print(Daten) – Antwort senden sck:send("Recived: "..data) end if sv then sv:listen(333, function(conn) conn:on ("receive", Empfänger) conn:send("Hallo!") end) end print("Gestartet.")

Jetzt hebt unser Skript den WLAN-Punkt hoch und erstellt einen Server, der auf eine Verbindung an Port 333 wartet. Zum Zeitpunkt der Verbindung sendet der Server dem Client die Zeichenfolge „ Hallo!„Und nachdem er Daten vom Client empfangen hat, wird die Zeichenfolge zurückgegeben: „ Erhalten:” und dann alles, was er akzeptierte.

Jetzt können wir unser Mobiltelefon mit dem WLAN-Punkt ESP8266 verbinden. Grundsätzlich ist es nicht erforderlich, einen Punkt zu erstellen. Sie können das Skript umschreiben und den ESP8266 mit Ihrem verbinden WiFi-Netzwerke. Dann müssen Sie seine IP herausfinden und diese dann anstelle von 192.168.4.1 verwenden, die in den Beispielen weiter verwendet wird.

Wir benötigen jedoch noch ein Terminalprogramm, um eine Verbindung zur ESP8266-IP-Adresse (192.168.4.1) und dem angegebenen Port (333) herzustellen. Sie können PuTTY auf einem normalen Computer installieren. Für Android-Handys verwende ich JuiceSSH.

Übertragen Sie Daten vom Mobiltelefon mit JuiceSSH

Installieren und starten RoboRemoFree

Stellen Sie eine Verbindung zum Server her. Es empfiehlt sich, das Mobiltelefon/Tablet mit demselben WLAN-Netzwerk zu verbinden, in dem sich auch der Server befindet. In diesem Fall unser ESP8266. Gehen Sie zu „Menü“ und wählen Sie „Verbinden“.

Wählen Sie den Verbindungstyp „Internet (TCP)“

Geben Sie IP und Port an

Auswahl der Schnittstelle. Mit dem Programm können Sie mehrere Schnittstellen mit unterschiedlichen Bedienelementen erstellen.

Gehen Sie dann in den Schnittstellenbearbeitungsmodus

Klicke auf Freiraum und wählen Sie aus, was wir installieren möchten. Wir werden Knöpfe verwenden. Auswahlknopf"

Anschließend wird eine Schaltfläche auf der Schnittstelle installiert. Es kann verschoben und in der Größe geändert werden.

Um den Namen einer Schaltfläche zu ändern, müssen Sie darauf klicken und „Text festlegen“ auswählen.

Dann geben wir noch einen weiteren Parameter an – „Set Press Action“. Setzen wir es auf „1“. Wenn Sie auf die Schaltfläche klicken, wird die angegebene Zeichenfolge über die von uns erstellte Verbindung gesendet. Diese. Unser ESP8266 empfängt das Zeichen „1“ und schaltet die LED ein.

Erstellen wir auf die gleiche Weise die „Aus“-Taste und setzen wir die Set-Press-Aktion auf „0“.

Unsere Schnittstelle ist fertig. Verlassen Sie den Bearbeitungsmodus, indem Sie den Menüpunkt „Benutzeroberfläche nicht bearbeiten“ ausführen.

Wenn die Verbindung zum Server (ESP8266) erfolgreich war, können Sie ihn verwenden. Durch Drücken der „On“-Taste sollte die LED aufleuchten, durch Drücken der „Off“-Taste sollte die LED erlöschen.

Webschnittstelle

Es gibt noch eine andere Möglichkeit: Sie können eine Weboberfläche erstellen und die LED über einen Browser steuern.

Gleiches Skript + Weboberfläche:

WLAN-AP-Einrichtung wifi.setmode(wifi.STATIONAP) cfg=() cfg.ssid="ESPTEST" cfg.pwd="1234567890" wifi.ap.config(cfg) --Set Pin mode my_pin_number = 1 gpio.mode(my_pin_number , gpio.OUTPUT) --Create Server sv=net.createServer(net.TCP) function Receiver(sck, data) if string.sub (data, 0, 1) == "1" then gpio.write(my_pin_number, gpio .HIGH) else if string.sub (data, 0, 1) == "0" then gpio.write(my_pin_number, gpio.LOW) end end print(data) end if sv then sv:listen(333, function(conn ) conn:on("receive",) conn:send("Hallo!") end) end --Create HTTP Server http=net.createServer(net.TCP) function keep_http(sck, data) local request = string. match (data,"([^\r,\n]*)[\r,\n]",1) if request == "GET /on HTTP/1.1" then gpio.write(my_pin_number, gpio.HIGH) end if request == "GET /off HTTP/1.1" then gpio.write(my_pin_number, gpio.LOW) end sck:on("sent", function(sck) sck:close() end) local Response = "HTTP/ 1.0 200 OK\r\nServer: NodeMCU auf ESP8266\r\nContent-Type: text/html\r\n\r\n".. " NodeMCU auf ESP8266".. "

NodeMCU auf ESP8266

".. "
".. "An Aus„..“

Eine kurze Erklärung der Funktionsweise eines Webservers im Allgemeinen und unseres Skripts im Besonderen. Standardport für einen Webserver – 80. D.h. wenn Sie im Browser etwas eingeben http://192.168.4.1/, dann verbindet sich der Browser mit dem Server (192.168.4.1) auf Port 80 und sendet eine Anfrage. Die Anfrage sieht in etwa so aus:

GET/HTTP/1.1 Host: 192.168.4.1 User-Agent: Mozilla/5.0 (Windows NT 5.1; RV: 2.0.1) Gecko/20100101 Firefox Akzeptieren: text/html, application/xhtml + xml, application/xml; q = 0,9, * / *; q = 0,8 Akzeptierte Sprache: ru-RU, ru; q = 0,8, en-US; q = 0,5, en; q = 0,3 Accept-Encoding: gzip, deflate Connection: keep-alive Upgrade-Insecure-Requests: 1

Die erste Zeile der Abfrage ist für uns von Interesse: „ GET / HTTP/1.1„. Es enthält die URL. Wenn Sie den Browser eingeben http://192.168.4.1/ An , dann lautet die erste Zeile der Abfrage „ ERHALTEN /An HTTP/1.1„. Und wenn Sie den Browser eingeben http://192.168.4.1/ aus dann wird es sein „ ERHALTEN / aus HTTP/1.1„. Diese Zeile analysiert das Skript und schaltet je nach empfangener URL die LED ein oder aus.

Als nächstes sendet das Skript eine HTML-Seite. Nach dem Senden müssen Sie jedoch die Verbindung beenden. Da das Senden einige Zeit in Anspruch nimmt und das Warten auf das Ende des Sendens technisch gesehen dumm ist, wird das Ereignis „ gesendet” (gesendet) verbinden Sie die Funktion mit der Zeichenfolge sck:close(). Dies geschieht in der Zeile: sck:on(“sent”, function(sck) sck:close() end). P Danach wird der Versand durchgeführt HTML-Seiten sck:send(response). MIT Die Krypta funktioniert weiterhin. Wenn die Antwort vollständig gesendet wurde, funktioniert es sck:close().

Große Seiten können auf diese Weise nicht versendet werden. Schwere Inhalte müssen in Stücken verschickt werden. Darauf wird in einem anderen Artikel näher eingegangen.

Wir verbinden das Relais mit der Last

Aufmerksamkeit! Spannungen über 40 Volt sind lebensgefährlich! Seien Sie beim Zusammenbau der Schaltung und beim Anschließen vorsichtig und vorsichtig Haushaltsgeräte. Berühren Sie keine spannungsführenden Teile.

Anstelle einer LED schließen wir nun ein Relaismodul an und als Last beispielsweise eine Lampe, eine Heizung, einen Kompressor für ein Aquarium, einen Ventilator usw.

Beim Anschluss eines Relais kann es zu einigen Nuancen kommen. Wenn der Relaisblock optisch isoliert ist (mit einem Optokoppler), müssen Sie höchstwahrscheinlich nichts wiederholen. Wenn der Relaisblock wie meiner keine optische Isolierung hat, müssen Sie die Arbeit mit GPIO wiederholen, da das Relais erstens auf einem niedrigen Pegel und nicht auf einem hohen Pegel eingeschaltet ist und zweitens der hohe Pegel des ESP8266 3,3 V beträgt , für einen 5-Volt-Relaisblock reicht das nicht, also musste ich den Ausgang auf OPENDRAIN stellen, danach funktionierte alles wie es sollte.

Die endgültige Version des Skripts sieht folgendermaßen aus:

WLAN-AP-Einrichtung wifi.setmode(wifi.STATIONAP) cfg=() cfg.ssid="ESPTEST" cfg.pwd="1234567890" wifi.ap.config(cfg) --Set Pin mode my_pin_number = 1 --gpio.mode (my_pin_number, gpio.OUTPUT) gpio.mode(my_pin_number, gpio.OPENDRAIN) --Create Server sv=net.createServer(net.TCP) function Receiver(sck, data) if string.sub (data, 0, 1) = = „1“ then --gpio.write(my_pin_number, gpio.HIGH) gpio.write(my_pin_number, gpio.LOW) else if string.sub (data, 0, 1) == „0“ then --gpio.write (my_pin_number, gpio.LOW) gpio.write(my_pin_number, gpio.HIGH) end end print(data) end if sv then sv:listen(333, function(conn) conn:on("receive", Receiver) conn:send ("Hallo!") end) end --Create HTTP Server http=net.createServer(net.TCP) function keep_http(sck, data) print(data) local request = string.match(data,"([^\r ,\n]*)[\r,\n]",1) if request == "GET /on HTTP/1.1" then --gpio.write(my_pin_number, gpio.HIGH) gpio.write(my_pin_number, gpio. LOW) end if request == "GET /off HTTP/1.1" then --gpio.write(my_pin_number, gpio.LOW) gpio.write(my_pin_number, gpio.HIGH) end sck:on("sent", function(sck ) sck:close() Collectgarbage() end) local Response = „HTTP/1.0 200 OK\r\nServer: NodeMCU auf ESP8266\r\nContent-Type: text/html\r\n\r\n“..“ NodeMCU auf ESP8266".. "

NodeMCU auf ESP8266

".. "
".. "An Aus".. "

" sck:send(response) end if http then http:listen(80, function(conn) conn:on("receive",empfangen_http) end) end print("Gestartet.")

Jetzt können wir die „Steckdose“ von einem Mobiltelefon aus mit dem Programm RoboRemoFree oder über einen Browser ein- und ausschalten. Natürlich mit normaler Computer Sie können es auch über den Browser steuern.



Das ist alles gut, aber wie geht es weiter? Was wäre, wenn wir 5, 10, 20 ähnliche Geräte hätten? So kombinieren Sie sie, damit Sie nicht jedes Gerät einzeln anschließen müssen. Dafür gibt es ein MQTT-Protokoll, aber das wird ein separates Thema sein. In der Zwischenzeit werden wir die Fähigkeiten des ESP8266 und der NodeMCU erkunden.

Einige Regeln für die Arbeit mit der Lua-Sprache auf NodeMCU

1. Schreiben Sie keine langen Skripte. Die Speichergröße des ESP8266 ist nicht unendlich. Teilen Sie das Programm in Funktionsmodule auf, erstellen Sie sie als separate Skripte und führen Sie sie mit aus dofile(). Beispiel: WLAN-Verbindungscode:

WLAN-Einrichtung wifi.setmode (wifi.STATION) local cfg = () cfg.ssid = „MyWiFi“ cfg.pwd = „MyWiFiPassword“ wifi.sta.config (cfg) cfg = nil Collectgarbage ()

kann in ein separates Skript eingefügt werden“ wifi.lua” und führen Sie es aus dem Hauptskript mit dem Befehl aus dofile(“wifi.lua”).

2. Deklarieren Sie Variablen, die nur im aktuellen Skript verwendet werden, als lokal. Wenn die Variable am Ende des Skripts nicht mehr benötigt wird, weisen Sie ihr einen Wert zu Null und den Garbage Collector explizit aufrufen Collectgarbage()