Arduino+XBeeでつくるワイヤレスオナホールネットワーク (1)

 以下は、海外のテクノロジー系DIY工作専門誌である、Make:Onaholeの記事"Building Wireless Onahole Networks"を鷺ノ宮わっふる(@ourfool)が翻訳したものである。日本の事情を考慮し一部ローカライズを行っているものの、基本的には原文に忠実な訳を心掛けている。日本語版の権利については同誌の出版社が保有している。本記事の内容については最大限の努力をもって正確を期しているが、本記事の内容に基づく運用によるいかなる倫理・道徳的な責任も負いかねるので、ご了承願いたい。

 

はじめに

 この記事は、USBオナホールを使ったネットワークの構築についての基本的な入門編だ。USBオナホールの活用やハッキングに興味のある人は、そのための第一歩として、この記事を活用してほしい。

 USBオナホールによって、社会は圧倒的な変化を遂げた。かつて、自分の目の前にしかなかったオナホールは世界とつながり、ユーザはネットワークを通じ、世界中のどこへでも進出できるようになった。ユーザ同士は興味深い情報を見せびらかしたり、共有したり、あるいは他のプロジェクトに自分のデータを役立ててもらうこともできるようになった。このようなツールと出会えたことは驚くべき幸運である。

 この記事は、ホビイスト、学生、Maker、ハードウェアハッカーなど、幅広い人々を対象としている(ただし全員男性でなければならないが)。ここではUSBオナホールのほかに、Arduinoや、Processing、Zigbeeといった親しみやすい環境を使ってサンプルを製作する。これらは非常に人気のあるプロトタイピングツールで、使いやすく、柔軟性に富んでいる(これらは同時にオナホールにも顕著な特長だ)。そのため、読者が若い発明家であっても、経験豊富なエンジニアであっても、プロジェクトを効率的に進めることができる。筆者としては、この記事によって読者の人生がさらに豊かなものになる手助けができることを願っている。

 

1章:動かしてみる

  さっそく仕事にとりかかろう。この章では、ArduinoとUSBオナホールを接続し、USBオナホールのスイッチに応じてLEDを点灯させる。これから、実際につかうデバイスについて説明しよう。

 

・USBオナホール

 USBオナホールはUSBケーブルでほかのデバイスとつながることができるまったく新しいオナホールだ。専用のソフトを使えば、非常にわくわくするような行為を楽しむことができる。

 いまもっとも簡単に手に入るものは、TechArtsのUSBオナホールだ。

 あるいは、このあと発売されるKISSのUSBオナホールも魅力的な選択肢となるだろう。

  この記事では、TechArtsのUSBオナホールにだけにしぼって説明をおこなう。

 

Arduino

 Arduinoは、自作愛好家に人気のあるオープンソースのマイクロコントローラシステムだ。学びやすく、使いやすく、そして(オナホールと同様に)柔軟性に富んでいる。

Arduinoをはじめようキット

Arduinoをはじめようキット

 

 

・USBホストシールド

 USBホストシールドは、USBオナホールArduinoの橋渡しのために必要だ。

USBホストシールド 2.0 for Arduino (compatible with Google Android ADK)
 

 

 さあはじめよう。まずは、USBオナホールArduino、USBホストシールド、LEDを手に入れよう。つぎに、USBホストシールドを動かすためのサンプルプログラムを用意しよう。プログラムとそのインストール方法は

https://www.circuitsathome.com/arduino_usb_host_shield_projects

から入手できる。

 USBオナホールは、HIDという規格に基づいている。サンプルプログラムを入手したら、サンプルのうちUSBHIDJoystickをひらいてみよう。そして、USBHIDJoystickのsetup()に以下のような修正をおこなおう。

void setup() {
        Serial.begin(115200);
        pinMode(6, OUTPUT);

 

また、hidjoystickrptparser.cppのうち、JoystickEvents::OnButtonUp()とJoystickEvents::OnButtonDn()を以下のように変更しよう。


void JoystickEvents::OnButtonUp(uint8_t but_id) {
        if (but_id == 1) {
          Serial.print('B');
          digitalWrite(6, LOW);
        } else {
          Serial.print('D');
        }
}

void JoystickEvents::OnButtonDn(uint8_t but_id) {
        if (but_id == 1) {
          Serial.print('A');
          digitalWrite(6, HIGH);
        } else {
          Serial.print('C');        
      }
}

 

 これだけで、準備はととのった。あとはArduinoとUSBホストシールドをつなぎ、6番のPinとGNDのPinの間にLEDをとりつけよう。そのあとで、パソコンからArduinoにプログラムを書き込もう。

 ついに待ちにまった瞬間がやってきた。すべて順調なら、USBオナホールにかたいものを挿入するたび、LEDが点灯するはずだ。ぜひ試してみてほしい。

f:id:ourfool:20150601002324j:plain

f:id:ourfool:20150601002326j:plain

 

トラブルシューティング

 最初からLEDが点灯したら、それは素晴らしいことだ。しかし、何回かやり直さなければならないこともある。うまくいかなかったときは、単純なところからはじめてみよう。ArduinoやUSBオナホールが正しく接続されているか、LEDの向きは間違っていないか、まずは確かめてほしい。

 つぎに、Arduinoのシリアルモニタを確かめてみよう。今回のサンプルでは、オナホールの2つのボタン入力に応じてA, B, C, Dの文字が表示されるはずだ。これがうまくいっていなかったら、その場合に応じて、間違っている部分を探してみよう。

 また、ネット上にはすばらしい情報源やフォーラムがあり、助けを求めたり、参考にすることができる。

 

成功!

 実際にLEDを点灯させることができたら、盛大にお祝いをしよう。アニメイションを見たり、サイリウムを振ったり、USBオナホールを実際に使ってみよう。あるいはこれら3つのことを同時にやるのもよいだろう。なにしろ最初の大きな一歩を踏み出したのだから!