ハンディバーサライタ PovRanianの表示映像生成フォームの仕組み
Arduino Advent Calendar 2019 | 22日目
今年は念願のHomeMadeGarbageのオフィシャルショップを開店することができ、ハンディバーサライタPovRanian (ポブラニアン)を出品いたしました。
画像や図形をフルカラーで表示することができます。
ハンディーバーサライタ PovRanian
ちょっとしたパーティや社交の場にいかがでしょうか。お好きな画像や模様を表示できます。#PovRanian
☟ショップリンクはコチラhttps://t.co/AdRTeiFAhT pic.twitter.com/X0HFUlPQKQ
— HomeMadeGarbage (@H0meMadeGarbage) September 29, 2019
PovRanianを販売するに際して一番の障壁が表示画像の更新でした。Arduino等の環境をお客様に用意していただき、表示データを生成してもらうのは現実的ではありません。
そこでウェブ上で表示映像データを生成しPovRanianにドラッグ&ドロップするだけの仕組みを構築しました。
色々検討してやっとできた表示映像生成フォームですので紹介させてください。
目次
仕組み検討
バーサライタPovRanianをご購入いただいたのちに自由に表示映像をカスタマイズしてもらうべく、PovRanianに搭載するマイコンに表示データを書き込む手法を色々検討しました。
手法1: Arduino IDE
バーサライタのArduinoコードについては公開しておりますので、おのおのカスタマイズいたたくことも可能なのですが、Arduino IDEや各種ライブラリをダウンロード、インストールする必要があり現実的ではないので却下!
手法2: CircuitPython
Adafruitが提唱するCircuitPythonも検討しました。
AdafruitのCircuitPython対応マイコンであれば.pyファイルをドラッグ&ドロップするだけで買い込みが可能です。
しかし、処理が遅く割り込みもサポートしていないためバーサライタには向かないので断念しました。。。
#Adafruit ItsyBitsy M0 Expressマイコン #circuitPython でコーディング。SPI入力のLEDテープでバーサライタ。割り込みが実現できず現状36分割。。。circuitPythonは書き込み早くて便利だからどうにかしたい。#進捗牛歩 #環境変わるとゼロから #直感的にできない #調べながら pic.twitter.com/cDuu0xuq8z
— HomeMadeGarbage (@H0meMadeGarbage) March 24, 2019
手法3: uf2ファイル
MakeCode MakerでAdafruit SAMD21系マイコンのプログラミングを試したときに、コーディング後にuf2ファイルというものを生成しマイコンにドラッグ&ドロップで書き込んだことを思い出しました。
コードのバイナリをuf2ファイル化する手法も公開されておりましたのでPovRanianのデータ更新にはuf2ファイルを使用することにいたしました。
uf2ファイルとは
Microsoftがマイコンフラッシュ向けに開発したファイル形式とのことです。
uf2ファイルはAdafruitのSAMD21(M0)やSAMD51(M4)系のボードでも利用可能です。
PovRanianは Adafruit Trinket M0 を利用しています。
プログラムのバイナリでuf2ファイルを生成するpythonコードも公開されております。
M0系のマイコン用の場合の変換は以下のように実行します。
uf2conv.py -c -o test.uf2 test.bin
PovRanian表示映像フォーム
PovRanian 表示映像フォームは以下
http://homemadegarbage.0t0.jp/PovRanian/
表示映像フォーム構成概要
PovRanian 表示映像フォームは自宅のラズパイサーバで構築されています。
フォームの入力内容から表示データを生成しコンパイル・ファイル変換を実施してuf2ファイルを返します。
フォームの入力を受けて表示画像データgraphics.hを生成します。
graphics.hとPovRanian用のArduinoコードをマージしてarduino-cliで.inoファイルをコンパイルしてバイナリファイルcode.binを生成します。
コマンドでArduinoコードをコンパイルできるarduino-cliは以下で公開されています。
https://github.com/arduino/arduino-cli
arduino-cliでのコンパイルは以下のように実行します。
arduino-cli compile --fqbn adafruit:samd:adafruit_trinket_m0 [コードのフォルダ指定]
code.binをさきほど紹介した uf2conv.py でuf2ファイルに変換してダウンロードファイルとして返します。
uf2ファイル生成
PovRanian 表示映像フォームにて1つ以上の映像の設定ができるとコード生成ボタンがアクティブにまります。
“コード生成”をクリックするとファイルの作成が開始し、しばらく待つと
PovRanian.uf2ファイルがダウンロードされます。
uf2ファイルのPovRanianへの書き込み
PovRanianに搭載されているマイコン(Adafruit Trinket M0)のマイクロUSB端子とPCを接続します。
USBケープルを接続するとLEDが点灯します。リセットボタンをダブルクリックしてLEDが緑色になるとPCにTRINKETBOOTディスクとして認識され表示されます。
PovRanian PCに接続#PovRanian #バーサライタ pic.twitter.com/NTBTFEL45x
— HomeMadeGarbage (@H0meMadeGarbage) August 25, 2019
認識されるとすぐにTRINKETBOOTディスクは閉じます。
おわりに
以上でPovRanianの表示映像のカスタマイズが容易に実行できるようになり、販売開始することができました。
HomeMadeGarbageは令和を歓迎し待ちわびています。#元号 #beautifulharmony pic.twitter.com/KhgNl0TcsH
— HomeMadeGarbage (@H0meMadeGarbage) April 21, 2019
来年は文字出力などフォームのバージョンアップも目指します。
アスキー文字には対応しよう。日本語はまだ厳しいな#PovRanian #バーサライタ pic.twitter.com/R6byzKKQ6y
— HomeMadeGarbage (@H0meMadeGarbage) August 31, 2019