ESP-WROOM-02でMicroPythonではESP-WROOM-02にmicropythonのインストールまでを行いましたが、このままだとREPLで対話的に使うしかないです。1M以上のメモリがあればファイルシステムが使えるのですが、ファイルシステムにファイルをコピーするのも面倒です。そこで、mpfshellという簡単なシェルを導入してみました。
mpfshell
mpfshellはローカルのMacからftpライクにファイルのput、getや簡単なファイルアクセスができるツールです。
準備
mpfshellのダウンロード
mpfshellをhttps://github.com/wendlers/mpfshellよりダウンロードします。
関連ツールのインストール
mpfshellのドキュメントには、
$ sudo pip install pyserial
$ sudo pip install colorama
$ sudo pip install websocket_client
以上の3つをインストールするように書いてありますが、私のmacにはpyserialがインストールされていましたので、省略しました。
インストールされているパッケージは、以下で確認できます。
$ sudo pip list
mpfshellのインストール
ダウンロードしたmpfshellの中にあるsetup.pyを実行し、mpfshellをインストールします。
$ sudo python setup.py install
テスト
mpfshellを起動し、ボードにアクセスしてみます。
'open tty.usbserial-xxxx'のxxxxは実際のUSBシリアルのデバイス名です。
openした後にlsすると、ボードのファイルシステムの一覧が見れます。
デフォルトではboot.pyがインストールされています。
$ mpfshell
** Micropython File Shell v0.7.6, sw@kaltpost.de **
-- Running on Python 2.7 using PySerial 3.1.1 --
mpfs [/]> open tty.usbserial-xxxx
Connected to esp8266
mpfs [/]> ls
Remote files in '/':
boot.py
以上でインストールとテストは終了です。
使い方
使い方はftpと似ています。
ファイル取得
mpfs [/]> get boot.py
boot.pyファイルをMacのカレントディレクトリにコピーします。
ファイル送信
mpfs [/]> put main.py
main.pyをMacのカレントディレクトリからコピーします。
ちなみに、main.pyというファイルがあると、起動後に自動的に実行するようになってます。
ファイルの表示
mpfs [/]> cat boot.py
# This file is executed on every boot (including wake-boot from deepsleep)
#import esp
#esp.osdebug(None)
import gc
import webrepl
webrepl.start()
gc.collect()
main.pyの実行
前回のLチカのスクリプトをmain.pyに書いて、LEDを点灯させます。
以下のファイルをMacで作成しておきます。
$ cat main.py
import machine
import time
pin = machine.Pin(4, machine.Pin.OUT)
pin.high()
time.sleep(3)
pin.low()
mpfshellでファイルを送信し、mpfshellからreplを起動します。
mpfs [/]> put main.py
mpfs [/]> cat main.py
import machine
import time
pin = machine.Pin(4, machine.Pin.OUT)
pin.high()
time.sleep(3)
pin.low()
mpfs [/]> repl
*** Exit REPL with Ctrl+] ***
>
MicroPython v1.8.4-10-gbc28ac8 on 2016-09-09; ESP module with ESP8266
Type "help()" for more information.
>>>
ここで、Ctrlーdを入力すると、ソフトリブートし、main.pyが実行されます。
うまくいけば、LEDが3秒間点灯するはずです。
replからmpfshellに戻るには、Ctrl+]を入力します。
ボードをリセットすると、同様にLEDが3秒点灯します。