- ArduinoRCボートに必要なコンポーネント
- 433MHzRF送信機および受信機モジュール
- 433MHZRF送信機
- ArduinoRCボート送信機のブロック図
- Arduino RCリモート(送信機)の回路図
- RCボート送信機回路の構築
- ArduinoRCボートトランスミッターエンクロージャーの構築
- 433Mhzレシーバーモジュール
- ArduinoRCボートレシーバーのブロック図
- ArduinoRCボートレシーバーの回路図
- ArduinoRCボートのレシーバー回路の構築
- RCボートの構築
- Arduinoエアボート用のモーターとプロペラ
- ArduinoRCボートの作業
- RCボートのArduinoプログラミング
このプロジェクトでは、433 MHzRF無線モジュールを使用してワイヤレスで制御できるリモート制御のArduinoエアボートを構築します。独自の433MHz送信機と受信機モジュールを構築することにより、自家製のリモコンを使用してこのボートを制御します。リモート制御デバイスまたは2つのデバイス間の通信の場合、IR、Bluetooth、インターネット、RFなどの多くのオプションがあります。IR通信と比較すると、無線通信には範囲が広いなどのいくつかの利点がありますが、そうではありません。送信機と受信機の間に視線接続が必要です。また、これらのモジュールは2つの通信方法を実行できます。つまり、送信と受信を同時に行うことができます。したがって、この433MHz RFモジュールを使用して、ArduinoRCボートを作成しましょう このチュートリアルでは。
以前、これらの433Mhz RFモジュールを使用して、このRF制御ロボットのようなロボットを制御するため、またはRFを使用して家電製品を制御するホームオートメーションアプリケーション用に、多くのリモート制御プロジェクトを構築しました。RFモジュールの使用とは別に、Bluetooth制御のラズベリーパイカーとDTMF携帯電話制御のArduinoロボットも以前に構築しました。興味があれば、これらのプロジェクトをチェックすることもできます。
ArduinoRCボートに必要なコンポーネント
- 433MHzの送信機と受信機
- Arduino(任意のArduino、prominiを使用しているサイズを縮小するため)
- HT12EおよびHT12D
- 押しボタン-4Nos
- 抵抗器-1メガオーム、47kオーム
- L293dモータードライバー
- 9Vバッテリー(私は7.4ボルトのバッテリーを使用しています)-2Nos
- 7805レギュレーター-2Nos
- DCモーター-2Nos
- モーターリーフまたはプロペラ(自家製のプロペラを使用しています)-2Nos
- .1ufコンデンサ-2Nos
- 一般的なPCB
433MHzRF送信機および受信機モジュール
これらのタイプのRFモジュールは、メーカーの間で非常に人気があります。低コストで接続が簡単なため。これらのモジュールは、あらゆる形態の短距離通信プロジェクトに最適です。これらのモジュールは、ASK(Amplitude Shift Keying)タイプのRFモジュールです。Amplitude-shiftkeying(ASK)は、デジタルデータを搬送波の振幅の変化として表す振幅変調の形式です。 ASKシステムでは、バイナリシンボル1は、固定振幅の搬送波と固定周波数をT秒のビット持続時間で送信することによって表されます。信号値が1の場合、キャリア信号が送信されます。それ以外の場合は、信号値0が送信されます。つまり、ロジックを「ゼロ」で送信する場合、通常は電力を消費しません。この低消費電力により、バッテリー駆動のプロジェクトで非常に役立ちます。
433MHZRF送信機
このタイプのモジュールは非常に小さく、3ピンのVCC、グランド、およびデータが付属しています。他のいくつかのモジュールには、追加のアンテナピンが付属しています。送信機モジュールの動作電圧は3V〜12Vであり、このモジュールには調整可能なコンポーネントはありません。このモジュールの主な利点の1つは、消費電流が少ないことです。ビットゼロを送信するために必要な電流はほぼゼロです。
ArduinoRCボート送信機のブロック図
上のブロック図には、4つのプッシュボタン(コントロールボタン)があります。これらのプッシュボタンは、ボートの方向を制御するためのものです。前方、後方、左、右の4つがあります。プッシュボタンから、ボートを制御するためのロジックを取得しますが、エンコーダーに直接接続できないため、Arduinoを使用しました。ここでArduinoを使用した理由を考えるかもしれませんが、それは単に、押しボタンだけでは達成できない前後の動きのために、エンコーダーの2つの並列データ入力を同時にプルダウンする必要があるためです。次に、エンコーダは、来るパラレルデータをシリアル出力にエンコードします。次に、RF送信機を使用してそのシリアルデータを送信できます。
Arduino RCリモート(送信機)の回路図
上記の回路では、Arduino(D6-D9)の4つのデジタルピンに接続されている4つのプッシュボタンすべての片側と、アースに接続されている他の4つの側すべてを見ることができます。つまり、ボタンを押すと、対応するデジタルピンがロジックローになります。Arduino(D2-D5)の別の4つのデジタルピンに接続されたHT12Eエンコーダーの4つの並列入力。したがって、Arduinoの助けを借りて、エンコーダーの入力を決定できます。
そして、エンコーダーについて話すHT12Eは、12ビットエンコーダーとパラレル入力-シリアル出力エンコーダーです。 12ビットのうち、8ビットは複数の受信機を制御するために利用できるアドレスビットです。ピンA0〜A7はアドレス入力ピンです。このプロジェクトでは、1つの受信機のみを制御しているため、そのアドレスを変更したくないので、すべてのアドレスピンをアースに接続しました。 1つの送信機で異なる受信機を制御したい場合は、ここでディップスイッチを使用できます。 AD8〜AD11は制御ビット入力です。これらの入力は、HT12DデコーダーのD0-D3出力を制御します。通信用の発振器を接続する必要があり、発振器の周波数は3KHzである必要があります5V動作用。その場合、抵抗値は5Vで1.1MΩになります。次に、HT12Eの出力を送信機モジュールに接続しました。すでに述べたように、Arduinoとrfトランスミッターモジュールは両方とも5Vの高電圧で動作し、それを殺すので、これを避けるために、7805の電圧レギュレーターを追加しました。これで、(Vcc)6〜12ボルトの任意のタイプのバッテリーを入力に接続できます。
RCボート送信機回路の構築
すべてのコンポーネントを共通のPCBにはんだ付けしました。私たちはRFプロジェクトに取り組んでいることを忘れないでください。さまざまな種類の干渉が発生する可能性が高いため、すべてのコンポーネントを可能な限り密接に接続してください。Arduinoとトランスミッタモジュールにはメスのピンヘッダーを使用することをお勧めします。また、余分なワイヤーを使用する代わりに、銅パッドにすべてをはんだ付けしてみてください。最後に、総範囲を広げるのに役立つ小さなワイヤーを送信機モジュールに接続します。Arduinoとトランスミッタモジュールを接続する前に、lm7805出力の電圧を再確認してください。
上の画像は完成したRCボート送信機回路の上面図を示し、完成したRCボート送信機回路の底面図を下に示しています。
ArduinoRCボートトランスミッターエンクロージャーの構築
リモートにはまともなボディが必要です。このステップはすべてあなたのアイデアに関するものです。あなたはあなたのアイデアでリモートボディを作成することができます。どうやって作ったのか説明しています。リモコンは4mmのMDFシートを選び、合板、フォームシート、ダンボールも選べます。その中から長さ10cm、幅5cmの2枚をカットします。次に、ボタンの位置をマークしました。方向ボタンを左側に、前方、後方ボタンを右側に配置しました。シートの反対側で、押しボタンを主送信回路に接続しました。通常の押しボタンには、各側に2つのピンがある4つのピンがあることに注意してください。 1つのピンをArduinoに接続し、もう1つのピンをアースに接続します。混乱している場合は、マルチメータで確認するか、データシートを確認してください。
これらすべてを接続した後、2つのMDFボードの間に制御回路を配置し、長いボルトで締めます(必要に応じて下の画像を参照してください)。もう一度、良い体を作ることはあなたのアイデアがすべてです。
433Mhzレシーバーモジュール
このレシーバーも非常に小さく、4ピンのVCC、グランドが付属しており、2つの中央のピンはデータ出力です。このモジュールの動作電圧は5vです。送信機モジュールと同様に、これも低電力モジュールです。一部のモジュールには追加のアンテナピンが付属していますが、私の場合、それはありません。
ArduinoRCボートレシーバーのブロック図
上記のブロック図は、RF受信回路の動作を示しています。まず、RF受信機モジュールを使用して送信信号を受信できます。このレシーバーの出力はシリアルデータです。しかし、このシリアルデータでは何も制御できないため、出力をデコーダーに接続しました。デコーダーは、シリアルデータを元のパラレルデータにデコードします。このセクションでは、マイクロコントローラーは必要ありません。出力をモータードライバーに直接接続できます。
ArduinoRCボートレシーバーの回路図
HT12Dである12ビットのデコーダで直列入力並列出力デコーダ。 HT12Dの入力ピンは、シリアル出力を備えたレシーバーに接続されます。 12ビットのうち8ビット(A0〜A7)はアドレスビットであり、HT12Dは、現在のアドレスと一致する場合にのみ入力をデコードします。 D8〜D11は出力ビットです。この回路を送信機回路に合わせるために、すべてのアドレスピンをグランドに接続しました。モジュールからのデータはシリアルタイプであり、デコーダーはこのシリアルデータを元のパラレルデータにデコードし、D8〜D11を介して出力します。発振周波数を一致させるには、33-56k抵抗を発振器ピンに接続する必要があります。 17番目のピンのLEDは有効な送信を示し、受信機が送信機に接続された後にのみ点灯します。受信機の電圧入力も6〜12ボルトです。
モーターの制御にはL293DICを使用しましたが、サイズと重量を小さくするためにこのICを選択しました。このICは2つのモーターを2方向に制御するのに最適です。L293Dには16個のピンがあり、下の図はピン配置を示しています。
1、9ピンはイネーブルピンです。これを5 vに接続して、モーター1A、2A、3A、および4Aをイネーブルピンにします。ピン1Aがローになり2Aがハイになるとモーターは右に回転し、1Aがローになり2Aがハイになるとモーターは左に回転します。そこで、これらのピンをデコーダーの出力psに接続しました。1Y、2Y、3Y、および4Yはモーター接続ピンです。Vcc2はモーター駆動電圧ピンです。高電圧モーターを使用している場合は、このピンを対応する電圧源に接続します。
ArduinoRCボートのレシーバー回路の構築
受信回路を構築する前に、いくつかの重要なことを覚えておく必要があります。重要なのはサイズと重量です。回路を構築した後、ボートに固定する必要があるからです。したがって、重量が増えると、浮力と動きに影響します。
送信機回路と同じように、すべてのコンポーネントを小さな共通PCBにはんだ付けし、最小限のワイヤを使用するようにしてください。5Vモーターを使用しているので、モータードライバーのピン8を5Vに接続しました。
RCボートの構築
ボートのボディを作るためにさまざまな素材を試しました。そして、サーモコールシートでより良い結果が得られました。そこで、サーモコールでボディを作ることにしました。まず、厚さ3cmのサーモコールピースを取り、レシーバー回路を上に置き、次にボートの形状をサーモコールでマークしてカットしました。だから、これがボートを作る私の方法です、あなたはあなたの考えに従って作ることができます。
Arduinoエアボート用のモーターとプロペラ
もう一度、重量が重要です。したがって、正しいモーターを選択することが重要です。私は、小型で無重量の5ボルト、n20タイプの通常のDCモーターを選択します。RF干渉を回避するには、0.1ufコンデンサをモーター入力に並列に接続する必要があります。
プロペラの場合、プラスチックシートを使ってプロペラを作りました。あなたは店からプロペラを買うことができます、あるいはあなたはあなた自身のものを作ることができます両方ともうまくいくでしょう。プロペラを作るために、最初に小さなプラスチックシートを取り、そこから2つの小さな断片を切り取り、ろうそくの熱を利用してそれらの断片を曲げます。最後に、モーターの中央に小さな穴を開けて、それだけのモーターに固定しました。
ArduinoRCボートの作業
このボートには2つのモーターがあり、左右と呼ぶことができます。モーターが時計回りに動くと(プロペラの位置も異なります)、プロペラは前面から空気を吸い込み、背面に排気します。それは前方への抗力を生成します。
前進運動:左右両方のモーターが時計回りに回転すると、前進運動になります
後方への動き:左右両方のモーターが反時計回りに回転すると(つまり、プロペラが後ろ側から空気を吸い込み、前側に排気する)、後ろ向きに動きます
左の動き:右のモーターだけが回転する場合、つまりボートは右側からドラッグするだけで、ボートは左側に移動します
右の動き:左のモーターだけが回転する場合、つまりボートは左側からドラッグするだけで、ボートは右側に移動します。
モータードライバーの入力をデコーダー(D8-D11)の4つの出力ビットに接続しました。AD8-AD11をリモートのボタンであるアースに接続することで、これら4つの出力を制御できます。たとえば、AD8をアースに接続すると、D8がアクティブになります。したがって、このような方法で、これらの4つの出力を使用して2つのモーターを2方向に制御できます。しかし、1つのボタンだけで2つのモーターを制御することはできません(前後の動きに必要です)。そのため、Arduinoを使用しました。Arduinoの助けを借りて、必要に応じて入力データピンを選択できます。
RCボートのArduinoプログラミング
このボートのプログラミングは、ロジックの切り替えだけが必要なため、非常に簡単です。そして、基本的なArduino機能ですべてを実現できます。このプロジェクトの完全なプログラムは、このページの下部にあります。プログラムの説明は以下の通りです
4つの入力ボタンとデコーダー入力ピンの整数を定義することからプログラムを開始します。
int f_button = 9; int b_button = 8; int l_button = 7; int r_button = 6; int m1 = 2; int m2 = 3; int m3 = 4; int m4 = 5;
セットアップセクションでは、ピンモードを定義しました。つまり、ボタンはデジタルピンに接続されているため、これらのピンは入力として定義する必要があり、デコーダーの入力に対して出力を取得する必要があるため、これらのピンを出力として定義する必要があります。
pinMode(f_button、INPUT_PULLUP); pinMode(b_button、INPUT_PULLUP); pinMode(l_button、INPUT_PULLUP); pinMode(r_button、INPUT_PULLUP); pinMode(m1、OUTPUT); pinMode(m2、OUTPUT); pinMode(m3、OUTPUT); pinMode(m4、OUTPUT);
次にメインループ機能では、Arduinoのdigitalread機能を使用してボタンのステータスを読み取ります。ピンステータスがローになり、対応するピンが押された場合、次のような条件を実行します-
if (digitalRead(f_button)== LOW)
つまり、進むボタンが押されたということです
{ digitalWrite(m1、LOW); digitalWrite(m3、LOW); digitalWrite(m2、HIGH); digitalWrite(m4、HIGH); }
これにより、エンコーダーのm1とm2がプルダウンされ、レシーバー側の両方のモーターがアクティブになります。同様に、後方への移動の場合
{ digitalWrite(m1、HIGH); digitalWrite(m3、HIGH); digitalWrite(m2、LOW); digitalWrite(m4、LOW); }
左移動用
{ digitalWrite(m1、LOW); digitalWrite(m3、HIGH); digitalWrite(m2、HIGH); digitalWrite(m4、HIGH); }
正しい動きのために
{ digitalWrite(m1、HIGH); digitalWrite(m3、LOW); digitalWrite(m2、HIGH); digitalWrite(m4、HIGH); }
コードをコンパイルしたら、Arduinoボードにアップロードします。
トラブルシューティング:ボートを水面に置き、モーターとプロペラの極性を変更しようとしない場合は、ボートが正しく動いているかどうかを確認します。また、体重のバランスをとるようにしてください。
プロジェクトの完全な作業は、このページの下部にリンクされているビデオで見つけることができます。ご不明な点がございましたら、コメント欄にご記入ください。