2012年12月28日金曜日

LEDネクタイ用の制御基板を更新

右(青い基板)が東京Node学園祭やMaker Faire Tokyoなどで活躍した第2機能試作。左(赤い基板)がFusion PCBで試作したもの。(主に自分のために)変更内容をまとめておきます。

実装部品の点数を減らした

基板上の部品を減らしてサイズとコストと重量を減らしました。というか、今までが多かった。手元にあったArduino Pro Miniが5V駆動だったので、エネループ2本(2.4V)から5V電源を生成。XBee用に3.3Vも生成っていう豪華仕様だったので、電源回路の部品が多かったのです。ここをArduino側も3.3V駆動にすることで電源を共通化し、5V生成部品をまるっとカット。電圧の低下によってArduinoの動作周波数は16MHz→8MHzになるのだけど、実使用上は問題なし。昇圧によるロスが減るので、電池がもう少し長持ちするかなと期待。

LED点灯電流の経路を分離

今まではArduinoの足から直接LEDにつないで、LEDを直接光らせるための電流を出力していました。でもICの役割としてコレはよろしくない。ICは信号をやりとりするものであって、結果として数十mAでも駆動電流を流すのは(ドライバのような専用回路として設計されてない限り)行儀がわるいのです。ICの信号端子から電流のオン・オフを制御する場合、トランジスタをはさみます。これがスイッチのようなはたらきをするので、ICの出力にあわせて分離された回路をオンオフできるようになります。

もう一つ利点があって、Arduinoの足から直接LEDを駆動させるだけの電流を流すってことは、その手前にいる昇圧回路もパワーがあるものを用意しなきゃいけないわけです。このためにLT1302をつかっていたのだけど、これ1個がかなり高いし国内じゃRSコンポーネンツかdigikeyでしか買えないのでクソめんどくさい。電流経路を分離したことによって、昇圧回路は電圧を生成できればよいから、ちょいとチープな回路に置き換えられるのです。この基板ではLT1302のかわりにHT7733-Aを使用。200mAまで出力可とあるけど、ArduinoとXBeeならそんなにいらない(と思う)ので十分でしょう。秋月以外にマルツなんかでも取り扱いがあるので、入手するのも手軽。

互換性をなくしてしまった

ネクタイのLEDが光るっていう半笑い回路でも、ハードウェア屋のはしくれがつくっているので、どうあるべきかはそこそこ考えています。上2つの変更点+ファームウェアの書きやすさを考えると、アノードコモンにしたほうがよいのではないかと思って、出力ピンの配置を変えてしまった。ということは、ネクタイのほうも変えないといけないのです。試作だからいいかなって。

基板にgithubのURLを印字しているので、そこに部品表やファームウェア、説明書きなどを載せておきたいと考えています。が、Eagleの回路ファイルがあるくらいなので年末年始にやるかもしれないし、やらないかもしれません。

Fusion PCBで基板をつくってみたよ

LEDネクタイの裏側には、そのLEDの点灯パターンを制御するために基板がおります。いままではこの基板をユニバーサル基板をつかって組み立てていたのですが、よりギッチギチかつ配線間のショートなどをなくすためにプリント基板をおこすことにしました。

どうやったらつくれるのか

順序をまとめるとこんな感じ。

  1. 回路図をつくる
  2. 回路図上の部品を基板上に並べる
  3. 部品どうしを線でつなぐ
  4. 基板メーカーでつくれるかどうかの確認
  5. 基板製造に必要なデータの出力
  6. メーカーにデータを送付して完成を待つ

今回、回路図をつくってからデータの出力までEagleをつかい、基板製造サービスのFusion PCBにお願いしています。

お願いするにあたって、itogさんのFusion PCBで基板をオーダーする手順を参照しました。が、今はすこし順番が変わっています。オーダーの部分は一番最後になり、Zip圧縮した必要なデータをオーダーのときに同時にアップロードします。注文番号はSeeed Studio側で基板上に適宜記載するらしく、ぼくの場合は裏面のスカスカな部分にちょろっと記載してありました。

Fusion PCBがすごい安くてビビる

Fusion PCBにした理由は安かったからです。5cm×5cmで緑レジストの基板が10枚で約10ドル。送料は別途で、国際郵便だと3ドルくらい。今回は赤いレジストと鉛フリーのめっき(?)的なオプションを増やしたぶん追加料金があったけれど、それでも送料込みで30ドル弱。

できあがりがコレ

発注から到着までがすごく早かった。12月13日の夜にデータをアップロードして注文、翌日には早速製造中に。土日のお休みを挟んで17日には発送されてた。送料の安い国際郵便にしたら、土日を含んで10日で到着。もう少し高い配送方法を選んだら、もっと早かったでしょうけれど、これでも十分早いっていうね。安いけど一枚ずつちゃんと検査が入っているみたいです。安いし早いし最高じゃないですか。

2012年12月24日月曜日

2012年のまとめ

今年はもう大きなイベントないしね。今年はいろんなことがあって、やっぱ外に出ていかないとダメだなと思った年でした。

第1回ペアプロ合コンに予選落ちする

モテようと思ってペアプロ合コンに応募するも、クライアントの要望にあったWebアプリを作れずに予選落ち。応募者多数のため急きょRubyとPHPに絞って予選を行うこととなり、「RailsとデータベースをつかったWebアプリをつくれ」といわれ、「EventMachineとシリアル通信を使ったWebオシロスコープ」を作り提出。結果として合コンには出られずRuby嫌いになりましたが、すべてNode.jsを使って書き直したことによってその後大活躍していただきました。結果は残念でもここから始まった気がする。

勉強会での発表が増える

先述のオシロスコープを筆頭に、電気回路とWebブラウザを組み合わせてあれこれつくったものを発表してまわったり、勉強会を開催したりなどしました。Make Ogaki Meeting / Maker Faire Tokyoと東京Node学園祭が特に思い入れ深いすね。いずれにせよ、なんらかの勉強会に出るときは、発表者に回ったほうがよいと思いました。他の参加者や登壇者からいろんなアドバイスやリアクションを、向こうから話しかけてきてくれます。それがきっかけで楽しい話が進んだりなんかもするしね。

クラブ活動が増えた

名古屋と東京のクラブイベントに遊びにいくことが増えました。でもなんとなく怖いので、日本語の曲、特にアイドルの曲ばかりかかるイベントを中心に。フロアだとおうちのスピーカーと違って楽しいし、夏の申し訳ないとサマーフェスではトマパイのライブも観れたし最高。名古屋で遊びにいったイベントはどれもVJがイルでやばかったです。今年の残りイベントはいまのところ年末の申し訳ないとSPのみ。

今年の残りと来年

今年はまだ、Fusion PCBでつくった自前の基板が届くというイベントが残っています。発送から1週間、そろそろ届いてもと思うのですが、成田空港で止まっているようです。

来年はそろそろ東京へ引っ越したいなと。いい仕事場があればいいのですが。

2012年12月13日木曜日

Wi"LL" Viに自転車を積むたったひとつのさえたやりかた

この記事はLL/ML Advent Calendarの13日目です。

WiLL Viがかわいすぎて生きるのが楽しい

俺の嫁ことWiLL Vi。みなさんご存知トヨタが誇る唯一の名車でございます。まーこれがものすごくかわいい。篠田麻里子と同じくらいかわいい。無人島になにか一つもっていくならば間違いなくWiLL Viだ。WiLL Viのどこがどれだけかわいいかは、過去のエントリを参照ください。

iMac between the sheets of WiLL Vi

そんなWiLL Vi、ヴィッツがベースなのに意外と荷物が積めるのです。できるだけ一緒にいたいので、積める荷物はできるだけ積んでどこへでも行きたい。27インチiMacは後部座席にギリギリ入るし、ちょっとした工夫で自転車も積める。今日はみなさんに自転車を積む方法をご紹介します。ぜひおためしください。

IMG_0714

1. 輪行袋に詰める

IMG_0715

タイヤを外して、フレームを輪行袋に詰めます。通常の輪行ではタイヤも袋のなかにいれますが、今回は別々にしておきます。フレームのほうはサドルと後輪タイヤ部で直立できる状態にしておきましょう。

2. タイヤはトランクに

IMG_0716

袋に入れなかったタイヤは、トランクにいれましょう。このためにつくったかのように、奥行きはぴったりです。

3. フレームを後部座席の隙間にはめこむ

IMG_0717

ここが重要。後部座席の足元には、左右のシートをわけるように突起が出ています。ここにフレームを、シートポストがまたぐように、サドルと後輪を下にして差し込みます。ペダルは座席の上に浮かぶように調整しておくこと。

これで小さな車体に無事自転車が収まりました。このまま出かける際にはいつも以上に慎重な運転を心がけましょう。

2012年11月25日日曜日

Maker Faire Tokyo 2012に出展してきます

Maker Faire Tokyo 2012

12月1日(土)・2日(日)に台場の科学未来館にて開催されるMaker Faire Tokyo 2012に、Node.jsを利用したハードウェアを持って出展してきます。

WebブラウザとArduinoでつくるオシロスコープ

Arduinoで電圧を読み、Webブラウザに表示させるオシロスコープを展示・実演します。どんな端末でも表示できる強みをアピールしたいところですが、会場内の無線LANは不安定になりそうなのでスタンドアローンでの実演です。

光るネクタイ

LED電飾を埋め込んだネクタイも展示します。ネクタイの裏にいるArduinoとMacをつなぐZigBeeは無線LANと同じ周波数帯なので、こちらも当日うまく動いてくれるか心配なところ。当日の実演はiPhoneシミュレータを使う予定です。

テーブル配置を確認したところ、ぼくの背中側にはガンガンにキラキラしている方がいらっしゃるようです。負けないようにがんばります。

2012年11月24日土曜日

2012年も東京Node学園祭に行ってきたよ

東京Node学園祭、昨年に続いて参加してきました。しかも今年はLT登壇者として。まさかこんな日が来るとはね。

おもしろハードウェアが増えた

手前みそでございますが、自分の興味ある話に注目しちゃいますよね。去年は、Yahoo!の路線バス追跡と、LTのKinectの2本。今年はリクルートさんの脳波でデバイスをコントロールする話を筆頭に、LTがぼくを含めて3本。いずれもNode.jsをハブとしていろいろな機器・機械を制御するという内容でしたが、Node.jsとその周辺機器とのつなぎ方、動作のトリガーがそれぞれ違っているので、そんなこともできるのか!と思ってもらえれば幸いです。

できるだけ話す側にまわったほうがよい

LT枠にて、「光るネクタイをNode.js経由で制御」という発表をしたのですが、これによって「ああ、あいつね」となりいろいろ話しかけてもらえました。外国の方(すみません名前を聞かなかったです)からjohnny-fiveというArduino制御モジュールを教えてもらったりなど、「他人の発表を聞いて学ぶ」だけじゃなく「自分よりも詳しい人からアドバイスをもらえる」という経験ができました。

知識の増え方が加速するので、「来年こそは」と思った方はぜひ。こういった形で循環が進んでいくといいですね。そして、こんな素敵な経験ができたのは運営の皆様のおかげです。ありがとうございます。

2012年11月4日日曜日

iPhoneとArduinoを、XBeeとNode.jsでつなぐ。その2。

東京Node学園祭2012 アドベントカレンダーの21日目ぶんになります。ひとつまえの記事にて、Node.jsとXBee ZBを使ったiPhone〜Arduinoの無線制御について書きました。このときからのアップデートについてまとめます。

XBeeをAPIモードでつかう

前回の内容では、XBeeを透過モードで使っていました。ここをAPIモードにかえています。これによってXBeeボードに搭載されているAD変換のモニタリングなどが使えるようになる一方、きちんとパケットを組み立てなければならなくなっています。透過モードではシリアルポートに値を入れれば、それがネットワーク内のすべてのXBeeにそのままの値で飛ばされるので、周辺のコードを書く分には楽なのです。が、特定のモジュールにだけ飛ばすとか、XBeeボードのちょっと便利な機能を利用できないという弱点があるのです。

XBeeボードの詳細については、オライリー・ジャパンから出版されているXBeeで作るワイヤレスセンサーネットワークを参照ください。

node-xbeeを使う

Node.js〜XBee〜Arduinoとなりますが、Node.jsとXBeeの間はnode-xbeeという便利なモジュールを使っています。基本的にシリアルポートを経由しての通信はかわらないのですが、0x7Eのパケットの節目ごとに切り取ってくれたり、パケットの中身をオブジェクトに分解してくれたり、送信時には逆にパケット長やパリティを付加してくれたりなど、よきに計らってくれる機能を実装しています。

全体の構成

DaiNagoya_v4.010

APIモードのAD変換機能を、基板上の電源電圧の監視につかっています。XBeeでAD変換の後Node.jsに投げて、WebSocket経由でiPhoneへ飛んでいく部分。ここはオシロスコープの経験を流用しています。ソースコードについてはgithubをごらんください。動かしている様子はこちら。

iPhoneとXBee/Arduinoが直接つながっているように見せたくて、Node.jsの動いているMacは画面の外にしてしまいました。LEDが全部点灯すると引き込まれる電流が増えるため、エネループが電圧降下をおこしている様子がiPhone上のグラフから読めると思います。

さいごに

2011年の東京Node学園祭より。Node.jsという名前の由来について、「グラフ理論のノードが由来。今はまだNode.jsをノードとしたノードは少ないけど,これからそれらがどんどん多くなるのを期待している」とRyan氏。いままでつなげることが難しかったデバイス同士を、Node.jsがノードとなってつなげている例と言ってもよいのではないでしょうか。