2019年3月
ひょんなことから入手したWS2812パネル。センサーと組み合わせてゲームを作りました。
WS2812の制御プログラムを自作することと、加速度センサーをアナログ入力デバイスとして利用してみることが目的です。
回路図とプログラムを公開しています。
【参考】 6軸センサーMPU-6050動作テスト
WS2812の詳細についてはデータシートで確認してください。
LEDを点灯させるにはHi/Loのパターンで0と1を表現し、RGB:24bitのデータを送ります。
ただしタイミング(Hi/Loの長さ)にクセがあり、注意が必要です。
0/1の表現についてそれぞれHi+Loの長さが違いながらも、どちらも1.25us+-600nsに収めろとのこと。
しかしそのようなプログラムを書いてもイマイチ上手く動作しなかったので(点いたり点かなかったり変な色だったり)、
データシートの値を参考に、実際に試しながら上手く動作する値を決めました。
いずれにせよマイコンATmega328Pの内蔵8MHzでは遅いので16MHzのセラロックを使いました。
また、WS2812の電源電圧は仕様上5Vですが、3.3Vでも動作することが分かりました。その場合、緑が強く発色します。
例えばRGB=FF,FF,FFで緑っぽい白になります。緑成分を1/2にすると(RGB=FF,80,FF)、期待通りの白となります。その他の色も違和感ありません。
3.3V動作にすると、5V動作よりまぶしくない、消費電力が抑えられる、というメリットがあります。
回路図
100円ショップで売っている、スマホゲーム用コントローラースタンドに収めました。
基板等を載せる台はプラ板、プラ棒、両面テープで作成しています。
LEDがまぶしいのでカバー兼用で塩ビ板をかぶせています。
MPU-6050と基板の接続
高さを抑えるためにロープロファイルのピンヘッダ、ピンソケットを使います。
入手が難しければ、基板側は1列ICソケット、モジュール側は細ピンヘッダでもよいです。
WS2812と基板の接続
WS2812の裏面にライトアングル型のピンヘッダを取り付けます。
基板側にも同じピンヘッダを取り付けます。それらを両端がQIコネクタのケーブルで接続します。
電池ボックスと基板の接続
電池ボックスと基板の接続はXHコネクタが定番です。
今回は手持ちがなかったのでロープロファイルのピンヘッダ、ピンソケットを使用しています。
こんな動きをする。迷路ゲーム(3階層のダンジョンと見てもらえれば)。最深部のお宝を取って元の場所に戻る。2階層目の動く赤い点は敵。ぶつかるとアウト。 pic.twitter.com/Dbe0WwxdVh
— 『昼夜逆転』工作室 (@jsdiy) 2019年3月19日
AE-XCL102
秋月オリジナルの昇圧型DC/DCモジュールはこれまでにいくつかありました。
しかし、いずれも比較的短期間で販売終了となっているようです。
代わりとしては、3V→3.3V、200mA程度取り出せるものなら何でもよいです。
WS2812
実はAliExpressでセンサー類を注文したら誤配送でこれが届きました。
返品する必要がなかったので、何か作ろうと考えて今回の作品になりました。
複数枚のパネルを接続して、より大きなパネルにすることもできます。
後に判明したのですが… WS2812Bという品種があり、電源電圧と0/1コードを表現するHi/Loのタイミングが違います。
もしかしたら本工作で使用しているものはWS2812Bかもしれません。
Xtal
16MHzのセラミック振動子(ムラタのセラロック)を使います。
内蔵負荷容量(15pFや30pFなどあり)は気にしなくてよいです。
本工作では30pFのものを使用しています。
部品名 | 部品番号 | 値 | 個数 | 参考価格/備考 |
---|---|---|---|---|
DC/DCモジュール | U1 | AE-XCL102 | 1 | 300円(秋月電子) |
AVR(マイコン) | U2 | ATmega328P | 1 | 230円(秋月電子) |
MPU-6050モジュール | -- | GY-521 | 1 | AliExpress/Amazon |
WS2812モジュール | -- | 8x8 | 1 | AliExpress/Amazon |
スライドスイッチ | SW1 | -- | 1 | 数十円 |
タクトスイッチ | SW2 | -- | 1 | 数十円 |
カーボン抵抗 | R1 | 1kΩ [茶黒赤金] | 1 | 100個100円 |
カーボン抵抗 | R2,R3 | 10kΩ [茶黒橙金] | 2 | 100個100円 |
LED | D1 | -- | 1 | 数十円 |
積層セラミックコンデンサ | C1 | 0.1uF [104] | 1 | 10個100円 |
セラロック | Xtal | 16MHz | 1 | 35円(秋月電子) |
電池ボックス | -- | 単三用セパレート型 | 2 | コード付きがよい |
QIコネクタ | -- | 適宜 | 適宜 | 共立エレショップ、秋月電子 |
ピンヘッダ/ピンソケット | -- | 適宜 | 適宜 | 「配線図」「組み立て」の項を参照 |
ICソケット | -- | 適宜 | 適宜 | 「配線図」「組み立て」の項を参照 |
ゲーム用コントローラースタンド | -- | -- | 1 | 100円(キャン・ドゥ) |
ゲームコントローラーのガワがまさか100円ショップで買えるとは。これを見た瞬間に完成の形が決まりました。
何を作ろうとスマホの大きさに収めればこのケースが使えます。流行りそう!?
迷路生成のアルゴリズムを考えるのは面白いです。今回は10年前にケータイアプリ用に作ったプログラムを再利用(JavaからCへ移植)しました。