1. Tujuan [Kembali]
- Dapat mengerti cara kerja dari sensor warna dan ultrasonik serta dapat mengimplementasikannya
- Dapat mengerti sistem dari komunikasi serial dan mengetahui cara penggunaannya
- Robot ini membantu perawat pasien covid untuk mengantar makanan ke pasien covid
- Meminimalisir tertularnya virus covid ke perawat pasien covid dan mengunjung rumah sakit
2. Alat dan Bahan [Kembali]
Nama | Jumlah | Gambar |
---|---|---|
Arduino Pro Mini | 2 pcs | |
Motor DC + Gearbox + Roda | 2 pcs | |
IC L293D | 1 pcs | |
Sensor Warna TCS34725 | 1 pcs | |
Sensor Ultrasonik PING ))) | 3 pcs | |
Spacer 2cm | 12 pcs | |
LED 5mm (merah, biru, hijau) | 1 pcs | |
Buzzer Aktif 5V | 1 pcs | |
Resistor 300R | 3 pcs | |
Block Header | 3 pcs | |
Pinhead Female 1x40p | 2 pcs | |
Pinhead Male 1x40p | 1 pcs | |
LCD 16x2 | 1 pcs | |
Baterai LiOn 18650 | 2 pcs | |
Holder Baterai untuk 2 Baterai | 1 pcs | |
Kabel Serabut 24 AWG | Secukupnya | |
Timah Solder | Secukupnya |
3. Dasar Teori [Kembali]
Arduino Pro Mini
Arduino Pro Mini adalah sebuah papan mikrokontroler berbasis ATmega168 (datasheet) pada mulanya, namun kemudian ditingkatkan lagi menggunakan ATmega328. Pro Mini memiliki 14 pin digital input/output (yang mana 6 pin digunakan sebagai ouput PWM), 8 pin input analog, sebuah resonator, sebuah tombol reset, dan lubang-lubang untuk memasang kepala pin. Terdapat 6 kepala pin yang dapat dihubungkan ke kabel FTDI atau ke kabel USB Adapter lainnya untuk memberikan tegangan dari USB dan berkomunikasi antara komputer dengan Arduino Pro Mini. Arduino Pro Mini tidak dapat langsung dihubungkan ke komputer karena Pro Mini tidak memiliki USB Adapter terintegrasi sehingga para pengguna diwajibkan menyediakan USB Adapter tersendiri. Ada beberapa USB Adapter yang tersedia di pasaran dari mulai yang mahal hingga yang termurah. Penggunan bisa menggunakan USB Adapter dengan chip ATmega16U2, FTDI, CP1202, atau CH340. Pada dasarnya Arduino Pro Mini hanyalah breakout dari chip ATmega168/ATmega328 hanya saja dilengkapi dengan beberapa komponen pelengkap.
Pro Mini dibuat dengan tujuan sebagai papan yang dipasang didalam objek semi-permanen atau sekedar sebagai pertunjukan. Papan Pro Mini pada umumnya dijual tanpa pin kepala yang terpasang pada lubang, hal ini memberikan keleluasaan kepada para penggunanya untuk memasang pin kepala sesuai keinginannya atau bahkan langsung dihubungkan ke kabel. Dipasaran ada 2 versi papan Pro Mini. Jenis pertama yang bekerja pada tegangan 3,3 Volt dengan pewaktu 8 MHz, sedangkan papan lainnya bekerja pada tegangan 5 Volt dengan pewaktu 16 MHz. Pinout Arduino Pro Mini sama dengan Pinout Arduino Mini hanya saja ukuran papan yang berbeda. Papan Arduino Pro Mini dibuat dan dikembangkan oleh perusaahaan SparkFun Electronics.
Ringkasan Spesifikasi
Dibawah ini spesifikasi sederhana dari Arduino Pro Mini:
Motor DC
Motor
DC adalah motor listrik yang memerlukan suplai tegangan arus searah
pada kumparan medan untuk diubah menjadi energi gerak mekanik. Kumparan
medan pada motor dc disebut stator (bagian yang tidak berputar) dan
kumparan jangkar disebut rotor (bagian yang berputar). Secara teori, Motor DC adalah Motor
listrik yang membutuhkan suplai tegangan arus searah atau arus DC (Direct
Current) pada kumparan medan untuk diubah menjadi energi mekanik. Kumparan
medan pada motor tersebut disebut stator, dan kumparan jangkar disebut rotor.
Pada percobaan ini menggunakan motor DC dengan tipe pompa air.
Driver Motor L293D
IC L293D ini digunakan sebagai motor driver dalam rangkaian elektronika mikro kontroller yang menggunakan motor DC.
IC L293D adalah sirkuit terpadu (IC) dual H-Bridge driver untuk rangkaian motor DC. Driver motor ini bertindak sebagai penguat arus dengan mengambil sinyal kontrol arus rendah dan memberikan output ke sinyal kontrol arus yang lebih tinggi. Sinyal arus yang lebih tinggi ini lah yang digunakan untuk menggerakkan motor.
Sirkuit terpadu IC L293D berisi dua buah sirkuit H-Bridge. Dalam modus umum, dua motor DC dapat digerakkan secara bersamaan, dengan arah gerak motor yang dapat ditentukan. Operasi motor dua motor dapat dikendalikan oleh input logic pada pin 2 & 7 dan 10 & 15. Input logic 00 atau 11 akan menghentikan motor. Input logic 01 dan 10 akan memutar di searah jarum jam atau berlawanan arah jarum jam.
Berikan nilai HIGH pada pin 1 dan 9 (sesuai dengan dua motor) agar motor mulai beroperasi. Ketika pin tersebut diberi nilai HIGH, driver terkait akan diaktifkan. Sebaliknya ketika diberi nilai LOW maka motor akan berhenti.
- Kontrol hingga 2 motor DC
- Arus motor 600mA
- PWM input
- Voltage 5V logic
- DIP pin 16
Sensor Warna TCS34725
Sensor warna TCS230 adalah sensor warna yang sering digunakan pada aplikasi mikrokontroler untuk pendeteksian suatu object benda atau warna dari objet yang di monitor.
Spesifikasi:
- Power supply 3-5v
- Serial interface I2C (SDA SCL)
- Tidak terpengaruh cahaya infrared / IR
- Tahan dari interferensi cahaya
- LED dapat dikendalikan (nyala atau mati)
- Dapat mendeteksi warna obyek dalam kondisi kurang cahaya
- Jarak baca optimum 1 cm
Sensor Ping )))
Sensor ini merupakan sensor ultrasonik siap pakai, satu alat yang berfungsi sebagai pengirim, penerima, dan pengontrol gelombang ultrasonik. Alat ini bisa digunakan untuk mengukur jarak benda dari 2cm - 4m dengan akurasi 3mm. Alat ini memiliki 4 pin, pin Vcc, Gnd, Trigger, dan Echo. Pin Vcc untuk listrik positif dan Gnd untuk ground-nya. Pin Trigger untuk trigger keluarnya sinyal dari sensor dan pin Echo untuk menangkap sinyal pantul dari benda.
Cara menggunakan alat ini yaitu: ketika kita memberikan tegangan positif pada pin Trigger selama 10uS, maka sensor akan mengirimkan 8 step sinyal ultrasonik dengan frekuensi 40kHz. Selanjutnya, sinyal akan diterima pada pin Echo. Untuk mengukur jarak benda yang memantulkan sinyal tersebut, maka selisih waktu ketika mengirim dan menerima sinyal digunakan untuk menentukan jarak benda tersebut.
Berikut adalah visualisasi dari sinyal yang dikirimkan oleh sensor HC-SR04
Nilai jarak dapat diperoleh melalui rumus berikut ini:
Jarak (cm) = Lama Waktu Pantul (uS) / 29.034 / 2
Rumus jarak didapat dari pembagian lama waktu pantul dengan kecepatan gelombang ultrasonik dan dibagi 2 karena pada saat pemantulan terjadi dua kali jarak tempuh antara sensor dengan objek.Yaitu pada saat gelombang dipancarkan dari transmitter ke objek dan pada saat gelombang memantul ke receiver ultrasonik.
Grafik Respon Sensor:
LCD 16x2
Liquid Crystal Display (LCD) adalah sebuah peralatan elektronik yang berfungsi untukmenampilkan output sebuah sistem dengan cara membentuk suatu citra atau gambaran pada sebuah layar. Secara garis besar komponen penyusun LCD terdiri dari kristal cair (liquid crystal) yang diapit oleh 2 buah elektroda transparan dan 2 buah filter polarisasi (polarizing filter).
Gambar Penampang komponen penyusun LCD
Keterangan:
1. Film dengan polarizing filter vertical untuk memolarisasi cahaya yang masuk.
2. Glass substrate yang berisi kolom-kolom elektroda Indium tin oxide (ITO).
3. Twisted nematic liquid crystal (kristal cair dengan susunan terpilin).
4. Glass substrate yang berisi baris-baris elektroda Indium tin oxide (ITO).
5. Film dengan polarizing filter horizontal untuk memolarisasi cahaya yang masuk.
6. Reflektor cahaya untuk memantulkan cahaya yang masuk LCD kembali ke mata pengamat.
Sebuah citra dibentuk dengan mengombinasikan kondisi nyala dan mati dari pixel-pixel yang menyusun layar sebuah LCD. Pada umumnya LCD yang dijual di pasaran sudah memiliki integrated circuit tersendiri sehingga para pemakai dapat mengontrol tampilan LCD dengan mudah dengan menggunakan mikrokontroler untuk mengirimkan data melalui pin-pin input yang sudah tersedia.
LED
Light Emitting Diode atau yang sering disingkat LED merupakan sebuah komponen elektromagnetik yang dapat memancarkan cahaya monokromatik melalui tegangan maju. LED terbuat dari bahan semi konduktor yang merupakan keluarga dioda. LED dapat memancarkan berbagai warna, tergantung dari bahan semikonduktor yang digunakan. LED juga dapat memancarkan cahaya inframerah yang tak tampat, seperti pada remote TV.
Cara Kerja
Cara kerja dari LED hampir sama dengan keluarga dioda yang memiliki dua kutub, yaitu Kutub Positif (P) dan Kutub Negatif (N). LED hanya akan memancarkan cahaya apabila dialiri tegangan maju (bias foward) dari Anoda ke Katoda. LED sendiri terdiri atas sebuah chip semikonduktor yang didopping, sehingga menciptakan junction antara kutub P dan kutub N. Proses dopping dalam semikonduktor adalah proses untuk menambahkan impurity / ketidakmampuan pada semikonduktr yang murni, sehingga dapat emnghasilkan karakteristik kelistrikan yang diinginkan.
Buzzer
Buzzer Listrik adalah sebuah komponen elektronika yang dapat mengubah sinyal listrik menjadi getaran suara. Pada umumnya, Buzzer yang merupakan sebuah perangkat audio ini sering digunakan pada rangkaian anti-maling, Alarm pada Jam Tangan, Bel Rumah, peringatan mundur pada Truk dan perangkat peringatan bahaya lainnya. Jenis Buzzer yang sering ditemukan dan digunakan adalah Buzzer yang berjenis Piezoelectric, hal ini dikarenakan Buzzer Piezoelectric memiliki berbagai kelebihan seperti lebih murah, relatif lebih ringan dan lebih mudah dalam menggabungkannya ke Rangkaian Elektronika lainnya. Buzzer yang termasuk dalam keluarga Transduser ini juga sering disebut dengan Beeper.
Resistor
Resistor atau hambatan yaitu salah satu komponen elektronika yang punya nilai hambatan tertentu, dimana hambatan ini akan menghambat arus listrik yang mengalir melaluinya. Sebuah resistor biasanya terbuat dari bahan campuran Carbon. Tapi tidak sedikit juga resistor yang terbuat dari kawat nikrom, sebuah kawat yang punya resistansi yang cukup tinggi dan tahan pada arus kuat. Contohnya, penggunaan kawat nikrom bisa dilihat pada elemen pemanas setrika. Jika elemen pemanas tersebut dibuka, maka ada seutas kawat spiral yang biasa disebut dengan kawat nikrom.
Satuan Resistor yaiti Ohm (Ω) yang merupakan satuan SI buat Resistansi listrik.
Fungsi Resistor
Ada beberapa fungsi dari Resistor yang harus kamu ketahui, yaitu:
~ Fungsi resistor yaitu buat membatasi arus listrik yang mengalir.
~ Fungsi resistor buat aplikasi DC yang membutuhkan keakuratan yang sangat tinggi. Contoh, aplikasi penggunaan resistor ini yaitu DC Measuring equipment, dan reference gulators buat voltage regulator dan decoding Network.
~ Fungsi resistor sebagai standart didalam verifikasi keakuratan dari suatu alat ukur resistive.
~ Fungsi resistor buat pengatur tegangan output pada power supplay.
~ Fungsi resistor buat aplikasi power, karena membutuhkan frekuensi respon yang baik, daya yang tinggi dan nilai yang lebih besar dari pada power wirewound resistor.
~ Fungsi resistor pembagi tegangan.
Karakteristik Resistor
Ada beberapa karakteristik utama pada sebuah resistor, yaitu sebagai berikut:
~ Resistansi terhadap daya listrik yang dapat boros
~ Koefisien suhu, desah listrik, dan induktansi
~ Resistor bersifat resistif
~ Terbuat dari bahan karbon
Baterai LiOn 18650
Baterai ini adalah jenis battery yang dapat di cas ulang (rechargeable).
Kebanyakan perangkat elektronik portable yang membutuhkan tenaga besar
dan tahan lama dipastikan menggunakan battery 18650. Sebut saja misalnya
laptop, power bank, wireless bluetooth speaker, perangkat remote
control, mobil, helicopter. Alat pertukangan bor atau obeng wireless,
lampu senter LED, rokok elektronik dan sebagainya.
Ukuran Battery
Nama Battery Lithium-Ion (Li-Ion) 18650, merujuk pada ukuran fisiknya
yang berbentuk silinder. Angka 18 untuk diameter battery 18 mm dan angka
650 untuk ukuran tinggi battery, 65,0 mm. Angka “0” dibelakang koma
merujuk pada toleransi tinggi total battery berdasarkan jenis produk
battery 18650 tersebut. Seperti:
– terdapat rangkaian proteksi atau tidak (protected atau unprotected),
jika terdapat rangkaian proteksi, battery sedikit akan lebih panjang.
– kutub positif battery dari jenis flat top di mana kutub positif battery datar hampir rata dengan body-nya atau
– kutub positif yang terdapat tonjolan kecil (button top) seperti yang terdapat pada kutub positif battery ukuran AA atau AAA.
Tegangan dan kapasitas
Tegangan kerja Battery Lithium-Ion 18650 adalah 3,7 Volt. Maksimum dapat
di cas 4,2 Volt dan battery dianggap kosong pada tegangan 2,8 – 3,0
Volt. Jadi ketika anda mengukur tegangan battery-nya 2,8 – 3,0 V, berati
battery tersebut sudah kosong, alias perlu di cas kembali. Sedang
kemampuan menyimpan arus listrik beragam tergantung produksinya. Dan
secara umum diketahui battery ini maksimal meiliki kapasitas 3600 mAH.
Ada yang 3400 mAH, 2500 mAH, 2200 mAH, 1500 mAH dan sebagainya. Namun
maksimal yang dapat diproduksi hingga kini hanya dapat menyimpan arus
maksimal 3600 mAH.
mAH adalah singkatan dari mili Ampere Hour, satuan untuk kapastias arus
listrik yang dapat disimpan battery. Misalkan kita punya battery 18650
dengan kapasitas 3000 mAH. Ini artinya, battery tersebut dapat menyuplai
arus listrik 3000 mA (3 Ampere) selama satu jam.
4. Flowchart [Kembali]
A. Unit Navigasi
1. Main
2. Subroutines
B. Unit Utama
1. main
5. Listing Program [Kembali]
#include <NewPing.h> // Jumlah sensor #define SONAR_NUM 3 // Jarak maksimum (dalam cm) #define MAX_DISTANCE 100 // Perintah #define STOP 0 #define FORWARD 1 #define LEFT 2 #define RIGHT 3 // Objek sensor NewPing sonar[SONAR_NUM] = { /* Parameter: trig, echo, jarak maksimum Karena sensor Ping))) menggabungkan pin trig dan echo Maka pin trig dan echo disamakan */ NewPing(8, 8, MAX_DISTANCE), NewPing(9, 9, MAX_DISTANCE), NewPing(10, 10, MAX_DISTANCE) }; // Variabel perintah yang akan dikirimkan uint8_t command = 0; uint8_t distances[3]; /* * distances[0] -> Sensor depan * distances[1] -> Sensor samping 1 * distances[2] -> Sensor samping 2 */ void setup() { Serial.begin(9600); // membuka komunikasi serial (UART) dengan baudrate 9600bps } void loop() { for (uint8_t i = 0; i < 3; i++) { // Ukur jarak distances[i] = sonar[i].ping_cm(); // Jika jarak melewati batas maksimum, jarak akan sama dengan 0 // Ubah jarak jika sama dengan 0 menjadi jarak maksimum (100cm) distances[i] = (distances[i] == 0) ? 100 : distances[i]; delay(30); } // Hitung perbedaan jarak sensor samping 1 dan 2 int8_t diff = distances[0] - distances[1]; // Cek sensor depan terhalang/tidak terhalang if (distances[2] > 15) { if (abs(diff) > 2) { if (diff > 0) { //kanan command = LEFT; } else { //kiri command = RIGHT; } } else { //lurus command = FORWARD; } } else { // berhenti command = LEFT; } // Kirim perintah ke unit utama Serial.write(command); }
// Libary untuk sensor warna TCS34725 #include <Wire.h> #include "Adafruit_TCS34725.h" // Membuat objek sensor warna Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X); // Mendefinisikan konstanta #define in1_R 8 #define in2_R 9 #define en1 10 #define en2 11 #define in1_L 12 #define in2_L 13 #define STOP 0 #define FORWARD 1 #define LEFT 2 #define RIGHT 3 #define LED_R A0 #define LED_G A1 #define LED_B A2 #define BUZZER A3 // Mendeklarasikan variabel uint8_t command; long lastCheck; void setup() { // Mengatur I/O pinMode(in1_L, OUTPUT); pinMode(in2_L, OUTPUT); pinMode(in1_R, OUTPUT); pinMode(in2_R, OUTPUT); pinMode(en1, OUTPUT); pinMode(en2, OUTPUT); pinMode(LED_R, OUTPUT); pinMode(LED_G, OUTPUT); pinMode(LED_B, OUTPUT); pinMode(BUZZER, OUTPUT); if (!tcs.begin()) while (1); analogWrite(en1, 100); analogWrite(en2, 100); Serial.begin(9600); } void loop() { // Membaca perintah command = Serial.read(); // Mengecek warna if (millis() - lastCheck > 1000) { float red, green, blue; tcs.getRGB(&red, &green, &blue); if (green > 100) { stop(); digitalWrite(LED_R, HIGH); for (int i = 0; i < 5; i++) { digitalWrite(BUZZER, HIGH); delay(100); digitalWrite(BUZZER, LOW); delay(100); } delay(1000); } else if (red > 100) { stop(); digitalWrite(LED_G, HIGH); for (int i = 0; i < 5; i++) { digitalWrite(BUZZER, HIGH); delay(100); digitalWrite(BUZZER, LOW); delay(100); } delay(1000); } else if (blue > 110) { stop(); digitalWrite(LED_B, HIGH); for (int i = 0; i < 5; i++) { digitalWrite(BUZZER, HIGH); delay(100); digitalWrite(BUZZER, LOW); delay(100); } delay(1000); } else { digitalWrite(LED_R, LOW); digitalWrite(LED_G, LOW); digitalWrite(LED_B, LOW); digitalWrite(BUZZER, LOW); } lastCheck = millis(); } // Mengeksekusi perintah switch (command) { case STOP: Serial.println("Berhenti"); stop(); break; case LEFT: Serial.println("Belok Kiri"); turnLeft(); break; case RIGHT: Serial.println("Belok Kanan"); turnRight(); break; case FORWARD: Serial.println("Maju"); forward(); break; } } void turnLeft() { digitalWrite(in1_L, LOW); digitalWrite(in2_L, LOW); digitalWrite(in1_R, LOW); digitalWrite(in2_R, HIGH); } void turnRight() { digitalWrite(in1_L, LOW); digitalWrite(in2_L, HIGH); digitalWrite(in1_R, LOW); digitalWrite(in2_R, LOW); } void stop() { digitalWrite(in1_L, LOW); digitalWrite(in2_L, LOW); digitalWrite(in1_R, LOW); digitalWrite(in2_R, LOW); } void forward() { digitalWrite(in1_L, LOW); digitalWrite(in2_L, HIGH); digitalWrite(in1_R, LOW); digitalWrite(in2_R, HIGH); }
6. Rangkaian Simulasi [Kembali]
A. Unit Navigasi
pertama
slave akan mendeteksi data dari sensor ultrasonic menuju dinding dan
akan memproseskan data yang telah di dapat, kemudian data yang telah
diproses akan di kirimkan menuju master. sensor ultrasonik akan
mendeteksi jarak ke dinding, kemudian
jika selisih atau nilai absolute dari kedua sensor yaitu sensor d1 dan
d2 yang menghadap ke dinding adalah lebih besar dari 6cm maka akan
dideteksi kembali yaitu jika d1>d2 maka robot akan belok kiri dengan
sudut tertentu. dan jika d1<d2 maka robot akan belok kanan dengan
sudut tertentu. kemudian jika d3 mendeteksi lebih dari 6cm maka robot
akan maju atau lurus dan jika sensor ini mendeteksi kurang dari 6cm maka
robot akan belok ke kiri dengan sudut tertentu. kemudian dari data di
dapatkan tadi maka akan dikirim command yaitu berupa jika belok kiri
command angka "1" jika belok kanan command adalah angka "2" jika maju
command adalah angka "3".
kemudian pada master data yang telah di kirim akan diolah kembali yaitu jika angka 1 maka motor atau robot akan berbelok kekiri dan jika angka 2 motor atau robot akan berbelok ke kanan dan jika angka 3 motor atau robot akan maju lurus. kemudian pada master ada sensor warna yang akan mendeteksi warna dibagian lantai di depan pintu kamar pasien dimana jika minsalnya terdeteksi warna merah maka robot akan berbelok masuk ke menuju arah pintu dan akan menghidupkan buzzer led(sesuai dengan warna yang tertera pada lantai di depan pintu) dan akan menampilkan di LCD yaitu "silahkan ambil makanan anda", kemudian pada master juga terdapat button, ini sebagai indikator jika ditekan maka bertanda bahwa makanan telah di ambil dan led akan mati dan LCD akan menampilkan "terima kasih cepat sembuh ya". kemudian robot akan menuju ruangan berikutnya dengan sistematis yang seperti sebelumnya.
9. Link Download [Kembali]
Rangkaian Simulasi | Unit Utama - Download Unit Navigasi - Download |
Listing Program | Unit Utama - Download Unit Navigasi - Download |
Library Arduino | NewPing - Download Adafruit_TCS34725 - Download |
HTML | Download/td> |
Datasheet | L293D - Download ATmega328 - Download Sensor Warna TCS34725 - Download Sensor PING))) - Download |
Video | Download |
No comments:
Post a Comment