Série de réflexion sur le "développement frontal IoT" ④ Prototypage IoT avec MicroPython Partie 1

introduction

Je m'intéresse à ce que l'on appelle l'IoT de terrain, qui utilise des appareils IoT à l'extérieur, comme les terres agricoles. Nous pensons que la clé de l'utilisation généralisée des appareils IoT dans ce domaine est la flexibilité de personnaliser les fonctions dans chaque domaine et la réduction des coûts par appareil. Ci-dessous, nous aborderons MicroPython, un environnement python pour les périphériques embarqués qui peut être utile pour se lancer dans ces domaines.

MicroPython, attention requise ♪

(Comme il s'agit d'un mot-clé dont il est facile de se débarrasser, si vous êtes intéressé, faites-le vous-même.)

Raisons de se concentrer sur MicroPython pour l'IoT

Fonctionne avec des équipements avec des spécifications inférieures à Raspeye.

Le Raspberry pi, qui est réputé comme un ordinateur monocarte éducatif, aurait expédié environ 2 millions d'unités à des fins industrielles en 2016. Source Pourquoi "Razpai" se développe pour les équipements industriels

Quant aux détails, il est intéressant de noter que la tarte aux râpes pour l'éducation ou «amateur» est devenue largement utilisée comme ordinateur industriel, en référence à l'explication des médias embarqués.

Le micropython auquel nous prêtons attention cette fois est celui qui peut effectuer un contrôle d'E / S basé sur python sur une carte de micro-ordinateur telle que STM32 qui peut être achetée à un prix de détail de plusieurs centaines de yens. Sur le site officiel, * "MicroPython utilise de nombreuses techniques de codage avancées et de nombreuses astuces pour conserver une taille compacte tout en ayant un ensemble complet de fonctionnalités." *, J'ai décidé de faire de mon mieux pour créer un python compact et complet. Est déclaré. Il ne fait aucun doute que le créateur de MicroPython est Geek, mais l'environnement MicroPython créé est prêt à être utilisé, et vous pouvez l'essayer étape par étape en utilisant REPL, qui est assez convivial (du moins, il est lié aux systèmes embarqués). Même un ingénieur non-informatique semble le connaître).

Les spécifications de la carte de référence pyboard sont les suivantes (voir le site officiel pour plus de détails)

Vous pouvez voir que python fonctionne avec une capacité de RAM de 200 Ko ou moins (bien que ce soit un environnement riche parmi les «micro-ordinateurs»).

J'ai toujours pensé que la capacité à exploiter un langage supérieur au C (?) Avec des spécifications similaires à la carte micro-ordinateur STM32 et à activer la communication réseau sera un acteur clé pour la diffusion des appareils IoT. Il y a. MicroPython est considéré comme l'un des candidats. Bien sûr, lua / mruby / light javascript etc. seront certainement des candidats attractifs. Cependant, je pense que MicroPython, qui est déjà apparu comme un véritable utilisateur, a une longueur d'avance.

Ce qui peut arriver dans les prochaines années.

Comme la nouvelle année, rêvons environ cinq ans après la carte micro-ordinateur équipée du langage de type MicroPython.

① 2022, dans cinq ans. Il a été démontré que l'IdO améliore la productivité agricole dans les zones rurales d'Asie / Afrique (une petite subvention de la Banque mondiale ou autre est utilisée). L'invention concerne un dispositif de capteur étanche à l'eau et à la poussière sur une carte de micro-ordinateur qui peut être acheté en petits lots pour 10 yens par unité. Un langage de script de type MicroPython fonctionne. Chaque carte de micro-ordinateur a été remise à n villageois par m unités, et toutes ont été insérées dans le sol des terres agricoles et de la zone environnante gérée par chaque personne.

――N × m = 10 000 unités, le coût d'achat est supérieur à 1 million de yens.

(2) Un cours de configuration de la carte micro-ordinateur sera organisé par le personnel de l'ONG pour expliquer l'environnement de développement graphique pour l'introduction du langage de script sur la carte micro-ordinateur. Dans cet environnement de développement, vous pouvez obtenir une vue d'ensemble de 100 millions de périphériques et personnaliser chaque carte de micro-ordinateur avec une granulométrie telle que «signaler les plantes qui sont sur le point de mourir».

―― D'une manière ou d'une autre, je suppose un environnement de développement comme une version avancée de Squeak. Le Squeak du Dr Alan Kay (Smalltalk-80) est bien connu dans le domaine eToy. Le suivant "exécuter une voiture manuscrite" (exemple ci-dessous). J'espère qu'une telle puissance d'abstraction sera développée de manière IoToy (?). En réalité, l'utilisation de l'IA sera essentielle. https://youtu.be/DXMScjdzl_I?t=8m10s

③ (Puisqu'il ne s'agit que d'une théorie idéale jusqu'à ce qu'elle soit réalisée d'ici, c'est un style de balle sur la prémisse de l'Afrique.) Les populations rurales ont installé 10 000 cartes de micro-ordinateurs dans X kilomètres carrés. Les gens pourront utiliser le rapport dans son ensemble comme une technologie intermédiaire pour résoudre le problème de la "pénurie d'eau", qui est un problème commun dans de nombreuses zones rurales en Afrique. Quelques années plus tard, le syndicat villageois de production enverra un rapport prévisionnel de production aux villes voisines pour améliorer les revenus des villageois.

«Pour les gens de« l'industrie de l'aide »qui travaillent à la coopération internationale en utilisant pleinement le budget de l'APD, cela peut sembler être un simple rêve de technologie d'abord, et en fait, la technologie elle-même n'est qu'un soutien. Cependant, il y a des choses qui ne peuvent être surmontées sans la technologie. Si un dispositif de détection de 30 yens par nœud apparaît, il sera possible de construire un réseau de capteurs de dizaines de millions d'avions à réaction internationaux capables de signaler l'état des terres agricoles avec l'argent de 10000 personnes dans l'industrie de l'aide. (Il deviendra une entreprise privée en fonction de la valeur ajoutée). ――Comme ce n'est qu'un rêve, je n'écrirai pas de détails, mais la technologie de communication clé est la technologie de communication par satellite et la technologie Bluetooth après Bluetooth 5 en plus du réseau de téléphonie mobile pour l'IoT.

Référence Bluetooth SIG annonce «Bluetooth 5» —— Extension de fonction pour un environnement IoT complexe

Présentation de MicroPython

Site officiel et exemple de code

Référence site officiel de MicroPython https://micropython.org

L'exemple de code sur la première page est assez accrocheur.

En effet, à partir de l'exemple de "LED Chika"

led.py


import pyb

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

De la lecture de fichiers à partir d'une carte SD "python normale".

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())

Caractéristiques du micropython auxquelles je fais attention

Autour de ce qui suit.

--micropython est un python3 léger implémenté à partir de zéro en langage C (C99) (licence MIT).

De nombreux ancêtres essaient au Japon, il est donc bon de s'y référer.

Construire un environnement de développement micropython

micropython peut être construit dans divers environnements à l'aide du compilateur C99. Il peut être construit dans divers environnements * nix ainsi que dans des environnements sans système d'exploitation. Pour un amateur IoT (I), il est facile de construire sur ma propre machine Linux pour le moment. Comme c'est un gros problème, je pensais que ce serait environ 1000 yens en 5 ans, j'ai remplacé un appareil à faible spécification (machine Windows Vista utilisée (RAM 1 Go) par SSD et installé Ubuntu 16.04 (32 bits) léger comme système d'exploitation). Nous allons travailler sur les choses).

Obtention et création du code source

Récupérez le code source du github d'origine. https://github.com/micropython/micropython Le code source de * nix se trouve sous le dossier / unix.

Sur Ubuntu, qui a déjà gcc ou clang, je pourrais le construire simplement en installant:

sudo apt install libffi-dev pkg-config

Étant donné que la taille du code source C n'est pas grande, la construction est terminée en environ 2 minutes, même sur une machine à faible spécification.

Binaire micropython généré

Après la construction, vous aurez un petit environnement compatible python3 qui peut fonctionner indépendamment (la taille actuelle est de 378 Ko). Vous devriez essayer dans quelle mesure il est compatible avec python3. Vous pouvez démarrer REPL tout en vérifiant la version.

micropyREPL.png

Pour lire et personnaliser le code source.

Regardez le code source et explorez les points d'extension. Le point de départ est le makefile préparé pour chaque environnement car il est conçu pour pouvoir être compilé de manière croisée. Le dossier / py est le corps principal de micropython, et il est référencé à partir de makefile pour divers environnements.

-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

(Omis ci-dessous)

Ce qui suit peut être considéré comme le sens de la personnalisation.

Mon image est une approche qui "solidifie" des fonctionnalités utiles dans la bibliothèque C que j'ai essayée avec le REPL de python.

À partir de maintenant.

Pour le moment, la diffusion de l'IoT de terrain comme Internet 4.0 est au milieu de la route (vient de commencer). De plus, MircoPython n'a rien à voir avec mon travail. Et il existe peu de cas remarquables d'utilisation de l'IdO dans le domaine de la soi-disant coopération internationale.

Je pense qu'il est temps de se préparer. Le champ IoT field où l'équipement rouille s'il n'est pas touché. Peut-être parce que cela coûte cher, en regardant en arrière ces 10 dernières années, le chemin du progrès est étonnamment lent. Cela nécessite différentes approches techniques et peut utiliser différentes solutions.

Si vous obtenez des résultats avant l'année olympique, vous pourriez être un des meilleurs coureurs. Par conséquent, depuis que j'ai écrit Série de réflexions sur le «développement frontal de l'IoT» (1) Langage d'implémentation Nim à l'ère de l'IoT, j'ai réfléchi à ce qui suit.

--Je voudrais utiliser nim pour personnaliser efficacement le comportement des petits appareils IoT à ultra-économie d'énergie basés sur le langage C * Référence. ――Je souhaite procéder à la mise en œuvre côté serveur pour stocker et traiter les données de dizaines de millions d'appareils IoT de terrain de manière aussi fiable que possible (je fais quelque chose de similaire dans mon travail de jour. Des solutions simples apparaissent également [^ 1]). «Nous souhaitons coopérer avec des équipements destinés aux utilisateurs de terrain disposant d'une source d'énergie, tels que des automobiles et des machines agricoles (si la distribution est intégrée, elle deviendra une cible dans le domaine de la mobilité IoT). --Je souhaite préparer un mécanisme qui puisse poursuivre l'authenticité des données stockées côté serveur à moyen et long terme (compte tenu de l'utilisation de la blockchain) * Référence —— Interface entre les appareils IoT et les utilisateurs impliqués sur le terrain (j'estime que les interfaces interactives sont souhaitables.) L'environnement éducatif historique de l'environnement Smalltalk peut être utile. * Référence

La rationalité technique et la rentabilité sont sous-jacentes à tout.

La prochaine étape pour moi est de réaliser un environnement d'exécution appelé ** Python <-> C <-> Nim **, donc la prochaine fois.

[^ 1]: par exemple, MilkCocoa https://mlkcca.com/sample.html

Recommended Posts

Série de réflexion sur le "développement frontal IoT" ④ Prototypage IoT avec MicroPython Partie 1
Comment créer un environnement de développement de la série Python2.7 avec Vagrant
Pensez aux abandons avec MNIST
Développement piloté par les tests avec Django Partie 3
Développement piloté par les tests avec Django Partie 4
Développement piloté par les tests avec Django Partie 2
Développement piloté par les tests avec Django Partie 1
Développement piloté par les tests avec Django Partie 5
J'ai essayé de créer un plug-in avec HULFT IoT Edge Streaming [Development] (2/3)
Un guide pour faire de l'IoT avec MicroPython facilement jusqu'à la dernière minute