SSブログ

リモートコントロール(RC)戦車をつくる【XBeeコントロール②-2】 [XBee]

②ArduinoとXBee2個
次にArduinoとXBee2個を使って、XBee間で無線通信をします。

試す題材は"XBeeで作るワイヤレスセンサーネットワーク"という本から、"ドアベルプロジェクト"をやってみようと思います。これは、ボタンを押下したら"D"という文字をシリアル通信としてワイヤレスでもう一つのXBeeに送信して、"D"を受信したXBeeからArduinoを経由してブザーを鳴らすものです。
XBeeで作るワイヤレスセンサーネットワーク.jpeg
"https://www.oreilly.co.jp/books/9784873115306/"

【スケッチ】
/*******************************************************************************
ドアベルプログラム(送信側:ボタン)
・『XBeeで作るワイヤレスセンサーネットワーク』80ページの転記

++++++ note ++++++
基本的なドアベル、ボタン側
ベアとして設定済みのXBee無線モジュールと、
受信側にベル側プログラムを必要とする。

*******************************************************************************/
#define VERSION "1.00a0"

int BUTTON = 2;

// 初期化(電源投入/リセット時1回のみ実行):
void setup() {
  pinMode(BUTTON, INPUT);
  Serial.begin(9600);
}
// main loop:
void loop() {
//ボタンが押されたらシリアルポートにへ大文字のDを送信
  if(digitalRead(BUTTON) == HIGH){
    Serial.print('D');
    delay(10);  //シリアルポートを溢れさせないように ※delay():単位ms
  }
}


【配線図】
doorbell_TX_ブレッドボード.jpg

<受信側:ベルの設定>
Arduino Pro Mini(以下Mini)とXBeeを準備します。XBeeは3.3Vで、以前に使っていたMiniは5V版なので、このままでは直接MiniとXBeeを接続することはできません。途中で電圧変換する手もあるのですが配線ごとに行うのは面倒くさいです。
なので、買います、3.3V[exclamation]、1個500円くらいだし。。。これです↓
waves Arduino Pro Mini 互換ボード ATmega328P-AU 3.3V 8MHz
waves Arduino Pro Mini互換(The Simple)_3.3V.jpg
"https://www.amazon.co.jp/gp/product/B07MZSHDCQ/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1"
以前アマゾンで購入した互換機と同じシリーズで、裏面に 「The Simple」と書いてあるものです。

USB-シリアル変換モジュールを使って、Miniにスケッチを書き込みます。
※USB-シリアル変換モジュールのジャンパピンを切り替えて、3.3Vとして使用することに注意してください。
USB-シリアル変換モジュール_電圧切替.jpg

【スケッチ】
/*******************************************************************************
ドアベルプログラム(受信側:ベル)
・『XBeeで作るワイヤレスセンサーネットワーク』81ページの転記
・電子(電磁)ブザーがDC駆動のため、ボタンを押下したらHi、離したらLowとなるように修正

++++++ note ++++++
基本的なドアベル、ベル側
ベアとして設定済みのXBee無線モジュールと、
送信側にボタン側プログラムを必要とする。

*******************************************************************************/
#define VERSION "1.00a0"

int BELL = 5;

// 初期化(電源投入/リセット時1回のみ実行):
void setup() {
  pinMode(BELL, OUTPUT);
  Serial.begin(9600);
}
// main loop:
void loop() {                      //シリアルポートから大文字のDを受信したら、ベルを鳴らす
  if(Serial.available() > 0){      //受信したデータが存在する
    if(Serial.read() == 'D'){      //受信したデータが大文字のDならば
      digitalWrite(BELL, HIGH);    //ベルを鳴らす
      delay(10);                   //※delay():単位ms (★これがないと鳴らない)
    } else {
      digitalWrite(BELL, LOW);     //大文字のD以外ならばベルを止める
    }
  } else {
    digitalWrite(BELL, LOW);      //受信したデータが存在しないならばベルを止める
  }
}


【配線図】
下図のように、ブザーとMiniを接続します。
doorbell_RX_ブレッドボード.jpg
ブザーは自励式の電子ブザーを使用しています。
電子ブザー 16mm HDB06LFPN
電子ブザー 16mm HDB06LFPN.jpg
"http://akizukidenshi.com/catalog/g/gP-00161/"
秋月電子通商のサイトで情報を読むと、電源電圧は4V~8V(推奨電圧6V)とあり3.3Vでは低過ぎるわけですが、手元にあるのがこれしかなかったので”まぁ何とかなるでしょー”と実戦投入です(笑)

【動作確認】
それでは動作確認です。ボタンを押してもブザーは鳴りません。。。
まぁ、一回で上手くいくこともありませんので、気を取り直してチェックしていくことにします。
doorbell_TXボード→UNO2番ピンで、ボタンを押下した時の信号をデジタルオシロで確認すると、信号は出ているようです。その後、TXピンやdoorbell_RXボードのXBee TX, RXピンで同じように信号をチェックしていきます。そうするとdoorbell_RXボード⇔Mini間のTX,RXの配線が逆になっていました。正しく配線を直して、再度ボタンを押下すると、今度は無事にブザーが鳴りました。

doorbell.JPG



profile_picture_40×40.JPG
nice!(0)  コメント(0) 

リモートコントロール(RC)戦車をつくる【XBeeコントロール②-1】 [XBee]

ハードウェアとXTCUの準備ができたので、実際に動かしてみましょう。

【きむ茶工房ガレージハウス】さんの「XBee(無線通信)の実験パート」のページが
分かりやすくまとまっているので、参考にしたいと思います。
"http://zattouka.net/GarageHouse/micon/XBee/XBee1.htm"

①PCとXBee1個
最初はPCとXBee1個を直接接続して、コンソールからATコマンドを入力してみます。1個しかないのでまだ無線ではなく、動作確認ですね。XCTUのシリアルコンソール画面で"ATコマンド入力モード +++"に入ってATコマンドを入力して応答が返ってきます。
XCTU_ATコマンド.jpg
青文字がATコマンド入力で、赤文字がXBeeからの応答です。

ATコマンドのやり取りでは、シリアルコンソールであれば、特にXCTUを使う必要はありません。
TeraTermでもOKです。但し端末の設定は必要となります。
XBee Teraterm設定.jpg
「端末の設定」ダイアログにて、改行コードを"受信:CR+LF"、"送信:CR"に設定し、"ローカルエコー"のボックスをチェックします。これでATコマンドを入力すると先ほどと同じようになりました。

XBee1個ではATコマンドでLEDを点灯・消灯させることができます。
XCTU_ATコマンド_LED.jpg
青文字がATコマンド入力で、赤文字がXBeeからの応答です。

XBee ATコマンド_LED ONOFF制御.jpg

ATコマンドの意味です。
 d15⇒D1:AD1/DIO1の設定 + 5:パラメータ デジタル出力High →LED点灯
 d14⇒D1:AD1/DIO1の設定 + 4:パラメータ デジタル出力Low →LED消灯
"Dの15"とか"Dの14"と読んではいけないのですね。"D1と5"、"D1と4"というのが正しい読み方のようです。
 ac⇒変更の適用
直前のATコマンドの変化をすぐに適用したいとき使います。"atac"とか",ac"は1つの独立したATコマンドとして入力するのか?それとも直前のATコマンドに続いて入力したいか?の表記の違いのようです。



profile_picture_40×40.JPG
nice!(0)  コメント(0) 

リモートコントロール(RC)戦車をつくる【XBeeコントロール①】 [XBee]

これまで遠隔コントロールとして赤外線リモコンを使ってきましたが、一旦、前回までで終了して、次に”XBee"を使ってみたいと思います。
若干”今さら?”感も拭えないところですが、電子工作的には必ず通る基礎スキルのようなものですので、遠隔コントロールの第2弾[exclamation]として、やってみたいと思います。

で、こちら↓です。
XBee_s2c.jpg

わたしが持っているのは”s2"というシリーズですが、少々調べたところ2015年12月~2016年2月くらいに”s2c"という後継シリーズがリリースされています。そのため、今(2019年10月)時点で販売終了品となっています。
本来であれば、販売終了品を積極的に使う理由はなく、新しいタイプに買い直して。。。ということになるのですが、XBee本体の設定ができれば、その後の用途でs2とs2cの差分が問題にはならないため(まぁ、買い直すのももったいないかなーとも思って)、今回は"s2"を利活用することにしました。ちなみにs2とs2cの主な差分は以下のようです。
 ・従来のXBee ZB(S2)と同程度の消費電力で、従来のPROシリーズ(S2B)に近い通信距離
 ・最大5 MbpsのSPI通信ができる
 ・ZigBeeデバイスタイプ(コーディネータやルータなど)のモード設定変更時におけるファーム
  ウェアの書き換えが不要

今さらXBee s2モジュールへの設定ですので、ググっても今の最新版XCTU(Ver.6.x)とs2の組み合わせはなかなか見当たりませんでした。実現までに多少手探りで苦労したところもあったので、一通り今回できた手順をTipsとして列記していきたいと思います。

【XCTUインストール】
Digi社のサイトからXTCUをダウンロードしインストールします。
2019年10月時点でバージョン6.4.4でした。
https://www.digi.com/products/embedded-systems/digi-xbee/digi-xbee-tools/xctu#productsupport-utilities
>XCTU v. 6.4.4 Windows x86/x64

【ハードウェアの準備】
XBee を PC に接続するためには USBアダプタが必要になります。もちろん、それ用のものを購入して使ってもよいのですが、手元にUSB-シリアル変換モジュールがあるので自作します。XBeeはピン間隔が2mmピッチで、そのままではブレッドボードやユニバーサル基板に差すことができないので、変換基板を使います。電源とGND、あとはシリアルデータ(TX, RX)2本を接続して簡単に作りました。

XBee用2.54mmピッチ変換基板
XBee用2.54mmピッチ変換基板.jpg
"http://akizukidenshi.com/catalog/g/gP-05060/"

XBee-USBアダプタボード_r2.jpg

【Xbee s2を接続した直後のXCTU画面】
XCTUとハードウェアの準備ができたら、XBeeをPCと接続します。
USB-シリアル変換モジュールのJ1ピンヘッダでシリアルI/Oの電圧を切り替えています。XBeeは3.3V動作なので1-2ピンをショートして使用します(ちなみに2-3ピンショートは5V)。
(2020.5.31)XBee用2.54mmピッチ変換基板には3.3V電圧レギュレータが実装されています。データシートを見ると概ね5V~12V印加で3.3V出力します。なので、この場合では5V印加が正しいです(2-3ピンをショートして5V印加)。一応、3.3V印加で3.3V出力はしてくれているので、使い方的には少し間違えたかもしれませんが、動作はするってことですね。

XBeeモジュールは認識したようですが”ファームウェアが見つからない”と言われています。
"ファームウェアのライブラリをアップデートするか?"と聞かれているのでYesを押します。
XCTU s2接続初期画面①.jpg
XCTU s2接続初期画面②.jpg
”探してもファームウェアが見つからない”と言われています。

次に手動でファームウェアを探そうと試みますが、これもうまくいきません。
XCTU s2接続初期画面③.jpg

既にs2cシリーズがリリースされてから約3年半くらい経過して、ネットショップでもs2シリーズは販売終了品として流通在庫も無い状況のようなので、”legacyとして扱われていてもおかしくはないのでは?“と考えて、古いバージョンのファームウェアをインストールしてみます。
XCTU s2接続初期画面④.jpg
XCTU s2接続初期画面⑤.jpg
これでうまくいったようです。
Functioinにファームウェアの表示が出てきました。ルータモードのようですね。

【ファームウェアの書き換え】
s2シリーズでは、コーディネータやルータなどのモード設定変更時にはファームウェアを書き換える必要があります。
XBeeネットワークでは1つのコーディネータが必須なので、1個をルータからコーディネータへ変更します。ついでに1個のルータモードのxBeeは、ファームウェアバージョンが最新版ではないのでバージョンアップします。
XCTU s2ファームウェア更新①.jpg

XCTU s2ファームウェア更新②.jpg
XCTU s2ファームウェア更新③.jpg



profile_picture_40×40.JPG
nice!(0)  コメント(0) 

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。