Dieser Artikel ist der zweite Tag von Python Part 2 Adventskalender 2019. Der erste Tag war @ ssh-22s erweiterter String-Ersatz mit re.sub.
Mit der Geburt von Arduino und Raspberry Pi wird das Ökosystem im IoT-Bereich schnell aufgebaut. Obwohl Raspberry Pi in Python implementiert werden kann, ist Arduino für eine kleine elektronische Steuerung überwiegend einfacher zu verwenden. Einige Benutzer möchten jedoch möglicherweise in der bekannten Python-Sprache anstelle der Arduino-Sprache (wie C / C ++) schreiben. In diesem Artikel möchte ich einen Leitfaden schreiben, mit dem Sie die Entwicklung mit MicroPython, einem eingebetteten Python, auch in finanzieller Hinsicht problemlos starten können.
--Arduino …… nicht ESP32-Entwicklungsboard
Die Arbeitsumgebung ist macOS + Python3.
In der jüngsten Arduino-Region kann dieselbe Entwicklungsumgebung wie Arduino verwendet werden, und ESP32, das Wifi / Bluetooth verwenden kann, ist zum Mainstream geworden (es ist nicht genau Arduino, aber es kann fast auf die gleiche Weise verwendet werden). ESP32-DevKit C und kompatible Produkte, die im Allgemeinen anspruchsvoller als das Standard-Arduion UNO sind, aber billiger, werden häufig verwendet.
Wenn Sie es eilig haben, erhalten Sie Akizuki Denshi ESP32-DevKitC für 1.480 Yen oder Switch Science [ESPr Developer 32](https: //www.switch) für 2.200 Yen -science.com/catalog/3210/) Beschaffen wir uns.
Wenn Sie es für ungefähr 1.500 Yen kaufen können, können Sie es in Japan kaufen, aber wenn Sie sich nicht beeilen, wird es 1/3 des Preises sein, weil elektronische Arbeit Teile bricht und es mühsam ist, es wiederzuverwenden, wenn Sie es verwenden, um etwas herzustellen. Es wird empfohlen, drei bei zu kaufen. Für diejenigen, die nicht mit Kreditkarte per Versandhandel in Übersee bezahlen möchten, gibt es andere Websites wie Banggood, auf denen Paypal verwendet werden kann. Da der Preisunterschied beim Inlandskauf jedoch gering ist, ist es möglicherweise besser, ihn in Japan zu kaufen. Trotzdem ist es weniger als die Hälfte des Preises des Raspberry Pi. (Ergänzung) Wenn Sie darüber nachdenken, können Sie es günstig bei Amazon kaufen. 2 Stück für 1.680 Yen, also denke ich, dass das in Ordnung ist. Sanhayatos neues Steckbrett SAD-101ESP32-DevKitC hat einen etwas größeren Abstand zwischen den Stiftreihen, und ein billig verkauftes Steckbrett mit 5 Löchern auf jeder Seite hat keine Einstecklöcher. Die New Breadboard-Serie ist einfach zu bedienen, da sie auf jeder Seite 6 Löcher hat. Dieses Mal habe ich den einfachsten SAD-101 vorbereitet. Es ist ein kleines hochwertiges Steckbrett, also 518 Yen bei Amazon.
Danach richten wir MicroPython auf ESP32 gemäß [ins Japanische übersetzte Dokumente] ein (https://micropython-docs-ja.readthedocs.io/ja/latest/esp32/tutorial/intro.html).
Normalerweise wird beim Kauf von ESP32-DevKitC bereits eine Arduino-kompatible Firmware namens Arduino Core geschrieben. Da es so ist, kann es nur in der Arduino-Sprache implementiert werden. Schreiben Sie daher die MicroPython-Firmware neu.
In MicroPython für ESP32 müssen Sie entweder "Farm, die Wifi, aber nicht Bluetooth verwenden kann" oder "Farm, die Bluetooth verwenden kann, aber Wifi nicht verwenden kann" auswählen. Dieses Mal werde ich einen stabilen Build von "einer Farm, die Wifi nutzen kann" wählen.
ESP32-Installieren Sie den Silicon Labs-Treiber für eine USB-Verbindung zu DevKitC.
CP210x USB --UART Bridge VCP-Treiber
Diesmal habe ich den Treiber für macOS installiert. Wenn Sie den ESP32 über USB anschließen, sollte der ESP32 wahrscheinlich in / dev / cu.SLAB_USBtoUART
angezeigt werden.
$ pip install esptool
$ esptool.py --port /dev/cu.SLAB_USBtoUART erase_flash
Wenn Sie es ausführen, erhalten Sie das folgende Ergebnis.
$ 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
Wenn Sie es ausführen, erhalten Sie das folgende Ergebnis.
$ 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...
Sie haben jetzt MicroPython eingerichtet. Ich werde es sofort mit Python ausführen.
Versuchen Sie zunächst, auf die REPL-Eingabeaufforderung zuzugreifen.
$ screen /dev/tty.SLAB_USBtoUART 115200
Wenn Sie help () [enter]
eingeben und die Ausgabe wie folgt lautet, ist sie erfolgreich.
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')
>>>
Es gibt auch "print ()" zurück.
>>> print("hello")
hello
Der Befehl "screen" endet mit "y", da Sie aufgefordert werden, das Ende mit "Strg + a" + "k" zu bestätigen.
Das Schreiben von Code in REPL ist schwierig, daher werde ich die Übertragung der Quellcodedatei ermöglichen. Installieren Sie zuerst die Werkzeuge.
$ pip install adafruit-ampy
Überprüfen Sie die übertragenen Dateien.
$ ampy -p /dev/tty.SLAB_USBtoUART ls
/boot.py
Sie können sehen, dass nur boot.py
übertragen wird.
Ich werde auch den Inhalt überprüfen.
$ $ 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()
Sie können sehen, dass alle Zeilen auskommentiert sind und dass das, was in boot.py
geschrieben ist, nur beim ersten Zurücksetzen der Karte ausgeführt wird.
Nach dem Ausführen von boot.py
wird main.py
als Hauptprozess ausgeführt (falls vorhanden). Übertragen Sie den folgenden Code als main.py
und versuchen Sie es mit 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)
Verwenden Sie zum Übertragen den folgenden Befehl.
$ ampy -p /dev/tty.SLAB_USBtoUART put main.py
Wenn die an den D13-Pin angeschlossene LED in Abständen von 500 ms aufleuchtet, ist dies erfolgreich.
Als ich zum ersten Mal von MicroPython erfuhr, schien der Schwellenwert hoch zu sein, beispielsweise die Notwendigkeit, die Firmware neu zu schreiben. Als ich es jedoch tatsächlich ausprobierte, war es nicht so schwierig, obwohl es einige Aspekte der Verwendung von Tools gab, an die ich nicht gewöhnt war, und ich erkannte die Übertragung und Ausführung von Python-Code. Es ist fertig. Wenn Sie mit Python vertraut sind, ist die Verwendung von ESP32 mit MicroPython eine sehr wichtige Option, da Sie den Quellcode erst übertragen müssen, nachdem Sie dieses Verfahren ausgeführt haben. Diesmal habe ich dies noch nicht getan, aber es scheint, dass Sie mithilfe der Kommunikationsfunktion von ESP32 wie folgt problemlos eine Verbindung zum Wifi-AP herstellen können, sodass sich Ihre Träume erweitern werden.
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
Und wenn Sie etwas Interessantes machen, sollten Sie es auf jeden Fall unter IoTLT bekannt geben.
Übrigens, wie ich am Anfang schrieb, wenn Sie warten können, bis es eintrifft, können Sie so viel für 436 Yen spielen. Ist es nicht das Beste, um es gelinde auszudrücken?
Morgen ist @ TsuMakotos Einführung in Amazon Personalize with Python SDK.
Recommended Posts