ESP32のMicroPythonのインストール方法
2020/2/6
ESP32 MicroPython Install
ESP32 MicroPython Install
概要
「ESP32-DevKitC ESP-WROOM-32開発ボード(ESP32)」にMicroPythonのfirewareを書き込む方法について述べる。 ここでは、linux環境でのインストール方法について説明する。
準備
ツールをインストール前に環境整備として以下を設定する:
(1)esp-open-sdkのインストール
firewareの書き込みだけでは、sdkは不要だが、今後のことを考えてsdkをインストールする。
sudo apt-get install make unrar-free autoconf automake libtool gcc g++ gperf flex bison texinfo gawk ncurses-dev libexpat-dev python-dev python python-serial sed git unzip bash help2man wget bzip2 libtool-bin
mkdir mp
cd mp
git clone --recursive https://github.com/pfalcon/esp-open-sdk.git
cd esp-open-sdk
make
# 30分以上、時間がかかるので、ひたすら、待つ。
# sdkのディレクトリにパスを通す
export PATH=~/mp/esp-open-sdk/xtensa-lx106-elf/bin:$PATH
(2)ampyのインストール
AMPY_PORTは、自分の環境に合わせる。
pip install adafruit-ampy
export AMPY_PORT=/dev/ttyUSB0
export AMPY_BAUD=115200
(3)picocomのインストール
sudo apt-get install picocom
以上のうち、exportしているものは、.bashrcに登録することを勧める。
firewareのダウンロード&書き込み
mkdir esp32
cd esp32
wget https://micropython.org/resources/firmware/esp32-idf3-20200117-v1.12-68-g3032ae115.bin
# ボードをホストPCに接続しておく
# flashを消去する
esptool.py --chip esp32 --port /dev/ttyUSB0 erase_flash
# 出力ログ例
esptool.py v2.8
Serial port /dev/ttyUSB0
Connecting....
Chip is ESP32D0WDQ6 (revision 0)
Features: WiFi, BT, Dual Core, Coding Scheme None
Crystal is 40MHz
MAC: 30:ae:a4:03:88:a8
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 2.1s
Hard resetting via RTS pin...
# firmwareを書き込む
esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 460800 write_flash -z 0x1000 esp32-idf3-20200117-v1.12-68-g3032ae115.bin
# 出力ログ例
esptool.py v2.8
Serial port /dev/ttyUSB0
Connecting.....
Chip is ESP32D0WDQ6 (revision 0)
Features: WiFi, BT, Dual Core, Coding Scheme None
Crystal is 40MHz
MAC: 30:ae:a4:03:88:a8
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 1433568 bytes to 912834...
Wrote 1433568 bytes (912834 compressed) at 0x00001000 in 22.6 seconds (effective 507.4 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
動作確認
(1)簡単な確認
picocom /dev/ttyUSB0 -b115200
ログ出力:
>>> list(5 * x + y for x in range(10) for y in [4, 2, 1])
[4, 2, 1, 9, 7, 6, 14, 12, 11, 19, 17, 16, 24, 22, 21, 29, 27, 26, 34, 32, 31, 39, 37, 36, 44, 42, 41, 49, 47, 46]
>>> Ctrl-D
>>>
MPY: soft reboot
MicroPython v1.12-68-g3032ae115 on 2020-01-17; ESP32 module with ESP32
Type "help()" for more information.
>>>
# 内蔵モジュールの表示
>>> help('modules')
__main__ gc uctypes urequests
_boot inisetup uerrno uselect
_onewire machine uhashlib usocket
_thread math uhashlib ussl
_webrepl micropython uheapq ustruct
apa106 neopixel uio utime
btree network ujson utimeq
builtins ntptime umqtt/robust uwebsocket
cmath onewire umqtt/simple uzlib
dht sys uos webrepl
ds18x20 uarray upip webrepl_setup
esp ubinascii upip_utarfile websocket_helper
esp32 ubluetooth upysh
flashbdev ucollections urandom
framebuf ucryptolib ure
Plus any modules on the filesystem
>>>
MicroPythonから抜けるには、強引なやり方になるが、USBケーブルをいったん抜いて電源を切る。
(2)プログラムの実行
ampy put ESP32_starwars.py
picocom /dev/ttyUSB0 -b115200
import ESP32_starwars
実際に実行するプログラムは以下になる:
以下の部分は自分のWiFi環境に合わせて変更すること:
WIFI_SSID = "your_ssid"
WIFI_PASSWD = "your_passwd"
ESP32_starwars.py
# NIC setup
import network, socket
WIFI_SSID = "your_ssid"
WIFI_PASSWD = "your_passwd"
def wlan_connect(ssid='SSID', password='PASSWD'):
import network
wlan = network.WLAN(network.STA_IF)
if not wlan.active() or not wlan.isconnected():
wlan.active(True)
print('connecting to:', ssid)
wlan.connect(ssid, password)
while not wlan.isconnected():
pass
wlan_connect(ssid=WIFI_SSID, password=WIFI_PASSWD)
#==========================================
# Star Wars ASCII Art (python3)
import socket
addr_info = socket.getaddrinfo("towel.blinkenlights.nl",23)
addr = addr_info[0][-1]
s = socket.socket()
s.connect(addr)
while True:
data = s.recv(500)
print(str(data, 'utf8'), end='')
#=============================================
starwarsのASCII_Artのアニメが表示されればOKとなる。 printを使用している都合上、コンソールで実行する必要がある。途中でエラーになるようだがWiFi動作の確認には使える。
ボードにプログラムを書き込む(自動起動になる)
書き込みたいプログラムをxxxx.pyとすると 以下のようにする:
ampy put xxxx.py /main.py
# 実行したいプログラムをmain.pyとして書き込む
# ボードの[reset]を押して起動する
#以下で書き込んであるプログラムが確認できる
ampy ls
/boot.py
/main.py
コンソールで実行したい場合
実行したいプログラムをESP32_starwars.pyとすると 以下のようにする:
ampy put ESP32_starwars.py
picocom /dev/ttyUSB0 -b115200
import ESP32_starwars
参考情報
ESP32-DevKitC ESP-WROOM-32開発ボード
MicroPython - Quick reference for the ESP32
Streaming Data from ESP32 using MicroPython and MQTT
ampyを用いたMicroPythonのファイル操作とプログラム実行
以上
| 固定リンク
「linux」カテゴリの記事
- platfomioを使ってnaitive(linux/windows)のプログラムをビルドする方法(2021.03.10)
- micro:bit Yotta開発ツール(linux版)(2021.01.09)
- PlatformIOをRaspberryPi4で動かしてみる(実験)(2020.10.20)
- headless RaspberryPiインストール方法(v2)(2020.10.20)
- wio-terminalのファームウェア・アップデートについて(linux版)(2020.10.15)
「MicroPython」カテゴリの記事
- microbit-v2にMicropythonをインストールする(2021.05.06)
- PicoボードのMicroPythonをVS_CodeのextensionのPico-Goでプログラミングする(2021.02.10)
- MicroPython/CircuitPython Performance Test(2021.02.07)
- PicoボードにMicropython/CircuitPythonをインストールする(2021.02.03)
- MicroPython(F767ZI) Network Samples(2021.01.03)
この記事へのコメントは終了しました。
コメント