僕はその昔、「エンジニア」なるものになりたいと思っていました。
「なんの?」といわれても、答えは「なにかの」としかいいようのない曖昧な希望だったためか、結局その夢はかなうことはありませんでした。
が!
そんな自分でさえも「いや、まだわからんぞ!」と思わせてくれるものに出会いました。それがオープンソースハードウエア「Arduino(アルドゥイーノ)」です。オープンソースハードウエアとは簡単にいうと仕様がオープンな汎用ハードウエアです。そこにいろいろ部品をくっつけてプログラミングしてやるとオリジナルハードウエアとして動きます。こうしたものにはいくつかありますが、そのうちのひとつが「Arduino」です。
実は自分的には「Gainer(ゲイナー)」というものを東京・初台のICCなどで見て先に知っていたのですが、ICCで売っていたキットが少々高く(9000円ちょい?)手を出せないでいました。でもGainerも実はそんなに高くないみたいですね。
そうしたことがありながらも、先日たまたまArduinoを使ったブロガーイベント「オープンソースハードウェアセミナーVol1 ~今日からはじめるArduino~」(2009年5月11日開催)に参加する機会があり、初体験はArduinoでということになったわけです。
src=http://www.chip1stop.com/img/link_Arduino.gif width="468" height="60"
border="0" alt="Arduinoモニタープログラム参加中" />
href="http://www.chip1stop.com/" title="電子部品・半導体の通販サイト - チップワンストップ">電子部品・半導体の通販サイト – チップワンストップ
そんなArduinoとのファーストコンタクトは以下から。
■Arduinoを動かす!
ブロガーイベントからしばらくたってArduinoが届いた後もしばらくはなかなか時間がとれず、触ることができませんでした。というか、手元にはArduinoの基本モジュールしかなく、光らせて遊ぶLEDすらない状態だったのです。
基本モジュール。USB端子でPCとつなぐ。電源はUSBかDCジャックから。
見るからにイタリア製な模様が。ちょっとかっこいい。
とはいえ、ひとつだけ考えていることがありました。それはスタンドアロンで動くものをつくってみたいということです。Arduinoはプログラムの転送などのためUSBでPCとつながっていて、PCと連動することでいろいろできることも広がるのですが、まずはArduinoだけで何かしたいと思っていました。深い意味はないんですが、そのほうがなんか「デバイスを作った!」という感じがするので(笑)
そして、Arduinoについての記事がたくさん掲載されている「MAKE: Japan: Arduino Archives」を読んでいたら、この週末にテクノロジー系ものづくりイベント「Make: Tokyo Meeting 03」が開催されるということなので、刺激を受けに行ってきました。
○テクノロジー系ものづくりイベント「Make: Tokyo Meeting 03」にいってきました。 – Communication for the rest of us
結果、刺激を受けすぎてArduinoをネットにつなぐためのオプション(「シールド」という)「イーサネットシールド」を思わず購入…。
イーサーネットシールド。本体3,200円に対し、こちらは4,200円。こっちのほうが高いというw
本体と合体。左に見えるのは本体にささったUSB。
というわけで普通はLEDをピカピカ光らせるところから始めるというArduino体験を、いきなりネット接続から始めることに。
■ArduinoからTwitter!
まずはMAKE会場で買った本「Arduinoをはじめよう」を見ながらArduinoのセッティング。この本、本当に初めてこういうハードをいじろうという人にオススメです。リファレンスマニュアルもついているので重宝します。こういうマニュアル類は手元ですぐ見られるのがいいですね。
で、これは難なく終了。
そして「何をしようか」と考え出して思い出したのはブロガーミーティングでサンプルとして紹介していたTwitter活用。最近はトイレを流すとTwitterにつぶやくトイレや、人が飛び込むとつぶやくプール、猫が通るとつぶやくキャットドア、そしてコーヒーができるとつぶやくミクシィ社のコーヒーメーカーなど、リアルとTwitterの連動が結構あるので、ちょうどいいかもと思い、取り組むことにしました。
当然、そのままではTwitterにつぶやくのは難しいので、ちょっと検索して「ArduinoからTwitterにPOSTするライブラリ – Okiraku Programming」からライブラリ(簡単に機能を使うためのプログラム集のようなもの)をダウンロード。説明に従ってインストールしたら、いよいよプログラミングです。
といっても、最初から組むのはつらいので、やっぱりここもサンプルで試します。
■ネット接続のためにルータ設定をちょっといじる
Twitterライブラリに含まれているサンプルファイルをダウンロードして、何箇所かいじります。基本的にはネット接続のための設定と、TwitterでつぶやくためのID/パスワードだけいじればOKです。自分はあとつぶやくテストメッセージを変更してみました。
ネット接続のためには最低限MACアドレスとIPアドレスを設定します。MACアドレスは本当はいろいろ取り決めがあるのですが、ここはそのままでもOKです。問題はIPアドレス。普通はネットにデバイスを接続するとDHCP機能で自動的にIPアドレスが振られるのですが、Arduinoが割り振られたIPアドレスを認識するにはどうすればいいのかわからず。
そこで、ルータをちょっといじって、いつも決まったIPアドレスがふられるようにし、プログラムにはそのIPアドレスをあらかじめ書いておきます。ルータの設定で「DHCP固定IPアドレス配布設定」(RV-230SEの場合)などで特定のMACアドレスのデバイスには固定でIPアドレスが振られるように設定します。方法は個々に異なるので、なんとなくがんばってみてください。
■これでよし!と思ったら・・・
さて、設定をしたらいよいよプログラムをArduinoで走らせてみます。
期待を胸に「Upload to I/O Board」をクリックすると・・・。
あれ?エラーが・・・。
avrdude: stk500_getsync(): not in sync: resp=0×00
avrdude: stk500_disable(): protocol error, expect=0×14, resp=0×51
なんだかよくわかりません。ちょっと検索してみると海外のあるユーザーが同じ状況になったみたいです、が、解決方法が書いてない・・・。
と思ったら別のブログで見つかりました。「Arduinoで3軸加速度センサ – hdk_embeddedの日記」によれば、これはArduinoのボードのタイプを間違って設定している場合などにでるらしい。ArduinoのIDE(プログラムを送り込んだりするツール)の「Tools → Board」から確認すると…確かにちがってる…。自分のは最新のAdruino Duemianove ATMEGA328のはずなのに、前バージョンのATMEGA168として設定されてました。デフォルトがそうらしいので、ツールを入れなおしたりするとまた出るようです。忘れずにチェックを。
■やった!動いた!
そして改めてUploadをクリック。しばし待つ。
やった!動いた!ちょっと感動。
いやー、これだからエンジニアはやめられないね(←違うし、そもそもやってない)
さて、これで何しようかな。
src=http://www.chip1stop.com/img/link_Arduino.gif width="468" height="60"
border="0" alt="Arduinoモニタープログラム参加中" />
href="http://www.chip1stop.com/" title="電子部品・半導体の通販サイト - チップワンストップ">電子部品・半導体の通販サイト – チップワンストップ
[...] [...]