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

Arduino 4WD RC Car

Komponen dan persediaan

Arduino UNO
× 2
SparkFun Transceiver Breakout - nRF24L01+ (RP-SMA)
× 2
Funduino Joystick Shield V1.A
× 1
SparkFun Dual H-Bridge driver motor L298
× 2
Kit Sasis Mobil Robot Cerdas 4WD
× 1
LED (generik)
× 3
Resistor 221 ohm
× 2
Breadboard (generik)
× 2
Baterai 18650
× 2
Powerbank
× 1
Kabel jumper (generik)
× 1

Alat dan mesin yang diperlukan

Besi solder (generik)

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Cerita

Halo semuanya! Ini adalah project saya selanjutnya - Arduino 4WD RC Car with Joystick Controller atau Betapa mudahnya mengontrol Arduino 4WD Smart Car dengan Joystick analog.

Mobil yang dikendalikan joystick RC ini menggunakan NRF24l01 sebagai pemancar dan penerima. Ini memiliki jangkauan hingga 1 kilometer di ruang terbuka. Juga sangat sederhana dan mudah dibuat.

1. Pengontrol Joystick

Komponen untuk Joystick:

Pelindung joystick berada di atas Arduino Anda dan mengubahnya menjadi pengontrol sederhana. 7 tombol tekan sesaat (4 tombol besar, 2 tombol kecil, dan tombol pilih joystick) dan joystick ibu jari dua sumbu memberikan fungsionalitas Arduino Anda setingkat dengan pengontrol Nintendo lama. Unit ini juga menawarkan antarmuka LCD Nokia 5110 dan nRF24L01.

Fitur:

  • Antarmuka nRF24L01
  • Antarmuka LCD Nokia 5110
  • Antarmuka Bluetooth
  • Antarmuka I2C
  • Kompatibel dengan Arduino
  • Tegangan operasi 3.5V atau 5V

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

Karakteristik yang ditentukan oleh penjual:

  • Band ISM terbuka global 2,4 GHz, penggunaan bebas lisensi
  • kecepatan operasi maksimum 2Mbps, modulasi GFSK yang efisien, transmisi audio, video
  • 125 saluran, untuk memenuhi kebutuhan komunikasi multi-titik dan komunikasi frekuensi-hopping
  • alamat deteksi kesalahan CRC perangkat keras bawaan dan kontrol komunikasi point-to-multipoint
  • tegangan kerja 3.0-3.6V, daya pancar 20dBm (VDD =3.3V)
  • antena 2.4GHz eksternal
  • Pin pitch 2,54mm, sepenuhnya kompatibel tanpa antarmuka modul amplifier, mudah diganti untuk meningkatkan jarak
  • jarak transmisi hingga 1000 m

2. Pengontrol Joystick

Joystick Shield memiliki 4 tombol besar + 2 tombol kecil + tombol pilih joystick dan joystick ibu jari dua sumbu (sumbu X dari 0 hingga 1023, sumbu Y dari 0 hingga 1023) Pelindung berada di atas Arduino Anda dan mengubahnya menjadi pengontrol sederhana. Dalam sketsa saya Button Up adalah untuk Buzzer (klakson), Tombol Kanan - lampu depan (LED + resistor 200 Ohm), Tombol Kiri - lampu belakang (LED + resistor 200 Ohm). Tombol lain tidak digunakan.

Pengujian Joystick:

Status idle:X=499, Y=502, Atas=1, Kanan=1, Bawah=1, Kiri=1

3. Mobil RC Arduino 4WD

Buat sambungan seperti pada gambar wiring diagram di atas.

Catatan:sebelum mengupload kode Anda harus melepaskan kabel jumper dari board Arduino Uno (pin 0, 1).

Bahwa setelah Anda melakukan semua langkah dengan benar Mobil siap digunakan!

Setelah menyalakan pengontrol Arduino Car dan Joystick Anda dapat menggunakan Joystick untuk mengontrol mobil dengan menggerakkan Joystick ke depan dan ke belakang mobil akan bergerak ke arah Maju atau Mundur, dan menggerakkan Joystick ke kiri dan ke kanan akan membuat mobil berbelok ke kiri dan kanan.

Tetap disini!

Kode

  • Mobil_nRF24.ino
  • Joystick_nRF24.ino
Car_nRF24.inoArduino
Kode untuk Arduino RC Car
/* Kode penerima modul JoyStick - KONEKSI:Modul nRF24L01 Lihat:1 - GND 2 - VCC 3.3V !!! NOT 5V 3 - CE ke Arduino pin 6 4 - CSN ke Arduino pin 8 5 - SCK ke Arduino pin 13 6 - MOSI ke Arduino pin 11 7 - MISO ke Arduino pin 12 8 - TIDAK DIGUNAKAN *///-----( Impor perpustakaan yang diperlukan )-----#include #include #include /*-----( Deklarasikan Konstanta dan Nomor Pin )-----* /#define CE_PIN 6#define CSN_PIN 8// CATATAN:"LL" di akhir konstanta adalah "LongLong" typeconst uint64_t pipe =0xE8E8F0F0E1LL; // Tentukan pipa transmisi#define light_Front 18 //LED Front Right pin A4 untuk Arduino Uno#define light_Back 19 //LED Back Right pin A5 untuk Arduino Uno#define horn_Buzz 7 #define ENA_m1 3 // Aktifkan/kecepatan motor Front Right #define ENB_m1 5 // Aktifkan/kecepatan motor Belakang Kanan#define ENA_m2 9 // Aktifkan/kecepatan motor Kiri Depan#define ENB_m2 10 // Aktifkan/kecepatan motor Belakang Kiri#define IN_11 0 // L298N #1 dalam 1 motor Kanan Depan #define IN_12 1 // L298N #1 in 2 motor Kanan Depan#define IN_13 2 // L298N #1 in 3 motor Belakang Kanan#define IN_14 4 // L298N #1 in 4 motor Kanan Belakang#define IN_21 14 // L298N # Motor 2 in 1 Kiri Depan#define IN_22 15 // L298N #2 in 2 motor Kiri Depan#define IN_23 16 // L298N #2 in 3 motor Kiri Belakang#define IN_24 17 // L298N #2 in 4 motor Kiri Belakang/* -----( Deklarasikan objek )-----*/RF24 radio(CE_PIN, CSN_PIN); // Buat Radio/*-----( Deklarasikan Variabel )-----*/int joystick[6]; // 6 elemen larik menahan pembacaan Joysticksint speedRight =0;int speedLeft =0;int xAxis, yAxis;// empat variabel tombol dari joystickint buttonUp;int buttonRight;int buttonDown;int buttonLeft;void setup(){ pinMode(light_Front, KELUARAN); 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);/* Serial.begin(9600); Serial.println("Penerima Nrf24L01 Mulai"); */ radio.begin(); radio.openReadingPipe(1,pipe); radio.startListening();}void loop(){ if ( radio.available() ) { radio.read( joystick, sizeof(joystick) ); xSumbu =joystick[0]; yAxis =joystick[1]; // empat variabel tombol dari array joystick int buttonUp =joystick[2]; int buttonKanan =joystick[3]; int buttonDown =joystick[4]; int buttonLeft =joystick[5]; //Serial.println(); // untuk debugging // Ambil payload data - Kode debug di bawah 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);}// Sumbu Y digunakan untuk meneruskan dan kontrol mundur if (yAxis <470) { // Atur Motor Kanan mundur digitalWrite(IN_11, LOW); digitalWrite(IN_12, TINGGI); digitalWrite(IN_13, TINGGI); digitalWrite(IN_14, RENDAH); // Atur Motor Kiri mundur digitalWrite(IN_21, HIGH); digitalWrite(IN_22, RENDAH); digitalWrite(IN_23, RENDAH); digitalWrite(IN_24, TINGGI); // Ubah pembacaan sumbu Y yang menurun untuk mundur dari 470 ke 0 menjadi nilai 0 hingga 255 untuk sinyal PWM untuk meningkatkan kecepatan motor Kanan =map(yAxis, 470, 0, 0, 255); speedLeft =peta(yAxis, 470, 0, 0, 255); }else if (yAxis> 550) { // Atur Motor Kanan maju digitalWrite(IN_11, HIGH); digitalWrite(IN_12, RENDAH); digitalWrite(IN_13, RENDAH); digitalWrite(IN_14, TINGGI); // Atur Motor Kiri maju digitalWrite(IN_21, LOW); digitalWrite(IN_22, TINGGI); digitalWrite(IN_23, TINGGI); digitalWrite(IN_24, RENDAH); // Ubah pembacaan sumbu Y yang meningkat untuk maju dari 550 ke 1023 menjadi nilai 0 hingga 255 untuk sinyal PWM untuk meningkatkan kecepatan motor Kanan =peta(yAxis, 550, 1023, 0, 255); speedLeft =peta(yAxis, 550, 1023, 0, 255); } // Jika joystick tetap di tengah motor tidak bergerak lagi { speedRight =0; kecepatanKiri =0; }// Sumbu X digunakan untuk kontrol kiri dan kanan if (xAxis <470) { // Mengonversi pembacaan sumbu X yang menurun dari 470 ke 0 menjadi nilai peningkatan 0 hingga 255 int xMapped =map(xAxis, 470, 0, 0 , 255); // Pindah ke kiri - kurangi kecepatan motor kiri, tambah kecepatan motor kanan Kiri =speedLeft - xMapped; speedRight =speedRight + xMapped; // Batasi rentang dari 0 hingga 255 if (speedLeft <0) { speedLeft =0; } if (speedRight> 255) { speedRight =255; } } if (xAxis> 550) { // Mengonversi pembacaan sumbu X yang meningkat dari 550 ke 1023 menjadi nilai 0 hingga 255 int xMapped =map(xAxis, 550, 1023, 0, 255); // Pindah ke kanan - kurangi kecepatan motor kanan, tambah kecepatan motor kiri kiri =speedLeft + xMapped; speedRight =speedRight - xMapped; // Batasi rentang dari 0 hingga 255 if (speedLeft> 255) { speedLeft =255; } if (speedRight <0) { speedRight =0; } } // Mencegah buzzing pada kecepatan rendah (Sesuaikan dengan motor Anda. Motor saya tidak dapat mulai bergerak jika nilai PWM di bawah nilai 70) if (speedLeft <70) { speedLeft =0; } if (speedRight <70) { speedRight =0; } analogWrite(ENA_m1, speedRight); // Mengirim sinyal PWM ke motor A analogWrite(ENB_m1, speedRight); analogWrite(ENA_m2, speedLeft); // Mengirim sinyal PWM ke motor B analogWrite(ENB_m2, speedLeft); /* Serial.print("X ="); Serial.print(xAxis); Serial.print("Y ="); Serial.print(yAxis); Serial.print("Atas ="); Serial.print(joystick[2]); Serial.print("Kanan ="); Serial.print(joystick[3]); Serial.print("Bawah ="); Serial.print(joystick[4]); Serial.print("Kiri ="); Serial.println(joystick[5]); */ } } 
Joystick_nRF24.inoArduino
Kode untuk Kontroler Joystick
/* Kode transceiver modul JoyStick - KONEKSI:Modul nRF24L01 Lihat:1 - GND 2 - VCC 3.3V !!! NOT 5V 3 - CE ke Arduino pin 9 4 - CSN ke Arduino pin 10 5 - SCK ke Arduino pin 13 6 - MOSI ke Arduino pin 11 7 - MISO ke Arduino pin 12 8 - Default Button Pins TIDAK DIGUNAKAN:Atas - pin 2 Kanan - pin 3 Bawah - pin 4 Kiri - pin 5 - Modul Joystick Analog GND ke Arduino GND VCC ke Arduino +5V X Pot ke Arduino A0 Y Pot ke Arduino A1/*-----( Impor perpustakaan yang diperlukan )----- */#include #include "nRF24L01.h"#include "RF24.h"#define CE_PIN 9#define CSN_PIN 10#define xAxis 14 // A0 for Arduino UNO#define yAxis 15 // A1 for Arduino UNO// CATATAN:"LL" di akhir konstanta adalah "LongLong" typeconst uint64_t pipe =0xE8E8F0F0E1LL; // Tentukan pipa transmisi/*-----( Deklarasikan objek )-----*/RF24 radio(CE_PIN, CSN_PIN); // Buat Radio/*-----( Deklarasikan Variabel )-----*/int joystick[6]; // 6 elemen larik menahan pembacaan Joystick dan 4 tombolint buttonUp =2;int buttonRight =3;int buttonDown =4;int buttonLeft =5;void setup() { Serial.begin(9600); radio.mulai(); radio.openWritingPipe(pipa); radio.stopListening(); //deklarasikan pinMode untuk semua tombol dan status awal pinMode(buttonUp,INPUT_PULLUP); pinMode(buttonRight,INPUT_PULLUP); pinMode(buttonDown,INPUT_PULLUP); pinMode(buttonLeft,INPUT_PULLUP); digitalWrite(buttonUp,LOW); digitalWrite(tombolKanan,RENDAH); digitalWrite(tombolBawah,RENDAH); 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) ); penundaan (20); Serial.print("X ="); Serial.print(analogRead(xAxis)); Serial.print("Y ="); Serial.print(analogRead(yAxis)); Serial.print("Atas ="); Serial.print(digitalRead(buttonUp)); Serial.print("Kanan ="); Serial.print(digitalRead(buttonRight)); Serial.print("Bawah ="); Serial.print(digitalRead(buttonDown)); Serial.print("Kiri ="); Serial.println(digitalRead(buttonLeft));}

Skema

rc_car_tp3A7JlpYw.fzz

Proses manufaktur

  1. Arduino Digital Dice
  2. Pengontrol Game Arduino
  3. Mobil RC Terkendali Joystick
  4. Iron Man
  5. Temukan Saya
  6. Arduino 3D-Printed Robotic Arm
  7. Kontrol Humidifier Arduino
  8. Penghitung Mobil menggunakan Arduino + Pemrosesan + PHP
  9. NeoMatrix Arduino Pong
  10. Arduino Joystick