Senin, 14 November 2016

Cara Membuat sebuah Robot Sederhana Arduino

Apakah Anda ingin mempelajari cara membuat robot Anda sendiri? Ada banyak jenis robot yang berbeda, yang dapat Anda buat sendiri. Kebanyakan orang ingin melihat robot melakukan pekerjaan mudah yaitu bergerak dari titik A ke B. Anda dapat membuat robot sepenuhnya dari komponen-komponen analog atau membeli starter kit. Membuat robot Anda sendiri adalah cara yang bagus untuk belajar elektronika dan program komputer.

Bagian 1 dari 5: Menyusun Robot

  1. Gambar berjudul 1123333 1
    1
    Kumpulkan komponen-komponen Anda. Untuk membuat robot dasar, Anda membutuhkan beberapa komponen sederhana. Anda dapat menemukan kebanyakan atau semua komponen ini di toko hobi elektronik lokal, atau di beberapa pengecer daring (online). Beberapa kit mencakup semua komponen ini. Robot ini tidak membutuhkan penyolderan apa pun:
    • Arduino Uno (atau microcontroller lain)
    • 2 servo 360 derajat
    • 2 roda yang sesuai dengan servo
    • 1 roda bebas
    • 1 papan penguji (breadboard atau project board) yang belum disolder (carilah papan penguji yang memiliki dua baris positif dan negatif di setiap sisinya)
    • 1 sensor jarak (dengan kabel konektor empat pin)
    • 1 sakelar tombol tekan dengan 1 resistor 10kΩ.
    • 1 set header yang dapat dipatahkan
    • 1 6 x AA dudukan baterai dengan soket daya 9V DC
    • 1 pak kabel jumper atau kabel tunggal ukuran 22
    • isolasi bolak-balik (double tape) atau lem tembak
  2. Gambar berjudul 1123333 2
    2
    Baliklah tempat baterai sehingga bagian belakangnya yang rata menghadap ke atas. Anda akan membangun badan robot menggunakan tempat baterai itu sebagai dasarnya.
  3. Gambar berjudul 1123333 3
    3
    Susunlah dua servo yang menghadap ke arah yang sama di ujung tempat baterai. Ujung ini adalah ujung tempat kabel tempat baterai keluar. Servo sebaiknya menyentuh bagian bawah, dan mekanisme perputaran masing-masing servo sebaiknya menghadap keluar dari sisi-sisi tempat baterai. Penting agar servo-servo ini disusun dengan tepat sehingga rodanya lurus. Kabel-kabel untuk servo harus keluar dari bagian belakang tempat baterai.
  4. Gambar berjudul 1123333 4
    4
    Tempelkan servo-servo dengan isolasi atau lem Anda. Pastikan bahwa servo menempel dengan kuat pada tempat baterai. Bagian belakang servo harus disusun sejajar dengan bagian belakang tempat baterai.
    • Sekarang, servo-servo seharusnya menghabiskan separuh ruangan di bagian belakang dari tempat baterai.
  5. Gambar berjudul 1123333 5
    5
    Tempelkan papan penguji secara tegak lurus di ruangan yang tersisa pada tempat baterai. Papan penguji ini akan menggantung sedikit di bagian depan tempat baterai, dan akan memanjang ke kedua sisi. Pastikan bahwa papan penguji sudah kencang sebelum melanjutkan. Baris “A” sebaiknya berada paling dekat dengan servo.
  6. Gambar berjudul 1123333 6
    6
    Tempelkan microcontroller Arduino ke bagian atas servo. Jika Anda menempelkan servo dengan benar, seharusnya ada bagian rata yang terbentuk dari kedua servo yang saling bersentuhan. Tempelkan papan Arduino ke tempat yang rata ini sehingga USB dan konektor daya Arduino menghadap ke bawah (menjauh dari papan penguji). Bagian depan Arduino akan bertindihan dengan papan penguji.
  7. Gambar berjudul 1123333 7
    7
    Pasanglah roda-roda pada servo-servo. Tekan dengan kuat roda-roda ke mekanisme servo yang berputar. Ini mungkin membutuhkan gaya yang cukup besar karena roda-roda didesain untuk memiliki lubang yang tepat sesuai dengan bentuk ujung servo.
  8. Gambar berjudul 1123333 8
    8
    Pasanglah roda bebas di bagian bawah papan penguji. Jika Anda membalikkan badan robot, Anda akan melihat sedikit papan penguji yang menggantung dari tempat baterai. Pasanglah roda bebas pada bagian yang menggantung ini. Gunakan ganjal jika dibutuhkan. Roda bebas berfungsi sebagai roda depan yang memungkinkan robot untuk berbelok ke arah mana pun dengan mudah.[1]
    • Jika Anda membeli kit, roda bebasnya mungkin memiliki beberapa ganjal yang dapat Anda gunakan untuk memastikan agar roda bebas menyentuh tanah.

Bagian 2 dari 5: Memasang Kabel Robot

  1. Gambar berjudul 1123333 9
    1
    Potonglah dua header 3-pin. Anda akan menggunakan ini untuk menghubungkan servo ke papan penguji. Doronglah pin ke bawah melalui header, sehingga pin akan keluar dengan jarak yang sama pada kedua sisi.
  2. Gambar berjudul 1123333 10
    2
    Masukkan kedua header ke pin 1-3 dan 6-8 di baris E pada papan penguji.Pastikan keduanya dimasukkan dengan kokoh atau kuat.
  3. Gambar berjudul 1123333 11
    3
    Hubungkan kabel-kabel servo dengan header, dengan kabel hitam di sisi kiri (pin 1 dan 6). Ini akan menghubungkan servo dengan papan penguji. Pastikan servo kiri terhubung dengan header kiri, dan servo kanan terhubung dengan headerkanan.
  4. Gambar berjudul 1123333 12
    4
    Hubungkan kabel jumper merah dari pin C2 dan C7 ke pin rail merah (positif).Pastikan Anda menggunakan rail merah di bagian belakang papan penguji (lebih dekat ke badan robot yang lain).
  5. Gambar berjudul 1123333 13
    5
    Hubungkan kabel jumper hitam dari pin B1 dan B6 ke pin rail biru (ground).Pastikan Anda menggunakan rail biru di bagian belakang papan penguji. Jangan memasang kabel ke pin rail merah.
  6. Gambar berjudul 1123333 14
    6
    Hubungkan kabel jumper putih dari pin 12 dan 13 pada Arduino ke A3 dan A8. Ini akan memungkinkan Arduino mengendalikan servo dan memutar roda.
  7. Gambar berjudul 1123333 15
    7
    Pasanglah sensor ke bagian depan papan penguji. Sensor tidak dipasang ke rail daya luar pada papan penguji, tetapi pada dua baris pin berhuruf pertama (J). Pastikan Anda menempatkannya tepat di tengah dengan jumlah pin yang kosong sama banyak di setiap sisinya.
  8. Gambar berjudul 1123333 16
    8
    Hubungkan kabel jumper hitam dari pin I14 ke pin rail biru yang pertama di bagian kiri sensor. Ini akan meng-ground-kan sensor.
  9. Gambar berjudul 1123333 17
    9
    Hubungkan kabel jumper merah dari pin I17 ke pin rail merah yang pertama di bagian kanan sensor. Ini akan memberikan daya untuk sensor.
  10. Gambar berjudul 1123333 18
    10
    Hubungkan kabel jumper putih dari pin I15 ke pin 9 pada Arduino, dan dari I16 ke pin 8. Ini akan memberikan informasi dari sensor ke microcontroller.

Bagian 3 dari 5: Memasang Kabel Daya

  1. Gambar berjudul 1123333 19
    1
    Balikkan robot sehingga Anda dapat melihat tempat baterai di dalamnya.Susunlah tempat baterai sehingga kabelnya keluar melalui bagian kiri bawah.
  2. Gambar berjudul 1123333 20
    2
    Hubungkan kabel merah dengan pegas kedua dari kiri pada bagian bawah.Pastikan bahwa tempat baterai tersusun dengan benar atau menghadap ke arah yang benar.
  3. Gambar berjudul 1123333 21
    3
    Hubungkan kabel hitam dengan pegas terakhir pada bagian kanan bawah.Kedua kabel ini akan membantu memberikan tegangan yang tepat ke Arduino.
  4. Gambar berjudul 1123333 22
    4
    Hubungkan kabel merah dan hitam ke pin merah dan biru yang ada di sisi kanan di bagian belakang papan penguji. Kabel hitam harus dimasukkan ke pin rail biru pada pin 30. Kabel merah harus dimasukkan ke pin rail merah pada pin 30.
  5. Gambar berjudul 1123333 23
    5
    Hubungkan kabel hitam dari pin GND di Arduino ke belakang rail biru.Hubungkan kabel pada pin 28 di rail biru.
  6. Gambar berjudul 1123333 24
    6
    Hubungkan kabel hitam dari belakang rail biru ke depan rail biru pada pin 29 untuk kedua rail. Jangan menghubungkan rail merahnya karena Anda mungkin akan merusak Arduino.
  7. Gambar berjudul 1123333 25
    7
    Hubungkan kabel merah dari depan rail merah pada pin 30 ke pin 5V di Arduino. Ini akan memberikan daya ke Arduino.
  8. Gambar berjudul 1123333 26
    8
    Masukkan sakelar tombol tekan di ruang antara pin 24-26. Sakelar ini akan memungkinkan Anda mematikan robot tanpa harus mematikan daya.
  9. Gambar berjudul 1123333 27
    9
    Hubungkan kabel merah dari H24 ke rail merah pada pin selanjutnya yang kosong di sebelah kanan sensor. Ini akan memberikan daya untuk tombolnya.
  10. Gambar berjudul 1123333 28
    10
    Gunakan resistor untuk menghubungkan H26 ke rail biru. Hubungkan ke pin secara langsung di sebelah kabel hitam yang baru saja Anda hubungkan pada beberapa langkah sebelumnya.
  11. Gambar berjudul 1123333 29
    11
    Hubungkan kabel putih dari G26 ke pin 2 pada Arduino. Ini akan memungkinkan Arduino mendeteksi tombol tekan.

Bagian 4 dari 5: Memasang Perangkat Lunak Arduino

  1. Gambar berjudul 1123333 30
    1
    Unduh dan ekstrak Arduino IDE. Ini adalah tempat pengembangan Arduino dan memungkinkan Anda untuk memprogram instruksi yang kemudian dapat Anda unggah ke microcontroller Arduino Anda. Anda dapat mengunduhnya dengan gratis dari arduino.cc/en/main/softwareUnzip berkas yang telah diunduh dengan mengeklik dua kali pada berkas dan pindahkan folder yang ada di dalamnya ke lokasi yang mudah untuk diakses. Anda tidak akan benar-benar memasang program itu, melainkan Anda hanya akan menjalankannya dari folder yang telah diekstrak dengan mengeklik dua kali pada arduino.exe.
  2. Gambar berjudul 1123333 31
    2
    Hubungkan tempat baterai ke Arduino. Masukkan soket belakang baterai ke konektor pada Arduino untuk memberinya daya.
  3. Gambar berjudul 1123333 32
    3
    Masukkan Arduino ke komputer Anda melalui USB. Kemungkinan, Windows tidak akan mengenali perangkat.
  4. Gambar berjudul 1123333 33
    4
    Tekan . Win+R dan ketik devmgmt.msc. Perintah ini akan membuka Device Manager.
  5. Gambar berjudul 1123333 34
    5
    Klik kanan pada Unknown device pada bagian Other devices dan pilih Update Driver Software. Jika Anda tidak melihat pilihan ini, klik Properties, pilih tab Driver, dan kemudian klik Update Driver.
  6. Gambar berjudul 1123333 35
    6
    Pilih Browse my computer for driver software. Ini akan memungkinkan Anda untuk memilih driver bawaan yang menyertai Arduino IDE.
  7. Gambar berjudul 1123333 36
    7
    Klik Browse, kemudian bukalah folder yang Anda ekstrak sebelumnya. Anda akan menemukan folder drivers di dalamnya.
  8. Gambar berjudul 1123333 37
    8
    Pilih folder drivers dan klik OK. Konfirmasikan bahwa Anda ingin melanjutkan jika Anda diperingatkan tentang perangkat lunak yang tidak diketahui.

Bagian 5 dari 5: Memprogram Robot

  1. Gambar berjudul 1123333 38
    1
    Bukalah ARDUINO IDE dengan mengeklik dua kali pada berkas arduino.exedi folder IDE. Anda akan disambut dengan proyek kosong.
  2. Gambar berjudul 1123333 39
    2
    Tempelkan atau paste kode berikut untuk membuat robot Anda maju. Kode di bawah ini akan membuat Arduino Anda terus maju.
    #include <Servo.h> // ini menambahkan perpustakaan “Servo” ke program
     
    // perintah berikut menciptakan dua objek servo
    Servo leftMotor;
    Servo rightMotor;
     
    void setup()
    {
        leftMotor.attach(12); // jika Anda tidak sengaja menukar angka pin untuk servo Anda, Anda dapat menukar angka-angkanya di sini
        rightMotor.attach(13);
    }
     
     
    void loop()
    {
        leftMotor.write(180); // dengan rotasi 360 derajat (rotasi terus-menerus), angka 180 menginstruksikan servo untuk bergerak “maju” dengan kecepatan penuh.
        rightMotor.write(0); // jika nilai keduanya adalah 180, robot akan berputar membentuk lingkaran karena servonya terbalik. “0” memberi tahu robot untuk bergerak “mundur” dengan kecepatan penuh.
    }
    
  3. Gambar berjudul 1123333 40
    3
    Buatlah dan unggahlah program. Klik tombol panah kanan di pojok kiri atas untuk membuat dan mengunggah program ke Arduino yang sudah terhubung.
    • Anda mungkin ingin mengangkat robot dari permukaan karena robot akan terus berjalan maju setelah program diunggah.
  4. Gambar berjudul 1123333 41
    4
    Tambahkan fungsi sakelar stop (kill switch). Tambahkan kode berikut ke bagian "void loop()" pada kode Anda untuk menambahkan fungsi sakelar stop di atas fungsi "write()".
    if(digitalRead(2) == HIGH) // perintah ini berjalan saat tombol ditekan pada pin 2 Arduino
    {
        while(1)
        {
            leftMotor.write(90); // "90" adalah posisi netral untuk servo, yang memberi tahu servo agar berhenti membelok
            rightMotor.write(90);
        }
    }
    
  5. Gambar berjudul 1123333 42
    5
    Unggah dan periksa kode Anda. Dengan kode sakelar stop yang sudah ditambahkan, Anda dapat mengunggah kode dan menguji robot. Robot seharusnya terus maju hingga Anda menekan tombol sakelar stop yang akan menyebabkan robot berhenti. Kode lengkapnya akan terlihat seperti ini:
    #include <Servo.h>
     
    // perintah berikut menciptakan dua objek servo
    Servo leftMotor;
    Servo rightMotor;
     
    void setup()
    {
        leftMotor.attach(12); 
        rightMotor.attach(13);
    }
     
     
    void loop()
    {
        if(digitalRead(2) == HIGH) 
        {
            while(1)
            {
                leftMotor.write(90); 
                rightMotor.write(90);
            }
        }
     
        leftMotor.write(180); 
        rightMotor.write(0); 
    }
    

Contoh

Kode berikut akan menggunakan sensor yang dipasang pada robot untuk membuatnya berbelok ke kiri setiap kali robot menemui halangan. Lihatlah komentar-komentar dalam kode untuk detail kegunaan masing-masing bagian. Kode di bawah ini adalah program keseluruhannya.[2]
#include <Servo.h>
 
Servo leftMotor;
Servo rightMotor;
 
const int serialPeriod = 250;       // kode ini memberikan jeda waktu keluaran konsol menjadi setiap 1/4 detik (250 ms)
unsigned long timeSerialDelay = 0;
 
const int loopPeriod = 20;          // kode ini mengatur frekuensi pembacaan sensor menjadi 20 ms, yang merupakan frekuensi 50 Hz
unsigned long timeLoopDelay   = 0;
 
// kode ini memberikan fungsi TRIG dan ECHO ke pin-pin pada Arduino. Sesuaikan angka-angka di sini jika Anda menghubungkannya dengan cara yang berbeda
const int ultrasonic2TrigPin = 8;
const int ultrasonic2EchoPin = 9;
 
int ultrasonic2Distance;
int ultrasonic2Duration;
 
// kode ini mendefinisikan dua keadaan robot yang mungkin: terus maju atau berbelok ke kiri
#define DRIVE_FORWARD     0
#define TURN_LEFT         1
 
int state = DRIVE_FORWARD; // 0 = terus maju (<i>DEFAULT</i>), 1 = belok kiri
 
void setup()
{
    Serial.begin(9600);
 
    // sensor ini menentukan konfigurasi pin
    pinMode(ultrasonic2TrigPin, OUTPUT);
    pinMode(ultrasonic2EchoPin, INPUT);
 
    // ini menugaskan motor ke pin-pin Arduino
    leftMotor.attach(12);
    rightMotor.attach(13);
}
 
 
void loop()
{
    if(digitalRead(2) == HIGH) // kode ini mendeteksi sakelar ''stop''
    {
        while(1)
        {
            leftMotor.write(90);
            rightMotor.write(90);
        }
    }
 
    debugOutput(); // kode ini mencetak pesan-pesan <i>debug</i> ke konsol serial
 
    if(millis() - timeLoopDelay >= loopPeriod)
    {
        readUltrasonicSensors(); // kode ini memerintahkan sensor untuk membaca dan menyimpan data tentang jarak yang diukur
 
        stateMachine();
 
        timeLoopDelay = millis();
    }
}
 
 
void stateMachine()
{
    if(state == DRIVE_FORWARD) // jika tidak ada halangan yang terdeteksi
    {
        if(ultrasonic2Distance > 6 || ultrasonic2Distance < 0) // jika tidak ada sesuatu di depan robot. <i>ultrasonicDistance</i> akan bernilai negatif untuk beberapa <i>ultrasonics</i> jika tidak ada halangan
        {
            // drive forward
            rightMotor.write(180);
            leftMotor.write(0);
        }
        else //  jika ada benda di depan kita
        {
            state = TURN_LEFT;
        }
    }
    else if(state == TURN_LEFT) // jika halangan terdeteksi, belok kiri
    {
        unsigned long timeToTurnLeft = 500; // membutuhkan sekitar 0,5 detik untuk belok 90 derajat. Anda mungkin perlu menyesuaikan nilai ini jika roda-roda Anda berbeda ukuran dengan ukuran pada contoh
 
        unsigned long turnStartTime = millis(); // menyimpan kondisi saat robot mulai belok
 
        while((millis()-turnStartTime) < timeToTurnLeft) // tetap menjalankan siklus ini hingga <i>timeToTurnLeft</i> (500) sudah berlalu
        {
            // belok kiri, ingatlah bahwa saat keduanya bernilai “180”, robot akan berbelok.
            rightMotor.write(180);
            leftMotor.write(180);
        }
 
        state = DRIVE_FORWARD;
    }
}
 
 
void readUltrasonicSensors()
{
    // ini untuk <i>ultrasonic</i> 2. Anda mungkin perlu mengubah perintah ini jika Anda menggunakan sensor yang berbeda.
    digitalWrite(ultrasonic2TrigPin, HIGH);
    delayMicroseconds(10);                  // tarik pin TRIG ke tinggi setidaknya selama 10 mikrodetik
    digitalWrite(ultrasonic2TrigPin, LOW);
 
    ultrasonic2Duration = pulseIn(ultrasonic2EchoPin, HIGH);
    ultrasonic2Distance = (ultrasonic2Duration/2)/29;
}
 
// berikut adalah untuk galat <i>debug</i> dalam konsol.
void debugOutput()
{
    if((millis() - timeSerialDelay) > serialPeriod)
    {
        Serial.print("ultrasonic2Distance: ");
        Serial.print(ultrasonic2Distance);
        Serial.print("cm");
        Serial.println();
 
        timeSerialDelay = millis();
    }
}

Tidak ada komentar:

Posting Komentar