BAB III PERANCANGAN Bab ini membahas perancangan alat pengukur jarak berdasarkan gelombang elektromagnetik yang diterima dengan menggunakan Microcontroller Open Source Wemos. Microcontroller tersebut digunakan untuk mengolah informasi yang telah didapatkan oleh module ESP8266 dan mengatur operasi kerja dari LCD untuk menampilkan hasilnya pada LCD tersebut. Pembuatan sistem dibagi dalam beberapa blok perangkat yang mempunyai fungsi sendirisendiri. Pembuatan sistem meliputi perencanaan perangkat keras dan perencanaan perangkat lunak. 3.1 Prinsip Kerja Sistem Sistem yang telah dibangun, secara garis besar terdiri dari blok rangkaian seperti terlihat pada gambar dibawah ini: Power Supply Wifi Infrastructure /Access Point Microcontroller Wemos LCD Display 16x2 Gambar 3.1 Blok Rangkaian 45
46 Secara garis besar, cara kerja sistem ini adalah: Access point akan menghasilkan jaringan WiFi dengan system DHCP, yang akan memudahkan sebuah perangkat baru terhubung dengan pengaturan IP otomatis. Power Supply akan memberikan energi kepada system, sehingga seluruh peralatan dapat berkerja dan berfungsi dengan baik. Gelombang elektromagnetik akan diubah oleh antenna microstrip menjadi sinyal-sinyal listrik. Kemudian module ESP8266 akan memberikan atribut terhadap sinyal tersebut dan kemudian disimpan kedalam register tertentu. Microcontroller Wemos akan membaca atribut tertentu dari sebuah sinyalsinyal listrik, kemudian akan mengeluarkan output berupa sinyal digital kepada LCD. LCD akan mengubah data digital mengenai atribut sebuah sinyal menjadi sebuah objek, dimana objek tersebut merupakan sesuatu yang dapat dimengerti oleh manusia yang menerangkan tentang keadaan sebuah sinyal. 3.2 Perancangan Perangkat Keras Dalam pemilihan komponen pada sistem-sistem ini maka sangatlah penting untuk memperhatikan beberapa hal berikut ini: 1. Menggunakan Microcontroller dengan platform Open Source sehingga untuk pengembangannya dapat didukung oleh komunitas pengguna Microcontroller ini. 2. Menggunakan komponen-komponen yang tersedia di pasaran, sehingga harganya murah dan mudah di dapat.
47 3. Rangkaian yang sederhana sehingga mudah untuk dilakukan penambahan untuk pengembangan lebih lanjut. 3.2.1. Rangkaian LCD I2C Hitachi HD44780 LCD controller adalah salah satu matriks layar kristal cair yang paling umum dot (LCD) layar controller yang tersedia. Hitachi mengembangkan Microcontroller khusus untuk drive layar LCD alfanumeric dengan antarmuka yang sederhana yang dapat terhubung ke Microcontroller atau Microprocessor umum. Gambar 3.2 Rangkaian LCD Rangkaian di atas ini merupakan pengendali kecerahan cahaya untuk mengatur kuat-lemah arus listrik yang akan melewati modul display LCD. Dengan rangkaian ini kecerahan dari layar akan dapat dikendalikan dengan mudahnya. Tegangan operasi nominal untuk lampu latar LED adalah 5 Volt pada kecerahan penuh, Pada tegangan yang lebih rendah LCD akan lebih redup hal ini tergantung pada LED. Berikut adalah Pin-pin yang digunakan pada LCD yang terhubung dengan Pin dari Microcontroller Wemos, antara lain:
48 a. LCD SDA pin menuju Microcontroller digital I/O pin 3. b. LCD SCL pin menuju Microcontroller digital I/O 4. c. VCC pin menuju Microcontroller +5 Volt. d. GND pin menuju Microcontroller Ground. 3.2.2. Minimum System Microcontroller Wemos Rangkaian microcontroller berfungsi untuk mengolah informasi yang didapatkan dari antenna transducer. Kemudian memproses data analog tersebut menjadi data digital, dan mengeluarkan hasilnya dalam bentuk informasi digital yang dapat dengan mudah di akses seperti tulisan. Gambar 3.3 Minimum system Microcontroller Wemos Rangkaian microcontroller ini menggunakan minimum system yang pada awalnya digunakan untuk meng-compile dan men-download listing program dari komputer ke chipset microcontroller. Diharapkan dengan minimum system ini akan dapat menghemat biaya yang dikeluarkan untuk membangun sistem otomatis ini. Berikut adalah minimum system hardware dari microcontroller Wemos:
49 Tabel 3.1 Minimum System Hardware Microcontroller ESP-8266EX Operating Voltage 3.3V Digital I/O Pins 11 Analog Input Pins Clock Speed Flash Length Width Weight Microcontroller 1(Max input: 3.2V) 80MHz/160MHz 4M bytes 68.6mm 53.4mm 25g ESP-8266EX Operating Voltage 3.3V 3.2.3. Rangkaian Power Supply Pada sistem ini menggunakan baterai 9 Volt yang terhubung dengan sakelar untuk on-off peralatan. Baterai 9 Volt biasanya digunakan untuk aplikasi peralatan elektronika yang bersifat mobile (mudah di bawa), sehingga dengan menggunakan baterai 9 Volt ini sangat cocok digunakan untuk aplikasi ini. Gambar 3.4 Baterai 9 Volt
50 Gambar 3.5 Rangkaian Power Supply 3.3 Perancangan Perangkat Lunak Perancangan perangkat lunak dibuat dengan menggunakan flowchart. Flowchart atau diagram alir merupakan sebuah diagram dengan simbol-simbol grafis yang menyatakan aliran algoritma atau proses yang menampilkan langkahlangkah yang disimbolkan dalam bentuk kotak, beserta urutannya dengan menghubungkan masing masing langkah tersebut menggunakan tanda panah. Diagram ini bisa memberi solusi selangkah demi selangkah untuk penyelesaian masalah yang ada di dalam proses atau algoritma tersebut. Berikut adalah flowchart sistem berikut ini:
51 Mulai Inisialisasi Simpan Sinyal Gelombang Elektromagnetik Setiap akses point Baca Sinyal Gelombang Electromagnetic (dbm) Tidak Apakah Sinyal Gelombang Electromagnetic yang diinginkan Ya Konversi daya sinyal menjadi jarak (m) dengan Pathloss Model Green-Obaidat Loop Kembali Ke awal Tampilkan Atribut sinyal, kuat sinyal, hasil jarak, pada LCD Pemindaian Selesai? Tidak Ya Selesai Gambar 3.6 Cara Kerja Secara garis besar Microcontroller Wemos akan membaca kuat lemah energi dari sebuah sinyal yang berbentuk gelombang electromagnetic. Kemudian sinyal tersebut berserta level energinya akan di simpan pada sebuah register. Register tersebut kemudian di baca dan dengan bantuan persamaan matematika
52 dengan model Pathloss Green-Obaidat maka kuat lemah sinyal tersebut dijadikan besaran lain dengan satuan jarak. Hasil dari konversi, atribut sinyal, dan kuat sinyal kemudian akan ditampilkan pada LCD. 3.3.1. Program untuk cek WiFi dan simpan SSID RSSI Berikut ini adalah program untuk menyiapkan Microcontroller Wemos (inisialisasi). Baik secara software dengan memasukkan adanya library yang dibutuhkan ke dalam script serta untuk menyiapkan hardware seperti komunikasi data antara LCD 16x2 dengan microcontroller Wemos. #include <Wire.h> #include "ESP8266WiFi.h" void setup() Serial.begin(115200); void loop() int n = WiFi.scanNetworks(); if (n == 0) Serial.println("no networks found"); lcd.print("no Network Found"); else
53 for (int i = 0; i < n; ++i) 3.3.2. Program untuk membaca SSID & sinyal gelombang Electromagnetic Pada subroutine Void Loop () fungsi WiFi. SSID() dan fungsi WiFi.RSSI() di panggil untuk membaca hasil pindai access point yang aktif di lingkungan sekitar, yang telah disimpan kedalam register di dalam memory. #include <Wire.h> #include "ESP8266WiFi.h" void setup() Serial.println("scan start"); void loop() int n = WiFi.scanNetworks(); if (n == 0) Serial.println("no networks found"); else for (int i = 0; i < n; ++i)
54 // Print SSID and RSSI for each network found Serial.print(i + 1); Serial.print(": "); Serial.print(WiFi.SSID(i)); Serial.print(" = "); Serial.print(WiFi.RSSI(i)); Serial.print(" dbm"); Serial.print((WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":""); // RSSI = 7.6 + 40 log d + 0 // RSSI + 7.6 = 40 log d // invers logaritmik adalah pemangkatan // d = 10^((RSSI-7.6)/40) delay(10); delay(500); 3.3.3. Program untuk Konversi dari level RSSI ke Jarak Pada subroutine Void Loop () fungsi logaritma Log x(n) dipanggil untuk mengubah nilai tinggi antena menjadi nilai gain dari sebuah pemancar dan penerima gelombang radio, sedangkan fungsi eksponensial pow(n, x) dipanggil untuk mengubah nilai kuat level sinyal gelombang electromagnetic yang diterima (dbm) menjadi jarak antara 2 buah alat pemancar dan penerima radio dengan menerapkan persamaan matematika model Green dan Obaidat. Berikut ini adalah persamaan matematika dalam listing coding:
55 #include <math.h> void setup() Serial.begin(115200); void loop() // Rumus Green&Obaidat : 7.6 + 40 log d + 20 log Ht.Hr // Ht.Hr ketinggian antenna saat pengukuran yaitu 1 meter // maka 20 log Ht.Hr = 20 log 1.1 // maka 20 log 1 // maka 20. 0 = 0 // Penurunan rumus // RSSI = 7.6 + 40 log d + 0 // RSSI + 7.6 = 40 log d // invers logaritmik adalah pemangkatan // d = 10^((RSSI-7.6)/40) float rssi, rssidbm; double jarak; rssi = WiFi.RSSI(i) + 30.6; rssidbm = rssi / -40; jarak = pow(10, rssidbm); 3.3.4. Program untuk tampilkan hasil SSID, RSSI, dan Jarak
56 Pada subroutine Void Loop () fungsi lcd.print digunakan untuk menampilkan nama access point, kuat lemah sinyal dari gelombang elektromagnetic dari sebuah access point, serta hasil dari konversi kuat lemah sinyal dari gelombang elektromagnetic dari sebuah access point tersebut menjadi jarak antara 2 buah alat pemancar dan penerima radio. Berikut ini adalah listing program untuk menampilkan hasil pada LCD: #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address void setup() lcd.begin(16,2); // initialize the lcd for 16 chars 2 lines, turn on backlight Serial.begin(115200); Serial.println("Setup done"); Serial.println("scan start"); void loop() int n = WiFi.scanNetworks(); if (n == 0) Serial.println("no networks found"); lcd.clear(); lcd.setcursor(0,0);
57 lcd.print("no Network Found"); else for (int i = 0; i < n; ++i) // Print SSID and RSSI for each network found Serial.print(i + 1); Serial.print(": "); Serial.print(WiFi.SSID(i)); Serial.print(" = "); Serial.print(WiFi.RSSI(i)); Serial.print(" dbm"); Serial.print((WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":""); float rssi, rssidbm; double jarak; rssi = WiFi.RSSI(i) + 30.6; rssidbm = rssi / -40; jarak = pow(10, rssidbm); Serial.print(" RSSI = "); Serial.print(rssi); Serial.print(" RSSIdbm = "); Serial.print(rssidbm); Serial.print(" Jarak = ");
58 Serial.print(jarak); Serial.println(" m "); if (WiFi.SSID(i) == "G-AP") lcd.clear(); lcd.setcursor(0,0); lcd.print(wifi.ssid(i)); lcd.setcursor(0,1); lcd.print(wifi.rssi(i)); lcd.print(" dbm "); lcd.print(jarak); lcd.print(" m"); delay(10); delay(500);