「ねぎうぉっちをみている人が、画面上のボタンを押すと、ねぎ観察画像内のLEDが光る」さて、では、まずaruduinoのスケッチから。短時間で作成を目的にしているので、簡単にスケッチのサンプルのサーバを使ってみました。IDE0017で、exsample->ethernet->webserverでつかわれているものを改造します。if(mode==2){digitalWrite(YLWLED,HIGH);}else{digitalWrite(REDLED,HIGH);}}サーバのサンプルはアクセスするとアナログインプットの値を調べてその値を返す、というスケッチですが、値を返すかわりに、LEDを点灯する、といものを作成します。LEDの点灯スケッチを盛り込みますが、イーサネットシールドは、デジタルIOピンの11,12,13番を使って通信しているそうなので(建築初米工作ゼミ2008さん)、今回は、7,8,9を使います。それぞれに赤・緑・黄色を割り当てます。ねぎうぉっちのサイトから直接このaruduinoサーバにアクセスするのではなく、いったん間にねぎうぉっちのwebサーバをはさんで、ねぎwebサーバから信号を送るので、ここでは単純にhttpアクセスでLEDのライトが光るようにします。Keep-Aliveみたいなものをやりとりしているそうです。HTTP/1.1というふうになるようです。そこで、GETが含まれている行があると、その行を検索して、RED_ONがあれば、赤LED、GREEN_ONがあれば緑LED、YELLOW_ONがあれば黄色LEDが点灯するようにしました。受け取った文字列を操作するのに、aruduinoのキャラクタ変数の配列だけでは難しいので、「aduinoをはじめよう」のテキストにあるように、TextStringというライブラリを使うことにしました。aruduinoのサイトで検索すると、Stringというのが新しいみたいなので、そっちを使ってみます。ここでサーバが受信したデータを表示してみようと、たまったinStringを出力すると、エラーがおきることに気が付きました。思ってしらべていると、printlnでstringを出力するのはNGで、writeだといいみたいです。このあたり、コーディングの知識がVB止まりな中の人の弱いところかも、です。スケッチができましたので、アップロードしてテストしてみると、うまくLEDが切り替わることがわかりました。それで、今度はIPをグローバルなものに変えて、カメラの前に設置します。ある時は、arduinoサーバにそれぞれのコマンドを置くって色を変えることにしました。直接リンクすると、ページ全体がそっちのページにいってしまうので、xmlHTTPオブジェクトを使ってhttp://xxx.xxx.xxx/GREEN_ONなどにアクセスさせます。}}led.phpは引数からarduinoサーバにリダイレクトされます。(ああ、ここにこれを書くとリダイレクトで転送先を隠したのがバレバレですが)これでコメント欄に「赤」とか「緑」とか「黄」とか入ったコメントを書き込むと、LEDの色がかわります。ねぎうぉっちの画像の切り替えは5分に1回なので、せっかくLEDの色を変えてもそのタイミングまでわからないのではつまらない、と思い、カメラの動体センサをつかって変化があった時は自動で画像を更新するようにしました。昼間LEDの光だけでは、どうもセンサーが働かないこともあるようで、実験するなら夜のほうがうまくいくようです。LEDの切り替えには失敗はないようですが、画像の更新は失敗することもあるので、うまく切り替えが見られない時は別の色で試してみるか、しばらく立って更新画像を見ててください。あと、画像が更新されると同時にサイトにアクセスになるので、ねぎの画像がでないことがあります。その時は、更新ボタンを押してみてください。これもいずれ改善しようと思います。時間帯にもよりますが、黄色は幻想的です。赤はあまりめだちません。昼間はどのLEDもあまりよくみえません。ケータイやインターネットの発達した現代では、自分の思いを遠くに伝えることも容易な時代になりましたが、なにかコミュニケーションできた時の快感というものは人間のDNAに埋め込まれたしくみのひとつなのでしょうか?高校時代に行った懐中電灯の実験も、みごと成功しました。10キロ近く離れていても、懐中電灯がぴかぴかするのは見ることができたのです。5cm程度の懐中電灯の明かりを10キロ離れても確認できるってことにものすごく感動したことを覚えています。つけたり消したりするのをお互いに繰り返した覚えがあります。いう感動をネットで再現できればなーと思っています。Thursdayイーサネットシールドをはじめる休憩時間を有効に活用してarduino(アルデュイーノ)を使っていろいろやってみたりもしましたが、後からネットで探してみると、同じようなことを考える人はたくさんいるのがわかりました。みなさん細かく説明付き動画付きでブログにアップしてくださっているので、中の人がその後を追いかける必要もないほどです。1)テキストのLEDが光サンプルをつくったので次はスイッチで光LEDが次々に変わるスケッチをつくってみたけど、やっぱり先に作っている人がいた。http://shin-ishimaru.cocolog-nifty.com/blog/2009/06/arduinoled-1fc0.html2)arduinoの入力をtwitter(ツイッター)に出してやろうとおもっったら、もう先につくった人がいる、というか、すでにライブラリーにまでなって出回っていた。http://d.hatena.ne.jp/NeoCat/20090505/12414667233)ネギと連動して何かやろうと思ったら、何かの先をいって鉢の水分と連動したつぶやきをぽにょ風にしてツイッターにつぶやくスケッチをつくっている人がいた。http://d.hatena.ne.jp/iwkn/200903224)イーサネットシールドを使う時に固定IPしか使えないのは不便だとおもってDHCPを使えるようにしたいなと思ったら、これもライブラリになっていた。(1と同じ人)http://shin-ishimaru.cocolog-nifty.com/blog/2009/06/arduinoarduinod.htmlまあ、簡単に思いつくことは誰でも思いつくってことですね。植木鉢のしくみも、中の人が考えていた構造とほぼ同じで、もっとスマートなPHPが動くWebサーバが仲介してarduinoはインターフェイスにとどまる、というところまでそっくりでした。いやもう出遅れて、中の人のスキルでできそうなことで、やり残されたことはないのかもしれません。中の人が考えていたことで、まだサイトには載っていないのが、いなかの母のための象印アイポットもどきのシステムです。いわゆる「いなかの母がポットを使うとメールで知らせが入る」ってシステムです。調べてみると初期5000円、月額3000円くらいかかるサービスなので、arduinoとイーサネットシールドとあわせた料金でも充分におつりがくるなーと思いました。これなら連絡先をメールだけでなくツイッターにつぶやいたりもできるなーと思いました。そんな大活躍予定のarduinoですが、イーサネットシールドを乗っけてサンプルを走らせる段階で、大きな疑問にぶつかりました。MACアドレス問題です。イーサネットシールドをスイッチサイエンスで買った方には(どうやらamazonでも)、MACアドレスがついているそうなのですが、ストロベリーリナックスで買った中の人にはMACアドレスがありません。-a」というコマンドでMACアドレスを見られるとのことでしたが、MACアドレスを設定しないとイーサネットシールドは動かないようですし、仮のもので設定してみても、見れるのはその設定した仮のMACアドレスでした。みなさん、どうされているのでしょうか?サンプルにある仮のMACアドレスを使われているのでしょうか?ちょっと心配になってwikiでMACアドレスについて調べてみると、48bitのうち24bit(最初の3オクテット)がベンダー、つぎの8bitが機種、最後の16bitがシリアルなんだそうです。すると、基盤の後ろに印刷されているtinker.itがメーカーだとすると、最初の4オクテットはみんな同じはず、と思ったのですが、どうも、サンプルにあるDE-AD-BE-EF-FE-EDというMACアドレスと、スイッチサイエンスからもらったと言われるMACアドレスが違うので、これもなにがどうやら、という感じです。「死んだ牛の餌」なので、このMACアドレスが正式なものとも思えません。wikiには「先頭オクテットの0x02ビットがグローバルアドレスとローカルアドレスを識別するビットであり、OFFであればグローバルアドレス、ONであればローカルアドレスであることを示している。」とあるので、deadbeeffeedは先頭オクテットがde。この2ビット目はDE=11011110で立っているのでローカルアドレスと判断され、それなりに有効なのかもしれません。MACアドレス問題で力を使い果たしたので、今晩はここまで。Sundayアルデュイーノ動作実験かなりバタバタしていた1週間でしたが、ちょっとづつ合間をぬっては、届いたアルデュイーノをいじってみました。IDE(統合開発環境)のインストール。http://arduino.cc/en/Main/Softwareからダウンロードできます。中の人はウインドウズなので、DownloadのところにあるWindowsをクリックしてダウンロードしました。files¥とか)に入れます。フォルダの中にはarduino.exeがあるので、これのショートカットをデスクトップに貼り付けておきました)解説本には、ここですぐにIDEを起動せずに、arduinoのボードをとりつけましょう、とあるので、起動を我慢して、ボードにUSBケーブルを差し込み、PCにつなぎます。何をするでもなくドライバがインストールされて接続OKになりました。(中の人はXPを使っています)デバイスマネージャで確認すると、COM5になっているようなので、IDEを起動して、接続をCOM5に変更します。これで準備OKのはず。何かやってみようと思い、解説本にあるaruduinoのhelloworldとも言えるLEDの点灯スケッチを作成してみることにしました。(arduinoではプログラムのことをスケッチと呼ぶそうです)を書いてみます。昔、子どものプラレールの客車を改造してライトがつくように改造した時のLEDがどこかに残っていたはずだと、家捜ししてLEDを見つけ出して、ボードに差し込んでみました。IDEにスケッチを書き込んで、その後、アイコンの中にあるアップロードでボードに転送します。お!うまく点灯したぞ。スケッチをちょっと改造して、0.1秒づつ3回光るプロシージャーを作成して、それを1秒ごとに呼び出すように変更してみました。おお、3回光っているか見分けがつかない速さですが、うまく動作しているようです。この段階では、arduinoボードは、USBから電源の供給を受けています。そこで、ACDCにつないで、単独で動作するかテストしてみることにしました。ボードには説明書はないので解説本の中を探して電源は、9V・センタープラスと判明。事務所にころがっているAC電源の山から9Vセンタープラスを探して発見。おお、ちゃんと光った。電源を切ってもスケッチは維持されていることも確認できました。これが組み込みってやつかーと、ちょっぴり感動を覚えたのでした。Wednesdayアルデュイーノがやってきたお盆休み明けに注文していたアルデュイーノがやってきました。アルデュイーノその後)一応、買ったところを書いておくと、ストロベリー・リナックスというところです。注文して翌々日の朝に届きました。夜中に注文したので実質翌日についたようなもの。アルデュイーノは、簡単なことなら、単独で動作できるちっちゃいパソコンのようなものです。おまけに、イーサネットシールドというものを使うと(シールドってのはアルデュイーノの機能拡張パーツ)、ネットにも接続できるのです。なんだか夢が広がるボードですが、本体は1枚3200円というお値段。アルデュイーノでやってみたいこと・ねぎにネットから水やりをする・いなかの母がドアをあけるとツイッターにつぶやくシステムなんとも宝くじのようの夢ばかり広がります。その宝くじの券がこれ。本体とイーサネットシールド、ブレットボードにケーブルを買いました。これだけだと8050円+送料・代引き手数料700円で、8750円です。開封してみると、こんな感じ。さあ、バリバリなにかつくってみたい!と思うのですが、実は中の人は今週2つも仕事の締め切りを抱えてしまって、ちょっと時間の余裕が。いうことで、実際の開発&実験はまたの機会です。MondayArduinoその後ねぎのフィードバックをPCを介さずにサーバに送ることを元に探していて見つけたArduino(アルデュイーノ)ですが、とりあえず本を買ってみようということで「Arduinoをはじめよう」という本を買ってみました。本屋さんで探すと、組み込み関連の書籍のところでは、今、「Android」が幅をきかせていて、ぱっと見、アルデュイーノとアンドロイドがよく似ているので探すのにちょっとだけ困りました。あー、Amazonで買えば良かった、と思いながらも、実は新刊ということで、エンドの部分にどうどうと平積みされているのを発見したのでした。読んでみると、なかなかおもしろい。発想的には、ハード的な試行錯誤をもっと簡単にできるようにしましょう的コンセプトでつくられているようで、最初の数ページを読んだだけで、あっという間にアルデュイーノの虜になってしまいました。これは、スゴイぞ!!。性能を見て、あれこれ妄想が広がるデバイスってやつです。余裕ができたら、さっそく買って、ネギのためのデバイスを何かつくってみよう。思っていると、技術屋仲間が「あるまじろ」というのを教えてくれました。https://www.zaikostore.com/zaikostore/jsp/special/armadillo/productList.jspこれがまた面白い。小さなケースにlinuxサーバをまるごとおさめたようなもの。お値段はアルデュイーノ(4000円〜)に比べると少々高めですが(2〜3万円)、なにかと実装の手間を考えるとこっちのほうが安くつく場合もあるのでは、と思いました。SaturdayArduino(アルデュイーノ)ねぎうぉっち(http://negiwatch.com)に、ブラインドの開け閉めや水やりの報告も乗せるようにしたのはいいのだけど、作業のたびにパソコンに座って「作業しました」ボタンを押さないといけないのは少々いただけない。これをもっと簡単なスイッチにできないかなーと思って調べ始めた。(つまりブラウザを開いてポチするんじゃなくて、何かこう物理スイッチをポチっとな、できるようなイメージ)調べた調べた。最初は組み込みOS調べて、組込用のブラウザ、それからそれから。こんなの(http://www.i-dt.jp/product_info.php/products_id/187)とか使えそうと思ったり、組み込みサーバ(これは4300円でサーバ機能なので何かに使えそう)を見つけたり。H8のマイコンのプログラミングに手をだしてみようかと関連書籍や図書館の本を探したり(もちろんネット検索だけど)したのだけど、でもやっぱり思っているものとチョト違う。簡単にプログラミングできるネットワークデバイスがあるはずだ。(しかも安い)そしていきついたのが、お手頃価格で、しかも思ったとおりのシステム。「Arduino」だ。アルデュイーノと発音するらしい。http://strawberry-linux.com/catalog/?c=arduinoどうもネットワークデバイスを自作できるらしい。ねぎうぉっちのあれこれを考えて検索したのだけど、もちろんこれは仕事でやってるASPやサーバサービスなどにも組み込める感じでとてもいい。上手につくればデバイスの原価は1万円を割りそうだ。これを使えば、あんなことやこんなことが・・・・。考えてみるとそんなに使い道はないか。常時起動しているPCなくても簡単な送信や受信ができるなら、応用はいくらでもききそうだ。受注伝票があるとパトライトが回転するシステムをつくったことがあるが、そんなのとか、出先からの電源ON/OFFシステムとか。いやまあ、お金を払えばそういうのありそうなんだけど、カスタマイズして自分でつくるシステムに組み込みたいの。落ち着いたら勉強してみよう。たまった仕事とねぎうぉっちの画像をつくらなくちゃ。