MicroPython-Beispiele für Digi XBee Teil 1: Edge Computing

Rob Faludi Rob Faludi, IoT Berater, Faludi.com
Oktober 29, 2018

Die neue Digi XBee® 3 Reihe eingebetteter RF-Module verfügt über Edge Intelligence, die bei der Ausführung von Geschäftsregeln und vielem mehr hilft. Durch die Ausführung einfacher Python-basierter Skripte auf Digi XBee 3 können Sie Geld sparen, die Batterielebensdauer verlängern, die Reaktionsfähigkeit verbessern und die Systemzuverlässigkeit erhöhen.

Der beste Weg, die Leistungsfähigkeit von Edge Intelligence zu verstehen, ist die praktische Anwendung. In dieser Serie führen wir Sie durch einige einfache Beispiele, die Sie direkt verwenden, dann anpassen und erweitern können, um die Leistung der Programmierung auf everyones Lieblingslinie von Funkmodulen zu bringen.

MicroPython ist eine Open-Source-Programmiersprache, die auf Python 3 basiert, für kleine Geräte modifiziert und für Mikrocontroller optimiert wurde. Mit MicroPython, einer leicht zu erlernenden Skript- und Programmiersprache, können Sie schnell intelligente Verhaltensweisen an den Rändern Ihres Netzwerks prototypisieren. Kryptische Sensormesswerte können in nützliche Daten umgewandelt werden, überschüssige Übertragungen können intelligent herausgefiltert werden, und moderne Sensoren und Aktoren können direkt eingesetzt werden, wobei komplexe Vorgänge bei Bedarf lokal ausgeführt werden.

Erste Schritte mit Digi XBee MicroPython Programmierung

XCTU v6.3.8 und spätere Versionen verfügen über ein neues MicroPython-Terminal, das dem Benutzer die Interaktion mit MicroPython auf den Digi XBee 3-Modulen ermöglicht. Über die serielle Schnittstelle im Terminal können Benutzer MicroPython-Code schreiben, testen, laden und ausführen, indem sie die vertraute interaktive REPL-Eingabeaufforderung verwenden.

Es ist ganz einfach, loszulegen. Beginnen Sie mit dem Digi XBee 3 Mobilfunk LTE-M Kit. (Andere Digi XBee 3 Mobilfunk Kits sind ähnlich.)

MicroPython-Terminal

  1. Montieren Sie die Hardware und verbinden Sie sie mit der XCTU Konfigurationssoftware an. Vollständige Anweisungen, falls erforderlich, finden Sie in der Anleitung " Erste Schritte".
  2. Öffnen Sie das Programm XCTU.
  3. Ein Gerät hinzufügen(Hilfe).
  4. Das XBee Mobilfunk Modem erscheint als Kästchen im Informationsfeld Funkmodule. Klicken Sie auf dieses Feld, um das Gerät auszuwählen und seine aktuellen Einstellungen zu laden.
  5. Stellen Sie die Baudrate des Geräts auf 115200 bps ein, um die besten Ergebnisse zu erzielen. Wählen Sie im Feld BD den Wert 115200 [7 ] und klicken Sie auf die Schaltfläche Schreiben.
  6. Um das XBee Mobilfunk Modem in den MicroPython-Modus zu versetzen, wählen Sie im Feld AP den Eintrag MicroPython REPL [4] und klicken Sie auf die Schaltfläche Schreiben.
  7. Notieren Sie, welche(n) COM-Port(s) das XBee Mobilfunk Modem verwendet, da Sie diese Information bei der Terminal-Kommunikation benötigen. Im Informationsfeld der Funkmodule wird der verwendete COM-Port aufgelistet.

So verwenden Sie das MicroPython Terminal in XCTU:

  1. Klicken Sie auf das Dropdown-Menü Tools und wählen Sie MicroPython Terminal.
  2. Klicken Sie auf . Öffnen Sie. Wenn Sie noch keine Geräte zu XCTU hinzugefügt haben:
    1. Klicken Sie im Bereich Select the Serial/USB port auf den COM-Port, den das Gerät verwendet.
    2. Überprüfen Sie, ob die Baudrate und andere Einstellungen korrekt sind.
  3. Klicken Sie auf OK. (Das Symbol " Öffnen" ändert sich in "Schließen" und zeigt damit an, dass das Gerät ordnungsgemäß angeschlossen ist).
  4. Drücken Sie Strg+B, um das MicroPython-Versionsbanner und die Eingabeaufforderung zu erhalten.

Zugehöriges Whitepaper: 5 Gründe, warum Sie Embedded Mobilfunk Connectivity in Betracht ziehen sollten.

Hallo-Welt-Beispiel

Lassen Sie uns einen einfachen "Hello World"-Code hochladen, um zu bestätigen, dass alles funktioniert. Geben Sie in einem Texteditor, z. B. Notepad unter Windows oder TextEdit unter MacOS, dieses kurze Skript ein:

1
2 3 4
Schlafimportieren
2)
    1. Drücken Sie in XCTU im MicroPython-Terminal die Tastenkombination Strg+F an der Eingabeaufforderung >>>, um MicroPython in den Flash-Compile-Modus zu versetzen.
    2. Kopieren Sie das Skript aus Ihrem Texteditor und fügen Sie es in das MicroPython-Terminal ein, dann drücken Sie Strg+D zum Beenden.
    3. Sie brauchen diesen Code beim Start nicht auszuführen, antworten Sie also mit N, wenn Sie gefragt werden.
    4. Drücken Sie abschließend Strg+R, um Ihren Code auszuführen. Er beginnt, Hello World alle zwei Sekunden auf den Bildschirm zu drucken. Sie können die Ausführung durch Drücken von Strg-C anhalten. So sollte Ihre gesamte Sitzung aussehen:
 
MicroPython v1.9.4-797-g4361c12 am 2018-09-20; XBC LTE-M/NB-IoT Global mit EFR32MG
Type "help()" for more information. >>> flash compile mode; Ctrl-C to cancel, Ctrl-D to finish 1^^^ from time import sleep 2^^^ while True: 3^^^ print("Hello World!") 4^^^ sleep(2) 5^^^ Compiling 67 bytes of code... Used 10/371 QSTR entries. stack: 424 out of 3584 GC: total: 32000, used: 224, free: 31776 No. of 1-blocks: 6, 2-blocks: 2, max blk sz: 4, max free sz: 1933 Compiled 67 bytes of code to 108/31232 bytes of flash. Automatically run this code at startup [y/N]? N Stored code will not run at startup. Press CTRL-R in the REPL to run the code at any time. MicroPython v1.9.4-797-g4361c12 on 2018-09-20; XBC LTE-M/NB-IoT Global with EFR32MG Type "help()" for more information. >>> Running 108 bytes of stored bytecode... Hello World! Hello World! Hello World! Hello World! Hello World! Traceback (most recent call last): File "<stdin>", line 4, in <module> KeyboardInterrupt: >>>
Hallo Welt Zusammenfassung

Mit der Fertigstellung dieses Hello World-Beispiels verfügen Sie nun über alle Fähigkeiten, die Sie für den Einsatz von Edge Intelligence benötigen. Sie haben die Digi XBee 3-Hardware eingerichtet, sie mit der Konfigurationssoftware verbunden, MicroPython geöffnet, funktionierenden Code geladen und ihn selbst ausgeführt. Sie sind nun bereit, Ihre erste echte Anwendung auszuführen.

Erfassen, Umwandeln und Senden eines Wertes

Da wir nun wissen, wie man MicroPython-Code auf der Plattform Digi XBee 3 erstellt, können wir etwas Nützliches damit machen. Viele IoT Systeme sind im Grunde Sensornetzwerke. Sie messen lokal Werte wie Temperatur, Wasserdruck oder die Anwesenheit von Menschen und senden diese Informationen dann zur Protokollierung, Verarbeitung und Entscheidungsfindung an Online-Anwendungen. In unserem nächsten Projekt werden wir mit einem einfachen Sensor eine Temperaturmessung vornehmen und diese dann als SMS an Ihr Telefon senden. Dieser Messzyklus wiederholt sich jede Minute und wird nach 10 Runden gestoppt, um Ihren Verstand zu schützen.

Viele Sensoren erzeugen eine einfache variierende Spannung, die in die richtigen Einheiten umgewandelt werden muss. Zum Beispiel könnte ein Temperatursensor bei 25º Celsius 750 mV ausgeben. Während es möglich ist, die bedeutungslose Zahl 750 an die Cloud-Anwendung zu senden, wäre es viel klarer, stattdessen 25 ºC zu senden, was die tatsächliche Temperatur ist. Dies ist in MicroPython leicht zu bewerkstelligen, und diese Transformationen werden zunehmend hilfreich sein, wenn wir intelligentere Systeme aufbauen.

Zunächst schließen wir einen Sensor an unser Digi XBee 3 Mobilfunk Modem an. Der Einfachheit halber verwenden wir den Temperatursensor TMP36, der selbstkalibrierend ist und über eine einzige Leitung kommuniziert.

Zu bestellende Teile
Vorbereiten der Platine zum Anschließen von Komponenten

20-polige StiftleisteDer einfachste Weg, zusätzliche Komponenten an die XBIB-Entwicklungsplatine anzuschließen, ist das Anlöten eines der diese Überschriften an die 20-polige Buchse an der XBIB mit der Bezeichnung P1. Jetzt können Sie Jumperdrähte verwenden, um Peripheriegeräte wie Sensoren oder Motoren anzuschließen.

Hinweis: Wenn Sie keine Jumperdrähte oder eine Stiftleiste haben, können Sie auch Drähte oder Sensoren direkt an die XBIB-Platine anlöten.

Montieren Sie die Hardware

Schließen Sie den Temperatursensor TMP36 mit Brückendrähten an die XBIB-Platine an.

  1. Mit der flachen Seite des TMP36 zu Ihnen gewandt, wird die ganz linke Leitung mit Pin 1, VCC auf der XBIB-Platine verbunden.
  2. Die mittlere Leitung wird an Pin 20 (direkt daneben) DIO0 angeschlossen.
  3. Die ganz rechte Leitung geht an Pin 10, GND.

TMP36 Temperatur-Layout

Konfigurieren Sie die XBee

Starten Sie das Programm XCTU, nachdem Sie die Digi XBee 3 Mobilfunk auf der XBIB-Platine installiert und über USB mit Ihrem Computer verbunden haben.

  1. Fügen Sie ein Funkmodul hinzu und klicken Sie dann auf dieses Gerät in der Liste, um es zu konfigurieren.
  2. BD Baud Rate sollte bereits auf 115200 [7] und AP API Enable auf MicroPython REPL [4] eingestellt sein.
  3. Wenn Sie diese beiden Angaben bestätigt haben, suchen Sie das Feld P# Zielrufnummer und geben Sie die Mobiltelefonnummer ein, die die Temperaturtexte erhalten soll.
  4. Schreiben Sie diese Einstellungen in das Modul, indem Sie das Stiftsymbol am oberen Rand verwenden.
Laden Sie den Code

Kopieren Sie den unten stehenden Code in einen Texteditor wie Notepad. Stellen Sie sicher, dass Sie Ihre eigene Telefonnummer eingeben, indem Sie "Ihre_Handynummer_hier" ersetzen, bevor Sie den Code hochladen. Geben Sie sie so ein, wie Sie sie auf einem Handy wählen würden, einschließlich des +-Symbols, falls erforderlich. Standardmäßig sendet dieses Programm einmal pro Minute einen Temperaturmesswert, insgesamt 10 Mal. Sie können dies anpassen, indem Sie die Variablen " wait_time" oder " cycles" wie gewünscht ändern.

Denken Sie daran, dass dieser Beispielcode bearbeitet werden muss, bevor Sie ihn hochladen.

 1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
# Digi XBee3 Mobilfunk Grundlegendes Beispiel
Warten zwischen den Zyklen sleep(wait_time)

Nachdem der Code durch Hinzufügen der Handynummer bearbeitet wurde, kann er in XCTU am MicroPython-Terminal in gewohnter Weise hochgeladen werden:

  1. Drücken Sie Strg+F an der >>> Eingabeaufforderung, um MicroPython in den Flash-Compile-Modus zu versetzen.
  2. Kopieren Sie das Skript aus Ihrem Texteditor und fügen Sie es in das MicroPython-Terminal ein.
  3. Drücken Sie Strg+D zum Beenden und antworten Sie mit N, wenn Sie gefragt werden.
  4. Drücken Sie abschließend Strg+R, um Ihren Code auszuführen. Sie können die Ausführung durch Drücken von Strg-C anhalten.

Verwenden Sie es

Wenn das Temperatur-SMS-Beispiel läuft, sollten Sie beginnen, Textnachrichten zu empfangen. Wenn Sie die Einstellungen auf den Standardwerten belassen haben, werden Sie zehn Nachrichten im Abstand von einer Minute erhalten. Die Ergebnisse auf Ihrem Telefon sollten wie folgt aussehen:

temp.png

Zusammenfassung

Mit der Fertigstellung dieses SMS-Beispiels haben Sie echte, wenn auch grundlegende, Edge-Intelligenz geschaffen. Jetzt haben Sie Erfahrung damit, einen Sensor anzuschließen, seine Werte aufzuzeichnen, sie in nützliche Einheiten umzuwandeln und sie an ein Mobiltelefon zu senden. In zukünftigen Beiträgen werden wir uns mit dem Hochladen von Daten in Cloud-Anwendungen, dem Auslösen von Alarmen, der Verbesserung der Akkulaufzeit, der Reduzierung von Bandbreitenkosten und vielem mehr beschäftigen.

>>> Erfahren Sie mehr über das Digi XBee Ecosystem von drahtlosen Modulen, oder kontaktieren Sie uns, um Ihre Anforderungen zu besprechen.
Holen Sie sich unseren OEM-Leitfaden
Erfahren Sie mehr über die Werkzeuge für Ihr nächstes Projekt