2013にid:hecomiと二人でMont.Blanc.Pjというチーム名で参加し、凸Pというレゴのプロジェクションネタで出展してきました。id:hecomiがソフトウェア部分のところをかなり細かく書いているので、Arduinoの通信周りやプロジェクションする側の筐体作成までの困難な道のりを書いていければと思います。派手な部分はないので面白くないかもしれません(笑)反響Twitterや大手メディア様から反応がありました。本当に嬉しい限りです。学会マッドネス部門のご推薦も頂きました。id:hecomiがレゴの検出方法について詳しい記事を書いています。筐体には写真にあるように銀ラックを使っています。色々な筐体を考えていたんですが、意外とこれが良かったです。この銀ラックによくポスターなんかを貼る5mmの厚さのボードで前面を隠すような箱を作って被せています。外側ができたことで結構良い感じになったのですが、レゴの取り付けなんかを行う際に結構ずれるんですね。キャリブが命のシステムだったのでできるだけ台を安定化させる必要がありました。考えた結果以下の3つをやっています。展示当日こどもたちにかなり激しく使われましたが、ほとんど動くことはありませんでした。今思えば台の安定化はかなり大切なポイントでした。銀ラックの足に滑り止めのスポンジを置くおもり(今回はダンベルw)を下の方に置く外の白いカバーを銀ラックにヒモできつく固定する。真ん中の台のところに100均で買ったケーブルをまとめるもの(両面テープで付く)を白いカバーにつけてヒモが引っかかるようになっています。今回Arduino2台(UNOとDuemilanove)を使って、DCモーター(UNO)、サーボ(UNO)、LED(Duemilanove)をPCからUSBのシリアル通信で操作しています。イーサネットシールドも持っていたのですが、シリアル通信は下記の3つの理由で採択しています。今回は無線化したりスマートにする必要がなかったので、USBでPCをつないでもデモの見栄えに影響がないイーサネットシールドが高価ネットワーク環境を構築する必要がないので、手間が少なく当日のネットワークトラブルの要因を排除できるサーボサーボにはタミヤのユニバーサルアーム(オレンジの)が付いており、そしてその先に非常に細い糸をつけています。これをドッスンのブロックにつけることでドッスンの上下運動を実現しています。サーボのコントロールはArduinoにはサーボコントロール用のライブラリがあるので簡単です。サーボは配線が3本あり、信号線と電源(プラスとマイナス)です。解説は下記サイトを参考にして下さい。電源は安定化のため外部電源の5Vを使っています。タミヤDCモーターDCモーターにはレゴのテックシリーズのクレーンなどに使われているキャタピラを使っています。通常の6角の棒とレゴがもちろんそのままでは合わないので、接合部にグルーガンを流し込んで無理矢理固定しています。レゴは基本的にレゴとしか接合しないので、こういうとき大変です。力がかかると簡単に外れちゃいます。なんか良い方法ほかにないですかね?ちなみにDCモーターのArduinoの制御はサーボより少し複雑です。今回はTA7291PというICを使って制御します。下記のサイトの例では3ピンが使われていますが、今回は既にサーボで3ピンが使われているので、1、2、3ピンと同じくPWMが使われる9、10、11ピンを使いました。建築発明工作ゼミ2008ミニモーター多段ギヤボックス(12速)サーボとDCは下記のようなスケッチで1台のArduinoで制御しています。そのためデータは"d123"や"s23"といったように、単語の始めにサーボかDCを判断する文字、次にそれぞれが扱う数字を送ることでどちらのデバイスを制御するか判断しています。SoftwareSerialはデバッグ用となどで便利です。うまく動かないときは地道にprintデバッグです。}LEDLEDはゲーム用やシステムの動作確認用などに多く使うかなぁと準備していましたが、結局時間がなくてLEDは1つしか使いませんでした(コインブロック)。TLC5940というICで16個まで1つのArduinoで簡単に制御できますが、今回に限っては完全にスペックオーバーでした。今回メインのゲームがUnityであるため、UnityとArduinoでシリアル通信を行っています。PC側にはUSBケーブルが2本、それぞれUNOとDuemilanoveが繋がっていて、同時に様々なメッセージが送れます。今回はライブラリをid:hecomiに提供するということで、シングルトン風にそれぞれのインスタンスを取得し、簡単なAPIを叩いてもらうようにしました。Serialの通信周りは使う側からは隠れています。(と、いいつつポートはあらかじめ指定する必要があるんですが)長くなってしまうのでシリアル通信部をラップするSerialHandler.cs、DCモーターのライブラリ(DCMotorController.cs)、そしてその使い方のソースコードを載せます。LEDとサーボもDCモーターのライブラリと基本的に同じです。}}最後に自分もid:hecomiもソフトウェア屋なのでハード面、デザイン面、もう少しがんばりたかったなぁというのが本音です。反響も大きくいろんなところから結構声がかかっていたりして結構嬉しいです。今回は2ヶ月ぐらいしか時間がなかったので来年のMakerや他の展示にも向けてどんどん頑張っていきたいところです。UnityとAruduino間でOSCでハスハスす...前の続きです。動いていなさそうです。月別アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。