Arduino를 사용하여 조이스틱으로 제어되는 2.4GHz RC 자동차

문제를 제거하기 위해 도구를 사용해보십시오





이 글에서는 2.4GHz 무선 통신 링크에서 조이스틱을 사용하여 제어 할 수있는 자동차 로봇을 구성 할 것입니다. 제안 된 프로젝트는 RC 카로 만 제작 된 것이 아니라 감시 카메라 등의 프로젝트를 차량에 추가 할 수 있습니다.



개요

프로젝트는 리모컨과 수신기의 두 부분으로 나뉩니다.

우리가 모든 수신기 구성 요소를 배치하는 자동차 또는베이스는 3 륜 구동 또는 4 륜 구동 일 수 있습니다.



베이스 카의 안정성을 높이고 싶거나 실외와 같이 고르지 않은 표면에서 차량을 운전하려면 4 개의 바퀴가있는 카베이스를 권장합니다.

회전하는 동안 더 큰 이동성을 제공하는 3 륜 구동 기본 차량을 사용할 수도 있지만 4 륜 구동보다 안정성이 떨어질 수 있습니다.

바퀴가 4 개이지만 모터가 2 개인 자동차도 가능합니다.

리모컨은 9V 배터리로 전원을 공급받을 수 있고 수신기는 12V, 1.3AH 밀폐형 납축 배터리로 전원을 공급할 수 있습니다.이 배터리는 12V, 7AH 배터리보다 설치 공간이 작으며 이러한 주변 애플리케이션에 이상적입니다.

2.4GHz 통신은 두 개의 NRF24L01 모듈 사이의 장애물에 따라 30 ~ 100 미터 이상의 신호를 전송할 수있는 NRF24L01 모듈을 사용하여 설정됩니다.

NRF24L01 모듈 그림 :

3.3V에서 작동하고 5V에서 모듈을 죽일 수 있으므로주의해야하며 SPI 통신 프로토콜에서 작동합니다. 핀 구성은 위 이미지에서 제공됩니다.

원격:

리모컨은 Arduino (Arduino nano / pro-mini 권장), NRF24L01 모듈, 조이스틱 및 배터리 전원 공급 장치로 구성됩니다. 취급하기 쉬운 작은 쓰레기통에 포장하십시오.

원격 회로도 :

NRF24L01 모듈과 조이스틱의 핀 연결은 다이어그램에 제공되어 있습니다. 혼란이 느껴지면 주어진 핀 연결 테이블을 참조하십시오.

조이스틱을 앞으로 (UP), 후진 (아래), 좌우로 움직이면 차가 그에 따라 움직입니다.

원격 자동차 조이스틱

모든 와이어 연결은 왼쪽에 있으며 이것이 기준점이며 이제 조이스틱을 차를 옮기다 .

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 자동차에 대해 질문이 있으시면 언제든지 의견란에 표현해 주시면 빠른 답변을 받으실 수 있습니다.




이전 : L298N DC 모터 드라이버 모듈 설명 다음 : Arduino를 사용한 간단한 디지털 유량계 회로