今日とりあえげるのは 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 とあまり変わりません。私はAliexpressの SinoVoip Co.,Limited Banana PI ストアで送料込み 2,317円 で購入しました。「WiFi Display」と表記のある謎の箱が送られてきたのですが、中にはちゃんと bpi:bit が入っていました。
開発環境は 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 と同じです。
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 あたりでしょう。これらシリアルポートへのアクセス権のあるアカウントで実行してください。
正常終了したら、裏面のリセットボタンを押します。リセットボタンの位置も micro:bit と同様です。
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 を使った操作について説明します。