micropython
bpi

bpi:bit の MicroPython その1

今日とりあえげるのは bpi:bit です。

ラズパイもどきとかArduinoもどきとか、いりいろな「もどき」ものを出しているBanana Piですが、bpi:bit はその名からも想像つくように BBC micro:bit もどきです。

bpi:bit のポータル的な Wiki サイトはのここにあります。

日本で技適もとれている ESP-WROOM-32 を採用していて、とうぜん Wi-Fi はサポート。下方にある端子は micro:bit と互換なので、micro:bit 用の周辺機器がいろいろ流用できます。LED の代わりに NeoPixel 25個ついていて、CPU温度ではない温度センサー、疑似でない光センサー、MPU9250、圧電ブザーがついていて、お値段は micro:bit とあまり変わりません。私はAliexpressSinoVoip Co.,Limited Banana PI ストアで送料込み 2,317円 で購入しました。「WiFi Display」と表記のある謎の箱が送られてきたのですが、中にはちゃんと bpi:bit が入っていました。

IMG_4680.jpg

開発環境は webduino というブロックプログラミング環境や Arduino IDE とかあるのですが、11月に MicroPython に対応したとのことで、積みボード化していた bpi:bit をひっぱりだしてきました。

bpi:bit MicroPython のドキュメントはここにあります。今のところは中国語の説明しかないのですが、chrome の翻訳機能使えば、なんとか内容の雰囲気はわかります。このドキュメントを読んで動かせたところまで書きます。

ドライバのインストール

ホストPCから bpi:bit に MicroPython ファームウェアを焼くには UART シリアル通信できなきゃなりません。

bpi:bit に載っている USB-シリアル変換チップは CH341 というもののようです。このチップを積んだボードを
使うのは初めてだったので、ホストOSにドライバをインストールする必要がありました。

Windows ではドキュメントどおりここからダウンロードしてインストールすればよいのですが、私が普段プライベートで使っている macOS 用の説明がありません。macOS 用ドライバを探したところここにありましたので、これをダウンロードして使いました。Linux 版もあるようですが試していません。インストール後に再起動が必要です。

ファームウェアのインストール

bpi:bit の MicroPython ファームウェアはここにあります。なにかいろいろあって分かりにくいでしょうが、ファームウェアは firmware.bin です。Windows の場合はファームウェアを焼くために以下もダウンロードして、firmware.bin と同じフォルダに置いておきましょう。

  • AutoErase.exe
  • AutoFlash.exe

mac/Linuxの場合は esptool.py をインストールしてください。python 3 が使える環境であれば以下のようにします。

$ pip install esptool

ホストPCと bpi:bit を以下の写真のように USB ケーブルで繋ぎます(bpi:bit 側は micro USB)。micro:bit と同じです。

IMG_4779.jpg

Windows の場合はダウンロードした以下のコマンド順番に実行します。

  • AutoErase.exe
  • AutoFlash.exe

macOS/Linux の場合は esptool を使って以下のようにします。

$ esptool.py --chip esp32 --port <シリアルポート> --baud 115200 erase_flash
$ esptool.py --chip esp32 --port <シリアルポート> --baud 115200 write_flash -z --flash_mode dio --flash_freq 40m 0x1000 firmware.bin

<シリアルポート> のところ、私の macOS では /dev/tty.wchusbserialfa1440 でした。Linux だとたぶん /dev/USB0 あたりでしょう。これらシリアルポートへのアクセス権のあるアカウントで実行してくdさい。

正常終了したら、裏面のリセットボタンを押します。リセットボタンの位置も micro:bit と同様です。

IMG_4780.jpg

TeraTerm や screen などターミナルアプリでシリアルポートにアクセスすると、以下のように MicroPython の REPL にアクセスできます。これを書いている時点では 2018-12-07 にビルドされたもので、本家 MicroPython の v1.9.4 がベースになっていることがわかります。

I (191) wifi: Init data frame dynamic rx buffer num: 64
I (191) wifi: Init management frame dynamic rx buffer num: 64
I (201) wifi: Init static rx buffer size: 1600
I (201) wifi: Init static rx buffer num: 10
I (211) wifi: Init dynamic rx buffer num: 0
I (261) phy: phy_version: 3960, 5211945, Jul 18 2018, 10:40:07, 0, 0
I (271) wifi: mode : sta (30:ae:a4:8f:24:38)
I (271) wifi: STA_START
Press "A" to enter the smartconfig mode while the led is rolling
Started wifi in normal mode
OSError: [Errno 2] ENOENT
MicroPython v1.9.4-817-g72effc642-dirty on 2018-12-07; ESP32 module with ESP32
Type "help()" for more information.
>>> I (6351) wifi: n:11 0, o:1 0, ap:255 255, sta:11 0, prof:1
I (6911) wifi: state: init -> auth (b0)
I (6921) wifi: state: auth -> assoc (0)
I (6921) wifi: state: assoc -> run (10)
I (6961) wifi: connected with aterm-76af2c-g, channel 11
I (6961) wifi: pm start, type: 1

I (6961) network: CONNECTED
I (8191) event: sta ip: 192.168.0.8, mask: 255.255.255.0, gw: 192.168.0.1
I (8191) network: GOT_IP

とりあえず、本日はここまで。

次回、mpfshell を使った操作について説明します。