20110612

Archiduino Project - vol.19

建築系におけるArduino利用計画としての「Archiduino Project」。

今回はサーバ側のプログラムについて。

これまでのプロジェクトではあまり触れてこなかったが、ハブノードはセンサノードから受け取ったデータを受信用のサーバに随時送信を行っているわけであり、当然サーバ側にはそのデータを受信するためのプログラムが動いている。私はサーバサイドで動くプログラムについてあまりというか全然知識がないので、とりあえず動けばいいや的に、例によってPerlでCGIを書き、HTTPのGETメソッドで送られてきたデータを受け取る、といういつもの方法を使うことにした。

Pachubeにデータを送るために、受信側のプログラム(サーバサイドで稼働)はeeml形式のXMLデータを書き出すこともやらせている。私の勘違いでなければ、Pachubeのアップデートのタイミングといっしょにeemlの書式(必要なデータ項目)も変わったりするので注意が必要だ。というわけで、サンプルプログラムを以下に掲載する。

Archiduino MBT - vol.1

なお、MBTとはこのArchiduinoプロジェクトが始まるきっかけとなった「Make Buildings Talk」プロジェクトの頭文字をとったものであり、これはその名残である。HTTPdとCGIの動くサーバを用意し、任意の階層に上記CGIを設置する。データファイルなどの保存のために、同じディレクトリにeemlとdataディレクトリを用意しておく(パーミッションは666など)。dataにはその日ごとに記録ファイルが作られ保存される。eemlにはPachubeへのアップロードに対応した(=Pachubeに随時参照させる)eemlファイルが保存されるが、フィードに関する設定情報をeeml直下にあるfeeddata.csvに記録しておく。これは例を参考にして、エクセルなどで適宜項目を作成して欲しい。

ちなみにハードの話であるが、私がサーバとして使用しているのはMac mini(Mac mini Serverではない)である。Mac miniはコンパクト/安い/デザインも良いというわけで、今後もなにかと重宝するのではないかと考えている。今はWindowsをブートキャンプしているけれども、今後はLinuxとかでやれないモノかと夢想中。

Archiduino Project - vol.18

建築系におけるArduino利用計画としての「Archiduino Project」。

今回は新型のハブノードについて。

Arduino DuemilanoveがUNOになるタイミングに合わせてイーサネットシールドもバージョンが上がりました。新しいイーサネットシールド、というよりもUNOではこれまでのハブノードのスケッチが動かない(使用していたライブラリに問題がある?)ので、これを機会にUNO+新イーサネットシールドの構成で再構成してみた。

というわけで構成は至って単純。UNOにイーサをのっけておまけに「もろもろシールド」を乗せただけである。

UNOとXBeeシールドとの相性は相変わらず悪いので、最近はXBeeシールドを使わないことにしている。従って、例によってXBeeはピッチ変換基板を「もろもろシールド」(※センサーやLEDなどをユニバーサル基板にのせたもの)にのせることで実装した。前作でもサーバへのアップロードに失敗すると圧電ブザーを鳴らすことにしているが、これはLEDの点灯だけにしても良いと思っている。ま、そこは趣味の問題。

次にスケッチ。結論から言えば完全移植には一歩至っていない。DNSサーバにドメイン名からIPを逆引きする部分については未実装だが、とりあえず静的IPという前提であれば問題はないと言うことにした(鋭意実装中)。ただし、DHCPによるローカルアドレス取得には対応済み。ちなみにDHCPのライブラリはこちらを使用。また、そのほかのライブラリとしてはPStringXBeeを使用している。

というわけで、バージョンゼロのスケッチを以下に掲載する。

Archiduino HUB - ver. 0

20110607

Archiduino Project - vol.17

建築系におけるArduino利用計画としての「Archiduino Project」。

Archiduino Project - vol.5でもすでに紹介しているが、自作のローコストArduinoを更新したのでレポートしたいと思う。

基本的な構成は変更がなかったという意味で、すでに私の中では完成されたものなのかもしれない。設計思想について以下にまとめてみる。

・名刺サイズのユニバーサル基板上で完結する(横23×縦15グリッドの範囲の中に収める)。
・XBeeの通信機能を持つ(ピッチ変換アダプタを介することは許容する)。
・デジタル/アナログ入力端子については、最大限利用可能な数を確保する(13+6でなくても良いこととする)。
・ATmega328P-PUを使う(小さいのとかはとりあえず考えない)
・スケッチは直接書き込めなくても良い(別途ArduinoなどでアップロードしたICを換装することでもよしとする)
・基本的にはACアダプタ(9V)挿したら延々と回り続ける仕様にしたい。
・なるべく必要最小限の構成を心がける。

写真のものはバージョン3.5である。

既存のバージョン3でも上記の条件をすでに実現していたが、Power LEDはピッチ変換基板のLEDと統合できたり、バイパスコンデンサの位置のせいではんだ付けの労力が大きくなってしまっていたことなどもあり、それらの点を変更したいと考えていた。また、スケッチのアップロードについても、既存の基板上の余剰スペースを活用して対応できるようにしてみたいとも考えていた。これらについて対応したのがバージョン3.5である。導線部分などのアクロバティックな構成を考えるのに苦心した。これはほんとパズルだな。だが楽しい。

3.5を作ってみて、スケッチのアップロードには対応しなくても良いのではないかと思ってしまった。やはり、ICへの書き込みは作業を切り分けて別途実施し、施工した基板にこれをがんがん嵌めて電源通して設置完了!という流れで良いのだとあらためて思い直してしまった。いちいちスケッチを描き直すような使い方を想定しないことが、やはりこのプロジェクトの前提条件であろう。

以下に構成部品を記す。

・秋月電子 低損失三端子レギュレーター5V500mA TA48M05F:AC電源からの入力電圧の調整に必要。5Vを出力。100円。
・秋月電子 低損失三端子レギュレーター3.3V500mA TA48M033F:上記で得られた5Vを更に3.3Vに変換。XBeeチップの作動に使用する。100円。
・秋月電子 水晶発振子 16MHz:16MHzの発振に必要。10個入り500円。
・秋月電子 絶縁型ラジアルリードタイプ積層セラミックコンデンサー 0.1μF 50V:主にバイパスコンデンサとして使用。10個入り100円。
・ATMEL AVRマイコン ATmega328P-PU:Arduinoの心臓部。250円。
・Digiインターナショナル XBeeチップ:出力の弱いもの(短距離型)と強いもの(長距離型)とがあるため、設置状況に応じて選ぶこと。2,730円~
・スイッチサイエンス XBeeピッチ変換基板とソケットのセット:2mmピッチのXBeeチップを2.54mmピッチに変換するためのゲタ。1セット500円というのはちょっと足元を見られている気がするが・・・
・秋月電子 カーボン抵抗(1/4W 4.7Ω):抵抗。100本100円。
・秋月電子 スイッチングACアダプター9V1.3A 内径2.1mm NP-12-US0913:Arduinoの電源として。750円はちょっと高いなぁ。
・秋月電子 ピンソケット(1×14pin):アナログ/デジタルの入出力端子用。50円×2点。
・秋月電子 2.1mm 標準DCジャック 内径2.1mm 外径5.5mm:ACアダプタから電源を受けるためのDCジャック。4個入り250円。
・秋月電子 両面ガラスユニバーサル基板:2.54ミリピッチのユニバーサル基板。60円。