IoT für einen Cent: ein praktischer Leitfaden. Teil 2, Software

Wir setzen die Reihe von Leitartikeln fort, in denen wir uns überlegen, wie ein einfaches und billiges Cloud-basiertes und IoT-Gerät mit großem Potenzial von Grund auf ohne Löten und unnötige Schwierigkeiten implementiert werden kann. Nehmen Sie einen sauberen Mikrochip ESP8266, installieren Sie die Firmware von DeviceHive, konfigurieren und schreiben Sie eine einfache Webanwendung, um auf den Cloud-Server zuzugreifen. Wir bauen ein einfaches Gerät zusammen und verbinden es mit dem Mikrochip, der mit wenigen Klicks im Browser gesteuert werden kann. Hier ist der zweite Teil des Zyklus, in dem beschrieben wird, welche Software benötigt wird, wie sie gestartet wird, wie ESP8266 geflasht wird und wie man sich mit dem Server anfreundet.


Der Autor des Artikels zeigt, was heute diskutiert wird.

Die ersten Artikel der Serie:
IoT für einen Cent oder Was DeviceHive kann.
IoT für einen Cent: ein praktischer Leitfaden. Teil 1, Hardware.

Erstellen Sie einen Server

Gehen wir den einfachsten Weg und nutzen den kostenlosen DeviceHive-Spielplatz. Gehen Sie dazu hier und registrieren Sie sich. Danach melden Sie sich an und gelangen auf diese Seite:



Herzliche Glückwünsche! Jetzt haben Sie Ihren eigenen Spielplatz auf DeviceHive. Verwenden Sie den URL-API-Link, um von außen eine Verbindung zur Spielgruppe herzustellen. Dies ist die Adresse, mit der wir über ESP8266 und die Clientanwendung auf den Server zugreifen. Verwenden Sie den angegebenen Login (Initial Login) und das angegebene Passwort (Initial Password), um auf das Admin-Panel (unter Admin-URL) zuzugreifen.

Ein kleiner Exkurs: Der Server kann lokal oder in einem Cloud-Dienst bereitgestellt werden. Installationsanweisungen finden Sie hier . Sie können es einfacher machen - starten Sie den Server mit Docker in einer Zeile: Eine vollständige Beschreibung finden Sie hier . DeviceHive ist ein vollständig Open Source-Projekt. Dies bedeutet, dass der Server sowohl zu Hause als auch in einem Cloud-Dienst, z. B. Azure , bereitgestellt werden kann

docker run -d --name=devicehive -p 8080:80 -p 9001:9001 devicehive/devicehive-standalone



.

Firmware

Es ist Zeit, die Firmware zu machen. Dazu müssen wir den ESP8266 an den Computer anschließen und dann den USB-> UART-Adapter, das Netzteil und das ESP8266-Modul anschließen.

Installieren Sie den Treiber für Ihren Adapter. Linux-Benutzer sind hier einfacher, da die meisten dieser Treiber bereits im Kernel enthalten sind. Windows- und OS X-Benutzer müssen den Adaptertreiber jedoch selbst installieren.

Links zu den offiziellen Download-Seiten für die beliebtesten Chips:

CP210x: www.silabs.com/products/mcu/pages/usbtouartbridgevcpdrivers.aspx
PL230x: www.prolific.com.tw/US/ShowProduct.aspx?pcid=41
FTDI: www. ftdichip.com/Drivers/VCP.htm
CH341: www.wch.cn/index.php?s=/page-search_content-keyword-CH341SER.html

Schließen Sie den Adapter an und stellen Sie sicher, dass der Treiber ordnungsgemäß funktioniert. Unter Linux sollte das Gerät im Dateisystem / dev / ttyUSB *, unter OS X - /dev/tty.* und unter Windows angezeigt werden. Im Geräte-Manager sollte ein zusätzlicher COM-Anschluss angezeigt werden. Wenn alles in Ordnung ist, trennen Sie den Adapter vom Computer.

Verbinden Sie anschließend den Ausgang des Netzteils (3,3 Volt) mit zwei Drähten mit dem ESP8266. Damit sich das Modul beim Einschalten einschalten kann, muss es arbeiten können, indem dem Ausgang von CH_PD ein hoher Pegel zugeführt wird. Das Modul muss darüber informiert werden, dass der interne Speicher verwendet wird. Wenn der GPIO15 eingeschaltet ist, sollte er daher niedrig sein. Und um in den Programmiermodus zu gelangen, müssen wir einen niedrigen Pegel auf GPIO0 anwenden. Letzteres benötigen wir nur während der Firmware. Es klingt gruselig, aber in Wirklichkeit müssen wir nur die drei Drähte von CH_PD mit dem Plus der Stromquelle verbinden und GPIO0 und GPIO15 mit der Masse (Minus) der Stromquelle verbinden. Zuletzt verbinden wir den USB-> UART-Adapter mit drei weiteren Drähten: Wir verbinden die Klemmen abzüglich der Quelle (GND) mit der Adaptermasse,Der Ausgang des RX-Adapters ist mit dem Ausgang des TX-Moduls des ESP8266 und der Ausgang des TX-Adapters mit dem Ausgang des RX-Moduls verbunden. Wir erhalten das endgültige Anschlussdiagramm für drei verschiedene Standardmodule. Wenn ein Ausgang fehlt, ist er höchstwahrscheinlich bereits im Modul angeschlossen. Das lila Kabel ist die vorübergehendste Verbindung, um in den Programmiermodus zu gelangen.







Ein Beispiel für die Ausführung einer solchen Verbindung:


Wie Sie sehen, war zum Löten nichts erforderlich, alle Verbindungen können mit normalen Steckverbindern hergestellt werden.

Schalten Sie als Nächstes die Stromquelle ein, schließen Sie den Adapter an den Computer an und laden Sie die neu kompilierte DeviceHive-Firmware für ESP8266 herunter. Zum Zeitpunkt der Veröffentlichung, die erste und die neueste Version ist verfügbar hier .

Neue vorkompilierte Versionen finden Sie immer auf GitHub . Sie können auch das gesamte Repository nehmen hier , kompilieren die Firmware selbst und ändern Sie es , wie Sie wollen. Der gesamte Code im Repository ist unter MIT lizenziert.
Entpacken Sie das über den obigen Link heruntergeladene Archiv in ein separates Verzeichnis und führen Sie esp-flasher- <Ihr Betriebssystemname> über die Konsole aus (Windows-Benutzer können einfach auf esp-flasher-win.exe doppelklicken). Als Ergebnis sollten Sie so etwas haben:



Zusätzlich zum mitgelieferten Dienstprogramm für die Firmware ESP8266 können Sie auch ein anderes Dienstprogramm verwenden, z. B. esptool .

Herzlichen Glückwunsch - die Firmware ist installiert und funktioniert bereits! Trennen Sie nun die Masse vom GPIO0-Pin (wird nicht mehr benötigt), damit das Modul nicht wieder in den Programmiermodus wechselt. Um eine Verbindung zum ESP8266-Terminal herzustellen, führen Sie esp-terminal- <Ihr Betriebssystemname> oder ein anderes Terminal mit serieller Schnittstelle aus, das Escape-Zeichen unterstützt, z. B. PuTTY oder das GNU-Dienstprogramm 'screen'. Portparameter: Geschwindigkeit 115200, 8N1.

Beide enthaltenen Dienstprogramme können automatisch den Port erkennen, an den der ESP8266 angeschlossen ist, d. H. Beim Start sind keine Parameter erforderlich.
Beim Starten des Terminals sehen wir die Einladung:



Tatsächlich ist dies ein reguläres Unix-ähnliches Terminal, das die automatische Vervollständigung (Tabulatortaste) und den Verlauf (Aufwärts-, Abwärts-Tasten) unterstützt. Tatsächlich gibt es dort jedoch keine Datei oder Betriebssysteme. Eine Liste der verfügbaren Befehle finden Sie unter 'Hilfe':



Wir interessieren uns für den Befehl 'configure'. Führen Sie es aus, um das Gerät zu konfigurieren.

Das Dienstprogramm stellt fünf einfache Fragen:
  1. Der Name Ihres Wi-Fi-Netzwerks.
  2. Passwort Ihres Wi-Fi-Netzwerks.
  3. Die API-Adresse Ihres Servers.
  4. Geräte-ID Ihres Geräts.
  5. DeviceKey Ihres Geräts.


Geben Sie unter "DeviceHive-Server-URL" die "API-URL" vom Server ein. In „DeviceID“ - einer eindeutigen Gerätekennung für den Server - werden mit diesem Namen Geräte auf dem Server unterschieden. "DeviceID" kann einfacher Text sein. Insbesondere können Sie eine Text-GUID generieren, indem Sie auf die Registerkarte klicken. Geben Sie bei der letzten Anforderung von DeviceKey das ausgewählte Kennwort ein. Es kann durch Drücken der Tabulatortaste generiert werden.

Hier lohnt sich ein kleiner Exkurs. ESP8266 verwendet die Serverauthentifizierung nach Geräte-ID. Sobald DeviceID und DeviceKey auf dem Server registriert sind, kann kein anderes Gerät mit derselben DeviceID, aber mit einem anderen Kennwort eine Verbindung herstellen. In Zukunft ist ein DeviceKey-Kennwort möglicherweise nur erforderlich, wenn Sie das physische Gerät durch ein anderes Gerät mit derselben Geräte-ID ersetzen möchten.

So sieht das Setup aus:



Wenn wir alles richtig gemacht haben, können wir in die Debug-Ausgabe schauen und sicherstellen, dass das Gerät erfolgreich mit dem Server verbunden ist. Hier ist die Debug-Ausgabe eines erfolgreich verbundenen Geräts:



USB-> UART-Adapter kann jetzt deaktiviert werden. Sie können es verlassen, wenn Sie die Debug-Ausgabe oder den Netzwerkstatus anzeigen möchten.

Auf der Registerkarte "Geräte" im Admin-Bereich wird nun das erste Gerät angezeigt.

Versuchen wir, den ersten Befehl an das Gerät zu senden . Gehen Sie dazu wie folgt zum Admin-Bereich: "Geräte" -> "ESP" -> "Details" -> "Befehle" -> "Neuen Befehl eingeben". Geben Sie im Feld "Name" "gpio / read" an und drücken Sie "push". Team geschickt!

Die Antwort wird sehr schnell kommen, aber die Ergebnisse der Befehle im Admin-Bereich werden nicht automatisch aktualisiert. Zu diesem Zweck befindet sich gegenüber dem Befehl eine Schaltfläche zum Aktualisieren. Klicken Sie ein oder zwei Sekunden nach dem Senden darauf und Sie sehen diesen Bildschirm:



Was ist passiert? Durch Drücken der Taste haben Sie einen Befehl vom Admin-Bereich (in diesem Fall dem Server-Client) an den Server-Befehl gesendet. ESP8266 hat es aufgenommen, ausgeführt und das Ergebnis an den Server übergeben. Durch Klicken auf die Schaltfläche Aktualisieren haben Sie den Server nach dem Ergebnis des Befehls gefragt: Die Liste der verfügbaren Befehle befindet sich in der PDF-Datei, die mit der Firmware geliefert wurde. Es ist auch hier verfügbar, stimmt jedoch möglicherweise nicht mit der Version Ihrer Firmware überein.

{"0":"1","1":"0","2":"1","3":"0","4":"1","5":"1","12":"0","13":"0","14":"0","15":"0"}




Nach einer guten Tradition werden wir die LED auf der Platine anzünden. In den meisten ESP8266-Modulen befindet sich die LED an einem TX-Ausgang, und wir werden uns darum kümmern. Sie leuchtet auf, wenn am Ausgang des Chips ein niedriger Pegel angezeigt wird. In dem Dokument werden wir sehen, dass GPIO1 nichts anderes als der gleiche TX-Ausgang ist. Setzen wir also eine logische Null darauf. In diesem Fall leuchtet die LED problemlos auf. Danach funktioniert das Terminal am Modul bis zum Neustart nicht mehr.

Jetzt setzen wir den Befehl, der auch im Dokument angegeben ist. Im Feld "Name" setzen wir und im Feld "Parameter" - . Nach Ausführung des Befehls sollte die LED auf der Platine aufleuchten, wie auf dem Foto unten dargestellt."gpio/write"
"gpio/write"
{"1":"0"}




Eine blaue LED unter Quarz, neben der noch eine rote leuchtet, die anzeigt, dass die Platine mit Strom versorgt wird.

Wie Sie auf dem Foto sehen können, sind nur zwei Drähte mit Strom und zwei Steckbrücken an das Modul angeschlossen, um das Modul im richtigen Modus einzuschalten. Senden Sie zum Ausschalten einen Befehl mit einem Parameter . Das Format der Befehlsparameter ist normales JSON. Felder, die ausgefüllt werden können, sowie ihre möglichen Werte werden in der PDF-Datei beschrieben. Heute haben wir herausgefunden, wie die einfachsten Befehle vom Admin-Panel an das Gerät gesendet werden können. Im nächsten Artikel erfahren Sie, wie Sie eine einfache Clientanwendung für den Server schreiben, mit der Sie auf das Gerät zugreifen und ein etwas seriöseres Gerät implementieren können (erinnern Sie sich an den Laser aus dem ersten Artikel?). Bleiben Sie dran, es wird interessant sein!{"1":"1"}






Gepostet von Nikolai Khabarov, Senior Embedded Developer.

Source: https://habr.com/ru/post/de383027/


All Articles