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.
Langkah
-
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
- 1 resistor 10kΩ
- 1 kabel USB A ke B
- 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
-
Baliklah tempat baterai sehingga bagian belakangnya yang rata menghadap ke atas. Anda akan membangun badan robot menggunakan tempat baterai itu sebagai dasarnya.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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] X Teliti sumber
- Jika Anda membeli kit, roda bebasnya mungkin memiliki beberapa ganjal yang dapat Anda gunakan untuk memastikan agar roda bebas menyentuh tanah.
Iklan
-
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.
-
Masukkan kedua header ke pin 1-3 dan 6-8 di baris E pada papan penguji. Pastikan keduanya dimasukkan dengan kokoh atau kuat.
-
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 header kanan.
-
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).
-
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.
-
Hubungkan kabel jumper putih dari pin 12 dan 13 pada Arduino ke A3 dan A8. Ini akan memungkinkan Arduino mengendalikan servo dan memutar roda.
-
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.
-
Hubungkan kabel jumper hitam dari pin I14 ke pin rail biru yang pertama di bagian kiri sensor. Ini akan meng-ground-kan sensor.
-
Hubungkan kabel jumper merah dari pin I17 ke pin rail merah yang pertama di bagian kanan sensor. Ini akan memberikan daya untuk sensor.
-
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 .Iklan
-
Balikkan robot sehingga Anda dapat melihat tempat baterai di dalamnya. Susunlah tempat baterai sehingga kabelnya keluar melalui bagian kiri bawah.
-
Hubungkan kabel merah dengan pegas kedua dari kiri pada bagian bawah. Pastikan bahwa tempat baterai tersusun dengan benar atau menghadap ke arah yang benar.
-
Hubungkan kabel hitam dengan pegas terakhir pada bagian kanan bawah. Kedua kabel ini akan membantu memberikan tegangan yang tepat ke Arduino.
-
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.
-
Hubungkan kabel hitam dari pin GND di Arduino ke belakang rail biru. Hubungkan kabel pada pin 28 di rail biru.
-
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.
-
Hubungkan kabel merah dari depan rail merah pada pin 30 ke pin 5V di Arduino. Ini akan memberikan daya ke Arduino.
-
Masukkan sakelar tombol tekan di ruang antara pin 24-26. Sakelar ini akan memungkinkan Anda mematikan robot tanpa harus mematikan daya.
-
Hubungkan kabel merah dari H24 ke rail merah pada pin selanjutnya yang kosong di sebelah kanan sensor. Ini akan memberikan daya untuk tombolnya.
-
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.
-
Hubungkan kabel putih dari G26 ke pin 2 pada Arduino. Ini akan memungkinkan Arduino mendeteksi tombol tekan.Iklan
-
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/software . Unzip 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 .
-
Hubungkan tempat baterai ke Arduino. Masukkan soket belakang baterai ke konektor pada Arduino untuk memberinya daya.
-
Masukkan Arduino ke komputer Anda melalui USB. Kemungkinan, Windows tidak akan mengenali perangkat.
-
Tekan . ⊞ Win + R dan ketik devmgmt.msc . Perintah ini akan membuka Device Manager .
-
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 .
-
Pilih Browse my computer for driver software . Ini akan memungkinkan Anda untuk memilih driver bawaan yang menyertai Arduino IDE.
-
Klik Browse , kemudian bukalah folder yang Anda ekstrak sebelumnya. Anda akan menemukan folder drivers di dalamnya.
-
Pilih folder drivers dan klik OK . Konfirmasikan bahwa Anda ingin melanjutkan jika Anda diperingatkan tentang perangkat lunak yang tidak diketahui.Iklan
-
Bukalah ARDUINO IDE dengan mengeklik dua kali pada berkas arduino.exe di folder IDE. Anda akan disambut dengan proyek kosong.
-
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. }
-
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.
-
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 ); } }
-
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 ); }
Iklan
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] X Teliti sumber
#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
();
}
}