Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Mobil RC Arduino 4WD – Daftar Lengkap Komponen & Panduan Pembuatan

Komponen dan Perlengkapan

Alat yang Diperlukan

Aplikasi dan Layanan Online

Tentang Proyek Ini

Cerita

Halo semuanya! Ini adalah proyek selanjutnya saya - Mobil RC Arduino 4WD dengan Pengendali Joystick atau Seberapa Mudahnya Mengontrol Mobil Pintar Arduino 4WD dengan Joystick Analog.

Mobil RC yang dikendalikan joystick ini menggunakan NRF24l01 sebagai pengirim dan penerima. Memiliki jarak hingga 1 kilometer di ruang terbuka. Juga sangat sederhana dan mudah dibuat.

1. Pengontrol Joystick

Komponen untuk Joystick:

Joystick shield ditempatkan di atas Arduino Anda dan mengubahnya menjadi pengontrol sederhana. 7 tombol push momentary (4 tombol besar, 2 tombol kecil, dan tombol select joystick) dan joystick jempol dua sumbu memberikan fungsionalitas Arduino Anda pada tingkat pengontrol Nintendo lama. Unit ini juga menawarkan antarmuka Nokia 5110 LCD dan nRF24L01.

Fitur:

Sebetulnya, ini dilabeli sebagai BTE16-49 - modul komunikasi nirkabel nRF24L01+RFX2401C +PA+LNA dengan casing pelindung antena 2.4GHz 20dbm 1000m.

Karakteristik yang ditentukan oleh penjual:

2. Pengontrol Joystick

Joystick Shield memiliki 4 tombol besar + 2 tombol kecil + tombol select joystick dan joystick jempol dua sumbu (sumbu X dari 0 hingga 1023, sumbu Y dari 0 hingga 1023). Shield ini duduk di atas Arduino Anda dan mengubahnya menjadi pengontrol sederhana. Dalam sketsa saya Tombol Atas untuk Buzzer (claxon), Tombol Kanan - lampu depan (LED + resistor 200 Ohm), Tombol Kiri - lampu belakang (LED + resistor 200 Ohm). Tombol lainnya tidak digunakan.

Pengujian Joystick:

Status idle: X=499, Y=502, Up=1, Right=1, Down=1, Left=1

3. Mobil RC Arduino 4WD

Buat koneksi sesuai dengan diagram kabeling di atas.

Catatan: sebelum mengunggah kode, Anda harus memutuskan kabel jumper dari papan Arduino Uno (pin 0, 1).

Itu saja setelah Anda melakukan semua langkah dengan benar, Mobil siap digunakan!

Setelah menyalakan Mobil Arduino dan Pengontrol Joystick, Anda dapat menggunakan Joystick untuk mengontrol mobil dengan memindahkan Joystick ke depan dan belakang mobil akan bergerak ke arah Depan atau Belakang, dan memindahkan Joystick ke kiri dan kanan akan membuat mobil belok ke kiri dan kanan.

Tetap terhubung!

Kode

Car_nRF24.ino

/* Kode penerima modul JoyStick - KONEKSI: Modul nRF24L01 Lihat: 1 - GND 2 - VCC 3.3V !!! BUKAN 5V 3 - CE ke pin Arduino 6 4 - CSN ke pin Arduino 8 5 - SCK ke pin Arduino 13 6 - MOSI ke pin Arduino 11 7 - MISO ke pin Arduino 12 8 - TIDAK DIGUNAKAN */
//-----( Impor pustaka yang diperlukan )-----
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
/*-----( Deklarasi Konstanta dan Nomor Pin )-----*/
#define CE_PIN 6
#define CSN_PIN 8
const uint64_t pipe = 0xE8E8F0F0E1LL; // Definisikan saluran transmisi
#define light_Front 18 // LED Depan Kanan pin A4 untuk Arduino Uno
#define light_Back 19 // LED Belakang Kanan pin A5 untuk Arduino Uno
#define horn_Buzz 7
#define ENA_m1 3 // Enable/kecepatan motor Depan Kanan
#define ENB_m1 5 // Enable/kecepatan motor Belakang Kanan
#define ENA_m2 9 // Enable/kecepatan motor Depan Kiri
#define ENB_m2 10 // Enable/kecepatan motor Belakang Kiri
#define IN_11 0 // L298N #1 in 1 motor Depan Kanan
#define IN_12 1 // L298N #1 in 2 motor Depan Kanan
#define IN_13 2 // L298N #1 in 3 motor Belakang Kanan
#define IN_14 4 // L298N #1 in 4 motor Belakang Kanan
#define IN_21 14 // L298N #2 in 1 motor Depan Kiri
#define IN_22 15 // L298N #2 in 2 motor Depan Kiri
#define IN_23 16 // L298N #2 in 3 motor Belakang Kiri
#define IN_24 17 // L298N #2 in 4 motor Belakang Kiri
/*-----( Deklarasi objek )-----*/
RF24 radio(CE_PIN, CSN_PIN); // Buat Radio
/*-----( Deklarasi Variabel )-----*/
int joystick[6]; // array 6 elemen yang menyimpan pembacaan Joystick
int speedRight = 0;
int speedLeft = 0;
int xAxis, yAxis;
int buttonUp; int buttonRight; int buttonDown; int buttonLeft;
void setup() {
  pinMode(light_Front, OUTPUT); pinMode(light_Back, OUTPUT); pinMode(horn_Buzz, OUTPUT);
  pinMode(ENA_m1, OUTPUT); pinMode(ENB_m1, OUTPUT); pinMode(ENA_m2, OUTPUT); pinMode(ENB_m2, OUTPUT);
  pinMode(IN_11, OUTPUT); pinMode(IN_12, OUTPUT); pinMode(IN_13, OUTPUT); pinMode(IN_14, OUTPUT);
  pinMode(IN_21, OUTPUT); pinMode(IN_22, OUTPUT); pinMode(IN_23, OUTPUT); pinMode(IN_24, OUTPUT);
  radio.begin();
  radio.openReadingPipe(1,pipe);
  radio.startListening();
}
void loop() {
  if ( radio.available() ) {
    radio.read( joystick, sizeof(joystick) );
    xAxis = joystick[0]; yAxis = joystick[1];
    int buttonUp = joystick[2]; int buttonRight = joystick[3];
    int buttonDown = joystick[4]; int buttonLeft = joystick[5];
    if (buttonUp == HIGH){digitalWrite(horn_Buzz, LOW);} else {digitalWrite(horn_Buzz, HIGH);}
    if (buttonRight == HIGH){digitalWrite(light_Front, LOW);} else {digitalWrite(light_Front, HIGH);}
    if (buttonLeft == HIGH){digitalWrite(light_Back, LOW);} else {digitalWrite(light_Back, HIGH);}
    if (yAxis < 470) {
      digitalWrite(IN_11, LOW); digitalWrite(IN_12, HIGH); digitalWrite(IN_13, HIGH); digitalWrite(IN_14, LOW);
      digitalWrite(IN_21, HIGH); digitalWrite(IN_22, LOW); digitalWrite(IN_23, LOW); digitalWrite(IN_24, HIGH);
      speedRight = map(yAxis, 470, 0, 0, 255); speedLeft = map(yAxis, 470, 0, 0, 255);
    } else if (yAxis > 550) {
      digitalWrite(IN_11, HIGH); digitalWrite(IN_12, LOW); digitalWrite(IN_13, LOW); digitalWrite(IN_14, HIGH);
      digitalWrite(IN_21, LOW); digitalWrite(IN_22, HIGH); digitalWrite(IN_23, HIGH); digitalWrite(IN_24, LOW);
      speedRight = map(yAxis, 550, 1023, 0, 255); speedLeft = map(yAxis, 550, 1023, 0, 255);
    } else { speedRight = 0; speedLeft = 0; }
    if (xAxis < 470) {
      int xMapped = map(xAxis, 470, 0, 0, 255);
      speedLeft = speedLeft - xMapped; speedRight = speedRight + xMapped;
      if (speedLeft < 0) speedLeft = 0; if (speedRight > 255) speedRight = 255;
    }
    if (xAxis > 550) {
      int xMapped = map(xAxis, 550, 1023, 0, 255);
      speedLeft = speedLeft + xMapped; speedRight = speedRight - xMapped;
      if (speedLeft > 255) speedLeft = 255; if (speedRight < 0) speedRight = 0;
    }
    if (speedLeft < 70) speedLeft = 0;
    if (speedRight < 70) speedRight = 0;
    analogWrite(ENA_m1, speedRight); analogWrite(ENB_m1, speedRight);
    analogWrite(ENA_m2, speedLeft); analogWrite(ENB_m2, speedLeft);
  }
}

Joystick_nRF24.ino

/* Kode transceiver modul JoyStick - KONEKSI: Modul nRF24L01 Lihat: 1 - GND 2 - VCC 3.3V !!! BUKAN 5V 3 - CE ke pin Arduino 9 4 - CSN ke pin Arduino 10 5 - SCK ke pin Arduino 13 6 - MOSI ke pin Arduino 11 7 - MISO ke pin Arduino 12 8 - TIDAK DIGUNAKAN Default Button Pins: Up - pin 2 Right - pin 3 Down - pin 4 Left - pin 5 - Analog Joystick module GND ke Arduino GND VCC ke Arduino +5V X Pot ke Arduino A0 Y Pot ke Arduino A1 */
/*-----( Impor pustaka yang diperlukan )-----*/
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#define CE_PIN 9
#define CSN_PIN 10
#define xAxis 14 // A0 untuk Arduino UNO
#define yAxis 15 // A1 untuk Arduino UNO
const uint64_t pipe = 0xE8E8F0F0E1LL; // Definisikan saluran transmisi
/*-----( Deklarasi objek )-----*/
RF24 radio(CE_PIN, CSN_PIN); // Buat Radio
/*-----( Deklarasi Variabel )-----*/
int joystick[6]; // array 6 elemen yang menyimpan pembacaan Joystick dan 4 tombol
int buttonUp = 2; int buttonRight = 3; int buttonDown = 4; int buttonLeft = 5;
void setup() {
  Serial.begin(9600);
  radio.begin(); radio.openWritingPipe(pipe); radio.stopListening();
  pinMode(buttonUp, INPUT_PULLUP); pinMode(buttonRight, INPUT_PULLUP);
  pinMode(buttonDown, INPUT_PULLUP); pinMode(buttonLeft, INPUT_PULLUP);
  digitalWrite(buttonUp, LOW); digitalWrite(buttonRight, LOW);
  digitalWrite(buttonDown, LOW); digitalWrite(buttonLeft, LOW);
}
void loop() {
  joystick[0] = analogRead(xAxis); joystick[1] = analogRead(yAxis);
  joystick[2] = digitalRead(buttonUp); joystick[3] = digitalRead(buttonRight);
  joystick[4] = digitalRead(buttonDown); joystick[5] = digitalRead(buttonLeft);
  radio.write( joystick, sizeof(joystick) );
  delay(20);
  Serial.print("X = "); Serial.print(analogRead(xAxis));
  Serial.print(" Y = "); Serial.print(analogRead(yAxis));
  Serial.print(" Up = "); Serial.print(digitalRead(buttonUp));
  Serial.print(" Right = "); Serial.print(digitalRead(buttonRight));
  Serial.print(" Down = "); Serial.print(digitalRead(buttonDown));
  Serial.print(" Left = "); Serial.println(digitalRead(buttonLeft));
}

Skematik

File: rc_car_tp3A7JlpYw.fzz

Proses manufaktur

  1. Proyek Dadu Digital Arduino: Buat Generator Angka Acak berbasis LCD
  2. Pengontrol USB Game Arduino DIY – Buat Gamepad Tinggi Performa Sendiri
  3. Ubah Mobil RC Lama menjadi Kendaraan Terkontrol Joystick dengan Arduino
  4. Bangun Iron Man Arduino: Komponen, Sensor, dan Panduan Langkah demi Langkah
  5. Find Me: Pelacak Item Cerdas dengan Arduino dan Bluetooth
  6. Buat Lengan Robot Berbasis Arduino dan Cetak 3D – Panduan Langkah demi Langkah
  7. Pengontrol Kelembapan Arduino DIY dengan Relay – Pengaturan Tegangan Tinggi yang Aman
  8. Smart Parking Counter: Pelacakan Kendaraan Real-Time dengan Arduino, Processing, dan PHP
  9. Pong Matriks NeoPixel pada Arduino Nano: Buat Game Pong Neon
  10. Volant Joystick Arduino Kustom untuk Gaming