ESP32にMicroPythonをインストール

esp32-micropython.png

三連休の「やってみた」をもう一つ。
(といっても自分用に使うことができた休日は今日だけなのですが)

これまた入手はしたけれど、使い道が無くて遊んでいた、ESP32-DevKit Cです。

ESP32用MicroPythonをビルドしてインストールするまでを懇切丁寧に解説した以下の記事を見つけ、その通りにやってみました。
こちらも大変親切な解説記事になっています。

ESP32でmicropython – いっぺーちゃんの いろいろやってみよ~

以前インストールしたDebianではうまく動かなかったので、Ubuntuをインストールするところから始めましたが、それでも3時間くらいで片付きました。

注意点を挙げると、ESP32用MicroPythonのベースディレクトリは現時点では

“micropython-esp32/esp32”

ではなく

“micropython-esp32/ports/esp32”

になっています。
また、micropython-esp32のほかに、micropython-libのリポジトリが必要です(シンボリックリンクが張られているため)。

git clone https://github.com/micropython/micropython-lib.git –recursive

MicroPythonのブートメッセージを貼り付けておきます。

ets Jun 8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
ets Jun 8 2016 00:22:57

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0010,len:4
load:0x3fff0014,len:4248
load:0x40078000,len:0
ho 12 tail 0 room 4
load:0x40078000,len:10648
entry 0x4007a56c
I (1605) cpu_start: Pro cpu up.
I (1605) cpu_start: Single core mode
I (1608) heap_init: Initializing. RAM available for dynamic allocation:
I (1643) heap_init: At 3FFAE2A0 len 00001D60 (7 KiB): DRAM
I (1700) heap_init: At 3FFD4150 len 0000BEB0 (47 KiB): DRAM
I (1757) heap_init: At 3FFE0440 len 00003BC0 (14 KiB): D/IRAM
I (1817) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (1877) heap_init: At 4008F3A8 len 00010C58 (67 KiB): IRAM
I (1935) cpu_start: Pro cpu start user code
I (2095) cpu_start: Starting scheduler on PRO CPU.
OSError: [Errno 2] ENOENT
MicroPython v1.9.2-272-g0d183d7 on 2017-09-18; ESP32 module with ESP32
Type “help()” for more information.
>>>

ESP32のSRAMは520KBのはずですが、ブートメッセージにあるIRAM、DRAMというのは何なのか、調べてみると以下のページに情報がありました。
IRAMはInstruction RAM、DRAMはData RAMだそうです。

In total, there’s 516K of memory. Of these:
– 32K is used for flash cache on CPU0
– If enabled, 32K is used for flash cache on CPU1
– 8K+16K are used by the ROM
– If BT is enabled, 64K is used by BT ROM

ESP32 Free Heap – Page 3 – ESP32 Forum

ESP8266よりは余裕がありますが、それでも画像を扱うにはちょっと苦しいメモリ容量かもしれません。

ちなみに、私は20年くらい前からRubyを使っており、Pythonは使ってこなかったのですが、最近は機械学習の影響もあってか、すっかりPythonが広まってきたように思います。
また、AdafruitがCircuitPythonを採用したのも最近気になった動きです。

Make: Japan | AdafruitがCircuitPythonへ移行

今はまだ非力ですが、今後はマイコンの世界も32bit MCU + Pythonが主流になるかもしれません。

コメント