今更Arduino Duemilanoveを触る

この記事は「Raspberry Pi記事まとめ」に集約しています。

電子工作に使う箱を覗いていたら、初期のArduinoが出てきたので、多少触れるようになっておこうかなぁと思い一緒に見つけたXBeeキットと合わせいじってみることにしました。

Arduinoといえばフィジカルコンピューティングの先駆けとも言われる存在で、今でも(主に互換機が)人気があります。 最近Arduinoチームが内部分裂しているそうで、米ArduinoLLCと伊ArduinoSRLの二社がごちゃごちゃしているみたい。 スイッチサイエンスのサイトを見ると、どれが元祖というか基本セットなのか分からないくらいラインナップがごっちゃになっていることから、オープンソースハードウェアも一筋縄じゃいかんのだなと思った次第です。

今回はそういうことは関係ない時代のArduinoをいじります。 Arduino DuemilanoveとXBeeシールドでXBee通信ができることこまでがゴールとなります。

参考サイト

用意したもの

リンクはスイッチサイエンスのものです。

おお見事にどれも販売終了品。

相互に通信するため、XBeeは二つ必要です。 構成としては以下のようになります。

  • Arduino+XBeeシールド+XBeeS1
  • Mac+XBeeエクスプローラUSB+XBeeS1(コーディネーター)

MacからArduinoに信号を送信する構図です。 送信側はコーディネーターっていうそうです。

そもそもArduinoが動くのか

発掘したArduino Duemilanoveは2009年に出た初期のものです。 長いことほったらかしだったので、念のためLチカくらいできるかどうか試します。

ArduinoにLED直差

LEDをGND、13番端子に挿しておきます。

Arduino開発ツールをインストール

開発ツールはhomebrew Caskから取得できます。

$ brew cask install arduino
$ brew install libftdi 

libftdiはシリアル接続をするのに必要なものです。 開発ツールを起動して、Duemilanove用に準備します。

  • ツール→マイコンボード→Arduino Duemilanove or Decimila
  • ツール→シリアルポート→/dev/cu.usbserial-AU600aeUv

シリアルポートはボードによって名称が違うかもしれません。

スケッチを書く

Arduinoはプログラムコードのことをスケッチと読んでいます。 開発ツールを起動すると新規スケッチも開くので、そこに以下のコードを記入します。

void setup() {
    pinMode(13, OUTPUT);
}

void loop() {
    digitalWrite(13, HIGH); 
    delay(500); 
    digitalWrite(13, LOW); 
    delay(500); 
}

0.5秒毎に13番ポートに出力するという内容です。

コンパイル、書き込み

コンパイルはツールバー左端、書き込みはその隣りにあります。 問題がなければ下のログウィンドウに書き込んだよって出ます。

Arduinoスケッチ

書き込みに成功したら、すぐにLEDが0.5秒毎にチカります。

問題なく光ったので、Arduinoの機能は大丈夫そうですね。

次にXBeeの設定を行います。


XBeeの個別IDを調べる

XBeeの裏面に技適マークやらあるシール部分に、「0013A200」と書かれている下に固有IDが乗っているので記録します。小さく切った付箋にIDを書いて表面に貼っても良いでしょう。

Arduino XBeeシールド

  • Arduino側:0013A200/固有ID8桁
  • Mac側:0013A200/固有ID8桁

2つの個別IDを合わせるとただのMACアドレスですね。

PAN IDを作る

XBee同士で通信させるために、PAN用のIDを考えておきます。 16進数である0001〜FFFEの間で4桁のものを適当に考えます(0000とFFFFは予約済みらしいので使ってはいけません)。 ここでは「4649」にしておきます。

アプリを用意する

XBeeの設定にはXCTUというアプリで操作します。 これはHomebrewにないので、サイトからダウンロードしないといけません。

  • Product Detail – Digi Internationalで「XCTU v.6.3.0, MacOS X」をダウンロード、インストール
    • 登録画面が出るが、ページ下の「No thanks, register later」でダウンロードできる

XCTUでXBeeの設定

Arduino側XBeeの設定

まずArduinoに接続するXBeeを設定します。

ジャンパピン

XBeeシールドはUSB転送とXBee転送の切り替えジャンパピンがあるので、これを「USB」側にしておきます。

MacにArduinoを接続し、XCTUを起動します。

左上の虫眼鏡をクリックし、「usbserial-A600aeUv」を選択しNextをクリック。

Discover radio devices

「Set port parameters」は特にいじらずFinishをクリック。

Set port parameters

XBeeのスキャンをするので、見つけたものにチェックしてAdd selected devicesをクリック。

Discovering radio modules

検出したXBeeをクリックすると、右ペインに設定が表示されるので、以下の項目を変更します。

RadioConfiguration

  • 「ID PAN ID」に「4649」
  • 「DH Destination Address High」に「0013A200」
  • 「DL Destination Address Low」に「********(Mac側XBeeの固有ID)」

入力できたら、「Write」アイコンをクリックして書き込みます。

Mac側XBeeの設定

XBeeエクスプローラに接続したXBeeをMacに接続します。 左上の虫眼鏡をクリックし、「usbserial-A700eDXm」を選択しNextをクリック。 あとの作業は同じですが、「DH Destination〜」のところが違います。

  • 「DH Destination Address High」に「0013A200」
  • 「DL Destination Address Low」に「********(Arduino側XBeeの固有ID)」

これでXBee側の設定は完了です。

シリアル通信の動作確認

ArduinoとMacのXBee両方接続したまま、再度虫眼鏡アイコンをクリックします。

両方のシリアルデバイスを選択肢てXCTUに登録しておきます。

右上のコンソールアイコンをクリックし、両方のXBeeを接続状態にします。

Console

双方の「Send packets」にある「+」をクリックして適当な英数字を入れて「Add packets」をクリック。

Edit selected packet

「Send a single packet」にある「Send selected packet」をクリックすると、Console logに文字が表示されます。 うまく行けば、送信側は青文字で、受信側は赤文字で表示されます。

Console log

無線通信の動作確認

XBeeエクスプローラを外し、Arduinoを抜き差しします。

この2つの作業は、XBeeエクスプローラを挿したままだと何故かスケッチの書き込みができないためです。

Arduino開発ツールを起動し、ファイル→スケッチの例→04.Communication→ASCIITableを開き、Arduinoに書き込みます。

開発ツールの右上にある虫眼鏡アイコンをクリックすると、キャラクタマップがずらっと出てきます。

メニューからシリアルモニターを表示すると何故か動作しません。

Arduinoを外し、XBeeエクスプローラを繋ぎます。

ツール→シリアルポート→/dev/cu.usbserial-A700eDXmに切り替えます。

画面右上の虫眼鏡アイコン(シリアルコンソール)をクリックします。

Serial Console icon

Arduino XBeeシールドのジャンパピンを「XBEE」側にします。

ArduinoをUSBバッテリに繋いでおきます。

バッテリーとArduino

バッテリーの電源を入れてArduinoを起動させると、しばらくしてキャラクタマップがArduinoから転送されてコンソールログに表示されます。起動後のペアリングに多少時間かかるようですね。

Arduinoのリセットボタンを押すと2秒後くらいに再度文字が流れます。

シリアルコンソール

Arduinoの出力結果をXBeeを通じてMacの転送され、シリアルコンソールに結果が表示される、といった流れですね。

なんとかArduinoもXBeeも動いた

これでArduinoとXBeeの動作確認は完了です。 XBeeのペアリング設定はこの過程で保存されているので、あとはプログラム次第といったところでしょうか。 XBeeエクスプローラにはピンヘッダをつけられそうな端子があるので、Raspberry PiからGPIOでXBeeに繋いで操作ってのもできそうです。

今のところ使い道が思い浮かばないけど・・・

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中