Mobil Robot Kendali Sensor G Smartphone dengan Arduino dan Bluetooth
Komponen dan Perlengkapan
| Arduino UNO |
1 |
| Modul Bluetooth HC-06 |
1 |
| Chip driver motor L298N |
1 |
| Platform mobil robot apa pun |
1 |
Aplikasi dan Layanan Online
Tentang Proyek Ini
Bangun mobil robot menggunakan platform apa pun yang dibangun pada sirkuit dua roda. Diagram koneksi komponen elektronik ditunjukkan pada gambar di bawah ini. Anda akan membutuhkan papan Arduino UNO atau yang kompatibel, modul Bluetooth HC-05 (06), driver motor, dan baterai daya. Motor gear ditempatkan pada platform dan memaksa roda robot bergerak.
Langkah 1.
Bangun mobil robot menggunakan platform apa pun yang tersedia yang dibangun pada sirkuit dua roda. Diagram koneksi komponen elektronik ditunjukkan pada gambar di bawah ini. Anda akan membutuhkan papan Arduino UNO atau yang kompatibel, modul Bluetooth HC-05 (06), driver motor, dan baterai daya. Motor gear ditempatkan pada platform dan memaksa roda robot bergerak.
Langkah 2.
Kunjungi situs web layanan RemoteXY di https://remotexy.com/en/editor/ dan buat antarmuka pengguna grafis untuk mengontrol robot. Tetapkan fitur kontrol menggunakan sensor G untuk joystick. Contoh antarmuka ada pada gambar di bawah ini. Klik tombol "Dapatkan kode sumber".
Langkah 3.
Unduh kode sumber GUI dan buka di Arduino IDE. Untuk kompilasi Anda memerlukan perpustakaan RemoteXY.h; perpustakaan dapat diunduh dari tautan https://remotexy.com/en/library/ . Anda sudah bisa mencoba memuat kode ke Arduino dan terhubung dengan aplikasi seluler. Namun sementara ini hanya kode kosong, lalu Anda perlu menambahkan fungsionalitas yang diperlukan yang menghubungkan antarmuka grafis dan driver motor.
Langkah 4.
Lalu Anda perlu menambahkan fungsionalitas kontrol robot ke kode sumber menggunakan antarmuka grafis. Untuk tujuan ini, bidang struktur RemoteXY. Struktur RemoteXY menampilkan semua kontrol GUI Anda.
Kode sumber yang dihasilkan ditunjukkan di bawah ini. Anda dapat mengkompilasinya dan mengunggahnya ke Arduino.
Langkah 5.
Instal aplikasi seluler RemoteXY di https://remotexy.com/en/download/ . Saat aplikasi berjalan pada perangkat seluler, tekan tombol koneksi Bluetooth dalam daftar, pilih nama modul Bluetooth Anda, untuk modul HC-05 (06) nama biasanya akan menjadi INVOR atau HC-06.
Itu berfungsi!
Kode
Kontrol mobil robot jarak jauh melalui aplikasi seluler RemoteXY
///////////////////////////////////////////// // RemoteXY include library // ///////////////////////////////////////////// /* RemoteXY select connection mode and include library */ #define REMOTEXY_MODE__SOFTWARESERIAL #include <SoftwareSerial.h> #include <RemoteXY.h> /* RemoteXY connection settings */ #define REMOTEXY_SERIAL_RX 2 #define REMOTEXY_SERIAL_TX 3 #define REMOTEXY_SERIAL_SPEED 9600 /* RemoteXY configurate */ unsigned char RemoteXY_CONF[] = { 3,0,23,0,1,5,5,15,41,11 ,43,43,1,2,0,6,5,27,11,5 ,79,78,0,79,70,70,0 }; /* this structure defines all the variables of your control interface */ struct { /* input variable */ signed char joystick_1_x; /* =-100..100 x-coordinate joystick position */ signed char joystick_1_y; /* =-100..100 y-coordinate joystick position */ unsigned char switch_1; /* =1 if switch ON and =0 if OFF */ /* other variable */ unsigned char connect_flag; /* =1 if wire connected, else =0 */ } RemoteXY; ///////////////////////////////////////////// // END RemoteXY include // ///////////////////////////////////////////// /* defined the right motor control pins */ #define PIN_MOTOR_RIGHT_UP 7 #define PIN_MOTOR_RIGHT_DN 6 #define PIN_MOTOR_RIGHT_SPEED 10 /* defined the left motor control pins */ #define PIN_MOTOR_LEFT_UP 5 #define PIN_MOTOR_LEFT_DN 4 #define PIN_MOTOR_LEFT_SPEED 9 /* defined the LED pin */ #define PIN_LED 13 /* defined two arrays with a list of pins for each motor */ unsigned char RightMotor[3] = {PIN_MOTOR_RIGHT_UP, PIN_MOTOR_RIGHT_DN, PIN_MOTOR_RIGHT_SPEED}; unsigned char LeftMotor[3] = {PIN_MOTOR_LEFT_UP, PIN_MOTOR_LEFT_DN, PIN_MOTOR_LEFT_SPEED}; /* speed control of the motor motor - pointer to an array of pins v - motor speed can be set from -100 to 100 */ void Wheel (unsigned char * motor, int v) { if (v>100) v=100; if (v<-100) v=-100; if (v>0) { digitalWrite(motor[0], HIGH); digitalWrite(motor[1], LOW); analogWrite(motor[2], v*2.55); } else if (v<0) { digitalWrite(motor[0], LOW); digitalWrite(motor[1], HIGH); analogWrite(motor[2], (-v)*2.55); } else { digitalWrite(motor[0], LOW); digitalWrite(motor[1], LOW); analogWrite(motor[2], 0); } } void setup() { /* initialization pins */ pinMode (PIN_MOTOR_RIGHT_UP, OUTPUT); pinMode (PIN_MOTOR_RIGHT_DN, OUTPUT); pinMode (PIN_MOTOR_LEFT_UP, OUTPUT); pinMode (PIN_MOTOR_LEFT_DN, OUTPUT); pinMode (PIN_LED, OUTPUT); /* initialization module RemoteXY */ RemoteXY_Init (); } void loop() { /* event handler module RemoteXY */ RemoteXY_Handler (); /* manage LED pin */ digitalWrite (PIN_LED, (RemoteXY.switch_1==0)?LOW:HIGH); /* manage the right motor */ Wheel (RightMotor, RemoteXY.joystick_1_y - RemoteXY.joystick_1_x); /* manage the left motor */ Wheel (LeftMotor, RemoteXY.joystick_1_y + RemoteXY.joystick_1_x); }
Skematis