Electronics

2017.11.30

Trinket M0ではじめるCircuitPython

Text by Takumi Funada

trinket

いま一番「はじめやすい」マイコンボードはどれでしょう? やっぱりArduino Uno? micro:bitに勢いがある? やりたいことがたくさんあるならRaspberry Pi Zeroかも?

はじめやすさの基準を、必要な事前準備と予備知識の少なさに置くならば、上記に加えてCircuitPythonボードという新しい選択肢もあるんじゃないだろうか……というのがこの記事の論旨です。

呼び名についてまず整理しておくと、CircuitPythonという名称のボードがあるのではなく、MicroPythonのAdafruitバージョンであるCircuitPythonがあらかじめインストールされているマイコンボードを指しています。現在すでに何種類かあって、今後さらに増えていくはずですが、この記事では現時点で最小かつ最安値の“Trinket M0”を例に、そのはじめやすさをまとめていきましょう。

trinket led

Trinket M0を使う前に必要な準備はマイクロUSBケーブルとパソコンを1台用意すること。パソコンは何でもOK。テキストエディタも必要ですが、こちらもOS付属のものでとりあえずOK。特別なものは不要ということですね。

Trinket M0をUSBケーブルでパソコンにつなぐと、USBドライブ(マスストレージデバイス)として現れます。どこに現れるかは使用環境によって違いますが、ここではデスクトップにドライブのアイコンとなって現れるとしましょう。

cpicon

このアイコンをダブルクリックして開くと、ファイルがいくつか表示されます。そのなかのひとつ、main.pyがこのボードの起動時に実行されるPythonスクリプト。Trinket M0の初期状態では、フルカラーLEDの明滅とD3ピンを指で触ったときに別のLEDが点灯するスクリプトがあらかじめ書き込まれています。これは普通のテキストファイルですから、テキストエディタで開くことができ、編集も可能です。ためしにちょっと変更して上書き保存すると、すぐさま変更後のスクリプトが実行されます。もし、スクリプトにエラーがあると、LEDがチカチカして異常を知らせます。

cpflist

自分で作成したmain.pyファイルをドライブにドラッグアンドドロップしても同じです。つまり、USBメモリのように見えるTrinket M0にPythonスクリプトを書き込むだけで実行できるということですね。これなら本当に準備不要で使い始めることができます。

ただし、CircuitPythonの開発は現在とても活発に進められているため、実際に新しいボードを購入したときはファームウェアの更新が必要です。この作業も簡単。基板上のリセットスイッチをカチカチっとダブルクリック風に2回叩くとファームウェアの書き換えが可能なブートローダーモードに移行して、ドライブアイコンが変化します(ドライブの扱いに対する警告は無視するしかなさそう)。

cpbticon

このアイコンにファームウェアのファイルをドラッグアンドドロップするだけで更新開始。終わると、アイコンが元に戻ります。

普通のUSBドライブを使う感覚で扱えるのは、Pythonスクリプトだけではありません。CircuitPython 2.0からマイコンのメモリをファイルシステムとして扱えるようになりました。この機能により、たとえば、CSVファイルを生成してセンサの値を保存するといった処理も容易に書けます。当然そのCSVファイルもパソコンからは普通のファイルとして見えるので、マイコンとパソコンの間の通信処理を考えなくてもデータの受け渡しができるというわけ(Pythonスクリプトによるファイル更新がリアルタイムにパソコン側から見えたりはしないみたいです)。

main.pyを書き込む方法だけでなく、USBシリアル経由で行う対話的なプログラミング(REPL)も可能です。この方法で使う場合はMicroPythonとの違いをあまり感じられません。今のところ同じ言語として読み書きできると思います。

さてここで、なぜこのタイミングでCircuitPythonとTrinket M0を取り上げることにしたかを書いておきます。この組み合わせが特にはじめやすいと考える最大の理由は価格。Adafruitから購入すると1個8.95ドル。買いやすさを意識した値付けだと思います。でも、個人輸入したら送料のほうがずっと高いですね。11月下旬にスイッチサイエンスが取り扱いを始め、1,447円で買えるようになったことで、これでようやく日本の入門者にも勧められる、と判断した次第。

今後、他のCircuitPython対応ボードも入手しやすくなってくるでしょう。CircuitPython自体も現在開発中のバージョン3.0で上位のマイコンに対応し、ドキュメントが改善されるなど、環境整備が一層進むようです。そろそろマイコンプログラミングをはじめたい人の選択肢に加えられていい頃だと思います。