Circuit Playground Express をいじったログ
一通り機能を触ったので、紹介記事と、初期セットアップだけ。
経緯
買って試したのはコレ
当初、IoT として一度ブームになったときは、RasberryPi がやたらと人気で、記事は実質それ一色だったのを覚えてる。
ただ、買って弄ってわかったことは、あれは規模の小さい PC であったという事実だ。
それで何が言いたいかって言うと
ハード設計できない人はお呼びでない ということだった。
もともと Web 屋さんで、ハードなんて大学でマイコンにアセンブラ書き込んでLED と高額センサーで信号通信してみた位しかやったことがない。
まして就職して 当時 8 年目位で、今更回路設計しろって言われても無茶振りに近かった…要するにそんな余裕も金もなくて挫折した(汗
(Web屋さん業界じゃ HTML5 と ecmascript や各種フレームワーク打なんだで群雄割拠ヒャッハーしてたり AI たのすぃーとかいってフラフラしてた)
で、しばらく遠のいてたところを、知人にこんな本紹介されて
え?マジで?と調べて驚いた。
Circuit Playground Express とは
平たくいえば、ネットワーク危機こそないけど、ジャイロ、温度、音声、スピーカー、LED、タッチセンサー、赤外線と、コミコミ全盛り回路セットである。
要するに、多くのソフトやさんなプログラマが挫折するだろう箇所を全盛りで用意してくれてるという一品。
コレは軽くチートじゃないんですかね…(汗
開発準備
Bootloader
USB で繋いで、中央のスイッチを押すと USB 認識するので、ブートローダのアップデートを行う。
Mac でやってたので https://learn.adafruit.com/adafruit-circuit-playground-express/updating-the-bootloader こっからダウンロードして更新した。
update-bootloader-circuitplay_m0-vX.XX.X.uf2
を finder にドロップするだけで、中にある INFO_UF2.TXT
の中に記述されるバージョンなどが上がった。
デバイス的にもこの辺を事前サポートしてるのか…ううむ…。
この記事時点では v3.10.0
が最新だった。
CircuitPython
ここから CircuitPython をダウンロード & インストール。
ここでは 5.3.0
の英語版を選択。
ライブラリも Libraries から入手した。
日本語なんてドマイナー言語対応してないのはある意味仕方ないよな(汗
で、ここで気をつけるべきは、全部のライブラリは容量的にはいらないということ…
なので、 Python コード上使用しているものだけ選択して入れる必要があるという点。
ここで全パターンとライブラリ紹介始めると、時間がいくらあっても足らないので省略。
最も単純な LED 点灯
といっても写経だったりするのだが
ここの code.py
がエントリポイントになってるようなので、コレを弄る。
import board import time from digitalio import DigitalInOut, Direction led = DigitalInOut(board.D13) led.direction = Direction.OUTPUT while True: led.value = True time.sleep(0.1) led.value = False time.sleep(0.1)
色々疑問なので、import してるやつを追いかける。
こういう調査がないと応用効かない…
で、公式ドキュメント漁ると発見 https://learn.adafruit.com/welcome-to-circuitpython/creating-and-editing-code コレか。
で、やっぱそうなのかという話で、 board
, time
, digitalio
が 組み込みライブラリ であるそうな。
board
gives you access to the hardware on your board (ボードはボードに存在するハードウェアへのアクセスを提供します) *digitalio
lets you access that hardware as inputs/outputs (digitalio はハードウェアへ Input/Output を提供します)
ナルホド、で、なんで D13
なん?って思ったらあっさりわかった。
あーうんなるほど…既にそこそこ抽象化してるのね(汗
じゃー何がビルトインされてんのさ?って思ったら
https://learn.adafruit.com/adafruit-circuit-playground-express/circuitpython-built-ins https://learn.adafruit.com/adafruit-circuit-playground-express/circuitpython-digital-in-out
ふむふむ。
で、 Circuit Python のライブラリには何あんのさ?って思って調べたら
しかもハードごとに違うってんだからコレは一瞬「うぉっ」となるよね(汗
デバッグ環境を整える
で、これなにかバグった時にデバッグ出力得られないと泣けるので
この辺を利用する。
何が泣けるって、ここで推奨してる Mu Editor が Mac 10.15.5 で起動しないもの…セキュリティは分かるがちっとヒステリックになってきてないかと思わなくない。
時期バージョンで Arm 移行もあるし、結局「開発者<消費者」ルートで開発者を置いてけぼりにするんかね… Windows もアレだし、Ubuntu に戻ろうかな…。
現在のシリアルコネクションを確認
USB 接続なのは確実なので、/dev/tty.usbmodem144101
が結局デバイスだろうね。
てことで screen /dev/tty.usbmodem144101 115200
と叩く
これで画面が真っ黒になるので、コード中にデバッグ文字列を挿入。
やってみれば分かるが、デバイスに保存した次の瞬間には適用されてる。
CPU は 48MHz なので、Windows95 黎明期?逆に言えばそれくらいのスペックがこんなボードに乗るようになったんだなーと実感(汗
メモリが 2MB しかないというのも割とネックではあるので、ラズパイと組み合わせてやるとネットワーク連携もできて幸せになれそうな気がするよ。