MicroPython on ESP32 の はじめ

にゃー、ねこです。違います。

MicroPythonをESP32で動かすなどしました。今更ですね。

準備

今回以下の環境でしばらくやっていくことを決意しました。(2018/10/13現在)

  • WSL (Windows Subsystem for Linux)上で動かす、今回はUbuntu 16.04LTS

  • ESP32-DevkitCを使う(なんでもいい)

  • screenでESP32にアクセスする

WSLはUbuntuを適当にMicrosoft Storeからインストールしました。その他お作法がいろいろ必要ですが割愛。 別にWSLである必要性はないです。
ESP32-DevkitCは以前秋月電子で買ったので今売ってるのとはちょっと違うかもしれません。知らんけど。

1. MicroPythonのファームを入れる

ファームを入れるために以下の環境が必要です。

  • Python 2.7 or 3.6 (もとからあった)

  • pipのインストール(なかった)

  • esptoolのインストール

pipは以下のコマンドでインストールしました。

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install python3-pip

ちなみにapt updateとかをやらないと無駄につまります。最初にやっておきましょう。

次にpipでesptoolをインストールします。このツールでESP32のファームとかをいじります。

$ pip3 --version
$ pip3 install esptool

pip3にしたのはなんとなくです。でもpipでやったときパス通らなかったんだよなぁ…

次にファームをダウンロードします。latestでいいです。

micropython.org

f:id:drmus0715:20181013180124j:plain

ESP32をつないだらWindows10のデバイスマネージャーでポートを確認します。

f:id:drmus0715:20181013180644j:plain

WSLからシリアルポートへのアクセスも可能です。が、うまくいかないときもあります。 私の場合だと、一旦Windowsでシリアルポートを開いてからじゃないとできませんでした。試行錯誤してください。

WSL上では/dev/ttyS3(COM3の場合)のようにシリアルポートは見えています。

ファームをインストールします。

$ esptool.py --port /dev/ttyS3 --baud 115200 chip_id
$ esptool.py --port /dev/ttyS3 --baud 460800 write_flash --flash_mode dio --flash_size=detect 0x1000 [ダウンロードしたファイルのパス]

1番目のコマンドでchip idを取得できればアクセスできてます。2番目のコマンドでファームインストールです。各自の環境にそって変えることになります。

screenコマンドでアクセスしてみます。

$ sudo screen /dev/ttyS3 115200

…できませんでした。teratermで開いて繋いで切断してからやってみましょう。 f:id:drmus0715:20181013182208j:plain

ENボタン押してリセットかけるとズラッ出てきます。やったね。

2. 使う

  • Lチカ
MicroPython v1.9.4-631-g338635ccc on 2018-10-08; ESP32 module with ESP32
Type "help()" for more information.
>>> from machine import Pin
>>> p = Pin(12, Pin.OUT)
>>> p.value(1)
>>> p.value(0)
>>>

あとはまだやってません。 Wifiライブラリとかsocketライブラリが使えるみたいなのでなんかできたらいいなと思います。

いじょい