Arduinoを使用したジョイスティック制御の2.4GHzRCカー

問題を排除するために楽器を試してください





この投稿では、2.4GHz無線通信リンクのジョイスティックを使用して制御できる自動車ロボットを構築します。提案されたプロジェクトは、RCカーとして作成されるだけでなく、監視カメラなどのプロジェクトを車に追加することもできます。



概要概要

プロジェクトは、リモートとレシーバーの2つの部分に分かれています。

すべてのレシーバーコンポーネントを配置する車またはベースは、3輪駆動または4輪駆動にすることができます。



ベースカーの安定性を高めたい場合や、屋外などの凹凸のある路面での運転を希望する場合は、4輪のカーベースをお勧めします。

回転中の機動性が高い3輪駆動のベースカーを使用することもできますが、4輪駆動よりも安定性が低くなる可能性があります。

4輪の車ですが、2モーター駆動も可能です。

リモコンは9Vバッテリーで駆動でき、レシーバーは12V、1.3 AH密閉型鉛蓄電池で駆動できます。これは、12V、7AHバッテリーよりもフットプリントが小さく、このような周産期のアプリケーションにも最適です。

間の2.4GHz通信は、2つのNRF24L01モジュール間の障害物に応じて、30〜100メートルを超える信号を送信できるNRF24L01モジュールを使用して確立されます。

NRF24L01モジュールの図:

3.3Vで動作し、5Vはモジュールを強制終了する可能性があるため、注意が必要であり、SPI通信プロトコルで動作します。ピン構成は上の画像に示されています。

リモート:

リモコンは、Arduino(Arduino nano / pro-miniを推奨)、NRF24L01モジュール、ジョイスティック、バッテリー電源で構成されています。扱いやすい小さなジャンクボックスに詰めてみてください。

リモートの概略図:

NRF24L01モジュールとジョイスティックのピン接続が図に示されています。混乱を感じた場合は、所定のピン接続表を参照してください。

ジョイスティックを前方(UP)、後方(Down)、左右に動かすと、それに応じて車が動きます。

リモートカージョイスティック

すべての配線接続が左側にあることに注意してください。これが基準点であり、ジョイスティックを次の場所に移動できます。 車を動かす

Z軸のジョイスティックを押すと、車のLEDライトを制御できます。

リモート用プログラム:

//--------------Program Developed by R.Girish---------------//
#include
#include
#include
int X_axis = A0
int Y_axis = A1
int Z_axis = 2
int x = 0
int y = 0
int z = 0
RF24 radio(9,10)
const byte address[6] = '00001'
const char var1[32] = 'up'
const char var2[32] = 'down'
const char var3[32] = 'left'
const char var4[32] = 'right'
const char var5[32] = 'ON'
const char var6[32] = 'OFF'
boolean light = true
int thresholdUP = 460
int thresholdDOWN = 560
int thresholdLEFT = 460
int thresholdRIGHT = 560
void setup()
{
radio.begin()
Serial.begin(9600)
pinMode(X_axis, INPUT)
pinMode(Y_axis, INPUT)
pinMode(Z_axis, INPUT)
digitalWrite(Z_axis, HIGH)
radio.openWritingPipe(address)
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.stopListening()
}
void loop()
{
x = analogRead(X_axis)
y = analogRead(Y_axis)
z = digitalRead(Z_axis)
if(y <= thresholdUP)
{
radio.write(&var1, sizeof(var1))
}
if(y >= thresholdDOWN)
{
radio.write(&var2, sizeof(var2))
}
if(x <= thresholdLEFT)
{
radio.write(&var3, sizeof(var3))
}
if(x >= thresholdRIGHT)
{
radio.write(&var4, sizeof(var4))
}
if(z == LOW)
{
if(light == true)
{
radio.write(&var5, sizeof(var5))
light = false
delay(200)
}
else
{
radio.write(&var6, sizeof(var6))
light = true
delay(200)
}
}
}
//--------------Program Developed by R.Girish---------------//

これでリモートは終了です。

それでは、レシーバーを見てみましょう。

レシーバー回路はベースカーに配置されます。この移動ベースにプロジェクトを追加するアイデアがある場合は、スペースが不足しないように、レシーバーとプロジェクトを配置するためのジオメトリを適切に計画してください。

レシーバーは、Arduino、L298NデュアルHブリッジDCモータードライバーモジュール、車の前に配置される白色LED、NRF24L01モジュール、および12V、1.3AHバッテリーで構成されています。モーターはベースカーに付属している場合があります。

受信機の概略図:

配線の混乱を避けるため、ArduinoボードとNRF24L01間の接続は上の図には示されていませんのでご注意ください。リモコンの回路図を参照してください。

Arduinoボードは、5Vレギュレーターを内蔵したL298Nモジュールから電力を供給されます。

白色LEDはヘッドライトとして配置することも、このピンを必要に応じてカスタマイズすることもできます。ジョイスティックを押すと、ピン#7がハイになり、ジョイスティックをもう一度押すとピンがローになります。

受信機の回路図で指定されている左側と右側のモーターに注意してください。

受信者のためのプログラム:

//------------------Program Developed by R.Girish---------------//
#include
#include
#include
RF24 radio(9,10)
const byte address[6] = '00001'
const char var1[32] = 'up'
const char var2[32] = 'down'
const char var3[32] = 'left'
const char var4[32] = 'right'
const char var5[32] = 'ON'
const char var6[32] = 'OFF'
char input[32] = ''
const int output1 = 2
const int output2 = 3
const int output3 = 4
const int output4 = 5
const int light = 7
void setup()
{
Serial.begin(9600)
radio.begin()
radio.openReadingPipe(0, address)
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.startListening()
pinMode(output1, OUTPUT)
pinMode(output2, OUTPUT)
pinMode(output3, OUTPUT)
pinMode(output4, OUTPUT)
pinMode(light, OUTPUT)
digitalWrite(output1, LOW)
digitalWrite(output2, LOW)
digitalWrite(output3, LOW)
digitalWrite(output4, LOW)
digitalWrite(light, LOW)
}
void loop()
{
while(!radio.available())
{
digitalWrite(output1, LOW)
digitalWrite(output2, LOW)
digitalWrite(output3, LOW)
digitalWrite(output4, LOW)
}
radio.read(&input, sizeof(input))
if((strcmp(input,var1) == 0))
{
digitalWrite(output1, HIGH)
digitalWrite(output2, LOW)
digitalWrite(output3, HIGH)
digitalWrite(output4, LOW)
delay(10)
}
else if((strcmp(input,var2) == 0))
{
digitalWrite(output1, LOW)
digitalWrite(output2, HIGH)
digitalWrite(output3, LOW)
digitalWrite(output4, HIGH)
delay(10)
}
else if((strcmp(input,var3) == 0))
{
digitalWrite(output3, HIGH)
digitalWrite(output4, LOW)
delay(10)
}
else if((strcmp(input,var4) == 0))
{
digitalWrite(output1, HIGH)
digitalWrite(output2, LOW)
delay(10)
}
else if((strcmp(input,var5) == 0))
{
digitalWrite(light, HIGH)
}
else if((strcmp(input,var6) == 0))
{
digitalWrite(light, LOW)
}
}
//------------------Program Developed by R.Girish---------------//

これで受信者は終わりです。

プロジェクトの完了後、車が間違った方向に移動した場合は、極性モーターを逆にします。

ベースカーが4モーターホイールドライブの場合は、左側のモーターを同じ極性で並列に接続し、右側のモーターについても同じようにして、L298Nドライバーに接続します。

Arduinoを使用したこのジョイスティック制御の2.4GHz RCカーについて質問がある場合は、コメントセクションで自由に表現してください。すぐに返信が届く場合があります。




前:L298NDCモータードライバーモジュールの説明 次へ:Arduinoを使用したシンプルなデジタル水流量計回路