Anda di halaman 1dari 27

Membangun Robot Mata-Mata Arduino

Tutorial ini disponsori oleh Anggaswangi Press,


https://www.tokopedia.com/anggaswangipress

Tersedia buku :

1-"MEMBUAT WEB SERVER DENGAN ESP32 DAN ESP8266"- 500 Hal

2-"BELAJAR CEPAT OTOMASI RUMAH DENGAN ESP8266 ARDUINO" - 526 Hal

3-“Membuat Sistem CCTV Canggih dengan ESP32-CAM Arduino” - 500 Hal

4- Buku “Membuat 20 Proyek Mudah dengan Raspberry Pi” – 376 hal

5-Buku “Belajar MicroPython Pada ESP32 dan ESP8266” – 510 hal

Klik Link di sini untuk mendapatkan bukunya


https://www.tokopedia.com/anggaswangipress

KELEBIHAN Buku-Buku Anggaswangi Press, bahwa anda dididik untuk ahli


praktek, bukan ahli teori, anda dididik menjadi Engineer, mampu praktek
sekaligus paham dasar ilmiahnya.

Apabila anda memiliki minimal 3 buku kami dan betul-betul menguasainya serta
dibekali berbagai video tutorial dan bonus pendukung, Insya Allah anda akan
menjadi AHLI di bidangnya dan sulit dicari tandingannya di lingkungan anda.

Dalam proyek ini, kita akan membuat robot mata-mata pengintai kecil
berdasarkan Arduino. Agen rahasia akan dapat memerintahkan robot dari jarak
jauh melalui halaman web dan melihat apa yang dilihat robot secara real time
menggunakan kamera.

1
Untuk melakukan ini, kami akan menggunakan semua yang telah Anda pelajari
dalam berbagai artikel kami sejauh ini:

-Cara menggunakan Wi-Fi dengan Arduino

-Cara membuat antarmuka kontrol

-Cara menggunakan kamera dengan Arduino Yun

Mari kita salami lebih jauh!

Persyaratan perangkat keras dan perangkat lunak


Pertama mari kita lihat apa saja komponen yang dibutuhkan untuk proyek ini. Inti
dari proyek ini tentu saja adalah robot itu sendiri. Untuk chasis robot, Anda
memiliki banyak pilihan yang tersedia di pasaran. Untuk proyek ini, saya memilih
sasis DFRobot MiniQ 2 roda, yang merupakan chasis robot kecil yang dapat
dengan mudah Anda pasang board Arduino.

Kemudian, Anda membutuhkan dua board Arduino untuk proyek ini. Yang
pertama adalah Arduino Yun, yang akan kita gunakan untuk menghubungkan
kamera USB, seperti yang kita lakukan di artikel kami sebelumnya, “Membangun
Kamera Mata-Mata Cloud dengan Arduino”. Untuk kameranya sendiri, saya
kembali menggunakan kamera C720 dari Logitech.

Hal lain yang Anda perlukan adalah Arduino Uno, yang akan menangani
penggerak motor robot melalui shield motor. Kami harus menggunakan Arduino
Uno di sini karena Arduino Yun tidak kompatibel dengan sebagian besar shield
motor DFRobot.

Untuk mengontrol motor, saya menggunakan pelindung motor 1A dari DFRobot.


Untuk mengontrol robot dari jarak jauh, kami juga akan menggunakan board
breakout CC3000 yang kami gunakan di artikel sebelumnya. Untuk merakit board
CC3000 dengan robot lainnya, kami juga akan menggunakan shield prototipe
DFRobot.

2
Anda juga akan membutuhkan paket baterai 7,2V untuk memberi daya pada
robot saat tidak terhubung ke komputer Anda. Saya juga menggunakan paket
baterai DFRobot dengan adapter jack DC.

Terakhir, berikut adalah daftar semua komponen yang akan kita gunakan dalam
proyek ini:

-Chasis DFRobot MiniQ 2 roda


(https://www.dfrobot.com/index.php?route=product/product&product_id=59&s
earch=motor+shield&description=true#.VfP4wWR96u4)

- Prototyping Shield untuk Arduino


(https://www.dfrobot.com/index.php?route=product/product&product_id=55&s
earch=prototyping&description=true#.VfP40WR96u4DFRobot Prototyping shield
(http://www.dfrobot.com/index.php?)

-Board breakout CC3000 (https://www.adafruit.com/products/1469)

-Arduino Uno (https://www.sparkfun.com/products/11021)

-Arduino Yun (http://www.adafruit.com/product/1498)

-Kamera USB (http://www.logitech.com/en-us/product/hd-webcam-c270)

-Breadboard (https://www.sparkfun.com/products/12002)

-Kabel jumper (https://www.sparkfun.com/products/8431)

-Baterai 7,2V dengan colokan listrik DC


(https://www.dfrobot.com/index.php?route=product/product&product_id=489)

Di sisi perangkat lunak, Anda memerlukan Arduino IDE versi terbaru. Anda juga
perlu menginstal library berikut menggunakan Arduino library manager:

-Library Adafruit CC3000

-aREST

3
Konfigurasi perangkat keras
Mari kita mulai dengan bagian tersulit dari proyek ini: merakit robot itu sendiri.
Tentu saja, langkah yang tepat akan bergantung pada chasis robot yang Anda
gunakan, tetapi tujuannya adalah memberi Anda langkah-langkah utama di
bagian ini.

Kami mulai dengan benar-benar memasang board Arduino Yun pada chasis robot
menggunakan sekrup dan tajuk yang disediakan dengan chasis itu sendiri:

Kemudian, kami memasang shield motor di atas board Arduino Uno. Selanjutnya,
kami memasukkan kabel dari motor ke header khusus pada shield motor dan

4
mengamankannya dengan sekrup. Pastikan Anda menggunakan polaritas yang
sama untuk kedua motor.

Inilah hasilnya saat ini:

Sekarang, kita akan memasang board breakout CC3000 pada pelindung prototipe,
yang kemudian akan diletakkan di atas robot. Untuk mengetahui cara
menghubungkan board CC3000, lihat artikel kami sebelumnya, “Memantau Data
Rahasia dari Mana Saja”. Satu-satunya perbedaan di sini adalah pin IRQ
terhubung ke pin 3, dan pin VBAT terhubung ke pin 8.

Ini adalah board CC3000 yang dirakit dengan shield prototipe:

5
Sekarang, cukup pasang shield ini di atas robot:

6
Berikut adalah tampilan samping proyek pada tahap ini:

7
Terakhir, colokkan kamera ke port USB Arduino Yun dan letakkan di depan robot.
Saya mengamankannya dengan sekrup, tetapi ini akan tergantung pada sasis
robot Anda sendiri.

Ini adalah gambar close-up yang menunjukkan robot yang dirakit sepenuhnya:

8
Ini adalah gambaran umum dari robot yang dirakit sepenuhnya:

9
Selamat! Anda sekarang siap untuk memprogram robot pengintai Anda. Jangan
khawatir tentang baterai untuk saat ini, karena kami akan melakukan semuanya
menggunakan kabel USB yang menghubungkan robot langsung ke komputer
Anda.

10
Tutorial ini disponsori oleh Anggaswangi Press,
https://www.tokopedia.com/anggaswangipress

Tersedia buku :

1-"MEMBUAT WEB SERVER DENGAN ESP32 DAN ESP8266"- 500 Hal

2-"BELAJAR CEPAT OTOMASI RUMAH DENGAN ESP8266 ARDUINO" - 526 Hal

3-“Membuat Sistem CCTV Canggih dengan ESP32-CAM Arduino” - 500 Hal

4- Buku “Membuat 20 Proyek Mudah dengan Raspberry Pi” – 376 hal

Klik Link di sini untuk mendapatkan bukunya


https://www.tokopedia.com/anggaswangipress

Menyiapkan kontrol motor


Kami sekarang akan menyiapkan berbagai bagian proyek, dimulai dengan
mengkonfigurasi Arduino Uno, yang akan mengontrol motor melalui Wi-Fi. Untuk
ini, kami akan menggunakan library aREST Arduino, yang membuatnya sangat
mudah untuk mengontrol proyek Arduino melalui Wi-Fi.

Berikut kode lengkap untuk bagian ini:


// Robot test via aREST + WiFi
#define NUMBER_VARIABLES 1
#define NUMBER_FUNCTIONS 5
// Libraries
#include <Adafruit_CC3000.h>
#include <SPI.h>
#include <aREST.h>
#include <avr/wdt.h>
// CC3000 pins
#define ADAFRUIT_CC3000_IRQ 3
#define ADAFRUIT_CC3000_VBAT 8
11
#define ADAFRUIT_CC3000_CS 10
// Robot speed
#define FULL_SPEED 100
#define TURN_SPEED 50
// Motor pins
int speed_motor1 = 6;
int speed_motor2 = 5;
int direction_motor1 = 7;
int direction_motor2 = 4;
// Sensor pins
int distance_sensor = A0;
// CC3000 instance
Adafruit_CC3000 cc3000 = Adafruit_CC3000(ADAFRUIT_CC3000_CS,
ADAFRUIT_CC3000_IRQ, ADAFRUIT_CC3000_VBAT);
// Create aREST instance
aREST rest = aREST();
// The port to listen for incoming TCP connections
#define LISTEN_PORT 80
// Server instance
Adafruit_CC3000_Server restServer(LISTEN_PORT);
#define WLAN_SSID "KrakowskiePrzedm51m.15(flat15)"
#define WLAN_PASS "KrK51flat15_1944_15"
#define WLAN_SECURITY WLAN_SEC_WPA2
void setup(void)
{
// Start Serial
Serial.begin(115200);
// Give name to robot
rest.set_id("1");
rest.set_name("robot");
// Expose functions
rest.function("forward",forward);
rest.function("backward",backward);
rest.function("left",left);
rest.function("right",right);
rest.function("stop",stop);
// Set up CC3000 and get connected to the wireless network
Serial.print(F("Initialising CC3000..."));
if (!cc3000.begin())
{
while(1);
}
Serial.println(F("done"));
Serial.print(F("Connecting to WiFi..."));
if (!cc3000.connectToAP(WLAN_SSID, WLAN_PASS, WLAN_SECURITY)) {
while(1);

12
}
Serial.println(F("done"));
Serial.print(F("Getting DHCP..."));
while (!cc3000.checkDHCP())
{
delay(100);
}
// Start server
restServer.begin();
Serial.println(F("Listening for connections..."));
displayConnectionDetails();
wdt_enable(WDTO_8S);
}
void loop() {
// Handle REST calls
Adafruit_CC3000_ClientRef client = restServer.available();
rest.handle(client);
wdt_reset();
// Check connection
if(!cc3000.checkConnected()){while(1){}}
wdt_reset();
}
// Forward
int forward(String command) {
send_motor_command(speed_motor1,direction_motor1,100,1);
send_motor_command(speed_motor2,direction_motor2,100,1);
return 1;
}
// Backward
int backward(String command) {
send_motor_command(speed_motor1,direction_motor1,100,0);
send_motor_command(speed_motor2,direction_motor2,100,0);
return 1;
}
// Left
int left(String command) {
send_motor_command(speed_motor1,direction_motor1,75,0);
send_motor_command(speed_motor2,direction_motor2,75,1);
return 1;
}
// Right
int right(String command) {
send_motor_command(speed_motor1,direction_motor1,75,1);
send_motor_command(speed_motor2,direction_motor2,75,0);
return 1;
}

13
// Stop
int stop(String command) {
send_motor_command(speed_motor1,direction_motor1,0,1);
send_motor_command(speed_motor2,direction_motor2,0,1);
return 1;
}
// Function to command a given motor of the robot
void send_motor_command(int speed_pin, int direction_pin, int pwm,
boolean dir)
{
analogWrite(speed_pin,pwm); // Set PWM control, 0 for stop, and
255 for maximum speed
digitalWrite(direction_pin,dir);
}
// Print connection details of the CC3000 chip
bool displayConnectionDetails(void)
{
uint32_t ipAddress, netmask, gateway, dhcpserv, dnsserv;
if(!cc3000.getIPAddress(&ipAddress, &netmask, &gateway,
&dhcpserv, &dnsserv))
{
Serial.println(F("Unable to retrieve the IP Address!\r\n"));
return false;
}
else
{
Serial.print(F("\nIP Addr: "));
cc3000.printIPdotsRev(ipAddress);
Serial.print(F("\nNetmask: "));
cc3000.printIPdotsRev(netmask);
Serial.print(F("\nGateway: "));
cc3000.printIPdotsRev(gateway);
Serial.print(F("\nDHCPsrv: "));
cc3000.printIPdotsRev(dhcpserv);
Serial.print(F("\nDNSserv: "));
cc3000.printIPdotsRev(dnsserv);
Serial.println();
return true;
}
}

Karena kode ini cukup panjang, kita hanya akan melihat bagian terpenting di sini.
Kami mulai dengan memasukkan semua library yang diperlukan:

14
#include <Adafruit_CC3000.h>
#include <SPI.h>
#include <aREST.h>
#include <avr/wdt.h>

Kemudian, kami menentukan pin yang sesuai dengan shield motor:


int speed_motor1 = 6;
int speed_motor2 = 5;
int direction_motor1 = 7;
int direction_motor2 = 4;

Setelah ini, Anda perlu memasukkan nama dan kata sandi jaringan Wi-Fi Anda
sendiri:
#define WLAN_SSID "your_wifi_ssid"
#define WLAN_PASS "your_wifi_password"
#define WLAN_SECURITY WLAN_SEC_WPA2s

Kemudian, kami mendeklarasikan instance aREST, yang akan kami gunakan nanti
untuk mengakses fungsi motor melalui Wi-Fi:
aREST rest = aREST();

Dalam fungsi setup () dari sketsa, kami mengekspos berbagai fungsi untuk
mengontrol robot sehingga dapat diakses melalui Wi-Fi:
rest.function("forward",forward);
rest.function("backward",backward);
rest.function("left",left);
rest.function("right",right);
rest.function("stop",stop);

15
Setelah itu, kami memulai server Wi-Fi pada boardnya:
restServer.begin();
Serial.println(F("Listening for connections..."));

Dalam fungsi loop () sketsa, kami terus mendengarkan koneksi dan menanganinya
dengan instance aREST:
Adafruit_CC3000_ClientRef client = restServer.available();
rest.handle(client);

Sekarang mari kita lihat salah satu fungsi untuk mengontrol robot, misalnya fungsi
untuk maju:
int forward(String command) {
send_motor_command(speed_motor1,direction_motor1,100,1);
send_motor_command(speed_motor2,direction_motor2,100,1);
return 1;
}

Seperti yang Anda lihat, pekerjaan dilakukan oleh fungsi lain yang bekerja
langsung pada motor:
void send_motor_command(int speed_pin, int direction_pin, int pwm,
boolean dir)
{
analogWrite(speed_pin,pwm);
digitalWrite(direction_pin,dir);
}

16
Sekarang saatnya mengonfigurasi bagian proyek ini. Hubungkan Arduino Uno ke
komputer melalui USB dan upload sketsa ini ke board. Kemudian, buka monitor
Serial. Setelah beberapa saat, Anda akan melihat alamat IP board yang dicetak
pada monitor Serial.

Menyiapkan streaming langsung


Sekarang kita dapat beralih ke bagian selanjutnya: mengonfigurasi streaming
kamera langsung di Arduino Yun. Ini adalah sesuatu yang telah kami lakukan di
artikel sebelumnya, Membangun Kamera Cloud Spy, jadi kami hanya akan melihat
bagian yang paling penting di sini. Lihat bagian Konfigurasi perangkat keras jika
Anda perlu tahu cara mengkonfigurasi Yun Anda lagi.

Pertama, sambungkan ke Yun Anda menggunakan perintah berikut:


ssh root@arduinoyun.local

Kemudian, luncurkan streaming kamera dengan perintah berikut:


mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 640x480 -f 25" -o
"output_http.so -p 8080 -w /www/webcam" &

Anda dapat memeriksa apakah streaming berfungsi di halaman berikut http:


//arduinoyun.local: 8080.

Menyiapkan antarmuka
Sekarang kita dapat beralih ke bagian terakhir: menyiapkan antarmuka yang
memungkinkan agen rahasia untuk memerintahkan robot dan juga untuk melihat
streaming langsung dari kamera. Antarmuka ini akan terdiri dari halaman HTML

17
dan file JavaScript. Ini akan didasarkan pada modul aREST.js yang memudahkan
untuk mengontrol perangkat aREST dari halaman web.

Ini adalah halaman HTML lengkapnya:


<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Surveillance Robot</title>
<link rel="stylesheet" type="text/css"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstra
p.min.css">
<link rel="stylesheet" type="text/css" href="interface.css">
<script type="text/javascript"
src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script type="text/javascript"
src="https://cdn.rawgit.com/Foliotek/AjaxQ/master/ajaxq.js">
</script>
<script type="text/javascript"
src="https://cdn.rawgit.com/marcoschwartz/aREST.js/master/aREST.js
"></script>
<script type="text/javascript" src="interface.js"></script>
</head>
<body>
<div class='container'>
<h1>Surveillance Robot</h1>
<div class='row'>
<div class="col-md-2"></div>
<div class="col-md-2">
<button id='fw' class='btn btn-primary btn-block'
type="button">Forward</button>
</div>
</div>
<div class='row'>
<div class="col-md-2">
<button id='left' class='btn btn-primary btn-block'
type="button">Left</button>
</div>
<div class="col-md-2">
<button id='stop' class='btn btn-danger btn-block'
type="button">Stop</button>
</div>
<div class="col-md-2">
<button id='right' class='btn btn-primary btn-block'
type="button">Right</button>
18
</div>
</div>
<div class='row'>
<div class="col-md-2"></div>
<div class="col-md-2">
<button id='bw' class='btn btn-primary btn-block'
type="button">Backward</button>
</div>
</div>
<div class='row'>
<img src="http://arduinoyun.local:8080/?action=stream" />
</div>
</div>
</body>
</html>

Bagian terpenting di halaman ini adalah tombol untuk mengontrol robot dan
streaming langsung kamera. Misalnya, ini mendefinisikan tombol untuk
menggerakkan robot ke depan:
<div class="col-md-2">
<button id='fw' class='btn btn-primary btn-block'
type="button">Forward</button>
</div>

Tag <img> ini memungkinkan Anda memasukkan live stream kamera ke halaman:
<img src="http://arduinoyun.local:8080/?action=stream" />

Sekarang mari kita lihat file JavaScript yang sebenarnya akan mengirim perintah
ke robot. Ini file lengkapnya:
$( document ).ready(function() {
// Device

19
var address = '192.168.1.105';
var device = new Device(address);
// Button
$('#fw').click(function() {
device.callFunction('forward', '');
});
$('#bw').click(function() {
device.callFunction('backward', '');
});
$('#left').click(function() {
device.callFunction('left', '');
});
$('#right').click(function() {
device.callFunction('right', '');
});
$('#stop').click(function() {
device.callFunction('stop', '');
});
});

Anda hanya perlu mengubah satu hal dalam skrip ini: alamat IP board Anda, yang
Anda peroleh sebelumnya:
var address = '192.168.1.105';
var device = new Device(address);

Baris kode yang berbeda di halaman masing-masing mengontrol fungsi robot.


Misalnya, bagian kode ini membuat tautan antara tombol maju dan fungsi maju
pada robot:
$('#fw').click(function() {
device.callFunction('forward', '');
});

20
Menguji robot pengintai
Sekarang kita memiliki semua elemen di tempatnya, saatnya untuk menguji robot
pengintai kecil kita. Perhatikan bahwa Anda dapat mengambil kode lengkapnya
dari https://github.com/marcoschwartz/arduino-secret-agents.

Pastikan Anda mengkonfigurasi kode dan perangkat keras dengan instruksi dari
bagian sebelumnya.

Sekarang, saatnya memberi daya pada robot Anda dari baterai. Masukkan baterai
ke dalam rangka robot, lalu tancapkan ke input jack DC Arduino Uno.

Kemudian, sambungkan pin Arduino Uno 5V ke pin Vin Yun. Hubungkan juga pin
GND dari dua board menjadi satu. Ini akan memastikan bahwa Arduino Yun akan
didukung juga. Jangan lupa untuk memulai streaming video langsung lagi setelah
itu.

Sekarang, letakkan robot Anda di lantai dan buka halaman HTML. Inilah yang
mestinya akan Anda lihat:

21
Sekarang, coba tombol yang berbeda, dan Anda akan melihat bahwa robot
bereaksi hampir seketika. Selamat, Anda baru saja membuat robot mata-mata
Anda sendiri menggunakan Arduino!

Ringkasan
Pada artikel ini, Anda membuat robot pengintai kecil Anda sendiri yang
dikendalikan oleh Wi-Fi. Dengan robot ini, Anda sekarang dapat memata-matai
apa yang terjadi di sebuah ruangan dan juga menggerakkan robot tersebut.

22
Ada beberapa cara untuk meningkatkan proyek ini. Misalnya, Anda dapat
menambahkan lebih banyak sensor ke robot dan menampilkan data sensor ini di
halaman yang sama dengan tempat Anda mengontrol robot.

Anda telah mencapai akhir dari artikel ini, dan saya harap Anda menikmati
membaca semua proyek agen rahasia! Sekarang saya sangat mendorong Anda
untuk mencoba semua proyek dari semua artikel kami lagi, dan membangunnya
sendiri. Saya juga menyarankan agar Anda menggunakan semua pengetahuan
dari semua artikel kami ini dan membangun proyek agen rahasia Anda sendiri.
Selamat bersenang-senang!

Penulis: Marco Schwartz

JOIN dengan Grup Facebook


https://www.facebook.com/groups/elektronikaarduinoraspberry

Agar selalu rutin mendapat artikel ilmiah popular lainnya.

23
Dapatkan di https://www.tokopedia.com/anggaswangipress/buku-belajar-
micropython-pada-esp32-esp8266-arduino-500-hal

Dapatkan di https://www.tokopedia.com/anggaswangipress/buku-belajar-cepat-
otomasi-rumah-dengan-esp8266-arduino-526-hal

24
Dapatkan di https://www.tokopedia.com/anggaswangipress/buku-membuat-
sistem-cctv-canggih-dengan-esp32-cam-arduino-500-hal

Dapatkan di https://www.tokopedia.com/anggaswangipress/buku-membuat-20-
proyek-mudah-dengan-raspberry-pi-baca-deskripsi

25
26
HAL

27

Anda mungkin juga menyukai