リモートコントロール(RC)戦車をつくる【XBeeコントロール送信機①】 [RC戦車]
”ドアベルプロジェクト”でXBee間のシリアル通信ができたので、これを応用してXBeeコントロール送信機を作ります。
タミヤの"レスキュークローラー"のリモコンボックスが手元にあった(?)ので、これを改造してArduino Pro Mini + XBeeを組み込んでいきたいと思います。
楽しい工作シリーズ(セット) No.169 レスキュークローラー工作セット (3chリモコン)
"https://www.tamiya.com/japan/products/70169/index.html"
それで、やっぱり最初に考えるのは電源をどうするか?です。
リモコンボックスは単一乾電池を2個直列で使うレイアウトになっていますので、そのままでも3.3VのArduinoとXBeeを動作させることは可能です。
ただもともと有線経由で本体のモータへ電力を供給していたのですが、今回はそこまでのハイパワーは必要ありません。そこで単三のエネループと昇圧回路を組み込んだ電源回路を考えたいと思います。
【消費電流】
Arduino Pro Mini(以下Mini)とXBeeの消費電流を調べます。
①Mini:25mA
→Arduino互換機ボードなのですが、ネットで調べると大体20~22mAとかのようなので、
ちょっと切り上げて25mAくらいとします。
②XBee S2:送信 35mA/45mA(ブーストモード@3.3V DC)
受信 38mA/40mA(ブーストモード@3.3V DC)
→こちらはカタログスペックです。
① + ② = 65mA
【エネループ】
ふだん使いしている割には、あまり気にしたことがなかったですねー。。。
ニッケル水素電池は1.2Vなんですね。単三だと1,900mAhだそうです。
連続送受信するわけではないですが、それでも30時間くらいは持ちそうです。
これならラジコンで遊ぶ分には問題なさそうです。
【昇圧回路】
以前にストロベリーリナックスで購入して、手元にあるDC-DCコンバータを使います。これです↓
MCP1640 2.0V~5.5V可変DC-DCコンバータモジュール
"http://strawberry-linux.com/catalog/items?code=12033"
出力設定3.3V時
入力1.2V→出力100mA
入力2.4V→出力300mA
これを使うとちょうどやりたいことのイメージが。。。こんな感じです↓
タミヤの"レスキュークローラー"のリモコンボックスが手元にあった(?)ので、これを改造してArduino Pro Mini + XBeeを組み込んでいきたいと思います。
楽しい工作シリーズ(セット) No.169 レスキュークローラー工作セット (3chリモコン)
"https://www.tamiya.com/japan/products/70169/index.html"
それで、やっぱり最初に考えるのは電源をどうするか?です。
リモコンボックスは単一乾電池を2個直列で使うレイアウトになっていますので、そのままでも3.3VのArduinoとXBeeを動作させることは可能です。
ただもともと有線経由で本体のモータへ電力を供給していたのですが、今回はそこまでのハイパワーは必要ありません。そこで単三のエネループと昇圧回路を組み込んだ電源回路を考えたいと思います。
【消費電流】
Arduino Pro Mini(以下Mini)とXBeeの消費電流を調べます。
①Mini:25mA
→Arduino互換機ボードなのですが、ネットで調べると大体20~22mAとかのようなので、
ちょっと切り上げて25mAくらいとします。
②XBee S2:送信 35mA/45mA(ブーストモード@3.3V DC)
受信 38mA/40mA(ブーストモード@3.3V DC)
→こちらはカタログスペックです。
① + ② = 65mA
【エネループ】
ふだん使いしている割には、あまり気にしたことがなかったですねー。。。
ニッケル水素電池は1.2Vなんですね。単三だと1,900mAhだそうです。
連続送受信するわけではないですが、それでも30時間くらいは持ちそうです。
これならラジコンで遊ぶ分には問題なさそうです。
【昇圧回路】
以前にストロベリーリナックスで購入して、手元にあるDC-DCコンバータを使います。これです↓
MCP1640 2.0V~5.5V可変DC-DCコンバータモジュール
"http://strawberry-linux.com/catalog/items?code=12033"
出力設定3.3V時
入力1.2V→出力100mA
入力2.4V→出力300mA
これを使うとちょうどやりたいことのイメージが。。。こんな感じです↓
リモートコントロール(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の配線が逆になっていました。正しく配線を直して、再度ボタンを押下すると、今度は無事にブザーが鳴りました。