ATOM Matrixを使った卓上ロボ「スノーマンチャン」作り方メモ
本記事は M5Stack Advent Calendar 2022 8日目に登録しました。アドベントカレンダー初参加です。
以下のようなクリスマスっぽい卓上ロボ「スノーマンチャン」の製作メモです。
ATOM Matrixを使っていますが、M5活用と言うより、3Dプリンタ活用とダイソーLEDライト改造の要素が強いです。
以下のようなメルヘンな世界が低コストで作れます。
3Dモデルは以下のリポジトリで公開しています。ダイソーLEDライトの詳細や使用フィラメントの情報も載せていますので、雪だるまやクリスマスツリーっぽいライトだけであれば、こちらを参照すれば割と簡単に作れます。
本記事ではスノーマンチャンの作り方に絞って解説します。
1.ハードウェア解説
ベースとして使っているダイソーのLEDライトについては、以下に詳しい分解記事があります。
具体的には、以下のように回路がマイナーチェンジされていました。
「2019-8-15」ではU2の2番と3番ピンがQ1 FETのゲートに接続されていますが、「2021-4-27」では2番ピンのみがゲートに繋がっています。その代わりに3番ピンがタクトスイッチに接続されています。
Q1 FETのゲート電圧波形をオシロで観察したところ、ゲートのスイッチングDutyが100%と50%で切り替わることによって、白色LEDの明るさを変化させていることがわかりました。
↑Duty50%
↑Duty100%
このDutyの変化を捉えられたら、リモコンでM5を制御できるかもと思い、Q1のゲート信号をM5のGPIOに入力しました。M5とは以下の3端子で接続します。
実際の配線には以下のような基板を作製しました。
ユニバーサル基板を切り出してピンヘッダをつけた簡単なものです。このピンヘッダでATOM Matrixと接続します。ATOMは上下ひっくり返して取り付けます。あと基板の真ん中に穴をあけてネジ留めできるようにしています。
↑裏面
配線はホットボンドで補強しました。あと配線の先端にはピンソケットを1ピン分に分割したものをはんだ付けしました。
上のように、ダイソーLEDライトの基板に分割したピンヘッダをはんだ付けします。
電池のマイナス・プラスの端子と、R2の片方の電極です。先ほどの配線のソケットをこのピンヘッダに挿し込んで接続します。
使用する時は以下のようにLEDライトのカバーをつけるので、ピンが干渉しないようにしてください。
↓接続するとこんな感じ
ただし!接続するとM5に電源が供給されますが、その状態でUSB接続することはできません。USBからの5Vが乾電池にかかってしまうので。なので、先にATOM Matrix単体でUIFlowのファームウェアを書き込んでおきます。WEB書き込みモードにすれば無線でアップデートできるので便利です。
続いて3Dプリンタの話です。
こちらは、冒頭紹介したGithubで公開している「snowman_atom_matrix.stl」というファイルを印刷してもらえればいいのですが、印刷設定で少し工夫したところがあるのでご紹介します。
以下はUltimaker Culaのキャプチャです。赤矢印つけた部分はオーバーハングしているので、そのままだとうまく印刷できないと思われます。
なので、Cylindric Custom Supportというアドインを活用しました。CulaのMarketplaceからCustomで検索すると以下のように出てきます。
インストールできたら、画面左のメニューに、赤丸つけたようにCustom Supportの機能が追加されて、以下のように任意の場所にサポートがつけられます。サポートはちゃんと剝がしやすい感じで印刷されるので、下のキャプチャのように設定して印刷したらうまくいきました。
作製したモデルには、ATOMを固定するためのネジ穴をつけていません。以下のようにキリで少し下穴を開けました。成型する時の密度が薄いと、ネジでうまく固定できないかもしれません。
↓基板を固定するとこんな感じになります。ATOMがうまくはまるように微調整が必要です。
↓ATOMをはめるとこんな感じで、GROVEポートにアクセスできる感じになります。
これはオプションですが、GROVEポートに以下のような部品をつけると、頭のLEDも光らせることができます。LEDと110Ωの抵抗を繋いだものです。手持ちが330Ωだったので、3パラにしています。
↓以下のようになります。「hat.stl」を印刷して乗せると隠せます。
↓ハードの完成形はこんな感じになります。
2.ソフトウェア解説
プログラムはUIFLOWで作成しました。
冒頭のGithubリポジトリ /snowman_atom_matrix/UIFLOW/ に snowman_atom_matrix.m5f を置きましたので、これを書き込んでもらえば動くはずです。
プログラムの序盤のみ解説すると↓
ダイソーLEDライトQ1 FETゲートを33番ピンに繋いで、その電圧をADで計測しています。
4回計測してその平均を出して、その値に応じて白色LEDのDutyを判定し、ATOM Matrixの動きを変えています。
同じ方式でRGB LEDの変化に同期させることもできるかもしれませんが、そのまま繋ぐとM5のポートに3.3V以上の電圧がかかることになるのでちょっと微妙です。
あとプログラムとしては、ボタンが押されたことをトリガにして頭の赤色LEDを点灯させ、サンタモードにしています。
3.まとめ
以上、スノーマンチャンの作り方でした(ちなみにスノーマンチャンはPONDAさんに名付けて頂きました)
プログラムはシンプルですが、もっと文字とか表示させてもおもしろそうです。
近々発売されそうなATOM S3との相性も良さそうです。
クリスマスまでまだ少し時間あるので、良ければ作ってみて頂けると嬉しいです。
Discussion