Reihe zum Nachdenken über "IoT-Front-End-Entwicklung" ④ IoT-Prototyping mit MicroPython Teil 1

Einführung

Ich interessiere mich für das sogenannte Feld-IoT, bei dem IoT-Geräte im Freien wie Ackerland verwendet werden. Wir glauben, dass der Schlüssel zur weit verbreiteten Verwendung von IoT-Geräten in diesem Bereich die Flexibilität ist, Funktionen in jedem Bereich anzupassen und die Kosten pro Gerät zu senken. Im Folgenden wird MicroPython vorgestellt, eine Python-Umgebung für eingebettete Geräte, die für den Einstieg in diese Bereiche hilfreich sein kann.

MicroPython, Aufmerksamkeit erforderlich ♪

(Da es sich um ein Schlüsselwort handelt, das leicht zu entfernen ist, tun Sie es bei Interesse bitte selbst.)

Gründe, sich auf MicroPython for IoT zu konzentrieren

Funktioniert mit Geräten mit niedrigeren Spezifikationen als Raspeye.

Raspberry pi, bekannt als pädagogischer Single-Board-Computer, soll 2016 rund 2 Millionen Einheiten für den industriellen Einsatz ausgeliefert haben. Quelle Warum "Razpai" für Industrieanlagen wächst

Was die Details betrifft, ist es interessant, dass der Raspeltorte für Bildung oder "Amateur" als Industriecomputer weit verbreitet ist, was auf die Erklärung der eingebetteten Medien verweist.

Die Mikropython, auf die wir diesmal achten, kann eine E / A-Steuerung basierend auf Python auf einer Mikrocomputerplatine wie STM32 durchführen, die zu einem Verkaufspreis von mehreren hundert Yen erworben werden kann. Auf der offiziellen Website * "MicroPython verwendet viele fortschrittliche Codierungstechniken und viele Tricks, um eine kompakte Größe beizubehalten und dennoch über alle Funktionen zu verfügen." * Ich habe mein Bestes getan, um eine kompakte Python mit allen Funktionen zu erstellen. Wird angegeben. Es besteht kein Zweifel, dass der Ersteller von MicroPython Geek ist, aber die erstellte MicroPython-Umgebung ist einsatzbereit, und Sie können es Schritt für Schritt mit REPL versuchen, das recht benutzerfreundlich ist (zumindest in Bezug auf eingebettete Systeme). Sogar ein Nicht-IT-Ingenieur scheint damit vertraut zu sein.

Die Spezifikationen des Referenzplatinen-Pyboards lauten wie folgt (Einzelheiten finden Sie auf der offiziellen Website).

Sie können sehen, dass Python mit einer RAM-Kapazität von 200 KB oder weniger arbeitet (obwohl es eine reiche Umgebung unter "Mikrocomputern" ist).

Ich habe immer gedacht, dass die Fähigkeit, eine Sprache höher als C (?) Mit ähnlichen Spezifikationen wie die STM32-Mikrocomputerplatine zu betreiben und die Netzwerkkommunikation zu ermöglichen, eine Schlüsselrolle bei der Verbreitung von IoT-Geräten spielt. Es gibt. MicroPython wird als einer der Kandidaten angesehen. Natürlich werden Lua / Mruby / Lightweight Javascript usw. definitiv attraktive Kandidaten sein. Ich denke jedoch, dass MicroPython, das bereits als echter Benutzer aufgetreten ist, einen Schritt voraus ist.

Was kann in den nächsten Jahren passieren?

Träumen wir wie im neuen Jahr von fünf Jahren nach der Mikrocomputerplatine, die mit der MicroPython-ähnlichen Sprache ausgestattet ist.

① 2022, in fünf Jahren. Landwirtschaftliche Produktivitätsgewinne durch IoT wurden im ländlichen Asien / Afrika nachgewiesen (ein kleiner Zuschuss der Weltbank oder etwas anderes wird verwendet). Eingeführt wird ein wasser- und staubdichtes Sensorgerät auf einer Mikrocomputerplatine, das in kleinen Mengen für 10 Yen pro Einheit erworben werden kann. Eine MicroPython-ähnliche Skriptsprache funktioniert. Jede Mikrocomputerplatine wurde von m Einheiten an n Dorfbewohner übergeben, und alle wurden in den Boden des Ackerlandes und der von jeder Person verwalteten Umgebung eingesetzt.

――N × m = 10.000 Einheiten, die Beschaffungskosten betragen über 1 Million Yen.

(2) NGO-Mitarbeiter halten eine Einstellungsklasse für Mikrocomputerplatinen ab, um die grafische Entwicklungsumgebung für die Einführung der Skriptsprache auf der Mikrocomputerplatine zu erläutern. In dieser Entwicklungsumgebung können Sie 100 Millionen Geräte aus der Vogelperspektive betrachten und jede Mikrocomputerplatine mit einer Korngröße wie "Meldende Pflanzen, die kurz vor dem Absterben stehen" anpassen.

―― Irgendwie gehe ich von einer Entwicklungsumgebung wie einer erweiterten Version von Squeak aus. Dr. Alan Kays Quietschen (Smalltalk-80) ist im eToy-Bereich bekannt. Das folgende "Führen Sie ein handgeschriebenes Auto" (Beispiel unten). Ich hoffe, dass diese Abstraktionskraft auf IoToy-Weise entwickelt wird (?). In Wirklichkeit wird der Einsatz von KI von wesentlicher Bedeutung sein. https://youtu.be/DXMScjdzl_I?t=8m10s

③ (Da es sich nur um eine ideale Theorie handelt, bis sie verwirklicht wird, handelt es sich um eine Kugel unter der Voraussetzung Afrikas.) Die Landbevölkerung installierte 10.000 Mikrocomputerplatinen in einer X-Quadratkilometer-E-Mail. Die Menschen werden in der Lage sein, den Bericht aus dem Ganzen als Zwischentechnologie zu nutzen, um das Problem der "Wasserknappheit" zu lösen, das in vielen ländlichen Gebieten Afrikas ein häufiges Problem darstellt. Einige Jahre später wird die Dorfproduktionsgewerkschaft einen Produktionsprognosebericht an die Nachbarstädte senden, um das Einkommen der Dorfbewohner zu verbessern.

――Die Menschen in der „Hilfsindustrie“, die an der internationalen Zusammenarbeit arbeiten, indem sie das ODA-Budget voll ausschöpfen, scheinen zunächst nur ein Traum von Technologie zu sein, und tatsächlich ist die Technologie selbst nur eine Unterstützung. Es gibt jedoch Dinge, die ohne Technologie nicht durchbrochen werden können. Wenn ein Sensorgerät von 30 Yen pro Knoten erscheint, kann ein Sensornetzwerk von mehreren zehn Millionen internationalen Düsenflugzeugen aufgebaut werden, das mit dem Geld von 10.000 Menschen in der Hilfsindustrie den Zustand von Ackerland melden kann. (Je nach Mehrwert wird es ein Privatunternehmen). ――Da es nur ein Traum ist, werde ich keine Details schreiben, aber die Schlüsselkommunikationstechnologie ist die Satellitenkommunikationstechnologie und die Bluetooth-Technologie nach Bluetooth 5 zusätzlich zum Mobilfunknetz für IoT.

Referenz Bluetooth SIG kündigt "Bluetooth 5" an --- Funktionserweiterung für komplizierte IoT-Umgebung

MicroPython-Übersicht

Offizielle Website und Codebeispiel

Referenz Die offizielle MicroPython-Website https://micropython.org

Das Codebeispiel auf der oberen Seite ist ziemlich eingängig.

In der Tat aus dem Beispiel von "LED Chika"

led.py


import pyb

# turn on an LED
pyb.LED(1).on()

Vom Lesen von Dateien von einer "normalen Python" SD-Karte.

os.py


import os

# list root directory
print(os.listdir('/'))

# print current directory
print(os.getcwd())

# open and read a file from the SD card
with open('/sd/readme.txt') as f:
    print(f.read())

Eigenschaften von Mikropython, auf die ich achte

Um das Folgende.

--micropython ist ein leichtes Python3, das von Grund auf in C-Sprache (C99) (MIT-Lizenz) implementiert wurde.

Viele Vorfahren versuchen es in Japan, daher ist es gut, sich darauf zu beziehen.

Erstellen einer Micropython-Entwicklungsumgebung

Micropython kann mit dem C99-Compiler in verschiedenen Umgebungen erstellt werden. Es kann in verschiedenen * nix-Umgebungen sowie in Umgebungen ohne Betriebssystem erstellt werden. Für einen IoT-Amateur (I) ist es vorerst einfach, auf meinem eigenen Linux-Computer aufzubauen. Da es eine große Sache ist, habe ich ein Gerät mit niedriger Spezifikation (gebrauchte Windows Vista-Maschine (RAM 1 GB)) durch eine SSD ersetzt und das leichte Ubuntu 16.04 (32 Bit) als Betriebssystem installiert, das in 5 Jahren ungefähr 1000 Yen zu sein scheint. Ich werde an Dingen arbeiten.

Quellcode abrufen und erstellen

Beziehen Sie den Quellcode vom ursprünglichen Github. https://github.com/micropython/micropython Der Quellcode für * nix befindet sich im Ordner / unix.

Unter Ubuntu, das bereits gcc oder clang hat, könnte ich es einfach durch Installation erstellen:

sudo apt install libffi-dev pkg-config

Da die Quellcodegröße von C nicht groß ist, ist der Build selbst auf einem Computer mit niedrigen Spezifikationen in etwa 2 Minuten abgeschlossen.

Generierte Mikropython-Binärdatei

Nach dem Erstellen verfügen Sie über eine kleine Python3-kompatible Umgebung, die unabhängig voneinander arbeiten kann (die aktuelle Größe beträgt 378 KB). Sie sollten versuchen zu sehen, wie kompatibel es mit Python3 ist. Sie können REPL starten, während Sie die Version überprüfen.

micropyREPL.png

Zum Lesen und Anpassen des Quellcodes.

Schauen Sie sich den Quellcode an und erkunden Sie die Erweiterungspunkte. Ausgangspunkt ist das Makefile, das für jede Umgebung vorbereitet wurde, da es so konzipiert ist, dass es übergreifend kompiliert werden kann. Der Ordner / py ist der Hauptteil von Micropython und wird von Makefile für verschiedene Umgebungen referenziert.

-include mpconfigport.mk
include ../py/mkenv.mk

FROZEN_DIR = scripts

# define main target
PROG = micropython

# qstr definitions (must come before including py.mk)
QSTR_DEFS = qstrdefsport.h

# OS name, for simple autoconfig
UNAME_S := $(shell uname -s)

# include py core make definitions
include ../py/py.mk

(Unten weggelassen)

Das Folgende kann als Anpassungsrichtung betrachtet werden.

Mein Image ist ein Ansatz, der nützliche Funktionen in der C-Bibliothek "verfestigt", die ich mit Python REPL ausprobiert habe.

Von jetzt an.

Im Moment ist die Verbreitung von Feld-IoT wie Internet 4.0 mitten auf dem Weg (gerade erst begonnen). Außerdem hat MircoPython nichts mit meiner Arbeit zu tun. Und es gibt nur wenige bemerkenswerte Fälle, in denen IoT im Bereich der sogenannten internationalen Zusammenarbeit eingesetzt wird.

Ich denke, es ist Zeit, sich vorzubereiten. Das Feld IoT-Feld, in dem Geräte rosten, wenn sie unberührt bleiben. Vielleicht, weil es im Rückblick auf die letzten 10 Jahre viel kostet, ist der Weg des Fortschritts überraschend langsam. Dies erfordert unterschiedliche technische Ansätze und kann unterschiedliche Lösungen verwenden.

Wenn Sie vor dem olympischen Jahr einige Ergebnisse erzielen, sind Sie möglicherweise ein Top-Läufer. Seit ich Reihe von Überlegungen zur "IoT-Front-End-Entwicklung" (1) Implementierungssprache Nim in der IoT-Ära geschrieben habe, habe ich über Folgendes nachgedacht.

Alles basiert auf technischer Rationalität und Kosteneffizienz.

Der nächste Schritt für mich ist die Realisierung einer Ausführungsumgebung namens ** Python <-> C <-> Nim **, also das nächste Mal.

[^ 1]: Zum Beispiel MilkCocoa https://mlkcca.com/sample.html

Recommended Posts

Reihe zum Nachdenken über "IoT-Front-End-Entwicklung" ④ IoT-Prototyping mit MicroPython Teil 1
Erstellen einer Entwicklungsumgebung für die Python2.7-Serie mit Vagrant
Denken Sie an Aussetzer mit MNIST
Testgetriebene Entwicklung mit Django Teil 3
Testgetriebene Entwicklung mit Django Teil 4
Testgetriebene Entwicklung mit Django Teil 2
Testgetriebene Entwicklung mit Django Teil 1
Testgetriebene Entwicklung mit Django Teil 5
Ich habe versucht, ein Plug-In mit HULFT IoT Edge Streaming [Entwicklung] (2/3) zu erstellen.
Ein Leitfaden für IoT mit MicroPython bis zur letzten Minute