最近始めたTwitterで見かけたCircutPythonというキーワードを調べていくと、その正体はどうやら USBマスストレージ+MicroPython であることがわかりました。PythonのスクリプトをUSBマスストレージに見えているハードウェアデバイスに放り込んでやると、そのまま実行できるというお手軽この上ない環境のようです。エディタとしてGeanyを使えば、更にお手軽になる予感がします。
今回は、ハードウェアとしてはadafruitのCircuit Playgound Expressを購入してみました。
早速購入したCircuit Playgound ExpressをUSBでPCに接続すると、デモ動作をします。
ブザー音を出しながら10個のフルカラーLEDが順に点灯、LinuxMint上で
$ screen /dev/ttyACM0 115200
とすると、シリアルコンソールにCapsenseセンサ、スライドスイッチ、明るさセンサ、加速度センサ、温度センサの各状態を出力しているのが見えます。プッシュスイッチを押すとその状態も出力されます。スライドスイッチを左にスライドすると出力が変わるとともにブザー音がなくなります。
この状態ではCircuit Pythonは使えないので、CircuitPythonをインストールします。
まず、Circuit Playgound Express用のCircuitPythonをguthubからダウンロードします。現時点では CircuitPython 3.1.2が最新のようです。ディレクトリの中からCircuit Playground Express用のadafruit-circuitpython-circuitplayground_express-3.1.2.uf2をダウンロードします。ダウンロードできたら、これをインストールします。
Circuit Playgound Expressの中央のリセットスイッチを押すと、すべてのフルカラーLEDが一瞬赤になった後、緑になり、USBマスストレージ(ボリューム名CPLAYBOOT)として認識されます。このモードがブートローダモードと呼ぶようです。(なお、Circuit Playgound Expressの場合は、購入直後はリセットスイッチ1回でブートローダモードに入れますが、通常はリセットスイッチ2回連打する必要があるようで、そのタイミングが結構難しいようです。公式サイトでは何度が繰り返してやってみろ、と書いてあります。)
マスストレージとして認識されているCPLAYBOOTに先ほどダウンロードしたadafruit-circuitpython-circuitplayground_express-3.1.2.uf2をドラッグ&ドロップで書き込むと、USBコネクタ脇の小さな赤いLEDが高速で点滅した後、フルカラーLEDが一つだけ一瞬白色で点灯、その後、一旦CPLAYBOOTというボリューム名のマスストレージは閉じて、今度はCIRCUITPYというボリューム名のマスストレージが開きます。これがCircuitPythonとして扱われるドライブのようです。
公式サイトでは、Windows/MacOS/Linux用にMu Editorというのをインストールするよう勧めていますので、試してみます。
$ sudo apt-get install python3 $ sudo apt-get install python3-pip $ sudo apt-get install python3-setuptools $ pip3 install mu-editor
公式サイトのままだと、Setuptoolsがないというエラーが出てしまいますので、先に python3-setuptools をインストールしておきます。また、上記手順のあと、コマンドラインから
$ mu-editor
でmu-editorを起動できるような記述がありますが、一旦再起動(たぶん、ログアウトして再ログインでOK)しないと起動しませんでした。
起動すると、モードの選択が出てきます。
ここでは、一番上の「Adafruit CircuitPython」を選択して、OKをクリックします。
クリックするとコード編集画面に変わります。
公式ページからサンプルコードをコピペします。
これをCIRCUITPYの下にcode.pyという名前で保存すると、LEDが点滅するはずです・・・・・が、点滅しません。別のエディタで見てみると、ファイル自体は存在しているようです。試しに、リセットしてみると・・・・現れたドライブにはファイル名は存在するものの、ファイル自体は空っぽになっていました。何度やっても同じです。
試しに、USBケーブルを抜いて電源を再投入してみると、以降は期待した動作をするようになりました。sleepのパラメータを変えて保存すると直ちに、点滅周期が変わります。