Anda di halaman 1dari 90

Supported By :

Nusabot V1
MODUL I

ROBOTIKA

===============================================================

1. PENGERTIAN ROBOTIKA
Kata Robot berasal dari bahasa Cekoslowakia, yakni robota, yang berarti pekerja. Robot
diciptakan atas dasar untuk mendukung dan membantu pekerjaan manusia. Istilah ini
dikemukakan oleh Karel Carpec pada tahun 1920. Isaac Asimov mengajukan ada 3 hukum
dari “robotics” dimana berguna untuk melindungi kita dari kecerdasan para robot.

Hukum Pertama: Sebuah robot tidak diperbolehkan melukai manusia, atau berdiam
diri membiarkan manusia celaka. Hukum Kedua: Sebuah robot harus mematuhi perintah
yang diberikan oleh manusia kecuali perintah tersebut bertentangan dengan hukum yang
pertama. Hukum Ketiga: Sebuah robot harus dapat melindungi dirinya sendiri selama itu
tidak bertentangan dengan Hukum yang Pertama dan yang Kedua. Meski Hukum Robot ini
hanya sebuah kutipan dari cerita fiksi yang dituliskan oleh Isaac Asimov, kita sudah tidak
jauh lagi dari era dimana kita memang membutuhkan hukum yang dituliskan oleh Asimov,
tidak ada keharusan untuk menurutinya, namun ini adalah ide yang baik. Area yang
berbahaya bagi keselamatan jiwa manusia, seperti daerah yang mengandung unsur
radioaktif, sulit dijangkau, kemudian kegiatan atau aktifitas manusia yang sifatnya
berulang serta membutuhkan kepresisian, dapat digantikan robot.

Robot adalah alat transformasional untuk belajar, komputasi berpikir,


pemrograman, dan rekayasa sebagai bahan dari pembelajaran. Meskipun robotika dalam
pendidikan untuk anak usia sekolah telah ada sejak 1990-an dan menjadi lebih populer di
kalangan mahasiswa, tidak terintegrasi dengan baik sebagai alat pembelajaran teknologi.
Pentingnya mengintegrasikan robotika pendidikan sebagai sarana belajar teknologi bagi
siswa dan menjelaskan bagaimana hal itu membantu siswa mempersiapkan diri untuk masa
depan.

Berdasarkan Robotics Institute of America (RIA), definisi robot adalah “A robot is


a reprogrammable multifunctional manipulator designed to move material, parts, tools, or
specialized devices through variable programmed motions for the performance of a variety
of tasks.” Bahwa robot adalah sebuah manipulator yang multifungsi dan bekerja untuk
sebuah keahlian yang khusus, dimana robot juga harus dapat diprogram ulang.

Supported By :
A. Robot Beroda

Robot beroda dalam pergerakannya menggunakan roda atau ban, sehingga dapat
berpindah dari titik satu ke titik yang lain. Jenis-jenis robot beroda adalah differential drive,
skid steering, synchro drive, omni wheel, tricycle steering, ackerman steering, dan
articulated drive. Jenis robot beroda di atas diklasifikasikan menurut pengendalian roda
robot.

1. Robot Beroda Satu. Tidak ada yang bisa saya jelaskan disini, selama ini saya belum
menemukan robot yang berjalan menggunakan roda satu. Mungkin karena mekaniknya
yang sulit, juga sistem kontrolnya yang mustahil.

2. Robot Beroda Dua. Atau lebih sering disebut Segway, robot ini memerlukan Sensor
Gyro untuk menjaga keseimbangannya agar bisa tetap berdiri. Sensor Gyro ini, aplikasinya
selain pada robot, juga ada pada setiap Smartphone canggih sekarang.

3. Robot Beroda Tiga. Ada dua jenis robot beroda tiga. Ada yang hanya menggunakan
dua roda yang bisa bergerak, dan roda yang satunya hanya sebagai penyeimbang dan juga
membantu berbelok, tapi tidak ada penggerak dalam rodanya. Dan ada juga yang ketiga
rodanya dapat bergerak, dan selalu menggunakan Omni Wheel, jenis roda yang memiliki
roda-roda kecil didalamnya, memungkinkan robot dapat bergerak kesegala arah.

Supported By :
Castor

Omni Wheel

4. Robot Beroda Empat. Robot beroda empatpun sama. Ada yang hanya dua roda
belakang yang dapat bergerak, dan roda depannya hanya roda biasa. Ada juga yang 4WD,
robot yang keempat rodanya memiliki Actuator dan dapat bergerak.

Supported By :
4WD

5. Robot Beroda Tank. Banyak keuntungan robot yang menggunakan roda tank, salah
satunya robot dapat berjalan pada tempat yang tidak rata, berbatu, bahkan tangga sekalipun.

Robot berdasarkan mobilitasnya terbagi dua kelompok. Kelompok yang pertama


merupakan robot yang dioperasikan pada lingkungan yang tetap dengan pergerakan yang
cendrung tetap dan tertentu (stationary robot). Pada kelompok yang kedua, robot dapat
bergerak secara otonomi, memiliki navigasi dan pergerakannya tidak tetap, tergantung dari
medan jelajah (dikenal dengan mobile robot). Robot beroda (wheel robot) dapat dibagi
menurut sistem penggeraknya, yaitu sistem gerak differential drive, tricyle drive,

Supported By :
syncronous drive dan holonomic drive. Pada Gambar dibawah ini merupakan contoh
mobile robot yang bergerak menggunakan roda (wheel robot).

Gambar Mobile robot yang bergerak menggunakan roda (wheel robot)

1. Differential Drive

Sistem gerak differential drive terdiri dari dua buah roda yang terpasang pada kiri dan
kanan robot, sistem ini memungkinkan robot berputar di tempat dengan cara memutar
motor dengan arah berlawanan dapat dilihat pada Gambar dibawah Contoh sistem gerak
ini pada kehidupan sehari-hari adalah pada gardan belakang mobil dan mainan mobil radio
kontrol (RC).

Gambar Sistem gerak differential drive

2. Trycle Drive

Trycyle drive merupakan sistem gerak dengan tiga buah roda. Dua buah roda dengan satu
poros dihubungkan pada sebuah motor penggerak, sedangkan sebuah roda diberlakukan
sebagai kemudi yang dapat berputar (setir kemudi), ketika berbelok akan didapatkan radius
sepanjang titik pertemuan antara roda depan dengan roda belakang dapat dilihat pada
Supported By :
Gambar dibawah Contoh sistem gerak ini pada kehidupan sehari-hari adalah alat
transportasi becak dan bajaj.

Gambar Sistem gerak Trycyle drive

3. Syncronous Drive

Syncronous Drive adalah sistem yang menggunakan semua roda yang terdapat pada robot
untuk dapat bergerak. Pada saat robot berjalan pada permukaan yang tidak rata, maka roda
yang terpengaruh pada permukaan yang tidak rata akan didukung oleh roda yang tidak
terpengaruh, sehingga robot bergerak dengan arah yang tetap dapat dilihat pada Gambar
dibawah. Contoh sistem gerak ini pada kehidupan sehari-hari adalah pada trolly pasar
swalayan.

Gambar Sistem gerak Syncronous drive

4. Holonomic Drive

Holonomic drive adalah sistem gerak yang memungkinkan robot bergerak ke segala arah
(dengan penggunaan roda omni-directional), pada gambar dibawah konfigurasi ini
memungkinkan gerakan rotasi dan translasi pada mobile robot.

Supported By :
Gambar Roda sistem gerak Holonimic drive

B. Robot Berkaki

Selain robot beroda, jenis robot lain yang paling banyak dikembangkan adalah robot
berkaki. Robot ini bergerak dengan menggunakan servo, jenis motor yang rotasinya dapat
diatur, dan bahkan servo yang canggih sudah memiliki rangkaain pengontrol didalamnya.
Ada banyak sekali jenis robot berkaki. Berikut jenis-jenis robot berkaki yang dilihat dari
seberapa banyak jumlah kakinya.

1.Robot Berkaki Satu. Sama seperti halnya robot beroda satu, robot berkaki
satupun termasuk sulit mekaniknya. Walaupun begitu masih ada pihak yang
berusaha membuatnya, contohnya ditunjukan digambar bawah ini.

2. Robot Berkaki Dua. Biasa dipanggil Biped, robot ini memiliki 2 kaki dan dapat
berjalan layaknya seperti kaki manusia. Untuk pembelajaran ataupun aplikasi

Supported By :
nyatanya, robot berkaki tidak perlu memiliki badan ataupun bagian lainnya,
cukup kaki sajapun tidak masalah. Dibawah ini adalah contoh robotnya, dibuat
menggunaka Kit Innovati, namanya Bipedinno.

3. Robot Berkaki Tiga. Panggilan robot ini Triped, karena memiliki 3 kaki
gerak dan berjalan robot bisa lebih luas, kemanapun dia inginkan. Contoh
robot Triped dibawah ini bernama Strider.

Romela

Supported By :
4. Robot Berkaki Empat. Sebut saja Quadpod. Contoh robotnya bernama
BigDog, adalah robot berkaki empat buatan Boston Dinamic, perusahaan robot
yang sekarang telah diakuisisi oleh Google. BigDog ini dirancang untuk
keperlun militer, tepatnya untuk membawa amunisi saat perang.

BigDog

5. Robot Berkaki Enam. Sering dipanggil Hexapod. Kebanyakan gerakan


kaki robot meniru dari serangga. Robot Hexapod cukup sulit dibuat, dan
karena membutuhkan banyak Servo, juga menambah mahal pembuatannya.
Tapi keunggulannya, banyak kombinasi yang bisa dibuat. Dan pergerakan
kakinya bisa lebih cepat, serta banyak dikompetisikan juga.

Supported By :
6. Robot Berkaki Delapan. Nama kerennya Octapod. Gerakan kakinya
meniru laba-laba, sehingga pergerakan robot ini bisa lebih lincah. Karena
jumlah kakinya banyak, jumlah servo yang dipakaipun tidak perlu servo
yang kuat. Penggunaan mini servo sudah cukup.

C. Robot Tangan

ROBOT TANGAN Sebuah lengan robot adalah jenis lengan mekanik, biasanya diprogram,
dengan fungsi yang sama dengan lengan manusia; lengan mungkin jumlah total dari
mekanisme atau dapat menjadi bagian dari sebuah robot yang lebih kompleks. Link dari
manipulator tersebut dihubungkan oleh sendi sehingga baik gerak rotasi (seperti dalam
robot diartikulasikan) atau translasi (linear) perpindahan. manipulator dapat dianggap
untuk membentuk rantai kinematik. Ujung rantai kinematik manipulator disebut end
effector dan itu adalah analog dengan tangan manusia tangan robot.

Supported By :
THE END EFFECTOR atau tangan robot, dapat dirancang untuk melakukan setiap tugas
yang diinginkan seperti pengelasan, mencengkeram, berputar dll, tergantung pada aplikasi.
Sebagai contoh lengan robot di jalur perakitan otomotif melakukan berbagai tugas seperti
pengelasan dan bagian rotasi dan penempatan selama perakitan. Dalam beberapa keadaan,
emulasi dekat tangan manusia yang diinginkan, seperti pada robot yang dirancang untuk
melakukan perlucutan senjata bom dan pembuangan.

Sebuah robot industri terdiri dari sebuah manipulator robot, power supply, dan pengontrol.
Manipulator robot dapat dibagi menjadi dua bagian, masingmasing dengan fungsi yang
berbeda yaitu:

a. Lengan dan Tubuh - lengan dan tubuh robot digunakan untuk memindahkan
bagian-bagian posisi dan atau alat dalam amplop kerja. Mereka terbentuk dari
tiga sendi dihubungkan dengan link besar.

b. Wrist - pergelangan tangan ini digunakan untuk mengarahkan bagianbagian atau


peralatan di lokasi kerja. Ini terdiri dari dua atau tiga kompak sendi. Manipulator
robot dibuat dari urutan kombinasi link dan sendi. Link yang menghubungkan
para anggota kaku sendi, atau kapak. Sumbu adalah komponen bergerak dari
robot yang menyebabkan gerakan relatif antara link yang berdekatan. Sendi
mekanis digunakan untuk membangun manipulator terdiri dari lima jenis utama.
Dua dari sendi yang linear, di mana gerakan relatif antara link yang berdekatan
adalah non-rotasi, dan tiga jenis rotary, di mana gerakan relatif melibatkan rotasi
antara link. Bagian lengan-dan-tubuh manipulator didasarkan pada salah satu
dari empat konfigurasi. Masing-masing anatomi memberikan amplop kerja yang
berbeda dan cocok untuk aplikasi yang berbeda yaitu :

1. Gantry - robot ini memiliki sendi linier dan dipasang overhead. Mereka juga
disebut robot Cartesian dan bujursangkar

2. Cylindrical – Dinamakan untuk bentuk tempat kerjanya, robot anatomi


silinder yang dibuat dari sendi linear yang terhubung ke basis bersama
rotary.

Supported By :
3. Polar- Dasar bersama robot kutub memungkinkan untuk memutar dan sendi
adalah kombinasi jenis putar dan linier. Ruang kerja yang diciptakan oleh
konfigurasi ini bulat.

4. Joined-Arm - Ini adalah konfigurasi yang paling populer robot industri.


Lengan menghubungkan dengan bersama memutar, dan link di dalamnya
dihubungkan dengan sendi putar. Hal ini juga disebut robot diartikulasikan.

Supported By :
MODUL II

PENGANTAR ARDUINO

===============================================================

Tujuan :

1. Peserta mengenal sistem Arduino


2. Peserta mengetahui fungsi Arduino
3. Peserta mengerti tentang fungsi setiap pin dari Arduino
===============================================================

Blok Rangkaian Modul Arduino.

Gambar Rangkaian Arduino

Supported By :
Arduino Uno R3 adalah papan pengembangan (development board)
mikrokontroler yang berbasis chip ATmega328P. Disebut sebagai papan
pengembangan karena board ini memang berfungsi sebagai arena prototyping
sirkuit mikrokontroller. Dengan menggunakan papan pengembangan, anda akan
lebih mudah merangkai rangkaian elektronika mikrokontroller dibanding jika anda
memulai merakit ATMega328 dari awal di breadboard.

Arduino Uno memiliki 14 digital pin input / output (atau biasa ditulis I/O,
dimana 6 pin diantaranya dapat digunakan sebagai output PWM), 6 pin input
analog, menggunakan crystal 16 MHz, koneksi USB, jack listrik, header ICSP dan
tombol reset. Hal tersebut adalah semua yang diperlukan untuk mendukung sebuah
rangkaian mikrokontroler. Cukup dengan menghubungkannya ke komputer dengan
kabel USB atau diberi power dengan adaptor AC-DC atau baterai, anda sudah dapat
bermain-main dengan Arduino UNO anda tanpa khawatir akan melakukan sesuatu
yang salah. Kemungkinan paling buruk hanyalah kerusakan pada chip ATMega328,
yang bisa anda ganti sendiri dengan mudah dan dengan harga yang relatif murah.

Kata " Uno " berasal dari bahasa Italia yang berarti "satu", dan dipilih untuk
menandai peluncuran Software Arduino (IDE) versi 1.0. Arduino. Sejak awal
peluncuran hingga sekarang, Uno telah berkembang menjadi versi Revisi 3 atau
biasa ditulis REV 3 atau R3. Software Arduino IDE, yang bisa diinstall di Windows
maupun Mac dan Linux, berfungsi sebagai software yang membantu anda
memasukkan (upload) program ke chip ATMega328 dengan mudah.

Tabel Spesifikasi Arduino

Chip mikrokontroller ATmega328P

Tegangan operasi 5V

Tegangan input (yang


7V - 12V
direkomendasikan, via jack DC)

Tegangan input (limit, via jack


6V - 20V
DC)

Supported By :
14 buah, 6 diantaranya
Digital I/O pin
menyediakan PWM

Analog Input pin 6 buah

Arus DC per pin I/O 20 Ma

Arus DC pin 3.3V 50 Ma

32 KB, 0.5 KB telah digunakan


Memori Flash
untuk bootloader

SRAM 2 KB

EEPROM 1 KB

Clock speed 16 Mhz

Dimensi 68.6 mm x 53.4 mm

Berat 200 gram

1. Pemrograman

Pemrograman board Arduino dilakukan dengan menggunakan Arduino


Software (IDE) yang bisa anda dapatkan. Chip ATmega328 yang terdapat pada
Arduino Uno R3 telah diisi program awal yang sering disebut bootloader.
Bootloader tersebut yang bertugas untuk memudahkan anda melakukan
pemrograman lebih sederhana menggunakan Arduino Software, tanpa harus
menggunakan tambahan hardware lain. Cukup hubungkan Arduino dengan kabel
USB ke PC atau Mac/Linux anda, jalankan software Arduino Software (IDE), dan
anda sudah bisa mulai memrogram chip ATmega328. Lebih mudah lagi, di dalam
Arduino Software sudah diberikan banyak contoh program yang memanjakan anda
dalam belajar mikrokontroller Untuk pengguna mikrokontroller yang sudah lebih
mahir, anda dapat tidak menggunakan bootloader dan melakukan pemrograman
langsung via header ICSP (In Circuit Serial Programming) dengan menggunakan

Supported By :
Arduino ISP Arduino Uno R3 telah dilengkapi dengan chip ATmega16U2 yang
telah diprogram sebagai konverter USB to Serial. Firmware ATmega16U2 di load
oleh DFU bootloader, dan untuk merubahnya anda dapat menggunakan software
Atmel Flip (Windows) atau DFU programmer (Mac OSX dan Linux), atau
menggunakan header ISP dengan menggunakan hardware external programmer.

Development board Arduino Uno R3 telah dilengkapi dengan polyfuse yang


dapat direset untuk melindungi port USB komputer/laptop anda dari korsleting atau
arus berlebih. Meskipun kebanyakan komputer telah memiliki perlindungan port
tersebut didalamnya namun sikring pelindung pada Arduino Uno memberikan
lapisan perlindungan tambahan yang membuat anda bisa dengan tenang
menghubungkan Arduino ke komputer anda. Jika lebih dari 500mA ditarik pada
port USB tersebut, sirkuit proteksi akan secara otomatis memutuskan hubungan,
dan akan menyambung kembali ketika batasan aman telah kembali.

Board Arduino Uno dapat ditenagai dengan power yang diperoleh dari
koneksi kabel USB, atau via power supply eksternal. Pilihan power yang digunakan
akan dilakukan secara otomatis

External power supply dapat diperoleh dari adaptor AC-DC atau bahkan
baterai, melalui jack DC yang tersedia, atau menghubungkan langsung GND dan
pin Vin yang ada di board. Board dapat beroperasi dengan power dari external
power supply yang memiliki tegangan antara 6V hingga 20V. Namun ada beberapa
hal yang harus anda perhatikan dalam rentang tegangan ini. Jika diberi tegangan
kurang dari 7V, pin 5V tidak akan memberikan nilai murni 5V, yang mungkin akan
membuat rangkaian bekerja dengan tidak sempurna. Jika diberi tegangan lebih dari
12V, regulator tegangan bisa over heat yang pada akhirnya bisa merusak pcb.
Dengan demikian, tegangan yang di rekomendasikan adalah 7V hingga 12V

Beberapa pin power pada Arduino Uno :

 GND. Ini adalah ground atau negatif.


 Vin. Ini adalah pin yang digunakan jika anda ingin memberikan power langsung
ke board Arduino dengan rentang tegangan yang disarankan 7V - 12V

Supported By :
 Pin 5V. Ini adalah pin output dimana pada pin tersebut mengalir tegangan 5V yang
telah melalui regulator
 3V3. Ini adalah pin output dimana pada pin tersebut disediakan tegangan 3.3V
yang telah melalui regulator
 IOREF. Ini adalah pin yang menyediakan referensi tegangan mikrokontroller.
Biasanya digunakan pada board shield untuk memperoleh tegangan yang sesuai,
apakah 5V atau 3.3V

1. Memori

Chip ATmega328 pada Arduino Uno R3 memiliki memori 32 KB, dengan


0.5 KB dari memori tersebut telah digunakan untuk bootloader. Jumlah SRAM 2
KB, dan EEPROM 1 KB, yang dapat di baca-tulis dengan menggunakan EEPROM
library saat melakukan pemrograman.

2. Input dan Output (I/O)

Seperti yang telah disebutkan sebelumnya, Arduino Uno memiliki 14 buah


digital pin yang dapat digunakan sebagai input atau output, sengan menggunakan
fungsi pinMode(), digitalWrite(), dan digital(Read). Pin-pin tersebut bekerja pada
tegangan 5V, dan setiap pin dapat menyediakan atau menerima arus 20mA, dan
memiliki tahanan pull-up sekitar 20-50k ohm (secara default dalam posisi
disconnect). Nilai maximum adalah 40mA, yang sebisa mungkin dihindari untuk
menghindari kerusakan chip mikrokontroller

Beberapa pin memiliki fungsi khusus :

 Serial, terdiri dari 2 pin : pin 0 (RX) dan pin 1 (TX) yang digunakan untuk
menerima (RX) dan mengirim (TX) data serial.
 External Interrups, yaitu pin 2 dan pin 3. Kedua pin tersebut dapat digunakan
untuk mengaktifkan interrups. Gunakan fungsi attachInterrupt()
 PWM: Pin 3, 5, 6, 9, 10, dan 11 menyediakan output PWM 8-bit dengan
menggunakan fungsi analogWrite()
 SPI : Pin 10 (SS), 11 (MOSI), 12 (MISO), dan 13 (SCK) mendukung komunikasi
SPI dengan menggunakan SPI Library

Supported By :
 LED : Pin 13. Pada pin 13 terhubung built-in led yang dikendalikan oleh digital
pin no 13.
 TWI : Pin A4 (SDA) dan pin A5 (SCL) yang mendukung komunikasi TWI dengan
menggunakan Wire Library

Arduino Uno memiliki 6 buah input analog, yang diberi tanda dengan A0,
A1, A2, A3, A4, A5. Masing-masing pin analog tersebut memiliki resolusi 10 bits
(jadi bisa memiliki 1024 nilai). Secara default, pin-pin tersebut diukur dari ground
ke 5V, namun bisa juga menggunakan pin AREF dengan menggunakan fungsi
analogReference(). Beberapa in lainnya pada board ini adalah :

 AREF. Sebagai referensi tegangan untuk input analog.


 Reset. Hubungkan ke LOW untuk melakukan reset terhadap mikrokontroller.
Sama dengan penggunaan tombol reset yang tersedia.

3. Komunikasi

Arduino Uno R3 memiliki beberapa fasilitas untuk berkomunikasi dengan


komputer, berkomunikasi dengan Arduino lainnya, atau dengan mikrokontroller
lain nya. Chip Atmega328 menyediakan komunikasi serial UART TTL (5V) yang
tersedia di pin 0 (RX) dan pin 1 (TX). Chip ATmega16U2 yang terdapat pada board
berfungsi menterjemahkan bentuk komunikasi ini melalui USB dan akan tampil
sebagai Virtual Port di komputer. Firmware 16U2 menggunakan driver USB
standar sehingga tidak membutuhkan driver tambahan.

Pada Arduino Software (IDE) terdapat monitor serial yang memudahkan


data textual untuk dikirim menuju Arduino atau keluar dari Arduino. Led TX dan
RX akan menyala berkedip-kedip ketika ada data yang ditransmisikan melalui chip
USB to Serial via kabel USB ke komputer. Untuk menggunakan komunikasi serial
dari digital pin, gunakan SoftwareSerial library

Chip ATmega328 juga mendukung komunikasi I2C (TWI) dan SPI. Di


dalam Arduino Software (IDE) sudah termasuk Wire Library untuk memudahkan
anda menggunakan bus I2C. Untuk menggunakan komunikasi SPI, gunakan SPI
library.

Supported By :
4. Reset Otomatis (software)

Biasanya, ketika anda melakukan pemrograman mikrokontroller, anda


harus menekan tombol reset sesaat sebelum melakukan upload program. Pada
Arduino Uno, hal ini tidak lagi merepotkan anda. Arduino Uno telah dilengkapi
dengan auto reset yang dikendalikan oleh software pada komputer yang terkoneksi.
Salah satu jalur flow control (DTR) dari ATmega16U pada Arduino Uno R3
terhubung dengan jalur reset pada ATmega328 melalui sebuah kapasitor 100nF.
Ketika jalur tersebut diberi nilai LOW, mikrokontroller akan di reset. Dengan
demikian proses upload akan jauh lebih mudah dan anda tidak harus menekan
tombol reset pada saat yang tepat seperti biasanya.

Supported By :
MODUL III

PEMMROGRAMAN ARDUINO

==========================================================

Tujuan :

1. Peserta mengenal dasar pemrograman arduino


2. Peserta mengetahui fungsi bahasa c
3. Peserta mengerti tentang fungsi setiap komponen bahasa pemrograman

1. Dasar Bahasa C Arduino

Pendahuluan

Untuk installasi software dan board arduino bisa baca disini atau disumbernya
langsung disini.

Semua bahasa pemrograman terdiri dari

1. ekspresi,
2. statemen,
3. blok statemen
4. blok fungsi

Ekspresi adalah kombinasi operand dan operator contoh 2+3 , X >


Y dst… 2,3,X dan Y adalah operand sedangkan + dan > adalah operator .
Statemen adalah instruksi lengkap dalam bahasa C diakhiri dengan tanda ; (titik
koma) contoh : A= 2+3; Statemen dan ekspresi C arduino indentik dengan ANSI-
C , Struktur Program C Arduino minimal terdiri dari dua fungsi yaitu setup() dan
loop().

Supported By :
Fungsi setup() dijalankan pertama kali setiap board arduino
dihidupkan sedangkan fungsi loop() dijalankan terus menerus selama board
arduino hidup. Pada program standar C ANSI fungsi yg pertama dijalankan adalah
fungsi main() pada C arduino adalah fungsi setup().

berikut ini struktur minimal C Arduino :

//setup digunakan untuk inisialisasi variable, mode pin dll


void setup()
{
statement
}

void loop()
{
statement
}

contoh program

// Pin 13 dihubungkan ke LED pada kebanyakan Arduino board.

Supported By :
// pin 13 diberi nama led:

int led = 13;

// setup routine dijalankan sekali saat arduino direset :

void setup() {

// inisialisasi pin digital 13 sbg output.

pinMode(led, OUTPUT);

// loop melakukan elsekusi berulang:

void loop() {

digitalWrite(led, HIGH); //LED on

delay(1000);

digitalWrite(led, LOW); // LED off

delay(1000);

VARIABLE DAN KONSTANTA

Variabel adalah memori penyimpanan data yang nilainya dapat diubah-ubah.


variable disimpan di RAM

Konstanta adalah memori penyimpanan data yang nilainya tidak dapat


diubah setelah program di compile. Konstanta disimpan di memory program.

Supported By :
VARIABLE SCOPE

Variable dan konstanta global dapat diakses di seluruh bagian program.

Variable dan konstanta lokal hanya dapat diakses didalam fungsi tempat
dideklarasikannya.

Type Data

Arduino C mendukung sebagian besar tipe data ANSI C dengan beberapa


pengecualian. Variabel adalah sebuah atau beberapa lokasi memori yang diberi
nama. Ketika anda mendefinisikan variabel Anda juga harus memberitahu compiler
jenis data variable tsb. Tipe data dari variabel penting karena untuk menentukan
berapa banyak byte memori yg disediakan untuk variabel itu, dan jenis data yang
dapat disimpan dalam variabel.

Supported By :
CONTROL STATEMENT

• While Loop

while (expression) //selama expresi bernilai true laksanakan perulangan blok


statemen dibawahnya.

statement1;

statement2;

…..

atau jika satement hanya 1 baris statement tdk perlu di berikurung { }

while(expression)

statement;

• Do/While Loop

do //jalankan statement dibawah ( minimal 1 kali perulangan dilaksanakan) ,

statement1;

statement2;

while (expression); // jika ekspresi true , jalankan kembali perulangan.

Supported By :
atau jika satement hanya 1 baris

do

statement;

while (expression);

• For Loop

for (expr1; expr2; expr3) //laksanakan perulangan sebanyak expr2 dimulai dari
expr1.

statement1;

statement2;

atau jika satement hanya 1 baris

for(expr1; expr2; expr3)

statement;

• If/Else

if (expression) //jika ekspresi bernilai true laksanakan blok statemen dibawahnya

statement1;

statement2;

Supported By :

atau jika satement hanya 1 baris

if(expression)

statement;

• SWITCH/CASE

switch (expression)

case const1: // jika expression = const1 eksekusi staement2 dibawahnya

statement1;

statement2;

case const2: // jika expression = const2 eksekusi statemenibawahnya

statement3;

statement4;

case constX: // jika espression=constX eksekusi statemen dibawahnya

statement5;

statement6;

default:

statement7; // jika ekspression tdk sama dgn const1,cons2, dan constX

Supported By :
statement8;

• BREAK, CONTINUE,AND GOTO

break, continue, & goto statements digunakan untuk merubah alur eksekusi untuk
statement pengulangan for, while, do/while, and switch .

Break

break statement digunakan untuk keluar dari pengulangan for, while, do/while, atau
switch . break keluar dari blok pengulangan dimana dia berada saja.

Continue

continue akan menyebabkan program memulai iterasi berikutnya dari statemen


pengulangan while,

do/while, atau for loop. continue sama seperti break pengulangan akan berhenti
pada point yg dituju (di skip), bedanya continue akan memulai loop lagi, dari atas,
sedangkan break memaksa keluar dari loop / pengulangan .

setup()

loop()

int i;

for(i; i<7; i++)

Supported By :
{

if(i==3)

continue;

printf(%d, i )

OPERATOR DAN EXPRESSI

Operator Penugasan ( “=” )

Setelah variabel telah dideklarasikan, operasi dapat dilakukan pada variable


menggunakan operator penugasan (=). Sebuah nilai yang diberikan untuk variabel
dapat berupa sebuah konstanta, variabel, atau ekspresi. Sebuah ekspresi dalam
bahasa C adalah kombinasi dari operan (pengidentifikasi) dan operator. operaor
penugasan antara lain sebagai berikut:

Variable = nilai ,

contoh nilai_max = 10;

Operator Arithmetic :

Perkalian *

Pembagian /

Modulo %

Penjumlahan +

Pengurangan atau Negasi –

Supported By :
Operator Logika

AND &&

OR ||

Operator relasional

sama dengan ==

tdk sama dengan !=

lebih kecil <

lebih kecil atau sama dengan <=

lebih besar >

lebih besar atau sama dengan >=

increment

++variable atau variable++ artinya variable=variable+1 ,

misal ++X atau X++ artinya X = X+1

perbedaaanya adalah untuk ++X , tambahkan dulu nilai X dgn 1 baru di proses baris
kode tsb, sedangkan X++ , proses dulu baris code baru tambahkan nilai X dgn 1

deccrement

–variable atau variable– artinya variable=variable-1 ,

misal –Y atau Y– artinya Y = X-1

perbedaaanya adalah untuk –Y , kurangi dulu nilai Y dgn 1 baru di proses baris
kode tsb, sedangkan Y– , proses dulu baris code tsb baru kurangi nilai Y dgn 1

Supported By :
Compound
compound digunakan hanya untuk menyingkat baris expresi saja contoh nya sbb

a += 3; artinya a = a + 3
b -= 3; artinya b = b – 3
c *= 3; artinya c = c * 3
d /= a; artinya d = d / a
a |= 3; artinya a = a OR 3
b &= 3; artinya b = b AND 3
c ^= 3; artinya c = c ^ 3

PORTD &= 3; artinya PORTD = PORTD & 3

kondisonal Expressi

if(expression_A)

expression_B;

else

expression_C;

baris kode diatas bisa digantikan oleh kondisional expressi:

expression_A ? expression_B : expression_C;

contoh : (A > 10) ? x = 5 : x =22;

kondisional expresi diatas artinya sama dengan :

IF(A>10)

x=5;

Else

Supported By :
{

x= 22

..

FUNGSI

yang dimaksud fungsi adalah sebuah blok statement yg melaksanakan tugas tertentu dan
bisa

dipakai lebih dari 1 kali di dlm program.

program bahasa C terdiri dari fungsi fungsi dan sebuah program c minimal terdiri dari 1
fungsi .

fungsi setup() dijalankan pertama kali saat program dijalankan.

fungsi terdiri dari dua bagian utama yaitu kepala fungsi dan blok fungsi

berikut ini bentuk umum sebuah fungsi adalah :

type name_fungsi (type paramameter)

statement

kepala fungsi terdiri dari type return value, nama fungsi , types dan nama parameter(jika
ada) .

Statement di block fungsi menyatakan apa yg fungsi harus lakukan.

jika return value atau parameter tdk ada maka typennya ditulis void seperti dibawah ini

void namefungsi (void)

statement

Supported By :
}

Structures, Union, dan Data Storage

Arduino Library

Digital Input

void pinMode (int pin, int mode)

memerintahkan Arduino apakah pin akan diset sbg digital input atau output. Mode dapat
berupa Input atau OUTPUT.

int digitalRead (int pin)

Membaca nilai dari pin digital. Nilai yg didapat dapat berupa 1 atau 0.

void digitalWrite (int pin, int value)

Menulis nilai ke pin digital. Nilai yg ditulis dapat berupa 1 atau 0.

Analog Input

int analogRead (int pin)

Membaca nilai dari pin analog. Nilai yg didapat adalah antara 0 dan 1023.

void analogWrite (int pin, int value)

Menulis nilai analog ke pin. nilai yg ditulis antara 0 dan 255.

Supported By :
MODUL IV

PENGANTAR MOTOR LISTRIK

==========================================================

Tujuan :

1. Peserta memahami dasar teori motor DC (kemagnetan)

2. Mengenal komponen pembentuk notor DC

3. Peserta mengetahui cara kerja motor DC

Waktu : 2 x 45 menit

==========================================================

Magnet

Secara sederhana magnet dapat diartikan sebagai benda (besi) yang mempunyai
inti atom. Atom tersebut mempunyai sejumlah elektron yang selalu bergerak mengitari inti
atom ( proton dan neutron ).Besi magnet mempunyai 2 (dua) kutub (ujung), yaitu kutub
utara dan kutub selatan. Pada kutub-kutub itulah terpusatkan gaya magnet, yaitu gaya tarik
dan gaya tolak. Dari percobaan-percobaan yang telah dilakukan dengan mendekatkan dua
buah magnet didapatkan kesimpulan bahwa untuk magnet yang memiliki kutub yang sama
maka akan timbul gaya tolak menolak sedangkan untuk magnet yang memiliki kutub yang
berbeda akan menghasilkan gaya tarik menarik.

a. b.
Gambar 1. . Kutub sejenis b. kutub tidak sejenis

Magnet dapat digolongkan atas 2 (dua) jenis yaitu:

1. Magnet tetap (permanen)

Supported By :
Magnet tetap adalah magnet yang diperoleh dari dalam alam ( penambangan ).
Magnet ini berupa jenis besi yang disebut Lodstone. Sifat atom magnet tetap tidak
sama dengan sifat atom magnet tidak tetap. Pada bahan magnat, garis edar elektron
pada atom yang satu dan lainnya membentuk formasi yang sejajar dan selalu tetap.
Sedangkan pada bahan yang bukan magnet, arah garis edar elektron pada setiap
atom tidak teratur.

2. Magnet tidak tetap (remanen atau buatan)


Magnet tidak tetap terdiri dari 2 (dua) macam, yaitu :

a. Magnet hasil induksi


Magnet hasil induksi ini dibuat dari besi atau baja. Untuk membuatnya menjadi
magnet, diperlukan pengaruh medan magnet dari luarnya. Medan magnet akan
mempengaruhi arah edar elektron menjadi teratur dan seragam pada satu arah
saja. Hasilnya adalah besi tersebut akan menjadi magnet. Proses pembuatan
magnet ini disebut induksi. Sedangkan magnet yang dibuat disebut magnet hasil
induksi.

Gambar 2. Induksi magnet

Magnet hasil induksi bersifat sementara. Mengapa demikian ? Karena apabila


medan magnet yang dibuat di sekitarnya dihilangkan, maka garis elektron akan
kembali keposisi tidak teratur. Dengan kata lain kemagnetannya menjadi
hilang.

b. Magnet hasil perlakuan listrik

Supported By :
Magnet ini dibuat dari baja lunak (baja karbon rendah). Baja ini dipilih karena
sifat baja lunak sifat kemagnetannya relatif mudah dihilangkan. Penghilangan
sifat magnet ini memang diperlukan untuk hampir semua peralatan magnet hasil
perlakuan listrik karena seringkali kutub-kutub magnetnya harus berubah-ubah
pada kecepatan tertentu. Untuk membentuk magnet ini, diperlukan elektro-
magnet sebagai bahan sumber medan magnet.

Gambar 3. Lilitan pada inti besi

Ada 3 (tiga) cara yang dapat dilakukan untuk memperkuat medan magnet pada
elektromagnet :

1) Membuat inti besi pada kumparan


Cara ini dilakukan dengan jalan meletakkan sepotong besi di dalam
kumparan yang dialiri listrik. Besi tersebut akan menjadi magnet tidak
tetap (buatan atau remanen). Karena inti besi menjadi magnet, maka inti
besi itu akan menghasilkan medan magnet. Dilain pihak kumparan juga
akan menghasilkan medan magnet pada arah yang sama pada inti besi. Hal
ini akan menyebabkan terjadinya penguatan medan magnet. Penguatan
medan magnet diperoleh dari penjumlahan medan magnet yang dihasilkan
oleh besi dengan medan magnet yang dihasilkan oleh kumparan.

2) Menambah jumlah kumparan


Tiap-tiap kumparan elektromagnet menghasilkan medan magnet. Dengan
penambahan jumlah kumparan sudah tentu akan memperkuat medan
magnet secara keseluruhan. Kuatnya medan elektromagnet merupakan
jumlah dari medan magnet yang dihasilkan oleh masing-masing lilitan.

3) Memperbesar arus yang mengalir pada kumparan.


Besarnya arus yang dialirkan pada kumparan berbanding lurus dengan
besarnya medan magnet. Setiap elektron yang mengalir pada penghantar

Supported By :
menghasilkan medan magnet. Dengan demikian medan total tergantung
dari banyaknya elektron yang mengalir setiap detik atau kuat medan total
ditentukan oleh besarnya arus yang mengalir pada kumparan.

Motor DC

Motor arus searah (motor DC) telah ada selama lebih dari seabad. Keberadaan
motor dc telah membawa perubahan besar sejak dikenalkan motor induksi. Mesin listrik
dapat berfungsi sebagai motor listrik apabila didalam motor listrik tersebut terjadi proses
konversi dari energi listrik menjadi energi mekanik.
Motor dc memerlukan suplai tegangan yang searah pada kumparan jangkar dan
kumparan medan untuk diubah menjadi energi mekanik. Pada motor DC kumparan atau
medan magnet disebut stator (bagian yang tidak berputar) dan kumparan jangkar disebut
rotor (bagian yang berputar). Jika tejadi putaran pada kumparan jangkar dalam pada medan
magnet, maka akan timbul gaya gerak listrik atau tegangan (GGL) yang berubah-ubah arah
pada setiap setengah putaran, sehingga merupakan tegangan bolak-balik.
Prinsip dari arus searah adalah membalik phasa negatif dari gelombang sinusoidal
menjadi gelombang yang mempunyai nilai positif dengan menggunakan komutator,
dengan demikian arus yang berbalik arah dengan kumparan jangkar yang berputar dalam
medan magnet, dihasilkan tegangan (GGL) seperti yang terlihat pada Gambar dibawah ini
sebagai berikut :

Gambar 4. Gelombang Arus Searah


1. Prinsip Kerja
Daerah kumparan medan yang dialiri arus listrik akan menghasilkan
medan magnet yang melingkupi kumparan jangkar dengan arah tertentu. Konversi
dari energi listrik menjadi energi mekanik (gerak) ataupun sebaliknya berlangsung
melalui medan magnet, dengan demikian medan magnet selain berfungsi sebagai
tempat untuk menyimpan energi magnet dapat juaga berfungsi sebagai tempat

Supported By :
berlangsungnya proses perubahan energi, daerah tersebut dapat dilihat pada
gambar dibawah ini :

Gambar 5. Prinsip Kerja Motor dc

Dengan memberi arus pada kumparan jangkar yang diselimuti oleh medan
magnet maka akan menimbulkan perputaran pada motor. Agar proses perubahan
energi mekanik tersebut dapat berlangsung secara sempurna, maka tegangan
sumber harus lebih besar dari pada tegangan gerak yang disebabkan reaksi lawan.

2. Konstruksi Motor DC

Bagian-bagian yang penting dari motor DC ditunjukkan pada Gambar 6.


Kumparan penguat dihubungkan secara seri, letak kumparan jangkar berada pada
slot besi yang berada disebelah luar permukaan jangkar. Pada jangkar terdapat
komutator yang berbentuk silinder dan isolasi sisi kumparan yang dihubungkan
dengan komutator pada beberapa bagian yang berbeda sesuai dengan jenis belitan.

Supported By :
Gambar 6. Konstruksi Motor dc

Magnet yang berada pada dua sisi kanan dan kiri disebut dengan stator
yang merupakan magnet statik dengan dua kutub yaitu utara dan selatan yang
berfungsi untuk menciptakan medan magnet statik diantara area rotor agar dapat
menghasilkan gerakan pada rotor.

Supported By :
MODUL V

PENGANTAR MOTOR DRIVER

==========================================================

Tujuan :

1. Peserta mengenal sistem motor driver


2. Peserta mengetahui fungsi motor driver
3. Peserta mengerti tentang fungsi setiap pin dari komponen L293 dan L298
Waktu : 2 x 45 menit

==========================================================

Motor Driver

Motor Driver merupakan sebuah alat yang berfungsi untuk mengendalikan


gerakan motor dan merupakan sebuah interface antara motor dengan sebuah
kontroler. Dalam dunia robotic motor driver yang digunakan biasanya dibuat denga
menggunakan IC tipe L293 atau pun L298 dikarenakan kemudahannya.
Kemudahan dalam menggunakan IC tersebut adalah dapat berintegrasi dalam sisten
yang sederhan. keunggulan lainnya adalah IC tersebut memiliki kapasitas yang
cukup besar dalam melewatkan arus lisrtik untuk menggerakan motor DC. Selain
itu, IC tersebut memiliki empat input dan empat output sehingga dapat
menggerakan 2 motor DC dengan mode bidirectional untuk bergerak maju atau
mundur.

Gambar 1. IC motor driver

Supported By :
L293

L293 adalah komponen IC motor driver yang dirancang untuk dapat mendrive atau
mengendalikan motor dua arah dengan arus maksimal sebesar 1A pada voltase 4.5v sampai
dengan 36v. L293D sama halnya dengan l293, hanya saja L293D dapat mendrive motor
dua arah dengan arus maksimal sebesar 600mA. IC L293D merupakan tipe IC yang banyak
beredar dipasaran dibandingkan dengan tipe L293, oleh sebab itu banyak para disainer
system motor driver menggunakan IC tipe L293D. IC L293 memiliki 15 pin yang berikut
tertera pada gambar dibawah ini.

Gambar 1. Keterangan pin IC L293D

Tabel 1. Kapasitas nilai komponen L293

Simbol Keterangan Nilai Satuan/ Unit

Vs Sumber catu daya 7 ~ 36 Volt

Vss Sumber caru daya logika 5 ~ 36 Volt

Ven Catu daya enable/ pengaktif 5~7 Volt

Vin Input catu daya control 2.3 ~ 7 Volt

Vout Out put catu daya pada beban = Vs Volt

Io Arus maximum 1.2 Amper

Ptot Daya keseluruhan pada Tpins = 900 C 4 Watt

Tj Junction tempratur -400 ~1500 Celcius

Supported By :
INPUT 1 merupakan jalur logika pengaktif OUTPUT1

INPUT 2 merupakan jalur logika pengaktif OUTPUT2

INPUT 3 merupakan jalur logika pengaktif OUTPUT3

INPUT 4 merupakan jalur logika pengaktif OUTPUT4

L298

L298 merupakan sebuah komponen elektronik berbentuk IC yang memiliki 15 kaki


pin multiwatt. IC ini merupakan IC dual full-bridge driver yang di desain sesuai dengan
ketentuan TTL (Transistor-Transistor Logic) untuk menjembatani catu daya eksternal pada
beban secara terpisah dengan catu daya system layaknya sebuah relay. Pada IC ini juga
disediakan dua buah input eneble untuk mengendalikan

Simbol Keterangan Nilai Satuan/ Unit

Vs Sumber catu daya 5 ~ 36 Volt

Vss Sumber caru daya logika 5 ~ 36 Volt

Ven Catu daya enable/ pengaktif 5~7 Volt

Supported By :
Vin Input catu daya control 2.3 ~ 7 Volt

Vout Out put catu daya pada beban = Vs Volt

Io Arus maximum 1.2 Amper

Ptot Daya keseluruhan pada Tpins = 900 C 4 Watt

Tj Junction tempratur -400 ~1500 Celcius

INPUT 1 merupakan jalur logika pengaktif OUTPUT1

INPUT 2 merupakan jalur logika pengaktif OUTPUT2

INPUT 3 merupakan jalur logika pengaktif OUTPUT3

INPUT 4 merupakan jalur logika pengaktif OUTPUT4

Supported By :
MODUL VI

Merakit Nusabot V1

==========================================================

Tujuan :

1. Peserta dapat merakit mekanik Robot


2. Peserta mengetahui bagian-bagian robot
3. Peserta mengerti tentang mekanik robot
Waktu : 2 x 45 menit

==========================================================

Untuk Merakit Robot NUSABOT V1.

Dapat Melihat Link Youtube dibawah ini :

https://www.youtube.com/watch?v=uT65FsH5Y7c&t=707s

Rakitlah Robot dengan santai jangan terburu-buru.

Supported By :
MODUL VII

Dasar Program pergerakkan Robot Beroda Nusabot

==========================================================

Tujuan :

1. Peserta mengenal sistem motor driver


2. Peserta mengetahui fungsi motor driver
3. Peserta mengerti tentang fungsi setiap pin dari komponen L298D
Waktu : 2 x 45 menit

1. PIN Driver L298

Supported By :
2. Pengkabelan Robot mobil

 Pin In1 Driver Motor ==> Pin 8 Arduino


 Pin In2 Driver Motor ==> Pin 7 Arduino
 Pin In3 Driver Motor ==> Pin 5 Arduino
 Pin In4 Driver Motor ==> Pin 2 Arduino
 Pin ENA-bawah Driver Motor ==> Pin 6 Arduino
 Pin ENB-bawah Driver Motor ==> Pin 3 Arduino
 Pin ENA-atas Driver Motor ==> Pin 5V Arduino
 Pin ENB-atas Driver Motor ==> Pin 5V Arduino
 OUT1 dan OUT2 Driver Motor ==> Motor 1
 OUT3 dan OUT4 Driver Motor ==> Motor 2
 Pin 12V Driver Motor ==> Hubungkan ke baterai
 Pin GND Driver Motor ==> Hubungkan ke Ground(-) Baterai dan
Ground(GND) Arduino
 Kaki vcc pada masing-masing komponen hubungkan ke sumber power
positif 5v (bisa dari 5v Arduino)
 Kaki gnd/ground pada masing-masing komponen hubungkan ke sumber
negatif power (dihubungkan ke pin gnd Arduino)

Supported By :
int enA = 6;

int in1 = 8;

int in2 = 7;

// motor two

int enB = 3;

int in3 = 5;

int in4 = 2;

void setup()

void maju()

{ digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 200);

// turn on motor B

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

// set speed to 200 out of possible range 0~255

analogWrite(enB, 200);

void kanan()

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 200);

// turn on motor B

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

// set speed to 200 out of possible range 0~255

Supported By :
analogWrite(enB, 200);

void kiri()

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 200);

// turn on motor B

digitalWrite(in3,HIGH);

digitalWrite(in4, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enB, 200);

void mundur()

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

analogWrite(enA, 200); // bisa sampai 255

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

analogWrite(enB, 200);

void berhenti()

// this function will run the motors in both directions at a fixed speed

// turn on motor A

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 0);

Supported By :
// turn on motor B

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enB, 0);

void loop() {

maju();

delay(1000);

mundur();

delay(1000);

Program di atas akan menjalankan robot berjalan maju 1 detik dan berjalan
selama 1 detik juga.

Jika Robot Tidak maju dan mudur melainka belok ke kanan atau ke
kiri, rubah di void maju, void mundur, void kanan, void kiri. Sesuaikan
dengan gerak robot. Misal Robot di program Maju tapi robot berjalan
mundur, jadi rubah void maju menjadi void mundur dan yang tadinya void
mundur di rubah jadi void maju (jadi tinggal di rubah saja. Atau robot di
program belok kanan tapi robot bergerak kea rah kiri, rubah saja void kanan
jadi void kiri dan sebaliknya.

Supported By :
Rubah program yang ada di void loop menjadi :

void loop() {

maju();

delay(1000);

mundur();

delay(1000);

kanan();

delay(2000);

kiri();

delay(2000);

AMATI APA ADA YANG SALAH DENGAN GERAKKAN ROBOT

Latihan :

1. Buat Robot Berjalan membentuk lingkaran


2. Buat robot berjalan membentuk kotak
3. Buat robot berjalan membentuk zig-zag

Coba terlebih dahulu sebelum melihat jawaban di bawah

Jawaban

1. Buat Robot Berjalan membentuk lingkaran

Rubah pada void maju

enA = 255

enB = 180

dan di void loop

panggil perintah maju saja

Supported By :
void maju()

{ digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 250);

// turn on motor B

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

// set speed to 200 out of possible range 0~255

analogWrite(enB, 180);

void loop() {

maju();}

Supported By :
2. Buat robot berjalan membentuk kotak

Cari berapa lama robot berbelok kanan hingga berbelok 900 dengan merubah
delay

misal

void loop() {

kanan();

delay(200);

Rubah delay sehingga robot berbelok 900

Jika robot sudah dapat berbelok 900

Tambahkan maju pada loop

void loop() {

maju();

delay(200);

kanan();

delay(200);

Supported By :
3. Buat robot berjalan membentuk zig-zag

Sama dengan dengan soal no 2

Logika

Maju

Kanan

Maju

Kiri

Rubah gerak kanan dan kiri robot dengan mencari berapa waktu (delay) yang
tepat supaya robot berbelok 450

WARNING : JANGAN MELANJUTKAN MATERI BERIKUTNYA


SEBELUM MENGUASAI MOVING ROBOT DENGAN SANGAT BAIK

Supported By :
MODUL VIII

Mengenal Sensor Ultrasonik

==========================================================

Tujuan :

1. Peserta dapat mengetahui sensor ultrasonik


2. Peserta mengetahui bagian-bagian sensor ultrasonik
3. Peserta mengerti tentang fungsi sensor ultrasonik
Waktu : 2 x 45 menit

===========================================================

Sensor ultrasonik adalah sensor yang berfungsi untuk merubah besaran fisis
(suara) menjadi besaran listrik maupun sebaliknya yang dikonversi menjadi jarak.

Konsep dasar dari sensor ini yaitu memanfaatkan prinsip pemantulan gelombang
suara yang dapat diaplikasikan untuk menghitung jarak benda dengan frekuensi
yang ditentukan sesuai dengan sumber oscilator.

Disebut sebagai sensor ultrasonic dikarenakan sensor ini mengaplikasikan


gelombang ultrasonik sebagai trandusernya.

Supported By :
Gelombang ultrasonic merupakan gelombang suara yang memiliki frekuensi tinggi
yaitu pada kisaran 20 kHz.

Bunyi ini tidak bisa di dengar dengan telinga normal manusia, hanya bisa didengar
oleh sistem pendengaran pada kelelawar, anjing, lumba-lumba, dan kucing.

Dan sifat dari gelombang ini yaitu hanya bisa merambat melalui zat cair, padat, dan
gas.

Reflektivitas gelombang ultrasonik pada permukaan benda padat hampir sama


dengan reflektivitas suara ultrasonik dengan permukan benda cair.

Meskipun begitu pada gelombang bunyi ultrasonik akan mudah diserap oleh bahan
– bahan tertentu seperti bahan dari busa maupun tekstil .

Cara Kerja

Sensor ini dimulai dari gelombang ultrasonik dengan frekuensi tertentu yang
dibangkitkan melewati alat yang disebut juga dengan nama piezoelektrik sebagai
transmitter.

Alat ini akan menghasilkan gelombang ultrasonik yang berfrekuensi


40kHz (sesuai dengan osilator yang terpasang pada sensor).

Biasanya alat ini akan memancarkan gelombang pada suatu target dan jika sudah
mengenai permukaan target, maka gelombang tersebut akan terpantulkan kembali.
Pantulan gelombang tersebut akan diterima oleh piezoelektrik (receiver) dan
kemudian sensor akan mengkalkulasi perbedaan antara waktu pengiriman dan
waktu gelombang pantul yang diterima.

Supported By :
ilustrasi prinsip kerja sensor ultrasonic
Keterangan :
Pemancar ultrasonik akan memancarkan gelombang dengan frekuensi 40kHz
dengan jeda waktu tertentu.
Kecepatan rambat gelombang bunyi yaitu kisaran 340 m/s.
Sesudah gelombang pantulan mengenai alat penerima, gelombang tersebut akan
diolah untuk dihitung jarak benda tersebut.
Rumus jarak benda dapat dihitung dengan rumus sebagai berikut :
S = 340.t/2
S = Jarak
t = Selisih waktu dipancarkan dan waktu diterima gelombang
Bagian – bagian dari sensor ultrasonic antara lain :
1. Piezoelektrik
Berfungsi sebagai alat pengubah energi listrik dijadikan menjadi energi mekanik.
Material dasar yang terdapat pada piezoelektrik yang menghasilkan medan listrik
saat terjadi tekanan mekanis dan sebaliknya.

Supported By :
Misalnya saja rangkaian pengukur dioperasikan pada mode pulsa dengan unsur
piezoelektrik yang sama, sehingga bisa digunakan sebagai mode reiceiver dan
transmitter.
Frekuensi dihasilkan tergantung dari osilator yang terpasang dan itu akan
disesuaikan dengan frekuensi kerja dari transduser.

2. Transmitter
Merupakan alat yang mempunyai peran sebagai pemancar gelombang dengan
frekuensi 40 kHz yang bersumber dari osilator. Frekuensi tersebut dihasilkan dari
rangkaian osilator serta amplifier sinyal / penguat sinyal.
Pada amplifier sinyal akan menghasilkan sinyal listrik yang diumpankan ke
piezoelektrik dan terjadilah reaksi mekanik.
Pada proses itu dimana piezoelektrik akan memancarkan gelombang sesuai dengan
sumber osilatornya.

3. Receiver
terdiri dari transduser ultrasonik yang memakai piezoelektrik juga yang difungsikan
sebagai penerima gelombang pantulan.
Bahan piezoelektrik mempunyai reaksi yang reversible, terdapat elemen keramik
yang berfungsi sebagai pembangkit tegangan listrik.
Pada waktu gelombang datang dengan kriteria frekuensi yang resonan dan pada saat
itu akan menggetarkan bahan piezoelektrik.
Spesifikasi
Modul yang ada dipasaran yang sering digunakan untuk arduino yaitu tipe HC-
SR04 (seperti gambar diatas). Spesifikasi dari sensor ultrasonic tersebut :

 Jarak deteksi antara 2cm – 300cm


 Tingkat kepresisisan pengukuran jarak ±3 mm
 Tegangan operasional 5 Vdc
 Sudut sensor < 15 derajat
 Konsumsi arus berkisar 2mA
 Dimensi modul 45mm x 20mm
Supported By :
MODUL IX

Dasar Program pergerakkan Robot Beroda Nusabot

Memprogram Robot Avoider Tanpa Servo

==========================================================

Tujuan :

1. Peserta mengenal sistem Robot avoider


2. Peserta mengetahui fungsi Robot avoider
3. Peserta mengerti tentang fungsi setiap pin dari komponen Robot avoider
Waktu : 2 x 45 menit

Robot avoider/ robot halang rintang merupakan sebuah robot yang bergerak
menggunakan 2 buah motor DC yang dikontrol menggunakan sensor ultrasonic Hc-
sr04 sebagai alat deteksi jarak dan dijalankan mengunakan Microkontroller
Arduino. Cara kerja robot ini yaitu robot akan berjalan terus selama sensor
ultrasonic tidak mendeteksi halangan. Apabila robot mendeteksi halangan dengan
jarak yang ditentukan maka, robot akan memeriksa keadaan dari kanan dan kiri
robot, apakah di kanan robot ada halangan atau di kiri robot ada halangan. Agar
robot dapat mendeteksi sisi kanan dan kiri robot maka sensor ultrasonic akan di
putar dengan servo motor. Jika di sebelah kiri tidak ada halangan maka robot akan
berbelok ke kiri dan sebaliknya. Dan berikut tutorial bagaimana cara membuat
robot avoider/ robot halang rintang.
1. Pengkabelan robot pendeteksi dinding tanpa servo

Supported By :
Hubungkan kabel pada Robot Nusabot sesuai dengan gambar di atas dan pin di
bawah ini :
 Pin Trigger sensor ultrasonic ==> Pin 11 Arduino
 Pin Echo sensor ultrasonic ==> Pin 9 Arduino
 Pin In1 Driver Motor ==> Pin 8 Arduino
 Pin In2 Driver Motor ==> Pin 7 Arduino
 Pin In3 Driver Motor ==> Pin 5 Arduino
 Pin In4 Driver Motor ==> Pin 2 Arduino
 Pin ENA-bawah Driver Motor ==> Pin 6 Arduino
 Pin ENB-bawah Driver Motor ==> Pin 3 Arduino
 Pin ENA-atas Driver Motor ==> Pin 5V Arduino
 Pin ENB-atas Driver Motor ==> Pin 5V Arduino
 OUT1 dan OUT2 Driver Motor ==> Motor 1
 OUT3 dan OUT4 Driver Motor ==> Motor 2
 Pin 12V Driver Motor ==> Hubungkan ke baterai
 Pin GND Driver Motor ==> Hubungkan ke Ground(-) Baterai dan
Ground(GND) Arduino
 Kaki vcc pada masing-masing komponen hubungkan ke sumber
power positif 5v (bisa dari 5v Arduino)
 Kaki gnd/ground pada masing-masing komponen hubungkan ke
sumber negatif power (dihubungkan ke pin gnd Arduino)

Program ;

#define trigPin1 11

#define echoPin1 9

int ledPin1 = 12;

int enA = 6;

int in1 = 8;

int in2 = 7;

// motor two

Supported By :
int enB = 3;

int in3 = 5;

int in4 = 2;

long duration, distance, FrontSensor;

void setup()

Serial.begin (9600);

pinMode(trigPin1, OUTPUT);

pinMode(echoPin1, INPUT);

void mundur()

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

analogWrite(enA, 255); // bisa sampai 255

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

analogWrite(enB, 255);

void kanan()

// this function will run the motors in both directions at a fixed speed

// turn on motor A

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 255);

// turn on motor B

digitalWrite(in3,LOW);

digitalWrite(in4, HIGH);

Supported By :
// set speed to 200 out of possible range 0~255

analogWrite(enB, 255);

void kiri()

// this function will run the motors in both directions at a fixed speed

// turn on motor A

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 255);

// turn on motor B

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enB, 255);

void maju()

// this function will run the motors in both directions at a fixed speed

// turn on motor A

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 255);

// turn on motor B

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

// set speed to 200 out of possible range 0~255

analogWrite(enB, 255);

Supported By :
}

void berhenti()

// this function will run the motors in both directions at a fixed speed

// turn on motor A

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 50);

// turn on motor B

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enB, 50);

void ultrasonik()

SonarSensor(trigPin1, echoPin1);

FrontSensor = distance;

Serial.print(FrontSensor);

Serial.print(" - ");

if(FrontSensor <=30) // untuk merubah jarak robot dengan dinding lebih kecil 30 cm

{ berhenti();

delay(1000);

mundur();

delay(1500);

kiri();

delay(500);

void loop() {

Supported By :
maju();

ultrasonik();

delay(100);

void SonarSensor(int trigPin,int echoPin)

digitalWrite(trigPin, LOW);

delayMicroseconds(2);

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);

distance = (duration/2) / 29.1;

Cek Terlebih dahulu di Serial Monitor pada software Arduino, apakah di serial
monitor menampilkan data dari sensor ultrasonik, jika belim coba cek lagi kabel
pada pin ultrasonik sr04 ke arduino sudah benar?

Tampilan serial monitor

Supported By :
Catatan :

void ultrasonik()

SonarSensor(trigPin1, echoPin1);

FrontSensor = distance;

Serial.print(FrontSensor);

Serial.print(" - ");

if(FrontSensor <=30) // untuk merubah jarak robot dengan dinding lebih kecil 30 cm

{ berhenti();

delay(1000);

mundur();

delay(1500);

kiri();

delay(500);

Rubah jarak sesuai yang dikehendaki dengan merubah angka pada


if(FrontSensor <=30) , 30 adalah jarak antara dinding dengan robot, dapat
di rubah hingga 300 cm

Supported By :
MODUL X

Dasar Program pergerakkan Robot Beroda Nusabot

Memprogram Robot Avoider dengan Servo

==========================================================

Tujuan :

1. Peserta mengenal sistem Robot avoider dengan Servo


2. Peserta mengetahui fungsi Robot avoider dengan Servo
3. Peserta mengerti tentang fungsi setiap pin dari komponen Robot avoider
Waktu : 2 x 45 menit

1. Pengkabelan robot pendeteksi dinding tanpa servo

Hubungkan kabel pada Robot Nusabot sesuai dengan gambar di atas dan pin di
bawah ini :
 Pin Trigger sensor ultrasonic ==> Pin 11 Arduino
 Pin Echo sensor ultrasonic ==> Pin 9 Arduino
 vcc pada sensor ultrasonic ==> Pin 13
 Pin In1 Driver Motor ==> Pin 8 Arduino
 Pin In2 Driver Motor ==> Pin 7 Arduino
 Pin In3 Driver Motor ==> Pin 5 Arduino
 Pin In4 Driver Motor ==> Pin 2 Arduino
 Pin ENA-bawah Driver Motor ==> Pin 6 Arduino

Supported By :
 Pin ENB-bawah Driver Motor ==> Pin 3 Arduino
 Pin ENA-atas Driver Motor ==> Pin 5V Arduino
 Pin ENB-atas Driver Motor ==> Pin 5V Arduino
 OUT1 dan OUT2 Driver Motor ==> Motor 1
 OUT3 dan OUT4 Driver Motor ==> Motor 2
 Pin 12V Driver Motor ==> Hubungkan ke baterai
 Pin GND Driver Motor ==> Hubungkan ke Ground(-) Baterai dan
Ground(GND) Arduino
 Kaki vcc pada masing-masing komponen hubungkan ke sumber
power positif 5v (bisa dari 5v Arduino)
 Kaki gnd/ground pada masing-masing komponen hubungkan ke
sumber negatif power (dihubungkan ke pin gnd Arduino)

Program ;

#include <Servo.h> //Servo motor library. This is standard library

#include <NewPing.h>

//our L298N control pins

int enA = 6;

int in1 = 8;

int in2 = 7;

// motor two

int enB = 3;

int in3 = 5;

int in4 = 2;

#define trig_pin 11

#define echo_pin 9

#define maximum_distance 200

boolean goesForward = false;

int distance = 100;

Supported By :
NewPing sonar(trig_pin, echo_pin, maximum_distance); //sensor function

Servo servo_motor; //our servo name

void setup(){

pinMode(12, OUTPUT);

pinMode(13, OUTPUT);

digitalWrite(12, HIGH);

digitalWrite(13, HIGH);

servo_motor.attach(10); //our servo pin

servo_motor.write(90);

delay(2000);

distance = readPing();

delay(100);

distance = readPing();

delay(100);

distance = readPing();

delay(100);

distance = readPing();

delay(100);

void berhenti()

// this function will run the motors in both directions at a fixed speed

// turn on motor A

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 10);

// turn on motor B

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

Supported By :
// set speed to 200 out of possible range 0~255

analogWrite(enB, 10);

void maju(){

if(!goesForward){

goesForward=true;

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

analogWrite(enA, 200); // bisa sampai 255

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

analogWrite(enB, 200);

}}

void mundur(){

goesForward=false;

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 200);

// turn on motor B

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enB, 200);

void kanan(){

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 200);

// turn on motor B

Supported By :
digitalWrite(in3,HIGH);

digitalWrite(in4, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enB, 200);

void kiri(){

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 200);

// turn on motor B

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

// set speed to 200 out of possible range 0~255

analogWrite(enB, 200);

void Sonar()

int distanceRight = 0;

int distanceLeft = 0;

delay(50);

if (distance <= 15){

berhenti();

delay(500);

mundur();

delay(200);

berhenti();

delay(500);

distanceRight = lookRight();

delay(300);

Supported By :
distanceLeft = lookLeft();

delay(300);

if (distance >= distanceLeft){

kanan();

delay(350);

berhenti();

delay(500);

else{

kiri();

delay(350);

berhenti();

delay(500);

else{

maju();

distance = readPing();

void loop(){

Sonar();

int lookRight(){

servo_motor.write(20);

delay(500);

int distance = readPing();

delay(100);

servo_motor.write(90);

return distance;

Supported By :
int lookLeft(){

servo_motor.write(180);

delay(500);

int distance = readPing();

delay(100);

servo_motor.write(90);

return distance;

delay(100);

int readPing(){

delay(70);

int cm = sonar.ping_cm();

if (cm==0){

cm=250;

return cm;

Catatan : Robot akan mendeteksi bagian mana yang pada dinding yang
lebih jauh, jika disebelah kanan robot ada dinding robot akan berbelok
kearah kiri, dan juga sebaliknya, bila robot berbelok kea rah yang ada
dindingnya rubah pada moving void kanan dan void kiri, seperti pada materi
moving.
Coba rubah delay moving robot pada void Sonar program di atas,
supaya dapat mengetahui perbedaan. Dan coba rubah jarak ultrasonic pada
if (distance <= 15){ <<< menjadi 30 (yaitu 30 cm)
Skema Robot, >>> Maju>>> ada Objek >>> Mundur>>>belok
Kanan/Kiri, Rubahlah delay pada mundur atau belok kanan/kiri di void sonar
sesuai yang kalian inginkan

Supported By :
MODUL XI

Memprogram Robot Remote Bluetooth Android

==========================================================

Tujuan :

1. Peserta mengenal sistem Robot Remote Bluetooth Android


2. Peserta mengetahui fungsi Robot Remote Bluetooth Android
3. Peserta mengerti tentang fungsi setiap pin dari komponen Remote Bluetooth
Android
Waktu : 2 x 45 menit

Module Bluetooth HC-05 adalah module komunikasi nirkabel via bluetooth yang
dimana beroperasi pada frekuensi 2.4GHz dengan pilihan dua mode konektivitas.Mode 1
berperan sebagai slave atau receiver data saja, mode 2 berperan sebagai master atau dapat
bertindak sebagai transceiver. Pengaplikasian komponen ini sangat cocok pada project
elektronika dengan komunikasi nirkabel atau wireless.

Aplikasi yang dimaksud antara lain aplikasi sistem kendali, monitoring, maupun
gabungan keduanya. Antarmuka yang dipergunakan untuk mengakses module ini yaitu
serial TXD, RXD, VCC serta GND. Serta terdapat LED (built in) sebagai indikator koneksi
bluetooth terhadap perangkat lainnya seperti sesama module, dengan smartphone android,
dan sebagainya.

Module Bluetooth HC-05


Supported By :
Jangkauan jarak efektif module ini saat terkoneksi dalam range 10 meter, dan jika melebihi
dari range tersebut maka kualitas konektivitas akan semakin kurang maksimal.

Spesifikasi dari module ini antara lain :

 Frekuensi kerja ISM 2.4 GHz


 Bluetooth protocol : Bluetooth tipe v2.0+EDR
 Kecepatan dapat mencapai 1Mbps pada mode sinkron
 Kecepatan dapat mencapai 2.1 Mbps / 160 kbps pada mode asinkron maksimum
 Tegangan kerja pada 3,3 – 6 Volt DC
 Konsumsi arus kerja yaitu 50 mA
 Memiliki modulasi Gaussian Frequency Shift Keying (GFSK)
 Sensitivitas -84dBm (0.1% BER)
 Daya emisi 4 dBm
 Suhu operasional range -20°C — +75°C
 Memiliki keamanan dengan enkripsi data dan enkripsi
 Dimensi modul 15.2×35.7×5.6 mm

Module ini dapat digunakan sebagai mode slave (Rx), maupun mode master (TX) dan
memiliki 2 metode konfigurasi yaitu AT Mode dan Communication Mode. Pada AT Mode
berfungsi sebagai pengaturan konfigurasi dari HC-05, sedangkan pada Communication
Mode berfungsi sebagai komunikasi nirkabel dengan perangkat atau piranti lainnya.

1. Pengkabelan robot Robot Remote Bluetooth Android

Supported By :
Hubungkan kabel pada Robot Nusabot sesuai dengan gambar di atas dan pin di
bawah ini :
 Pin TX BT HC 05 ==> Pin 0 arduino (RX) >> lepaskan kabel bila
menguplod program dari software arduino
 Pin RX BT HC 05 ==> Pin 0 arduino (TX)
 Pin In1 Driver Motor ==> Pin 8 Arduino
 Pin In2 Driver Motor ==> Pin 7 Arduino
 Pin In3 Driver Motor ==> Pin 5 Arduino
 Pin In4 Driver Motor ==> Pin 2 Arduino
 Pin ENA-bawah Driver Motor ==> Pin 6 Arduino
 Pin ENB-bawah Driver Motor ==> Pin 3 Arduino
 Pin ENA-atas Driver Motor ==> Pin 5V Arduino
 Pin ENB-atas Driver Motor ==> Pin 5V Arduino
 OUT1 dan OUT2 Driver Motor ==> Motor 1
 OUT3 dan OUT4 Driver Motor ==> Motor 2
 Pin 12V Driver Motor ==> Hubungkan ke baterai
 Pin GND Driver Motor ==> Hubungkan ke Ground(-) Baterai dan
Ground(GND) Arduino
 Kaki vcc pada masing-masing komponen hubungkan ke sumber
power positif 5v (bisa dari 5v Arduino)
 Kaki gnd/ground pada masing-masing komponen hubungkan ke
sumber negatif power (dihubungkan ke pin gnd Arduino)

Install di Hp Andoid kalian


Link :
https://play.google.com/store/apps/details?id=braulio.calle.bluetoothRCcontrol
ler&hl=in

Supported By :
Program ;

//speed of motors betwen 0 and 255, if you like you can change it

int enA = 6;

int in1 = 8;

int in2 = 7;

// motor two

int enB = 3;

int in3 = 5;

int in4 = 2;

char command;

void setup() {

Serial.begin(9600);

//pins for motor controller

pinMode(12, OUTPUT);

digitalWrite(12, HIGH);

void berhenti()

// this function will run the motors in both directions at a fixed speed

// turn on motor A

digitalWrite(in1, HIGH);

Supported By :
digitalWrite(in2, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 2);

// turn on motor B

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enB, 2);

void kanan(){

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 250);

// turn on motor B

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

// set speed to 200 out of possible range 0~255

analogWrite(enB, 250);

void kiri(){

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

analogWrite(enA, 250); // bisa sampai 255

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

analogWrite(enB, 250);

void maju(){

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

Supported By :
// set speed to 200 out of possible range 0~255

analogWrite(enA, 250);

// turn on motor B

digitalWrite(in3,HIGH);

digitalWrite(in4, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enB, 250);

void mundur(){

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 250);

// turn on motor B

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

// set speed to 200 out of possible range 0~255

analogWrite(enB, 250);

void loop() {

if(Serial.available() > 0){

command = Serial.read();

berhenti();

switch(command){

case 'F':

maju();

break;

case 'B':

mundur();

break;

Supported By :
case 'L':

kiri();

break;

case 'R':

kanan();

break;

Saat Mengupload program ke Arduino kabel yg Ke Pin 0 (pin RX) di lepas


terlebih dahulu

Setelah Mengupload Program di atas ke Arduino nusabot

1. Aktifkan Bluetooth Pada Android hubungkan ke HC 05, passwordnya


1234 atau 0000

Supported By :
2. Buka aplikasi Bluetooth RC Controller pilih Connect to car pada
option menu

4. Pilih HC 05 pada Aplikasi

5. Indikator Akan Berubah Menjadi warna Hijau menandakan robot dan HP


terhubung

Catatan : Bila Masih salah saat di tekan rubah moving sesuai dengan fungsi
button

Supported By :
MODUL XII

Memprogram Robot Pembaca Garis

==========================================================

Tujuan :

1. Peserta mengenal sistem Robot Line Follower


2. Peserta mengetahui fungsi Robot Line Follower
3. Peserta mengerti tentang fungsi setiap pin dari Robot Line Follower
Waktu : 2 x 45 menit
Robot dibuat untuk mengerjakan tugas tertentu, sehingga ada banyak jenis robot
yang telah diciptakan oleh manusia. Salah satu contoh jenis robot yang sering digunakan
adalah “line follower”. Robot line follower dimasukkan dalam jenis robot yang memiliki
prinsip kerja sederhana. Sesuai namanya, robot ini akan bergerak mengikuti garis yang
telah dibuat oleh manusia.

Robot ini mendeteksi garis dengan menggunakan sensor infrared yang terpasang
padanya. Data hasil pembacaan sensor dikirim ke mikrokontroler, kemudian
mikrokontroler akan menggunakan data tersebut untuk memutuskan arah gerak robot. Pada
programnya juga dapat ditanamkan logika fuzzy dan PID untuk meningkatkan
responsibilitas robot satu ini.

Dalam industri, robot ini dimanfaatkan untuk mengangkut barang dalam jumlah
kecil maupun besar dalam satu jalur yang tidak memiliki percabangan. Desain dan
spesifikasi robot line follower dibuat dengan menyesuaikan fungsi yang akan
dijalankannya. Jika robot line follower dirancang untuk mengangkut barang yang berat,
maka kapasitas motor yang digunakan juga harus besar agar robot ini dapat menjalankan
tugasnya dengan baik.

Algoritma Pergerakan Robot

Sebelum membuat program, maka kita perlu mendefinisikan seluruh


kemungkinan pembacaan sensor proximity. Dengan demikian kita dapat
menentukan pergerakan robot yang tujuannya adalah menjaga agar robot selalu
berada tepat diatas garis. Berikut adalah beberapa kemungkinan pembacaan garis
oleh sensor proximity :

Supported By :
Gambar Kemungkinan Posisi Sensor Proximity Pada Line
Setelah mengetahui kemungkinan-kemungkinan posisi sensor, maka
selanjutnya harus didefinisikan aksi dari setiap kondisi tersebut. Perhatikan tabel
berikut ini :
Posisi
Aksi Robot Roda Kiri Roda Kanan
Sensor

1 Belok Kanan Tajam Maju cepat Berhenti

2 Belok Kanan Sedang Maju cepat Maju lambat

3 Maju Lurus Maju cepat Maju cepat

4 Belok Kiri Sedang Maju lambat Maju cepat

5 Belok Kiri Tajam Berhenti Maju cepat

Supported By :
1. Pengkabelan robot Robot Remote Bluetooth Android

Hubungkan kabel pada Robot Nusabot sesuai dengan gambar di atas dan pin di
bawah ini :
 Pin Out 1 ==> Pin A0 arduino
 Pin Out 2 ==> Pin A1 arduino
 Pin Out 3 ==> Pin A2 arduino
 Pin Out 4 ==> Pin A3 arduino
 Pin Out 5 ==> Pin A4 arduino
 Pin In1 Driver Motor ==> Pin 8 Arduino
 Pin In2 Driver Motor ==> Pin 7 Arduino
 Pin In3 Driver Motor ==> Pin 5 Arduino
 Pin In4 Driver Motor ==> Pin 2 Arduino
 Pin ENA-bawah Driver Motor ==> Pin 6 Arduino
 Pin ENB-bawah Driver Motor ==> Pin 3 Arduino
 Pin ENA-atas Driver Motor ==> Pin 5V Arduino
 Pin ENB-atas Driver Motor ==> Pin 5V Arduino
 OUT1 dan OUT2 Driver Motor ==> Motor 1
 OUT3 dan OUT4 Driver Motor ==> Motor 2

Supported By :
 Pin 12V Driver Motor ==> Hubungkan ke baterai
 Pin GND Driver Motor ==> Hubungkan ke Ground(-) Baterai dan
Ground(GND) Arduino
 Kaki vcc pada masing-masing komponen hubungkan ke sumber
power positif 5v (bisa dari 5v Arduino)
 Kaki gnd/ground pada masing-masing komponen hubungkan ke
sumber negatif power (dihubungkan ke pin gnd Arduino)

Program kalibrasi sensor garis :

int data0;

int data1;

int data2;

int data3;

int data4;

void setup() {

// put your setup code here, to run once:

Serial.begin(9600);

Serial.print("Baca Analog Input 1");

Serial.print("Baca Analog Input 2");

Serial.print("Baca Analog Input 3");

Serial.print("Baca Analog Input 4");

Serial.print("Baca Analog Input 5");

void loop() {

// put your main code here, to run repeatedly:

data0 = analogRead(0);

data1 = analogRead(1);

Supported By :
data2 = analogRead(2);

data3 = analogRead(3);

data4 = analogRead(4);

Serial.print("Nilai ADC0=");

Serial.println(data0);

Serial.print("Nilai ADC1=");

Serial.println(data1);

Serial.print("Nilai ADC2=");

Serial.println(data2);

Serial.print("Nilai ADC3=");

Serial.println(data3);

Serial.print("Nilai ADC4=");

Serial.println(data4);

delay(1000);

Catatan :

Ada 3 Program untuk kalibrasi sensor garis, kalian boleh memilih salah satu
program saja

Setelah menguploud program buka serial monitor pada program Arduino, taruh
robot di garis hitam apakah ada perubahan, dan coba di kertas putih, bandingkan nilai
yang ada pada serial monitor (sama seperti Materi Kalibrasi Sensor Ultrasonik)

Program Line Follower

#define enA 6

#define in1 8

#define in2 7

#define in3 5

#define in4 2

#define enB 3

void setup() {

Serial.begin(9600);

Supported By :
pinMode (A0, INPUT);

pinMode (A1, INPUT);

pinMode (A2, INPUT);

pinMode (A3, INPUT);

pinMode (A4, INPUT);

pinMode (A5, INPUT);

void berhenti()

// this function will run the motors in both directions at a fixed speed

// turn on motor A

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 10);

// turn on motor B

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enB, 10);

void mundur(){

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 200);

// turn on motor B

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enB, 200);

Supported By :
void maju(){

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

analogWrite(enA, 100); // bisa sampai 255

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

analogWrite(enB, 100); }

void belok_kiri(){

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 0);

// turn on motor B

digitalWrite(in3,LOW);

digitalWrite(in4, HIGH);

// set speed to 200 out of possible range 0~255

analogWrite(enB, 120); }

void belok_kanan(){

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 120);

// turn on motor B

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

// set speed to 200 out of possible range 0~255

analogWrite(enB, 0);

void kanan(){

digitalWrite(in1, LOW);

Supported By :
digitalWrite(in2, HIGH);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 90);

// turn on motor B

digitalWrite(in3,HIGH);

digitalWrite(in4, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enB, 90);

void kiri(){

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 150);

// turn on motor B

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

// set speed to 200 out of possible range 0~255

analogWrite(enB, 150);

void loop() {

int s1 = digitalRead(A0);

int s2 = digitalRead(A1);

int s3 = digitalRead(A2);

int s4 = digitalRead(A3);

int s5 = digitalRead(A4);

Serial.print(s1);

Serial.print(" -- ");

Serial.print(s2);

Serial.print(" -- ");

Serial.print(s3);

Serial.print(" -- ");

Supported By :
Serial.print(s4);

Serial.print(" -- ");

Serial.print(s5);

Serial.print(" -- ");

Serial.println("");

delay(100);

if ( (s1==1) && (s2==1) && (s3==0) && (s4==1) && (s5==1) ) {

maju();

else if ( (s1==0) && (s2==0) && (s3==0) && (s4==0) && (s5==0) ) {

berhenti();// for thicker lines

else if ( (s1==1) && (s2==0) && (s3==1) && (s4==1) && (s5==1) ) {

belok_kiri();

delay(100);

else if ( (s1==1) && (s2==1) && (s3==1) && (s4==0) && (s5==1) ) {

belok_kanan();

delay(100);

else if ( (s1==0) && (s2==1) && (s3==1) && (s4==1) && (s5==1) ) {

belok_kiri();

delay(100);

else if ( (s1==1) && (s2==1) && (s3==1) && (s4==1) && (s5==0) ) {

belok_kanan();

delay(100);

else{

maju();

Catatan : Ada beberapa Program Line Follower Coba dan pelajari

Supported By :
Keuntungan Belajar Robot

Mungkinkah di sekolah kita sekarang ini kita belajar akan sistem robot?
Sebuah teknologi yang menurut kita jauh dari jangkauan kita, namun saat ini ada di
depan mata kita. Sanggupkah kita menjangkaunya sekarang?
Agar kita dapat mengerti sebuah teknologi robotik, kita tidak akan lepas dari
teknik-teknik dasar pembuatan robot itu. Hal inilah yang akan kita pelajari sejak
dini di sekolah-sekolah (SMP-SMA). Sebuah robot dalam bentuk mindstorm yang
Supported By :
di dalamnya terdapat brain (otak), hardware (komponen-komponen penyusun
robot baik itu berfungsi sebagai input, output ataupun robot body)
maupun software (programming language). Selain kita mendapat pengetahuan
dasar tentang pembuatan robot, kita juga akan mendapat keuntungan-keuntungan
antara lain:

1. Meningkatkan kreatifitas beripikir dalam diri siswa-siswi sehingga apa yang


ada di dalam dirinya dapat dituangkan ke dalam sebuah karya,
2. Meningkatkan daya imajinasi bagi siswa-siswi agar dapat menghasilkan
suatu karya yang nyata dalam kehidupan sehari-hari sehingga suatu saat
nanti dapat membantu manusia,
3. Menciptakan pola pemikiran terstruktur dan metode pemecahan masalah
yang tepat dalam diri siswa-siswi (Proses: Tantangan/Masalah – Rumusan
Masalah – Susun Pengetahuan – Melakukan Percobaan – Membuat
Kesimpulan). Hal ini membuat siswa akan terlatih untuk berpikir cepat
dalam menghadapi masalah/tantangan yang ada,
4. Meningkatkan kemampuan programming dasar (berupa: block code)
sebagai langkah awal untuk mempelajari bahasa pemrograman lainnya,

5. Melatih siswa untuk bekerja dalam tim sehingga mampu menghasilkan


karya yang lebih berkualitas dan bermanfaat karena proses sinergi ini

Di samping hal itu kita dapat mengkaitkan antara teknik dasar robotik ini dengan
bidang pelajaran yang lain seperti: matematika, fisika dan science. Hal ini
dimungkinkan karena dengan belajar konstruksi ataupun perilaku serta
pemrograman pada robot ini kita tidak lepas dari perhitungan-perhitungan
matematika dan dasar pemikiran seperti yang diajarkan pada pelajaran fisika
maupun science. Menguntungkan bukan?

TERIMA KASIH SUDAH MENGGUNAKAN ROBOT NUSABOT V1

Supported By :

Anda mungkin juga menyukai