Modul 4

JUDUL


ROBOT OBTACLE PENGHINDAR KENDALA ATAU RINTANGAN LUBANG MENGGUNAKAN SENSOR INFRARED DAN ULTRASONIK 




 
1. Tujuan  [Kembali]
a.  praktikan dapat menerapkan sebuah sistem menggunakan mikrokontroller.
b. praktikan dapat mengkombinasikan berbagai macam output, akumulator, display, dan berbagai media output lainnya menjadi sebuah alat.
c.  praktikan dapat merancang suatu sistem menjadi sebuah alat.
 TUJUAN ALAT:
a. merancang alat yang mampu mngatur secara otomatis dalam keadaan ada lubang atau penghalang saat alat berjalan.
b. merancang motor DC dapat mengatur arah putaran sesuai yang dibutuhkan.
c. otomatisasi gerakan motor DC secara terus menerus.
    2. Daftar Komponen  [Kembali] 

    1. IR Sensor (Infrared Sensor)
    2. arduino:
    3. LCD 16 X 2:
    4. Motor Gearbox:
     5. Motor Driver l298N
    6. NRF24l01
    7.Jumper
    8. Buzzer
      3. Dasar Teori  [Kembali]

      1. SENSOR
      A. Infrared (IR)
      Sensor IR adalah sebuah sensor yang dapat mendeteksi rintangan menggunakan cahaya inframerah yang dipantulkan. Sensor ini mempunyai dua bagian utama yaitu IR emitter dan IR receiver. Emitter bertugas memantulkan inframerah ke rintangan atau objek kemudian akan dipantulkan dan diterima oleh receiver. Ketika inframerah mengenai sebuah objek, kondisinya akan LOW dan begitu juga sebaliknya. Di bawah ini adalah tampilan dari sensor IR Obascle Avoidance.



      Sensor IR Obstacle Avoidance
      Sensor ini dapat digunakan untuk robot line follower, robot halang rintang, atau untuk keperluan alarm. 
      TCRT5000 adalah salah satu sensor  yang sering digunakan untuk sensor robot Line follower, keluaran dari sensor ini berupa sinyal analog, sehingga memungkinkan kita untuk menggunakan transistor untuk pengaplikasiannya. Bentuk fisik dari sensor TCRT5000 dapat dilihat pad Gambar dibawah
      Jika dilihat dari gambar diatas, kita dapat melihat sebuah potensio dibagian belakang sensor, fungsi dari pada potensio ini adalah untuk mengatur sensitivitas sensor. TCRT5000 mempunyai 4 pin, yaitu :
      - VCC (untuk input tegangan positif).
      - GND (untuk input tegangan negatif).
      - D0 (Digital Output), pin Output digital dari sensor TCRT5000.
      - A0 (Analog Output), pin output analod dari sensor TCRT5000.
      Dalam sensor TCRT5000 terdapat 2 sensor infrared yang masing-masing berfungsi sebagai pemancar dan penerima, bentuknya seperti LED kecil, dari gambar diatas dapat dilihat Infrared yang berwarna biru berfungsi sebagai pemancar cahaya, dan yang berwarna hitam berfungsi sebagai penerima cahayanya. 
      Dari gambar diatas dapat kita pahami bahwa ketika sensor dihadapkan dengan benda yang dapat merefleksikan cahaya maka cahaya, maka cahaya akan diteruskan kepada sensor receiver. Jika sensor dihadapkan dengan benda yang tidak dapatr merefleksikan cahaya, maka cahaya InfraRed tidak akan diteruskan.
      Dari hasil percobaan yang dilakukan, keluaran dari sensor akan bernilai high ketika dihadapkan dengan warna yang tidak dapat merefleksikan cahaya, misalnya dengan warna hitam. kemudian pada saat dihadapkan dengan benda/warna yang tidak dapat merefleksikan cahaya keluaran dari sensor bernilai LOW.
      grafik respon Infrared:
      B. Ultrasonik
       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.
      Sensor HC-SR04
           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
      Gambar pewaktu pada 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.
      2. Arduino:
      Arduino adalah kit elektronik atau papan rangkaian elektronik open source yang di dalamnya terdapat komponen utama yaitu sebuah chip mikrokontroler dengan jenis AVR dari perusahaan Atmel. Arduino yang kita gunakan dalam praktikum ini adalah Arduino Uno yang menggunakan chip AVR ATmega 328P. Dalam memprogram Arduino, kita bisa menggunakan komunikasi serial agar Arduino dapat berhubungan dengan komputer ataupun perangkat lain.
      Adapun spesifikasi dari Arduino Uno ini adalah sebagai berikut :
      Microcontroller                                           ATmega328P
      Operating Voltage                                      5 V
      Input Voltage (recommended)                   7 – 12 V
      Input Voltage (limit)                                  6 – 20 V
      Digital I/O Pins                                          14 (of which 6 provide PWM output)
      PWM Digital I/O Pins                                6
      Analog Input Pins                                       6
      DC Current per I/O Pin                              20 mA
      DC Current for 3.3V Pin                            50 mA
      Flash Memory                                            32 KB of which 0.5 KB used by bootloader
      SRAM                                                        2 KB
      EEPROM                                                   1 KB
      Clock Speed                                               16 MHz
      POWER USB
      Digunakan untuk menghubungkan Papan Arduino dengan komputer lewat koneksi USB.
      POWER JACK
      Supply atau sumber listrik untuk Arduino dengan tipe Jack. Input DC 5 - 12 V.
      Crystal Oscillator
      Kristal ini digunakan sebagai layaknya detak jantung pada Arduino.
      Jumlah cetak menunjukkan 16000 atau 16000 kHz, atau 16 MHz.
      Reset
      Digunakan untuk mengulang program Arduino dari awal atau Reset.
      Digital Pins I / O
      Papan Arduino UNO memiliki 14 Digital Pin. Berfungsi untuk memberikan nilai logika ( 0 atau 1 ). Pin berlabel " ~ " adalah pin-pin PWM ( Pulse Width Modulation ) yang dapat digunakan untuk menghasilkan PWM.
      Analog Pins
      Papan Arduino UNO memiliki 6 pin analog A0 sampai A5. Digunakan untuk membaca sinyal atau sensor analog seperti sensor jarak, suhu dsb, dan mengubahnya menjadi nilai digital.
      LED Power Indicator
      Lampu ini akan menyala dan menandakan Papan Arduino mendapatkan supply listrik dengan baik.

      Berdasarkan pada Gambar 2, akan diurutkan bagian-bagian dari board Arduino beserta fungsi-fungsinya yaitu sebagai berikut:
      1)      USB Soket/Power USB


      USB Soket/Power USB digunakan untuk memberikan catu daya ke Papan Arduino menggunakan kabel USB dari komputer. Selain menjadi port catu daya, USB juga memiliki berfungsi untuk:


         i.            Memuat program dari komputer ke dalam board Arduino.


         ii.            Komunikasi serial antara papan Arduino dan komputer begitu juga sebaliknya.


      Pada versi lebih lama Arduino terdapat sambungan SV1 Sambungan atau jumper untuk memilih sumber daya yang digunakan, apakah dari sumber eksternal atau menggunakan USB. Sambungan ini tidak diperlukan lagi pada papan Arduino versi terakhir karena pemilihan sumber daya eksternal atau USB dilakukan secara otomatis.
      2)      Power (Barrel Jack)


      Papan Arduino dapat juga diberikan colokan catu daya secara langsung dari sumber daya AC dengan menghubungkannya ke Barrel Jack yang tersedia. Tegangan maksimal yang dapat diberikan kepada Arduino maksimal 12volt dengan range arus maksimal 2A (Agar regulator tidak panas).
      3)      Voltage Regulator


      Fungsi dari voltage regulator adalah untuk mengendalikan atau menurunkan tegangan yang diberikan ke papan Arduino dan menstabilkan tegangan DC yang digunakan oleh prosesor dan elemen-elemen lain.
      4)      Crystal Oscillator


      Kristal (quartz crystal oscillator), jika mikrokontroler dianggap sebagai sebuah otak, maka kristal adalah jantung-nya karena komponen ini menghasilkan detak-detak yang dikirim kepada mikrokontroler agar melakukan sebuah operasi untuk setiap detak-nya. Kristal ini dipilih yang berdetak 16 juta kali per detik (16MHz).


      Crystal oscillator membantu Arduino dalam hal yang berhubungan dengan waktu. Bagaimana Arduino menghitung waktu? Jawabannya adalah, dengan menggunakan crystal oscillator. Angka yang tertulis pada bagian atas crystal 16.000H9H berarti bahwa frekuensi dari oscillator tersebut adalah 16.000.000 Hertz atau 16 MHz.
      5)      5, 17 Arduino Reset


          Kita dapat mereset papan arduino, misalnya memulai program dari awal. Terdapat dua cara untuk mereset Arduino Uno. Pertama, dengan menggunakan reset button (17) pada papan arduino. Kedua, dengan menambahkan reset eksternal ke pin Arduino yang berlabel RESET (5). Perhatikan bahwa tombol reset ini bukan untuk menghapus program atau mengosongkan mikrokontroler.
      6)      3.3V (6) − Supply 3.3 output volt
      7)      5V (7) − Supply 5 output volt


      Sebagaian besar komponen yang digunakan papan Arduino bekerja dengan baik pada tegangan 3.3 volt dan 5 volt.
      8)      GND (8)(Ground) – Ada beberapa pin GND pada Arduino, salah satunya dapat digunakan untuk menghubungkan ground rangkaian.
      9)      Vin (9) – Pin ini juga dapat digunakan untuk memberi daya ke papan Arduino dari sumber daya eksternal, seperti sumber daya AC.
      10)  10 Analog pins


      Papan Arduino Uno memiliki enam pin input analog A0 sampai A5. Pin-pin ini dapat membaca tegangan dan sinyal yang dihasilkan oleh sensor analog seperti sensor kelembaban atau temperatur dan mengubahnya menjadi nilai digital yang dapat dibaca oleh mikroprosesor. Program dapat membaca nilai sebuah pin input antara 0 – 1023, dimana hal itu mewakili nilai tegangan 0 – 5V.
      11)  Main microcontroller
            Setiap papan Arduino memiliki Mikrokontroler (11). Kita dapat menganggapnya sebagai otak dari papan Arduino. IC (integrated circuit) utama pada Arduino sedikit berbeda antara papan arduino yang satu dengan yang lainnya. Mikrokontroler yang sering digunakan adalah ATMEL. Kita harus mengetahui IC apa yang dimiliki oleh suatu papan Arduino sebelum memulai memprogram arduino melalui Arduino IDE. Informasi tentang IC terdapat pada bagian atas IC. Untuk mengetahui kontruksi detai dari suatu IC, kita dapat melihat lembar data dari IC yang bersangkutan.
      12)  12 ICSP pin
            Kebanyakan, ICSP (12) adalah AVR, suatu programming header kecil untuk Arduino yang berisi MOSI, MISO, SCK, RESET, VCC, dan GND. Hal ini sering dirujuk sebagai SPI (Serial Peripheral Interface), yang dapat dipertimbangkan sebagai “expansion” dari output. Sebenarnya, kita memasang perangkat output ke master bus SPI.


      In-Circuit Serial Programming (ICSP)Port ICSP memungkinkan pengguna untuk memprogram microcontroller secara langsung, tanpa melalui bootloader. Umumnya pengguna Arduino tidak melakukan ini sehingga ICSP tidak terlalu dipakai walaupun disediakan.

      13)  Power LED indicator
      LED ini harus menyala jika menghubungkan Arduino ke sumber daya. Jika LED tidak menyala, maka terdapat sesuatu yang salah dengan sambungannya.
      14)  14 TX dan RX LEDs
      Pada papan Arduino, kita akan menemukan label: TX (transmit) dan RX (receive). TX dan RX muncul di dua tempat pada papan Arduino Uni. Pertama, di pin digital 0 dan 1, Untuk menunjukkan pin yang bertanggung jawab untuk komunikasi serial. Kedua, TX dan RX led (13). TX led akan berkedip dengan kecepatan yang berbeda saat mengirim data serial. Kecepatan kedip tergantung pada baud rate yang digunakan oleh papan arduino. RX berkedip selama menerima proses.
      15)  Digital I/O
      Papan Arduino Uno memiliki 14 pin I/O digital (15), 6 pin output menyediakan PWM (Pulse Width Modulation). Pin-pin ini dapat dikonfigurasikan sebagai pin digital input untuk membaca nilai logika (0 atau 1) atau sebagai pin digital output untuk mengendalikan modul-modul seperti LED, relay, dan lain-lain. Pin yang berlabel “~” dapat digunakan untuk membangkitkan PWM.

      16)  AREF

      AREF merupakan singkatan dari Analog Reference. AREF kadanag-kadang digunakan untuk mengatur tegangan referensi eksternal (antar 0 dan 5 Volts) sebagai batas atas untuk pin input analog input.


      3. LCD: 

      Liquid Crystal Display (LCD) adalah sebuah peralatan elektronik yang berfungsi untuk
      menampilkan 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.

      Kaki-kaki yang terdapat pada LCD
      4. 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). Motor arus searah, sebagaimana namanya, menggunakan arus langsung yang tidak langsung/directunidirectional.

      Bagian Atau Komponen Utama Motor DC

          Kutub medan. Motor DC sederhana memiliki dua kutub medan: kutub utara dan kutub selatan. Garis magnetik energi membesar melintasi ruang terbuka diantara kutub-kutub dari utara ke selatan. Untuk motor yang lebih besar atau lebih komplek terdapat satu atau lebih elektromagnet.
        Kumparan Motor DC. Bila arus masuk menuju kumparan motor DC, maka arus ini akan menjadi elektromagnet. kumparan motor DC yang berbentuk silinder, dihubungkan ke as penggerak untuk menggerakan beban. Untuk kasus motor DC yang kecil, kumparan motor DC berputar dalam medan magnet yang dibentuk oleh kutub-kutub, sampai kutub utara dan selatan magnet berganti lokasi. Jika hal ini terjadi, arusnya berbalik untuk merubah kutub-kutub utara dan selatan kumparan motor DC.

        Komutator Motor DC . Komponen ini terutama ditemukan dalam motor DC. Kegunaannya adalah untuk membalikan arah arus listrik dalam kumparan motor DC dan juga membantu dalam transmisi arus antara kumparan motor DC dan sumber daya. 
      Bagian-bagian motor dc

      5. Driver Motor

      Driver motor L298N merupakan module driver motor DC yang paling banyak digunakan atau dipakai di dunia elektronika yang difungsikan untuk mengontrol kecepatan serta arah perputaran motor DC.
      Bentuk fisik IC L298 & Modul Driver Motor L298N
      IC L298 merupakan sebuah IC tipe H-bridge  yang mampu mengendalikan beban-beban induktif seperti relay, solenoid, motor DC dan motor stepper.
      Pada IC L298 terdiri dari transistor-transistor logik (TTL) dengan gerbang nand yang berfungsi untuk memudahkan dalam menentukan arah putaran suatu motor dc maupun motor stepper. 
      Untuk dipasaran sudah terdapat modul driver motor menggunakan ic l298 ini, sehingga lebih praktis dalam penggunaannya karena pin I/O nya sudah terpackage dengan rapi dan mudah digunakan.
      Kelebihan akan modul driver motor L298N ini yaitu dalam hal kepresisian dalam mengontrol motor sehingga motor lebih mudah untuk dikontrol.
      Pin out dari driver motor l298
      Keterangan :
      ·         Enable A : berfungsi untuk mengaktifkan bagian output motor A
      ·         Enable B : berfungsi untuk mengaktifkan bagian output motor B
      ·         Jumper 5vdc : sebagai mode pemilihan sumber tegangan 5Vdc, jika tidak dijumper maka akan ke mode sumber tegangan 12 Vdc
      ·         Control Pin : Sebagai kendali perputaran dan kecepatan motor yang dihubungkan ke Mikrokontroler
      Spesifikasi dari Modul Driver Motor L298N
      ·         Menggunakan IC L298N (Double H bridge Drive Chip)
      ·         Tegangan minimal untuk masukan power antara 5V-35V
      ·         Tegangan operasional : 5V
      ·         Arus untuk masukan antara 0-36mA
      ·         Arus maksimal untuk keluaran per Output A maupun B yaitu 2A
      ·         Daya maksimal yaitu 25W
      ·         Dimensi modul yaitu 43 x 43 x 26mm
      ·         Berat : 26g


      .. 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.
            Piezoelectric Buzzer adalah jenis Buzzer yang menggunakan efek Piezoelectric untuk menghasilkan suara atau bunyinya. Tegangan listrik yang diberikan ke bahan Piezoelectric akan menyebabkan gerakan mekanis, gerakan tersebut kemudian diubah menjadi suara atau bunyi yang dapat didengar oleh telinga manusia dengan menggunakan diafragma dan resonator.

            Piezo Buzzer dapat bekerja dengan baik dalam menghasilkan frekuensi di kisaran 1 – 5 kHz hingga 100 kHz untuk aplikasi Ultrasound. Tegangan Operasional Piezoelectric Buzzer yang umum biasanya berkisar diantara 3Volt hingga 12 Volt.
       komponen buzzer:




      6. NRF24l01


      Module Wireless nRF24L01 merupakan module yang mempunyai fungsi untuk komunikasi jarak jauh atau nirkabel yang memanfaatkan gelombang RF 2.4 GHz yang biasanya diaplikasikan untuk Scientific , Industrial, maupun Medical.
      Pada modul ini menggunakan antarmuka SPI (Serial Parallel Interface) untuk berkomunikasi dengan mikrokontroler dalam hal ini Arduino. Tegangan operasional normal untuk mengakses module ini yaitu 3.3Vdc, yang biasanya dibantu dengan regulator AMS1117.
      Module nRF24L01 memiliki perangkat keras yang berupa baseband logic Enhanced ShockBurst dan protocol accelerator yang memungkinan untuk berkomunikasi dalam kecepatan tinggi.
      Selain itu, module ini juga memiliki fitur true ULP solution, yang berfungsi sebagai penghemat konsumsi daya sehingga hemat energi.  Dan bisa digunakan juga sebagai pembuatan perangkat fitnes dan olahraga, pendukung PC, mainan anak-anak, piranti perangkat untuk permainan, dan lainnya.
      Kesimpulan dari beberapa fitur Modul Wireless RF nRF24L01 :
      • Data rate mencapai 2Mbps
      • Penanganan transaksi paket otomatis
      • Beroperasi pada pada pita ISM 2.4 GHZ
      • Konsumsi daya yang rendah
      • Penanganan paket data otomatis
      • Range up to 1100 m


      Pin Out dari Modul Wireless RF nRF24L01


        4. Flowchart  [Kembali]
            MASTER:

          SLAVE:


          5. Listing Program  [Kembali]

          PROGRAM MASTER:
          //MASTER
          #include <LiquidCrystal_I2C.h>
          LiquidCrystal_I2C lcd(0x27 ,16,2);
          #define sensor A1
          #define triggerPin A3
          #define echoPin A2
          #include <Wire.h>
          #include <SPI.h>
          #include <nRF24L01.h>
          #include <RF24.h>

          int nilai;

          RF24 radio(9, 10); // CE, CSN
          const byte addresses[][6] = {"00298", "00910"};
          char data;

          void setup() {
            lcd.begin();
            pinMode(sensor, INPUT);
            pinMode(triggerPin, OUTPUT);
            pinMode(echoPin, INPUT);
            Serial.begin(9600);
            radio.begin();
            radio.openWritingPipe(addresses[0]); // 00002
            radio.openReadingPipe(1, addresses[1]); // 00001
            radio.setPALevel(RF24_PA_MAX);


          }

          void loop() {
            long duration, cm;

            digitalWrite(triggerPin, LOW);
            delayMicroseconds(2);
            digitalWrite(triggerPin, HIGH);
            delayMicroseconds(5);
            digitalWrite(triggerPin, LOW);
            duration = pulseIn(echoPin, HIGH);
            cm = microsecondsToCentimeters(duration);

            nilai = analogRead(sensor);
            Serial.print(nilai);
            Serial.print('\t');
            Serial.print(cm);
            Serial.print('\t');
            radio.stopListening();
            if (nilai < 800&& cm > 70) {
              data = '1';
              delay(100);
              radio.write(&data, sizeof(data));
              Serial.println(data);
              delay(100);
            lcd.clear();
            lcd.setCursor(0, 0);
            lcd.print("Tidak ada Halangan");
            lcd.setCursor(0, 1);
            lcd.print("Jalan Lurus");
            delay(200);
            }
            else if (nilai < 800 && cm < 70)
            {
              data = '2';
              delay(100);
              radio.write(&data, sizeof(data));
              Serial.println(data);
              delay(100);
           
            lcd.clear();
            lcd.setCursor(0, 0);
            lcd.print("Ada Halangan");
            lcd.setCursor(0, 1);
            lcd.print("Berbelok");
            delay(200);
            }
            else if (cm < 70 && nilai > 800 )
            {
              data = '3';
              delay(100);
              radio.write(&data, sizeof(data));
              Serial.println(data);
              delay(100);
           
            lcd.clear();
            lcd.setCursor(0, 0);
            lcd.print("Ada Halangan");
            lcd.setCursor(0, 1);
            lcd.print("Berbelok");
            delay(200);
              }
              else
              {
              data = '4';
              delay(100);
              radio.write(&data, sizeof(data));
              Serial.println(data);
              delay(100);
            lcd.clear();
            lcd.setCursor(0, 0);
            lcd.print("Ada Halangan");
            lcd.setCursor(0, 1);
            lcd.print("Berbelok");
            delay(200);
              }
            delay(100);
            radio.startListening();
          }
          long microsecondsToCentimeters(long microseconds) {
            // The speed of sound is 340 m/s or 29 microseconds per centimeter.
            // The ping travels out and back, so to find the distance of the object we
            // take half of the distance travelled.
            return microseconds / 29 / 2;
          }

          PROGRAM SLAVE:
          //SLAVE
          #include <SPI.h>
          #include <nRF24L01.h>
          #include <RF24.h>

          int kiriA = 4;
          int kiriB = 5;
          int kananA = 6;
          int kananB = 7;

          #define buzzer A0


          char data;
          RF24 radio(9, 10); // CE, CSN
          const byte addresses[][6] = {"00298", "00910"};


          void setup() {
            Serial.begin(9600);
            pinMode(kiriA, 255);
            pinMode(kiriB, 255);
            pinMode(kananA, 255);
            pinMode(kananB, 255);
            pinMode(buzzer, OUTPUT);

            radio.begin();
            radio.openWritingPipe(addresses[1]); // 00001
            radio.openReadingPipe(1, addresses[0]); // 00002
            radio.setPALevel(RF24_PA_MAX);
          }

          void loop() {
            delay(100);
            radio.startListening();
            while (!radio.available()) {
              Serial.println("No Data Received");
            }
            radio.read(&data, sizeof(data));
            switch (data) {
              case '1' :
                digitalWrite(buzzer, HIGH);
                delay(500);
                digitalWrite(buzzer, LOW);
                delay(500);
                digitalWrite(kiriA, LOW);
                analogWrite(kiriB, 240);
                digitalWrite(kananA, LOW);
                analogWrite(kananB, 130);
             
                break;
              case '2' :
                digitalWrite(buzzer, HIGH);
                delay(100);
                digitalWrite(buzzer, LOW);
                delay(100);
                digitalWrite(kiriA, LOW);
                analogWrite(kiriB, 240);
                analogWrite(kananA, 130);
                digitalWrite(kananB, LOW);
                delay(1000);
                digitalWrite(kiriA, LOW);
                analogWrite(kiriB, 240);
                digitalWrite(kananA, LOW);
                analogWrite(kananB, 130);
                digitalWrite(kiriA, LOW);
             
                break;
               case '3' :
                digitalWrite(buzzer, HIGH);
                delay(100);
                digitalWrite(buzzer, LOW);
                delay(100);
                digitalWrite(kiriA, LOW);
                analogWrite(kiriB, 240);
                analogWrite(kananA, 130);
                digitalWrite(kananB, LOW);
                delay(1000);
                digitalWrite(kiriA, LOW);
                analogWrite(kiriB, 240);
                digitalWrite(kananA, LOW);
                analogWrite(kananB, 130);
             
                break;
               case '4' :
               digitalWrite(buzzer, HIGH);
                delay(100);
                digitalWrite(buzzer, LOW);
                delay(100);
                digitalWrite(kiriA, LOW);
                analogWrite(kiriB, 240);
                analogWrite(kananA, 130);
                digitalWrite(kananB, LOW);
                delay(1000);
                digitalWrite(kiriA, LOW);
                analogWrite(kiriB, 240);
                digitalWrite(kananA, LOW);
                analogWrite(kananB, 130);
                break;
            }
            Serial.print("Data Received : ");
            Serial.println(data);
            radio.stopListening();
          }


            6. Rangkaian Simulasi  [Kembali]



                7. Video Simulasi  [Kembali]
                 
                8. Foto Alat  [Kembali]


                    9. Video Alat/Project  [Kembali]

                     
                    10. Analisa  [Kembali]
                      Pada rangkaian modul 4 ini, merupakan percobaan pembuatan alat dan simulasi pendeteksi dan  penghindar dari lubang. Simulasi ini menggunakan 1 sensor infrared dan sensor ultrasonik yang terletak pada depan alat sebagai pendeteksi lubang dan jarak benda atau halangan didepan objek, 2 buah arduino sebagai microcontroler, 1 buah lcd pembacaan hasil dalam bentuk tulisan, 1 buah motor driver sebagai pengatur Motor DC, 2 buah motor DC sebagai penggerak, serta 2 buah baterai litium polimer sebagai pensuplay daya listrik.
                             Pada simulasi ini menggunakan 2 arduino yang bertindak sebagai Master dan Slave yang menggunakan komunikasi antar Arduino yaitu Komunikasi Serial Wireles yang berkomunikasi secara Asynchronous Receiver Transmitter (UART) menggunakan NRF2401l. Sensor infrared berfungsi untuk mendeteksi dari kedalaman suatu jalan yang dilaluinya. Apabila sensor menerima benda yang begitu dekat maka sensor aktif  dan memiliki resistansi yang begitu tinggi. Oleh karna itu, output yang akan dihasilkan oleh sensor Infrared merupakan dalam bentuk tegangan. Nilai tegangan pada sensor kemudian diinputkan ke kaki analog 1 (A1) Arduino Master. serta sensor ultrasonik sebagai pendeteksi jarak yang terletak pada pin A2 sebagai Trigger dan A3 sebagai Echoder. Trigger akan di HIGH dan LOW pada program supaya agar mendapatkan gembang ultrasonik yang akan dipancarkan pada Trigger. Kemudian gelombang yang dikirim akan memantul apabila terkena benda dan dikembalikan pada Echoder. Kecepatan gelombang adalah 340 meter per sekon. Jarak akan didapatkan apabila lama gelombang yang didapatkan diterima oleh echoder. Nilai pada Echoder akan di olah menjadi data digital   Nilai yang diterima dalam kaki analog Arduino Master masih dalam bentuk analog. Karena Microprocessror dalam pengolahan datanya hanya bisa dalam bentuk data Digital, oleh karena itu pada analog arduino telah dipasang ADC (analog digital converter) yang berfungsi untuk mengubah data dari analog ke bentuk digital. Nilai dari pin A0 kemudian dikonversikan kedalam data digital dengan rentang 0 samapai 1023.
                      Dalam pengiriman data hanya bisa mengirimkan data 8 bit atau 1 byte sehingga rentangan diubah dari  nilai 0-1023 menjadi rentang nilai 0-255 melalui proses mapping. Sehingga pada proses mapping bila nilai 0 maka nilai mapping adalah 0, apabila nilai 1023 maka hasil maping adalah 255. Perhitungan nilai dilakukan pada perbandingan tiap interval. Pada program Arduino Master, nilai hasil mapping diberi label "val".
                           
                              Saat nilai br adalah kebalikan dari < 700, maka motor dc akan terus berjalan kedepan atau motor kiri dan kanan memiliki arah yang sama. Sehingga alat bergerak lurus kedepan. ini menandakan nilai respon dari sensor yang diterima memiliki resistansi lebih dari 700 dan pada LCD akan tetulis "jalan aman" dan " bergerak lurus". Oleh karna itu, arah putar motor DC dan situasi yang ditampilkan oleh LCD dipengaruhi oleh besarnya nilai br.

                        11. Link Download  [Kembali]

                        Tidak ada komentar:

                        Posting Komentar