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

Mobil RC Terkendali Joystick

Komponen dan persediaan

Arduino UNO
× 1
Perlindungan Host USB Arduino
× 1
Pengontrol Nirkabel XBOX360
× 1
Penerima XBOX360
× 1
1 driver motor L293D
× 1
7812
× 1
78S12
× 1
Beralih
× 1
heatsink
× 1
colokan listrik
× 1
konektor baterai untuk 8 baterai AA 1v5 dengan konektor baterai 9V
× 1

Tentang proyek ini

1. Naik Mobil!

Pertama-tama Anda membutuhkan mobil RC tua. Untungnya saya menemukan truk monster. Ini bisa sangat menarik!

Lepaskan semua elektronik kecuali kabel untuk mengontrol kedua motor.

2. Arduino dan Perisai

Ambil papan Arduino (saya memilih Arduino UNO) dan pasang pelindung host USB di atasnya.

3. Pasang Arduino ke Mobil

Pasang pelindung di atas Arduino UNO dan pelindung Host USB dan kencangkan ke mobil. Saya menggunakan salah satu lubang untuk sirkuit elektronik lama.

4. Buat Sirkuit

Saya membuat milik saya di papan tempat memotong roti, tetapi Anda juga bisa membuatnya di papan perf. Pada dasarnya rangkaian ini terdiri dari dua driver (L293D atau SN754410) dan dua stabilisator tegangan. Stabilizer tegangan digunakan untuk membatasi tegangan dari baterai. Bahkan saya menyarankan Anda untuk menggunakan baterai AA 1.5V 10-12 agar memiliki tegangan maksimum 15-18V yang akan memberi Anda lebih banyak waktu untuk bermain dengan mobil RC. Karena motor membutuhkan arus yang besar, untuk memindahkan mobil dari posisi diam (sekitar 2A), kita memerlukan penstabil tegangan yang kuat seperti 78S12.

Jika Anda ingin informasi lebih lanjut tentang cara kerja driver, lihat di sini!

5. Pasang Sirkuit ke Mobil

Temukan tempat kosong di mobil RC di mana Anda dapat menempatkan sirkuit. Di truk monster yang saya miliki, ada banyak ruang. Setelah diposisikan, sambungkan sirkuit ke dua motor. Terakhir, colokkan penerima nirkabel ke pelindung host USB.

6. Kode

Kode ini didasarkan pada contoh USB Host Library 2.0 yang dihosting di GitHub oleh Kristian Lauszus dari circuits@home

USB_Host_Shield_2.0
/*Contoh sketsa untuk perpustakaan Xbox Wireless Reciver - dikembangkan oleh Kristian LauszusIni mendukung hingga empat pengontrol secara nirkabelUntuk informasi lebih lanjut lihat posting blog:http://blog.tkjelectronics.dk/2012/12 /xbox-360-receiver-added-to-the-usb-host-library/ atau kirimi saya email:[email protected]*/#include // Satisfy IDE, yang hanya perlu dilihat pernyataan include di ino.#ifdef dobogusinclude#include #endifUSB Usb;XBOXRECV Xbox(&Usb);#define motorPinOne 5 //Pin yang dipilih harus memiliki PWM#define motorPinTwo 6 //Pin yang dipilih harus memiliki PWM#define motor2PinOne 4 #define motor2PinTwo 7#define REM 2/* Tentukan kecepatan putaran motor. HARUS antara 0 dan 255. */int pulse =0;int forward =0;int brake_on =0;void setup() { TCCR1B =TCCR1B &0b11111000 | 0x02; Serial.begin(115200); if (Usb.Init() ==-1) { Serial.print(F("\r\nOSC tidak dimulai")); sementara(1); //menghentikan motor_stop(); Tengah(); } Serial.print(F("\r\nPerpustakaan Penerima Nirkabel Xbox Dimulai")); pinMode (motorPinOne, OUTPUT); pinMode (motorPinTwo, OUTPUT); pinMode (motor2PinOne, OUTPUT); pinMode (motor2PinTwo, OUTPUT); pinMode (REM, OUTPUT); digitalWrite (REM, RENDAH);}void loop() { Usb.Tugas(); if(Xbox.XboxReceiverConnected) { for(uint8_t i=0;i<4;i++) { if(Xbox.getButtonPress(L2, i)) { Serial.print("L2:"); Serial.print(Xbox.getButtonPress(L2, i)); pulsa =Xbox.getButtonPress(L2, i); maju =0; searah jarum jam(); } if(Xbox.getButtonPress(R2, i)) { Serial.print("R2:"); Serial.println(Xbox.getButtonPress(R2, i)); pulsa =Xbox.getButtonPress(R2, i); maju =1; berlawanan arah jarum jam(); } if(Xbox.getAnalogHat(LeftHatX, i)> 7500 || Xbox.getAnalogHat(LeftHatX, i) <-7500 || Xbox.getAnalogHat(LeftHatY, i)> 7500 || Xbox.getAnalogHat(LeftHatY, i) <- 7500 || Xbox.getAnalogHat(RightHatX, i)> 7500 || Xbox.getAnalogHat(RightHatX, i) <-7500 || Xbox.getAnalogHat(RightHatY, i)> 7500 || Xbox.getAnalogHat(RightHatY, i) <- 7500) { if(Xbox.getAnalogHat(LeftHatX, i)> 7500) { Serial.print(F("LeftHatX:")); Serial.print(Xbox.getAnalogHat(LeftHatX, i)); Serial.print("\t"); if (Xbox.getAnalogHat(LeftHatX, i)> 26000) turn_right(); pusat lain(); } if (Xbox.getAnalogHat(LeftHatX, i) <-7500) { Serial.print(F("LeftHatX:")); Serial.print(Xbox.getAnalogHat(LeftHatX, i)); Serial.print("\t"); if (Xbox.getAnalogHat(LeftHatX, i) <-26000) turn_left(); pusat lain(); } if(Xbox.getAnalogHat(LeftHatY, i)> 7500 || Xbox.getAnalogHat(LeftHatY, i) <-7500) { Serial.print(F("LeftHatY:")); Serial.print(Xbox.getAnalogHat(LeftHatY, i)); Serial.print("\t"); } if(Xbox.getAnalogHat(RightHatX, i)> 7500) { Serial.print(F("RightHatX:")); Serial.print(Xbox.getAnalogHat(RightHatX, i)); Serial.print("\t"); } if (Xbox.getAnalogHat(RightHatX, i) <-7500) { Serial.print(F("RightHatX:")); Serial.print(Xbox.getAnalogHat(RightHatX, i)); Serial.print("\t"); } if(Xbox.getAnalogHat(RightHatY, i)> 7500 || Xbox.getAnalogHat(RightHatY, i) <-7500) { Serial.print(F("RightHatY:")); Serial.print(Xbox.getAnalogHat(RightHatY, i)); } Serial.println(); } if(Xbox.getButtonClick(UP, i)) { Serial.println(F("Naik")); } if(Xbox.getButtonClick(BAWAH, i)) { Serial.println(F("Turun")); } if(Xbox.getButtonClick(LEFT, i)) { Serial.println(F("Kiri")); } if(Xbox.getButtonClick(KANAN, i)) { Serial.println(F("Kanan")); } if(Xbox.getButtonClick(MULAI, i)) { Serial.println(F("Mulai")); } if(Xbox.getButtonClick(BACK, i)) { Serial.println(F("Kembali")); } if(Xbox.getButtonClick(L3, i)) Serial.println(F("L3")); if(Xbox.getButtonClick(R3, i)) Serial.println(F("R3")); if(Xbox.getButtonClick(L1, i)) Serial.println(F("L1")); if(Xbox.getButtonClick(R1, i)) Serial.println(F("R1")); if(Xbox.getButtonClick(XBOX, i)) { Xbox.setLedMode(ROTATING, i); Serial.println(F("Xbox")); } if(Xbox.getButtonClick(A, i)) { Serial.println(F("A")); } if(Xbox.getButtonClick(B, i)) { Serial.println(F("B")); digitalWrite(REM, TINGGI); rem_on =1; pulsa =100; if (maju) searah jarum jam(); lain berlawanan arah jarum jam(); } if(Xbox.getButtonClick(X, i)) Serial.println(F("X")); if(Xbox.getButtonClick(Y, i)) { Serial.println(F("Y")); motor_stop(); } } } delay(1);}void searah jarum jam(){ Serial.print("Rotasi searah jarum jam dan kecepatan adalah "); Serial.println(pulsa); analogWrite(motorPinOne,pulse); // set kaki 1 dari H-bridge low analogWrite(motorPinTwo,0); if (rem_on) { delay(600); digitalWrite(REM, RENDAH); rem_on =0; pulsa =0; }}void counterClockwise(){ Serial.print("Rotasi berlawanan arah jarum jam dan kecepatan adalah "); Serial.println(pulsa); analogWrite(motorPinOne,0); // set kaki 1 dari H-bridge low analogWrite(motorPinTwo,pulse); if (rem_on) { delay(600); digitalWrite(REM, RENDAH); rem_on =0; pulsa =0; }}batal belok_kiri(){ digitalWrite(motor2PinOne,HIGH); // set kaki 1 dari H-bridge low digitalWrite(motor2PinTwo,LOW);}void turn_right(){ digitalWrite(motor2PinOne,LOW); // set kaki 1 dari H-bridge low digitalWrite(motor2PinTwo,HIGH);}void motors_stop(){ analogWrite(motorPinOne,0); analogWrite(motorPinDua,0); pulsa =0;}pusat kosong(){ digitalWrite(motor2PinOne, RENDAH); digitalWrite(motor2PinTwo, RENDAH);} 

Kode

  • Cuplikan kode #1
Cuplikan kode #1Arduino
/* Contoh sketsa untuk perpustakaan Xbox Wireless Reciver - dikembangkan oleh Kristian Lauszus Mendukung hingga empat pengontrol secara nirkabel Untuk informasi lebih lanjut, lihat posting blog:http://blog.tkjelectronics.dk/2012/12/xbox-360 -receiver-added-to-the-usb-host-library/ atau kirimkan saya email:[email protected] */#include // Satisfy IDE, yang hanya perlu melihat pernyataan include di ino.#ifdef dobogusinclude#include #endifUSB Usb;XBOXRECV Xbox(&Usb);#define motorPinOne 5 //Pin yang dipilih harus memiliki PWM#define motorPinTwo 6 //Pin yang dipilih harus memiliki PWM#define motor2PinOne 4 #define motor2PinTwo 7#define REM 2/* Tentukan kecepatan putaran motor. HARUS antara 0 dan 255. */int pulse =0;int forward =0;int brake_on =0;void setup() { TCCR1B =TCCR1B &0b11111000 | 0x02; Serial.begin(115200); if (Usb.Init() ==-1) { Serial.print(F("\r\nOSC tidak dimulai")); sementara(1); //menghentikan motor_stop(); Tengah(); } Serial.print(F("\r\nPerpustakaan Penerima Nirkabel Xbox Dimulai")); pinMode (motorPinOne, OUTPUT); pinMode (motorPinTwo, OUTPUT); pinMode (motor2PinOne, OUTPUT); pinMode (motor2PinTwo, OUTPUT); pinMode (REM, OUTPUT); digitalWrite (REM, RENDAH);}void loop() { Usb.Tugas(); if(Xbox.XboxReceiverConnected) { for(uint8_t i=0;i<4;i++) { if(Xbox.getButtonPress(L2, i)) { Serial.print("L2:"); Serial.print(Xbox.getButtonPress(L2, i)); pulsa =Xbox.getButtonPress(L2, i); maju =0; searah jarum jam(); } if(Xbox.getButtonPress(R2, i)) { Serial.print("R2:"); Serial.println(Xbox.getButtonPress(R2, i)); pulsa =Xbox.getButtonPress(R2, i); maju =1; berlawanan arah jarum jam(); } if(Xbox.getAnalogHat(LeftHatX, i)> 7500 || Xbox.getAnalogHat(LeftHatX, i) <-7500 || Xbox.getAnalogHat(LeftHatY, i)> 7500 || Xbox.getAnalogHat(LeftHatY, i) <- 7500 || Xbox.getAnalogHat(RightHatX, i)> 7500 || Xbox.getAnalogHat(RightHatX, i) <-7500 || Xbox.getAnalogHat(RightHatY, i)> 7500 || Xbox.getAnalogHat(RightHatY, i) <- 7500) { if(Xbox.getAnalogHat(LeftHatX, i)> 7500) { Serial.print(F("LeftHatX:")); Serial.print(Xbox.getAnalogHat(LeftHatX, i)); Serial.print("\t"); if (Xbox.getAnalogHat(LeftHatX, i)> 26000) turn_right(); pusat lain(); } if (Xbox.getAnalogHat(LeftHatX, i) <-7500) { Serial.print(F("LeftHatX:")); Serial.print(Xbox.getAnalogHat(LeftHatX, i)); Serial.print("\t"); if (Xbox.getAnalogHat(LeftHatX, i) <-26000) turn_left(); pusat lain(); } if(Xbox.getAnalogHat(LeftHatY, i)> 7500 || Xbox.getAnalogHat(LeftHatY, i) <-7500) { Serial.print(F("LeftHatY:")); Serial.print(Xbox.getAnalogHat(LeftHatY, i)); Serial.print("\t"); } if(Xbox.getAnalogHat(RightHatX, i)> 7500) { Serial.print(F("RightHatX:")); Serial.print(Xbox.getAnalogHat(RightHatX, i)); Serial.print("\t"); } if (Xbox.getAnalogHat(RightHatX, i) <-7500) { Serial.print(F("RightHatX:")); Serial.print(Xbox.getAnalogHat(RightHatX, i)); Serial.print("\t"); } if(Xbox.getAnalogHat(RightHatY, i)> 7500 || Xbox.getAnalogHat(RightHatY, i) <-7500) { Serial.print(F("RightHatY:")); Serial.print(Xbox.getAnalogHat(RightHatY, i)); } Serial.println(); } if(Xbox.getButtonClick(UP, i)) { Serial.println(F("Naik")); } if(Xbox.getButtonClick(BAWAH, i)) { Serial.println(F("Turun")); } if(Xbox.getButtonClick(LEFT, i)) { Serial.println(F("Kiri")); } if(Xbox.getButtonClick(KANAN, i)) { Serial.println(F("Kanan")); } if(Xbox.getButtonClick(MULAI, i)) { Serial.println(F("Mulai")); } if(Xbox.getButtonClick(BACK, i)) { Serial.println(F("Kembali")); } if(Xbox.getButtonClick(L3, i)) Serial.println(F("L3")); if(Xbox.getButtonClick(R3, i)) Serial.println(F("R3")); if(Xbox.getButtonClick(L1, i)) Serial.println(F("L1")); if(Xbox.getButtonClick(R1, i)) Serial.println(F("R1")); if(Xbox.getButtonClick(XBOX, i)) { Xbox.setLedMode(ROTATING, i); Serial.println(F("Xbox")); } if(Xbox.getButtonClick(A, i)) { Serial.println(F("A")); } if(Xbox.getButtonClick(B, i)) { Serial.println(F("B")); digitalWrite(REM, TINGGI); rem_on =1; pulsa =100; if (maju) searah jarum jam(); lain berlawanan arah jarum jam(); } if(Xbox.getButtonClick(X, i)) Serial.println(F("X")); if(Xbox.getButtonClick(Y, i)) { Serial.println(F("Y")); motor_stop(); } } } delay(1);}void searah jarum jam(){ Serial.print("Rotasi searah jarum jam dan kecepatan adalah "); Serial.println(pulsa); analogWrite(motorPinOne,pulsa); // set kaki 1 dari H-bridge low analogWrite(motorPinTwo,0); if (rem_on) { delay(600); digitalWrite(REM, RENDAH); rem_on =0; pulsa =0; }}void counterClockwise(){ Serial.print("Rotasi berlawanan arah jarum jam dan kecepatan adalah "); Serial.println(pulsa); analogWrite(motorPinOne,0); // set kaki 1 dari H-bridge low analogWrite(motorPinTwo,pulse); if (rem_on) { delay(600); digitalWrite(REM, RENDAH); rem_on =0; pulsa =0; } }batalkan belokan_kiri(){ digitalWrite(motor2PinOne,HIGH); // set kaki 1 dari H-bridge low digitalWrite(motor2PinTwo,LOW);}void turn_right(){ digitalWrite(motor2PinOne,LOW); // set kaki 1 dari H-bridge low digitalWrite(motor2PinTwo,HIGH);}void motors_stop(){ analogWrite(motorPinOne,0); analogWrite(motorPinDua,0); pulsa =0;}pusat kosong(){ digitalWrite(motor2PinOne, RENDAH); digitalWrite(motor2PinTwo, RENDAH);}
Github
https://github.com/felis/USB_Host_Shield_2.0https://github.com/felis/USB_Host_Shield_2.0

Proses manufaktur

  1. Robot Raspberry Pi dikendalikan melalui Bluetooth
  2. Lampu Meja Interaktif Terkendali Gerakan
  3. LED Terkendali Alexa Melalui Raspberry Pi
  4. Lengan Robot Terkendali Nunchuk (dengan Arduino)
  5. Arduino Nano:Kontrol 2 Motor Stepper Dengan Joystick
  6. Robot yang Dikendalikan Bicara
  7. Penghitung Mobil menggunakan Arduino + Pemrosesan + PHP
  8. Robot Piano Terkendali Arduino:PiBot
  9. Wi-Servo:Servomotor Terkendali Browser Wi-Fi
  10. Arduino Joystick