Minggu, 16 September 2018

Modul 4 - Demo Project

Robot Pengantar Makanan 

untuk Ruangan Isolasi Covid-19




1. Tujuan [Kembali]

Alat ini dirancang dengan beberapa tujuan berikut.
  • Memenuhi syarat untuk Modul 4 Praktikum Mikroprosesor dan Mikrokontroler 
  • Membantu mengurangi kontak Tenaga Kesehatan dalam pengisolasian pasien Covid-19
  • Membantu mengantar makanan dengan tepat waktu dan efisien.

2. Alat dan Bahan [Kembali]

  • Alat
Nama Gambar
Solder
Wire Stipper
3D Printer
Obeng
  • Bahan
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 salah satu varian dari Board Arduino. Board ini diotaki oleh Mikrokontroler dari Atmel yaitu ATmega328. Berikut ini fitur yang dimiliki Mikrokontroler ini.


Fitur di atas secara otomatis dimiliki oleh Board Arduino Pro Mini. Arduino jenis ini menggunakan Mikrokontroler ATmega328 dengan kemasan TQFP. Kemasan ini memungkinkan Arduino Pro Mini memiliki ukuran yang kecil yaitu 1.778 x 3,302 cm. Board ini juga dilengkapi dengan kristal eksternal sebesar 16 MHz dan sebuah Voltage Regulator 5V. Namun varian lain dari board ini hanya dilengkapi dengan kristal eksternal 8 MHz dan Voltage Regulator 3.3V. Kristal eksternal 8 MHz menggantikan kristal 16 MHz agar konsumsi daya Mikrokontroler dapat dikurangi. Varian ini sangat cocok untuk penggunaan baterai sebagai catu daya.

Board Arduino Pro Mini ini telah dilengkapi dengan firmware yang membuat ATmega328 dapat diprogram dengan aplikasi Arduino IDE. Firmware ini mengklasifikasikan I/O pada ATmega 328 sehingga menjadi seperti gambar berikut.
Pembuat Platform Arduino melakukan mapping pada I/O ATmega328. Karena itu kita dapat menggunakan Arduino dengan lebih mudah dengan Pemrograman yang lebih mudah, karena kita tidak berinteraksi secara langsung dengan register-register yang ada pada ATmega328.

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 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 objek yang dimonitor.
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 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.

Nama Battery Lithium-Ion (Li-Ion) 18650

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]

Terdapat 2 mikrokontroler yang saling berkomunikasi untuk menjalankan fungsinya sebagai Robot Pengantar Makanan, yaitu Unit Navigasi dan Unit Utama.

A. Unit Navigasi

Flowchart ini dibuat dengan menggunakan Proteus 8 Professional dengan Mikrokontroler Arduino Uno dan Compiler Very High Level Visual Designer . Berikut ini struktur dari project ini pada aplikasi tersebut.

1. Main




2. Subroutines


B. Unit Utama


1. Main

2. Subroutines

5. Listing Program [Kembali]

Unit Navigasi
#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);
}
Unit Utama

// 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


B. Unit Utama


7. Video [Kembali]



8. Prinsip Kerja [Kembali]

Project ini menggunakan 2 buah Mikrokontroler sebagai Pengendali. Masing-masing Mikrokontroler diletakkan pada Unit Utama dan Unit Navigasi. Berikut ini hubungan dari Unit Utama dan Unit Navigasi. 
Unit Utama bekerja sebagai pengendali utama yang akan mengaktifkan motor sesuai dengan perintah yang dikirimkan oleh Unit Navigasi. Unit Navigasi terdiri dan 3 Sensor Ultrasonik yang berfungsi mengukur jarak Robot dengan objek yang berada di sekitarnya. Berikut ini posisi masing-masing Ultrasonik yang terletak pada Robot.
Posisi sensor di atas bertujuan untuk mengukur jarak antara Robot dan Objek lain, terutama jarak robot dan tembok. Jarak yang terukur akan diproses dengan beberapa aturan yang memungkinkan Robot dapat mengikuti tembok. Dengan ini, Robot dapat melakukan navigasi di dalam suatu ruangan. Berikut ini ilustrasi Robot saat menempati suatu ruangan.
Pada gambar di atas. Robot akan menjaga selisih d2 dan d3 sekecil mungkin. Jarak d1 digunakan untuk mencegah tabrakan antara Robot dan Objek lain yang berada di depan robot. Aturan sederhana yang diterapkan pada Robot untuk mengikuti tembok dan menghindari tabrakan dengan Objek lain, dapat dilihat pada potongan flowchart berikut ini.

Setelah tugas Unit Navigasi selesai, tugas selanjutnya dilakukan oleh Unit Utama, yaitu mengendalikan motor sesuai perintah navigasi yang dikirimkan oleh Unit Navigasi. Perintah ini dikirimkan dengan komunikasi serial UART (Universal Asynchronous Receiver Transmitter). Unit Navigasi bertugas sebagai transmitter, sementara Unit Utama bertugas sebagai Receiver. 

Selain mengendalikan motor, Unit Utama juga bertugas mengecek warna permukaan lantai yang dilalui. Unit Utama dilengkapi dengan sensor warna Adafruit_TCS34725. Sensor ini merupakan gabungan 3 buah sensor fotodioda yang peka terhadap masing-masing warna merah, hijau dan biru. 

Terdapat 3 warna lantai khusus yang digunakan sebagai penanda tempat pemberhentian robot, yaitu merah, hijau, dan biru. Ketika robot melalui lantai dengan permukaan dengan 3 warna tadi, robot akan berhenti dan menyalakan LED yang sesuai dengan warna permukaan lantai. 

9. Link Download [Kembali]
















0 komentar:

Posting Komentar