Cet article est le deuxième jour du Calendrier de l'avent Python Partie 2 2019. Le premier jour était le remplacement de chaîne avancé de @ ssh-22 avec re.sub.
Avec la naissance d'Arduino et de Raspberry Pi, l'écosystème se met rapidement en place dans le domaine de l'IoT, mais bien que Raspberry Pi puisse être implémenté en Python, Arduino est extrêmement plus facile à utiliser pour un peu de contrôle électronique. Cependant, certaines personnes peuvent vouloir écrire dans le Python familier au lieu du langage Arduino (comme C / C ++). Dans cet article, j'aimerais écrire un guide pour démarrer facilement le développement à l'aide de MicroPython, qui est un Python intégré, au sens financier également.
--Arduino …… pas la carte de développement ESP32 --San Hayato Nouvelle planche à pain SAD-101
L'environnement de travail est macOS + Python3.
Dans le domaine récent d'Arduino, le même environnement de développement qu'Arduino peut être utilisé, et ESP32 qui peut utiliser Wifi / Bluetooth est devenu le courant dominant (ce n'est pas exactement Arduino, mais il peut être utilisé presque de la même manière). L'ESP32-DevKit C et les produits compatibles, généralement plus sophistiqués que l'Arduion UNO standard mais moins chers, sont souvent utilisés.
Si vous êtes pressé, Akizuki Denshi ESP32-DevKitC pour 1 480 yens ou Switch Science [ESPr Developer 32](https: //www.switch) pour 2 200 yens -science.com/catalog/3210/) Procurons-nous.
Cependant, je recommande personnellement les achats à l'étranger tels que aliexpress. Cette fois, nous avons levé ici pour 436 yens. Le prix est de 1/3. Cependant, il a fallu environ 3 semaines pour arriver. Si vous pouvez l'acheter pour environ 1500 yens, vous pouvez l'acheter au Japon, mais si vous ne vous dépêchez pas, ce sera 1/3 du prix car le travail électronique casse des pièces et il est difficile de le réutiliser si vous l'utilisez pour faire quelque chose. Il est recommandé d'en acheter trois à. Pour ceux qui ne veulent pas payer par carte de crédit par correspondance à l'étranger, il existe d'autres sites tels que banggood où paypal peut être utilisé, mais comme la différence de prix est faible avec un achat national, il peut être préférable de l'acheter au Japon. Pourtant, c'est moins de la moitié du prix du Raspberry Pi.
(Ajout) Si vous y réfléchissez, vous pouvez l'acheter à bas prix sur Amazon. 2 pièces pour 1 680 yens, donc je pense que tout va bien.
L'ESP32-DevKitC a une largeur légèrement plus large entre les rangées de broches, et une maquette avec 5 trous de chaque côté, vendue à bas prix, n'aura pas de trous d'insertion. La série New Breadboard est facile à utiliser car elle comporte 6 trous de chaque côté. Cette fois, j'ai préparé le SAD-101 le plus simple. C'est une planche à pain légèrement haut de gamme, donc c'est 518 yens sur Amazon.
Après cela, configurons MicroPython sur ESP32 selon Documents traduits en japonais.
Normalement, lorsque vous achetez ESP32-DevKitC, un micrologiciel compatible Arduino appelé Arduino Core est déjà écrit. En l'état, il ne peut être implémenté qu'en langage Arduino, alors réécrivez le firmware MicroPython.
Dans MicroPython pour ESP32, vous devez sélectionner soit "Ferme qui peut utiliser le Wifi mais pas Bluetooth" ou "Ferme qui peut utiliser Bluetooth mais ne peut pas utiliser le Wifi". Cette fois, je choisirai une version stable de "une ferme qui peut utiliser le Wifi".
ESP32-Installez le pilote Silicon Labs pour une connexion USB à DevKitC.
Pilote VCP CP210x USB - UART Bridge
Cette fois, j'ai installé le pilote pour macOS. Si vous connectez l'ESP32 via USB, vous devriez probablement voir l'ESP32 dans / dev / cu.SLAB_USBtoUART
.
$ pip install esptool
$ esptool.py --port /dev/cu.SLAB_USBtoUART erase_flash
Si vous l'exécutez, vous obtiendrez le résultat suivant.
$ esptool.py --port /dev/cu.SLAB_USBtoUART erase_flash
esptool.py v2.8
Serial port /dev/cu.SLAB_USBtoUART
Connecting........_
Detecting chip type... ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: XX:XX:XX:XX:XX:XX
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 8.4s
Hard resetting via RTS pin...
$ esptool.py --chip esp32 --port /dev/cu.SLAB_USBtoUART write_flash -z 0x1000 esp32-idf3-20190529-v1.11.bin
Si vous l'exécutez, vous obtiendrez le résultat suivant.
$ esptool.py --chip esp32 --port /dev/cu.SLAB_USBtoUART write_flash -z 0x1000 esp32-idf3-20190529-v1.11.bin
esptool.py v2.8
Serial port /dev/cu.SLAB_USBtoUART
Connecting........____
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: XX:XX:XX:XX:XX:XX
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 1146864 bytes to 717504...
Wrote 1146864 bytes (717504 compressed) at 0x00001000 in 63.5 seconds (effective 144.4 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
Vous avez maintenant configuré MicroPython. Je vais l'exécuter avec Python tout de suite.
Tout d'abord, essayez d'accéder à l'invite REPL.
$ screen /dev/tty.SLAB_USBtoUART 115200
Si vous tapez help () [enter]
et que la sortie est la suivante, cela réussit.
Welcome to MicroPython on the ESP32!
For generic online docs please visit http://docs.micropython.org/
For access to the hardware use the 'machine' module:
import machine
pin12 = machine.Pin(12, machine.Pin.OUT)
pin12.value(1)
pin13 = machine.Pin(13, machine.Pin.IN, machine.Pin.PULL_UP)
print(pin13.value())
i2c = machine.I2C(scl=machine.Pin(21), sda=machine.Pin(22))
i2c.scan()
i2c.writeto(addr, b'1234')
i2c.readfrom(addr, 4)
Basic WiFi configuration:
import network
sta_if = network.WLAN(network.STA_IF); sta_if.active(True)
sta_if.scan() # Scan for available access points
sta_if.connect("<AP_name>", "<password>") # Connect to an AP
sta_if.isconnected() # Check for successful connection
Control commands:
CTRL-A -- on a blank line, enter raw REPL mode
CTRL-B -- on a blank line, enter normal REPL mode
CTRL-C -- interrupt a running program
CTRL-D -- on a blank line, do a soft reset of the board
CTRL-E -- on a blank line, enter paste mode
For further help on a specific object, type help(obj)
For a list of available modules, type help('modules')
>>>
Il renvoie également print ()
.
>>> print("hello")
hello
La commande screen
se termine par y
car elle vous invite à confirmer la fin avec ctrl + a
+ k
.
L'écriture de code en REPL est difficile, je vais donc permettre de transférer le fichier de code source. Tout d'abord, installez les outils.
$ pip install adafruit-ampy
Vérifiez les fichiers transférés.
$ ampy -p /dev/tty.SLAB_USBtoUART ls
/boot.py
Vous pouvez voir que seul boot.py
est transféré.
Je vérifierai également le contenu.
$ $ ampy -p /dev/tty.SLAB_USBtoUART get /boot.py
# This file is executed on every boot (including wake-boot from deepsleep)
#import esp
#esp.osdebug(None)
#import webrepl
#webrepl.start()
Vous pouvez voir que toutes les lignes sont commentées et que ce qui est écrit dans boot.py
n'est exécuté que la première fois lorsque la carte est réinitialisée.
Après avoir exécuté boot.py
, main.py
sera exécuté en tant que processus principal (s'il existe). Transférez le code suivant en tant que main.py
et essayez L-Chika.
import machine
import time
pin13 = machine.Pin(13, machine.Pin.OUT)
while True:
pin13.on()
time.sleep_ms(500)
pin13.off()
time.sleep_ms(500)
Utilisez la commande suivante pour transférer.
$ ampy -p /dev/tty.SLAB_USBtoUART put main.py
Si la LED connectée à la broche D13 s'allume à des intervalles de 500 ms, cela réussit.
Quand j'ai découvert MicroPython pour la première fois, il me semblait que le seuil était élevé, comme la nécessité de réécrire le firmware, mais quand je l'ai essayé, bien qu'il y ait certains aspects de l'utilisation d'outils auxquels je n'étais pas habitué, ce n'était pas si difficile et j'ai réalisé le transfert et l'exécution du code Python. C'est fait. Si vous êtes familier avec Python, utiliser ESP32 avec MicroPython est une jolie option car une fois que vous avez effectué cette procédure, tout ce que vous avez à faire est de transférer le code source. Je ne l'ai pas fait cette fois, mais il semble que vous puissiez facilement vous connecter au point d'accès Wifi en utilisant la fonction de communication d'ESP32 comme suit, de sorte que vos rêves s'étendent.
import network
sta_if = network.WLAN(network.STA_IF); sta_if.active(True)
sta_if.scan() # Scan for available access points
sta_if.connect("<AP_name>", "<password>") # Connect to an AP
sta_if.isconnected() # Check for successful connection
Et si vous faites quelque chose d'intéressant, je pense que vous devriez certainement l'annoncer sur IoTLT.
Au fait, comme je l'ai écrit au début, si vous pouvez attendre jusqu'à ce qu'il arrive, vous pouvez jouer autant pour 436 yens. N'est-ce pas le moins que l'on puisse dire?
Demain, c'est [Introduction à Amazon Personalize avec le SDK Python] de @ TsuMakoto (https://qiita.com/TsuMakoto/items/a25412c8d2d09a7aa0dd).
Recommended Posts