リモートコントロール(RC)戦車をつくる【XBeeコントロール②-2】 [XBee]
②ArduinoとXBee2個
次にArduinoとXBee2個を使って、XBee間で無線通信をします。
試す題材は"XBeeで作るワイヤレスセンサーネットワーク"という本から、"ドアベルプロジェクト"をやってみようと思います。これは、ボタンを押下したら"D"という文字をシリアル通信としてワイヤレスでもう一つのXBeeに送信して、"D"を受信したXBeeからArduinoを経由してブザーを鳴らすものです。
"https://www.oreilly.co.jp/books/9784873115306/"
【スケッチ】
【配線図】
<受信側:ベルの設定>
Arduino Pro Mini(以下Mini)とXBeeを準備します。XBeeは3.3Vで、以前に使っていたMiniは5V版なので、このままでは直接MiniとXBeeを接続することはできません。途中で電圧変換する手もあるのですが配線ごとに行うのは面倒くさいです。
なので、買います、3.3V、1個500円くらいだし。。。これです↓
waves Arduino Pro Mini 互換ボード ATmega328P-AU 3.3V 8MHz
"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として使用することに注意してください。
【スケッチ】
【配線図】
下図のように、ブザーとMiniを接続します。
ブザーは自励式の電子ブザーを使用しています。
電子ブザー 16mm HDB06LFPN
"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の配線が逆になっていました。正しく配線を直して、再度ボタンを押下すると、今度は無事にブザーが鳴りました。
次にArduinoとXBee2個を使って、XBee間で無線通信をします。
試す題材は"XBeeで作るワイヤレスセンサーネットワーク"という本から、"ドアベルプロジェクト"をやってみようと思います。これは、ボタンを押下したら"D"という文字をシリアル通信としてワイヤレスでもう一つのXBeeに送信して、"D"を受信したXBeeからArduinoを経由してブザーを鳴らすものです。
"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 } }
【配線図】
<受信側:ベルの設定>
Arduino Pro Mini(以下Mini)とXBeeを準備します。XBeeは3.3Vで、以前に使っていたMiniは5V版なので、このままでは直接MiniとXBeeを接続することはできません。途中で電圧変換する手もあるのですが配線ごとに行うのは面倒くさいです。
なので、買います、3.3V、1個500円くらいだし。。。これです↓
waves Arduino Pro Mini 互換ボード ATmega328P-AU 3.3V 8MHz
"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として使用することに注意してください。
【スケッチ】
/******************************************************************************* ドアベルプログラム(受信側:ベル) ・『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を接続します。
ブザーは自励式の電子ブザーを使用しています。
電子ブザー 16mm HDB06LFPN
"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の配線が逆になっていました。正しく配線を直して、再度ボタンを押下すると、今度は無事にブザーが鳴りました。
2020-01-04 22:34
nice!(0)
コメント(0)
コメント 0