球体POV作成メモ
はじめに
私は2015年からneonというGUGENのハッカソンのメンバーが母体になったチームでジャグリング用のガジェットを作っています.
みんな本業を持っているうえ,それぞれ自分の活動がある中でのチームなので,なかなか進捗が捗りませんが,それでも毎年Maker Faire Tokyo(以後MFT)に出展したりといろいろな活動をしています.
その中でいままではLEDを固定して配置した球体デバイスをいろいろなパターンで作成してきました.
このデバイスは,音楽に合わせてボールそれぞれの光り方をコントロールできるようにするものです.
いろいろ作ってきた中でこのようにたくさんのLEDを連動させて作っていると,ある欲求がフツフツと沸いてきます.
それは「これで絵を表示したい!」ということです.
ところが実際にやってみるとやはりこの解像度では絵にはならないことがわかります.
そこで今回はジャグリングガジェットであるかどうかはさておき
「絵を出せるボールを作りたい!」ということになり作成しました.
ボールに画像を表示するディスプレイには,いろいろな方法が考えられます.
- 今まで以上にLEDを密集させる
- 液晶もしくは有機ELを球面に貼り付ける
- POVを使う
この中で1は配線が地獄になります.
ちなみに92LEDの時点で裏の配線はこんな感じ.
さらにLEDを増やしてしまうと消費電力も大きくなり,あっという間にバッテリーが消耗してしまいそうです.
2はできたら嬉しいですがこれを実現するにはお値段がかかってしまいそうです.
そこで
- LEDが少なくても高解像度を実現
- LEDが少ないので電池消費も低い(でもモーターか付く)
などの理由から3のPOVで高解像球体ディスプレイを目指します.
POV(Persistent Of Vision=残像)とは回転する物体に光源(LED)を取り付けてパターンを投影し残像効果により画像を表示するシステムのことです.
今回のMaker Faire Tokyoでも色々と展示されていましたね.
例えば
POV自体は最近いろいろなところで広告用に使われているのを見かけることがありますね.この製品(3D Phantom)などが有名です.
POVは回転する部分に必ずLEDなどの表示装置を配置しないといけないので,表示装置を制御するマイコンや回転させるために必要なモーターをどこに配置するかが重要になります.
電源をAC電源から確保する場合など回転できない部分があったり,最終的には当然どこかに固定して回転しなければならないので,回転する部分と回転しない部分がPOVをには必ず存在する.
基本的に電源から表示装置までの間のどこかに電気的に回転を伝達する機構が必要となる.
もちろんバッテリー駆動であれば回転体上に電源・モーター・マイコン・LEDをすべて配置する方法もあり, POVの設計の自由度は高くなります.
成果物
今回作成したPOVとその表示動画を示します.
デモでは光点が綺麗に見えるため,ボールから出して展示していることが多いのですが,
このように透明ボールの中に収納して,バッテリー駆動で動作させることも可能です.パターンや輝度の制御にはマイコンにESP32を使用しているので,スマホからBluetooth経由でコントロールすることが可能です.
MakerFaireTokyo2019の時点では画像表示の実装まで間に合わなかったのですが,そこから更に地球の画像をマッピングしたものが
マップ元の画像がこちら
北極と南極が窄まっているようなので,性能評価用に十字を表示してみました.
やっぱり窄まっています.画像を作る際には気をつけましょう(誰が?)
なぜ表示色が赤だけなのかは後で詳細に説明します.まだフルカラーで表示はできず色数が少ない状態なので,それは今後の課題ですね.
回っていない内部の構造は
これだと回転している部分と回転していない部分がわかりやすいですね.
中央の円筒部の中を見てもらうとわかりますが,中で使用しているマイコンはM5stackです.今回は液晶が不要なので液晶部分を剥がして小型・軽量化しています.
M5stackを使用することで,バッテリーの充放電機能,Wifi,Bluetooth,SDカードなどの機能を使用することができるため,収納部分の設計も全体のサイズも実はM5stackがギリギリ入るように最初から狙って設計しました.
このように,掌に収めて映像を表示したり転がしたりと,いろいろな使い方ができる小型で球体状のPOVディスプレイ装置ができました.
実際に動かしてみると、LEDの光点だけが浮かんで見えるので、なかなか幻想的で、気に入っています。
MFTの時点では絵も出せませんでしたが、それも対応して球体ディスプレイとして完成度が上がったかな、と思っています。
何度かデモしている際にも「製品化しないんですか?」という嬉しい質問も頂いているので、今後クラウドファンディングなどで資金を集めて形にして行きたいと思っています。
では,次章から 全体の構造の詳細について述べます.
構造の詳細
今回作成した球体POVは,バッテリー・モーター・マイコンを固定し,LED部分だけを回転させる構造にしました.かなり珍しい構造だと思います.
中央にある緑の部分①にはマイコンおよびバッテリーが収納されます.ここが最も重量のある部分.
マイコン・バッテリー部①は②のシャフト(直径8mm)で外殻③と接続されています.外殻は直径10cmの球体で透明樹脂製.この外殻③も肉厚が6mmとそれなりの重量があり,中で回転するものがあっても重量比が圧倒的に違うのでイナーシャがわずかしか発生せず,ボール部分が釣られて回ってしまわない効果を狙っています.
このシャフト②にベアリングとギア(茶色部分とその下のギヤ)を連結した部品④を配置することで,モーター⑤の出力をギヤとベアリング③に回転力として伝達します.
ベアリング④は⑥のLED基板(図中黄色)と接続されているので,黄色い部分はベアリング④と一緒に回転します.そして,シャフト②の反対側で回転を受けるのはスリップリング⑥という部品(図中の青部分)です.
スリップリングというのは回転コネクタで,回転する軸と回転体との間で電源や電気信号を伝達させる部品です.
この部品を介すことによって,回転していないマイコン①から回転するLED基板⑥へ点滅信号を伝達することができるようになるのです.
今回使用したスリップリングは
動作速度: 0-1000 rpmということは約16.7Hz.通常のPOVが10〜20Hzの回転速度なので,仕様としては十分な性能が出ているものと考えて選定しました.
以上からこの球体POVで回転するのは,④ベアリング+ギア,⑥LED基板,⑦スリップリングの一部のみとなります.
④ベアリング,⑦スリップリングは軽量で回転軸付近にあるためイナーシャは小さく,LED基板⑥はほぼ基板のみの重量のため,非常に軽い構造物になっています.
そのため,モーター⑤には超小型ドローン用のモーターを使用することができ,電池消費の問題や小型化に貢献しています.
黒い部分は自宅の3Dプリンタで印刷.白い部分はギアもあり精度・強度が欲しかったのでDMM.makeさんに依頼してナイロン素材で印刷してもらいました.
シャフトの部分は強度が必要だったので金属でできています.実はステンレス製のスペーサーの流用だったりします.
次章から各パーツの詳細について解説します
各パーツの詳細:マイコン・バッテリー
CADで設計した中央部の図面です.
中央部の円筒部分に部品がモーター,バッテリー,m5stackが収納されます.
まず,m5stackの解体から.
LCDへの配線を切断して,基板部分のみのm5stackを作成します.こうすることで,プログラミングする際にもm5stackのライブラリをそのまま活用することができるようになります.
さらに,m5stackに搭載されているバッテリー充放電回路,DCレギュレーター,SDカードなど,実装が必要な工程をそのまますっ飛ばすことができます.
この写真のように内部にはm5stackのLCDを切り飛ばして基板だけ取り出したものを使っているのでこれはm5stack互換機ですw SDカードもBLEもWiFiもLiPo充放電も付いてこのサイズ.素晴らしい #MFT2019 #MFTokyo2019 #m5stack https://t.co/OWbs5OFKqq
— yakatano (@Yakatano) August 5, 2019
ここから,モーターを制御するためのDRV8830,LED点灯用の電源を確保するためのDCDCコンバータ(TPS63000)および,各部品と接続するためのコネクタを実装した基板を作成しました.
m5stackのM-BUSコネクタからRESET,LED,MOTOR,バッテリー,そして回転検出センサの各コネクタへ配線を行い,基板を作成します.
このprotoモジュールに,
これらの部品を実装して,配線をしたものを今回は使用しています.
m5stackとモジュール基板をスタックして,中央円筒部に収納。
バッテリーもここに入っています.
黒い部材はすべて3Dプリンタで作成しており,強度・精度的にまだまだ足りませんが,プロトタイプとしては十分.
各パーツの詳細:LED回転基板
フルカラーLED には,APA102-2020(Dotstar)を採用しました.
この手のフルカラーLEDを使用する場合WS2812などのNeopixelが一般的ですが,POVのように高速に点灯を切り替えるような更新レートの高い用途の場合,クロック信号のないWS2812のようなNeoPixel系は不適切なのです.
そのあたりの詳細な検討はこちらのHomeMadeGarbageさんで比較されているので参考に.
DotstarとNeopixelの詳細な比較はAdafruitのページにもあります.
このページにも
– 400 Hz refresh/PWM rate not suitable for persistence-of-vision effects.
とNeoPixelはPOV(persistence-of-vision)には向かない,とハッキリ書いてあるんですね.
以前にも球体POVを作成しており,その際にはAPA102-5050というフルカラーLEDを使用していました.5050というのはLEDのサイズを示していて,5mm x 5mmの大きさのフルカラーLEDであることを示しています.
LEDストリップは市販の細密なもの(1mあたりに144個)を使用.
APA102 5050 SMD高輝度チップLEDピクセルフレキシブルストリップライトDC 5V (黒 PCB, 1M 144leds IP20)
- 出版社/メーカー: Shenzhen greenenergy lighting Co.,Ltd.
- メディア:
- この商品を含むブログを見る
つまり,1000mm÷144個 ≒6.9mm ほぼ7mm間隔ということになります.
これを直径83mm球から最下部のコネクタ穴10mmを差し引いた半円に貼ると17個.
半球あたり17個しかLEDを貼り付けることができませんでした.
そのため,反対側の半円には半ドットずらして16個のLEDを配置して交互に表示をすることができるように調整しました.
こんな感じ
これで33LED になります.その時のMFT2018の表示画像がこちら
国旗を表示してみました.
日本の国旗がわかりやすいと思いますが一部に隙間(球の両端あたり)があるのがわかると思います.これが半ドット分のずれになります.
前にも書きましたが私にとっては「コレジャナイ」感が満載でした.やっぱりもっと解像度がほしいよね.
そこで今回はこのLEDを小型化・高密度化することにチャレンジしました.
もっと密度の高いLEDを!!ということで,さらに小さいAPA102-2020を使用します.
ご覧の通り,小さい!
2020とあるとおり,2mm x 2mm の大きさのフルカラーLEDです.
今回のAPA102-2020は2mmピッチ.余白を1mm取って1つあたり3mm間隔で配置するとする(電源・通信用のコネクタ径は8mmに変更)と
半球上にLEDが配置できる長さ = (83mm × π - 8mm)÷2 ≒ 252mm
ここに3mmピッチでAPA102-2020を配置すると
252mm ÷ 3mm = 42個
片側に42個のLEDを配置することができます.これはかなりの高精度化!!
前回はテープ状のAPA102を使用しました.今回もAPA102-2020で同様のテープ状の製品を探したのですが見つかりません...
探してみると,WS2812-2020であれば下のような製品がありました.
これは基板部分がアルミなので「曲げればなんとかなるんじゃね?」と思い曲げてみましたが,曲げたことで一部の配線が切れてしまいました...(どっちにしてもNeoPixelなので更新レートが足りないんだけれどね...)
さらにあとになってHomeMadeGarbageさんからこんなのも教えてもらったのですが,自分の用途では無理そう...結局曲げなきゃいけないし..
https://www.adafruit.com/product/3776
ということで自作します!
基板を起こします.生まれて初めてです.neonのメンバーに回路系に強い人がいるので,いろいろと教えてもらいながらKiCadで作った人生初の回路がこれです.
回路図はシンプル.
しかし,基板図は...
もう一度言います.これが私の「人生初の基板」ですw
それなのにこの基板かなり特殊です.
LEDを基板の「側面」に配置します.
同じように球体POVの製品があり,そのときにこのような実装をしているのを見かけて,これを参考にしました.
この装置は基板側面にLEDが配置されています(5050ですが).
APA102-2020の外観図は下のようになります.
向かって左にある3極と,右側にある3極を基板の表裏で挟み込むようにはんだ付けすることで実装します.
実際に基板を発注して手ハンダでちまちま...
ここまで来ました!
えい! 通電
がーーーん
左の5050は検証用です.これと同じに光るはずが....
全然ダメですね.
一つ一つハンダをチェック.この時点でもう一週間を切っています.
そして.
動いた!! MFT向けの光り物。 LEDを基板の側面に実装すると言うアホなことを初心者だからこそトライ。絶対当日までに間に合わないと思った。。。 pic.twitter.com/9tRnhSXfSI
— yakatano (@Yakatano) August 1, 2019
完成したのは8/2.つまりMakerFaireTokyoの二日前でしたw
各パーツの詳細:回転部
昨年作成したPOVはシャフトが3Dプリンタ製でした.そのため強度が足りずにブレてしまい、外殻の中に収めることすらできませんでした.
そこで今年はシャフト部分をメタル製にしてベアリングも強化.
2つのベアリングを設置することで,ねじれ方向への歪みを抑制します.
このベアリングとLED基板を固定するベアリングカバーは,
この白いパーツになります(上の図とは上下が逆).白いパーツはギヤもあり,精度・強度が必要なためDMM.makeさんに依頼してナイロン素材で作成してもらいました.これによって,片持ち梁状態で回転を支えることができるようになり,反対側はギリギリまでLEDを配置することで,シャフト部分以外ですべて映像を呈示できるようになりました.
モーターの反対側(動画中の上部)は,スリップリングを配置.同様に白いパーツで基板とスリップリングを固定しています.このスリップリングを介してm5stackからLEDパターンを送信してLEDの色を変えています.APA102(Dotstar)の通信方式はSPIなのでかなり高速な通信を行う必要がありますが,地球儀を描くことができているので通信も問題ないと考えています.
回転検出はホール素子を使い基板に磁石を取り付けることで回転を検出します.
このホール素子は内部にツェナーダイオードを内蔵しており,チャタリングにも対応できるものです.
これによって回転原点を設定することができ、同じ位置に画像を表示することができるようになるのでした。
現時点では一回転するのにかかる時間は約77ms。およそ一秒間に13回転しています。もちろんモーターの出力をコントロールするともっと早く回転させることも可能です。
各パーツの詳細:ソフトウェア
この球体ディスプレイは内部にm5stack(ESP32)を搭載しているために,wifiとbluetoothが使用できます.
さらにデバッグと給電用にシャフトの中空のところに,2.5mm 4極のオーディオプラグの端子を設置しました.
2.5mm4極ジャック MJ068Hの通販ならマルツオンライン
2.5mm4極フォンプラグ MP425の通販ならマルツオンライン
このプラグを介してm5stackとPCをUSB-シリアル通信で接続することができるようにしました.
MakerFaireTokyoなど大量の来客者のあるデモにおいてWifiやBluetoothは鬼門で,通信が混雑してまともに動作しないことが多く,その経験から直接有線でシリアル通信ができるように処理をおこなっています.
この画面はBlynkというアプリを使用したコントローラー画面で,
- ホーム:デモモード,Gyroモード,config読込/保存
- モーター:速度,on/off,回転方向
- LED:色指定,パターン指定,明るさ
など各パラメータをインタラクティブに操作することができます.