64
BAB III
PEMBAHASAN
3.1. Tinjauan Umum Alat
Alat monitoring cuaca berbasis Arduino dan ESP8266 ini merupakan alat
dengan konsep IoT (Internet of Things). IoT jika diartikan secara umum “internet
segala hal” maksud dari arti tersebut, IoT adalah sebuah konsep dimana suatu
objek yang memiliki kemampuan mentransfer data melalui jaringan internet
secara mandiri, tanpa memerlukan interaksi manusia ke manusia atau manusia ke
komputer.
Cara kerja dari alat ini adalah membaca kondisi lingkungan sekitar seperti
suhu udara, tekanan udara, kelembaban udara, dan intensitas cahaya. Sensor
sebagai alat pendeteksi berperan penting dalam mengubah besaran yang bersifat
fisis seperti suhu, tekanan, berat, atau intensitas cahaya menjadi besaran listrik,
tegangan listrik atau arus listrik. Beberapa sensor yang digunakan yaitu DHT11,
BMP180, dan LDR. Arduino sebagai pusat pemrosesan, menerima data hasil
pembacaan sensor kemudian mengolah data hasil pembacaan tersebut, setelah
Arduino selesai mengkalkulasi data tersebut selanjutnya data akan diupload
menggunakan modul wifi ESP8266 ke situs aplikasi IoT Thinkspeak untuk
selanjutnya ditampilkan dalam bentuk grafik pada layar komputer atau
smartphone/ponsel cerdas dengan mengakses sebuah channel/saluran yang telah
dibuat terlebih dahulu.
Thinkspeak merupakan aplikasi dan API untuk menyimpan dan mengambil
data dari berbagai hal yang menggunakan protocol HTTP, pengguna hanya
65 diwajibkan mendaftar serta menyetujui persetujuan penggunaan aplikasi
Thinkspeak.
66 3.2. Blok Diagram Alat
Gambar Blok Diagram alat sebagai berikut:
Gambar III.1
Gambar Blok Diagram alat
INPUT
CATU DAYA
INPUT
SENSOR
INPUT
SENSOR LDR
INPUT
SENSOR BMP180
PROCESS
ARDUINO
ATMEGA328p
OUTPUT
MODUL
INTERNET INTERNET
LOGGING
COMPUTER / SMARTPHONE
IOT
THINGSPEAK
67
Penjelasan blog diagram alat sebagai berikut:
1. Input
Komponen input ini merupakan komponen masukan yang akan diproses.
Komponen input ini terdiri dari:
a. Catu Daya merupakan masukan tegangan 8 Volt DC kedalam
rangkaian. Pada alat ini penulis menggunakan adaptor DC dengan
transformator 1A.
b. Sensor DHT11 berfungsi untuk mendeteksi kelembaban udara sekitar,
dengan rentang pengukuran 20-90%RH.
c. Sensor BMP180 berfungsi sebagai deteksi suhu dan tekanan udara
sekaligus, dengan rentang suhu opersional -40°C s/d +85°C dan
tekanan mulai dari 300 s/d 1100 hPa.
d. Sensor LDR (Light Dependent Resistor) bertindak sebagai pendeteksi
intensitas cahaya, untuk mendapatkan nilai dengan satuan intensitas
cahaya (LUX) diperlukan rumus tambahan.
2. Proses
Proses merupakan langkah utama yang berfungsi sebagai pengelola data
yang diterima dari masukan yang kemudian akan menghasilkan output.
Dalam proses ini penulis menggunakan Arduino dengan mikrokontroler
ATMega 328p.
68
3. Output
Output merupakan keluaran dari semua proses yang telah dijalankan.
Output yang dihasilkan adalah Modul Wi-Fi ESP8266 berfungsi sebagai
gerbang output dimana data yang telah diproses oleh Arduino diunggah ke
situs IoT (Thinkspeak).
4. IoT
Internet of Thing merupakan sebuah konsep yang bertujuan untuk
memperluas manfaat dari konektivitas internet yang tersambung secara terus-
menerus. Adapun kemampuan seperti berbagi data, remote control, dan
sebagainya, termasuk juga pada benda di dunia nyata. Dalam hal ini
Thinkspeak bertindak sebagai platform Internet of Things yang dapat
digunakan secara gratis untuk menampilkan chart suatu peralatan IoT
5. Logging
Untuk dapat mengakses data yang telah diunggah ke situs IoT Thinkspeak,
diperlukan sebuah komputer atau smartphone (ponsel cerdas) yang terhubung
dengan internet. Langkah untuk bisa melihat tampilan data yang disajikan
situs IoT Thinkspeak adalah dengan cara masuk ke situs www.thinkspeak.com
lalu pilih menu channel, selanjutnya mencari keyword (kata kunci) yang telah
ditentukan untuk channel yang dituju.
69 3.3. Skema Rangkaian
Gambar Rangkaian dari alat yang dibuat adalah sebagai berikut:
Gambar III.2
Skema rangkaian Arduino
Penjelasan Skema rangkaian sebagai berikut:
Rancangan ini adalah Arduino yang menggunakan mikrokontroler ATMega
328p sebagai pusat proses data dan rangkaian elektronika lain sebagai pendukung
sistem. Untuk mengaktifkan sistem, hubungkan sistem dengan catu daya 8VDC,
jika LED pada Arduino menyala maka alat tersebut siap digunakan, namun jika
LED pada Arduino mati maka periksa tegangan pada catu daya.
Pada sistem Arduino ini terdapat rangkaian converter USB ke Serial dengan
menggunakan IC FTDI FT232RL. Komponen ini berfungsi untuk pengisian
70 program ke mikrokontroler ATMega 328p secara serial melalui komputer dengan
software Arduino IDE. Interface atau antar muka yang digunakan untuk
berkomunikasi dengan komputer adalah USB type B dimana sering dijumpai
penggunaannya pada mesin cetak atau printer. Dilengkapi dengan sekring
otomatis reset (resettable fuse) 500mA, untuk mengantisipasi terjadinya hubung
singkat di dalam sistem. Apabila terjadi hubung singkat maka arus yang masuk
akan terputus. Pin 2 USB (data min) terhubung ke pin 16 IC FT232RL dan pin 3
USB (data plus) terhubung ke pin 15 IC FT232RL. Pin 1 (VCC) dan pin 4 (GND)
USB dihubungkan secara seri dengan kapasitor 100nF untuk meredam noise yang
dihasilkan IC FT232RL.
Terdapat pula IC Op-Amp (LM358) yang berfungsi sebagai pemilih tegangan
otomatis. IC Op-Amp yang ditetapkan sebagai komparator akan memonitor
tegangan pada pin VIN (tegangan DC eksternal) dan jika berada di atas jumlah
minimum, akan mematikan sakelar MOSFET (AO3401) yang mengisolasi daya
USB dari papan Arduino. Jika kedua daya USB dan eksternal tersedia, sirkuit
menggunakan daya eksternal untuk menghidupkan papan Arduino melalui
regulator tegangan +5VDC bawaan yang dinyalakan melalui daya DC eksternal.
Pin 1 (TXD) IC FT232RL terhubung ke pin 2 (RXD) IC ATMega 328p
melalui resistor 1kΩ untuk membatasi arus yang masuk. Berlaku juga untuk pin 5
(RXD) IC FT232RL terhubung ke pin 3 (TXD) IC ATMega 328p melalui
Resistor 1kΩ untuk membatasi arus yang masuk. Dilengkapi dengan fitur auto-
reset (otomatis reset) untuk menghindari menekan tombol Reset secara terus
menerus saat akan dan sedang melakukan pengisian program. Fitur ini didapat
71 dari pin 2 (DTR#) dan pin 3 (RST#) pada IC FT232RL dihubungkan dengan
kapasitor 100nF yang terhubung ke Reset IC ATMega 328p.
Pada bagian regulator tegangan menggunakan seri AMS1117 dimana menurut
datasheet dapat mensuplai arus hingga 1A. Hal ini penting karena modul Wi-Fi
ESP8266 membutuhkan arus yang cukup besar. ATMega 328p membutuhkan
suplai tegangan kerja (VCC) sebesar 5VDC dan akan bekerja pada frekuensi
oscillator yang dipakai. Mikrokontroler ini memiliki internal oscillator yang
dapat digunakan sebagai penghasil clock untuk menggerakkan CPU sebesar
8MHz. Pada sistem ini akan dipakai oscillator crystal eksternal dengan frekuensi
16MHz dan memakai dua buah kapasitor 22pF yang dihubungkan dengan pin 9
(XTAL1) dan pin 10 (XTAL2) IC ATMega 328p. Pemilihan kristal dengan
frekuensi ini dikarenakan sistem Arduino membutuhkan eksekusi program yang
cepat.
Arduino juga dilengkapi dengan konektor ICSP (In Circuit Sistem
Programming) melalui pin header male untuk mengatur fuse bit, mem-burning
bootloader, atau mengisi program menggunakan bantuan downloader AVR. Pin
yang terdapat pada konektor ICSP adalah MOSI, MISO, SCK, Reset, VCC, dan
GND.
Mikrokontroler ATMega 328p memiliki saluran reset aktif rendah (low)
sehingga reset ini harus dijaga agar tetap berada pada kondisi tinggi (high). Pin
RESET digunakan untuk me-reset program (mulai dari awal) dengan memberikan
sinyal low pada pin RESET. Namun digunakan sebuah resistor pull-up dengan
72 nilai 10kΩ yang dihubungkan ke VCC agar pin RESET tidak berada pada kondisi
mengambang (floating) atau kondisi pin RESET berlogika 0 (low).
Tabel III.1
Tabel Penggunaan pin ATMega 328p
3.3.1. Papan Arduino Shield
Arduino Shield adalah papan susunan rangkaian yang dipasang langsung ke
pin-pin Arduino tanpa membutuhkan kabel tambahan, shield umumnya berbentuk
sama dengan papan Arduino itu sendiri. Penggunaan shield untuk penempatan
sensor DHT11, sensor BMP180, dan LDR sebagai input. Selanjutnya terdapat
modul Wi-Fi ESP8266 sebagai output untuk mengirim data ke internet. Dengan
memanfaatkan pin header female agar pemasangan menjadi lebih ringkas serta
menghilangkan penggunaan kabel. Kelebihan dari penggunaan shield juga dapat
menghindari kesalahan pemasangan sensor dan modul Wi-Fi, karena pada shield
terdapat marking (tanda) pemasangan.
73
Komponen elektronik yang ada pada shield diantaranya; Resistor dengan nilai
4,7kΩ dihubungkan ke pin data pada sensor DHT11, Trimpot dengan nilai
maksimum 50kΩ dihubungkan ke pin LDR sebagai pembagi tegangan, dimana
fungsi ini digunakan untuk pembacaan intensitas cahaya satuan LUX. Fitur pada
shield ini juga cukup banyak selain sebagai tempat sensor dipasang, terdapat
indikator tegangan VDC berupa sebuah LED yang dirangkai seri dengan resistor
1kΩ. Adanya selector tegangan untuk memilih tegangan sumber 3.3VDC untuk
sensor dan modul Wi-Fi, pemilihan sumber tegangan yang diinginkan antara
sumber tegangan 3.3VDC langsung dari papan Arduino atau 3.3VDC yang
diregulasi oleh regulator AMS1117 dengan kapasitor elektrolit 470uF pada shield.
Jumper pin/pin penghubung pemilihan mode re-flash juga disediakan untuk
kemudahan dalam menulis firmware modul ESP8266. Serta terdapat pin hubung
pemilihan untuk memilih mode komunikasi I/O AT-COMMAND modul
ESP8266 melalui serial monitor pada Arduino IDE.
74
Gambar III.3
Skema rangkaian Arduino Shield
75
3.4. Cara Kerja Alat
Berikut ini adalah proses kerja alat secara keseluruhan.
1. Catu Daya
Gambar III.4
Skema Catu Daya
Catu daya berfungsi untuk menurunkan tegangan AC (bolak-balik) dan
menyearahkan ke tegangan DC (searah) sehingga tegangan tersebut dapat
menyalakan komponen elektronik dengan semestinya. Pada rangkaian catu
daya diberi tegangan AC 220 Volt yang didapat dari stop kontak listrik,
kemudian tegangan AC yang masih tinggi tersebut masuk ke lilitan primer
trafo (step down) menimbulkan fluks magnet yang idealnya semua
bersambung dengan lilitan sekunder, kemudian terjadi induksi
elektromagnetik yang menginduksi lilitan sekunder sehingga tegangan
listrik menjadi rendah. Tegangan listrik yang keluar dari trafo masih
berjenis AC, pada sistem ini digunakan keluaran 12V. Selanjutnya
tegangan AC 12V disearahkan oleh Dioda 1N4004, arus bergerak dari kaki
76
Anoda menuju Katoda. Setelah melewati dioda tegangan masuk kedalam
kapasitor Elco, kapasitor ini berfungsi sebagai penyaring agar noise pada
tegangan bisa berkurang, kemudian tegangan masuk kedalam sebuah IC
Regulator 7809. Dalam IC ini terdapat tiga buah kaki. Kaki pertama
sebagai input tegangan dari dioda 12V. Kaki kedua atau yang terdapat di
tengah terhubung pada ground. Dan kaki yang ketiga sebagai output yang
menghasilkan tegangan 9V, prinsip kerja IC Regulator 7809 berfungsi
sebagai penurun tegangan, kemudian tegangan yang keluar dari kaki
regulator 7809 disaring kembali dengan kapasitor elco. Di dalam catu daya
terdapat LED untuk indikator bahwa catu daya bekerja dengan baik,
resistor yang terhubung dengan LED berfungsi untuk mengurangi arus
yang masuk ke kaki LED agar LED tidak rusak. Rangkaian Catu daya
memiliki tegangan keluaran sebesar 9VDC dan Ground.
2. Catu Daya Papan Arduino
Gambar III.5
Rangkaian Catu Daya Papan Arduino
Catu daya ini terdapat dalam papan Arduino. Tegangan keluaran dari
catu daya utama adalah 9VDC, untuk papan Arduino sendiri hanya
77
membutuhkan tegangan sebesar 5VDC oleh karena itu diperlukan
regulator tegangan lagi pada papan Arduino dengan nilai tegangan output
sebesar 5 dan 3.3VDC. Pertama tegangan positif DC yang masuk melewati
Dioda untuk menghindari kesalahan polaritas tegangan, selanjutnya
menuju ke kapasitor untuk disaring lalu masuk ke regulator AMS1117.
Tegangan 5VDC merupakan tegangan kerja yang umum digunakan untuk
papan Arduino, IC FT232RL, dan mikrokontroler ATMega 328p.
Tegangan 3.3VDC untuk menyalakan komponen yang hanya
membutuhkan tegangan hanya 3.3V yaitu modul Wi-Fi ESP8266 dan
lainnya.
3. Arduino
Arduino adalah suatu board instrumen elektronika yang tersusun dari
perangkat-perangkat pendukung chip (mikrokontroler) yang akan
ditanamkan sebuah program di dalamnya. Pusat pemrosesan data pada
Arduino yang penulis buat menggunakan mikrokontroller ATMega328p.
Cara kerja Arduino pada alat ini adalah, mengolah segala masukan data
yang didapat dari beberapa sensor. Sensor ini berfungsi mengubah besaran
yang bersifat fisis menjadi tegangan, seperti cahaya, temperatur suhu,
tekanan udara, dan kelembaban udara. Selanjutnya diolah dengan program
yang telah disematkan pada mikrokontroler, kemudian menuju bagian
output (keluaran). Bagian output pada alat ini belum dapat menampilkan
data, karena data akan di-upload terlebih dahulu ke internet.
78
4. Sensor BMP180
BMP180 adalah sensor untuk mengukur tekanan udara (Barometer)
dengan nilai output berupa satuan Pa (pascal). Dengan memanfaatkan
tekanan udara berdasar ketinggian terhadap permukaan laut, sensor ini
juga dapat mengukur ketinggian (Altimeter). BMP180 terdiri dari sensor
resistif piezo konverter analog ke digital dan unit kontrol dengan
EEPROM dan antarmuka serial I2C. BMP180 memberikan nilai tekanan
dan suhu yang tidak terkompensasi. EEPROM telah menyimpan 176 bit
data kalibrasi individu. Ini digunakan untuk mengimbangi penyeimbang
ketergantungan suhu dan parameter sensor lainnya.
5. Sensor DHT11
DHT11 adalah sensor yang dapat mengukur kelembaban udara
(humidity). Dalam sensor ini terdapat sebuah thermistor tipe NTC
(Negative Temperature Coefficient) untuk mengukur suhu, sebuah sensor
kelembaban tipe resistif dan sebuah mikrokontroller 8-bit yang mengolah
sensor tersebut dan mengirim hasilnya ke pin output dengan format single-
wire bi-directional (kabel tunggal dua arah).
6. Sensor LDR
LDR adalah komponen elektronik yang masuk dalam kategori resistor,
LDR memiliki nilai tahanan atau hambatannya sangat peka terhadap
intensitas cahaya. Semakin banyak cahaya yang mengenainya, maka
79
semakin menurun nilai resitansinya. Sebaliknya, jika cahaya yang
mengenainya sedikit (gelap), maka nilai hambatannya menjadi semakin
besar, sehingga arus listrik yang mengalir akan terhambat
7. Modul WiFi ESP8266
ESP8266 adalah sebuah modul WiFi yang memiliki port serial UART
untuk berkomunikasi dengan kontroler lain. Berdasarkan pengaturan
pabrik, modul ini bekerja sebagai serial to WiFi. Artinya modul ini akan
mengkonversi input serial. Modul WiFi ESP8266 dilengkapi dengan
beberapa protokol TCP / IP terintegrasi yang dapat memberi akses
mikrokontroler ke jaringan WiFi. ESP8266 mampu meng-host aplikasi
atau mengeksplorasi semua fungsi jaringan WiFi dari prosesor aplikasi
lain. Setiap modul ESP8266 dapat diprogram dengan seperangkat perintah
AT (AT-COMMAND). Pada perancangan alat ini, modul ESP8266
digunakan untuk mengunggah (upload) data ke situs IoT Thinkspeak.
80
Gambar III.6
Skema Rangkaian Arduino, Sensor, dan ESP8266 Pada Fritzing
Arduino beroperasi optimal pada tegangan 5VDC, setelah
mendapatkan tegangan masuk yang sesuai Arduino akan aktif yang
ditandai dengan menyalanya LED power. Arduino juga menyediakan
tegangan 3.3VDC dengan arus 1A untuk memberikan tegangan kerja ke
sensor DHT11, BMP180, dan ESP8266. Disamping itu terdapat regulator
tegangan 5VDC yang digunakan untuk memberi tegangan kerja LDR, IC
FT232RL, dan mikrokontroler ATMega 328p. Setelah semua komponen
elektronik mendapatkan tegangan kerja, selanjutnya Arduino akan
menginisialisasi sensor BMP180, dimana sensor ini digunakan untuk
membaca parameter suhu dan tekanan udara. Kemudian Arduino akan
81
mendapatkan hasil pembacaan kelembaban udara dari sensor DHT11.
Selanjutnya Arduino akan membaca pin sensor LDR kemudian akan
dikalkulasikan menggunakan rumus yang ada pada program sehingga
menghasilkan nilai dengan satuan LUX. Setelah Arduino mendapatkan
hasil pembacaan semua sensor maka Arduino akan mengirimkan data
tersebut ke internet melewati modul Wi-Fi ESP8266. Namun sebelum itu
ESP8266 akan disetting melalui perintah-perintah AT-COMMAND yang
telah ditulis pada program melalui pin TX RX. Arduino akan me-Reset
ESP8266, selanjutnya merubah mode, menyambungkan ke Access Point,
dan mengirim data hasil pembacaan sensor yang telah didapat ke situs
Thinkspeak.
82 3.5. Flowchart Program
Gambar III.7
Flowchart Kerja Alat
83 3.6. Konstruksi Sistem (Coding)
Untuk dapat digunakan sesuai dengan fungsinya, alat ini membutuhkan suatu
program. Program yang dimaksud adalah perangkat lunak dimana sintaks dan
perintah-perintah di compile lalu ditulis ke mikrokontroler. Arduino IDE versi
1.8.2 adalah sebuah program berbasis bahasa C yang dapat menangani hal
tersebut, versi ini merupakan versi terbaru dengan fitur yang lengkap. Pada
Arduino suatu listing coding disebut dengan sketch. Untuk sketch alat ini
ditambahkan dengan bahasa AT-COMMAND agar alat dapat dikonfigurasi sesuai
yang diinginkan, namun perihal bahasa AT-COMMAND tidak akan dibahas
secara detail pada alat ini.
3.6.1. Inisialisasi
#include <SoftwareSerial.h>
#include <Wire.h>
#include <dht.h>
#include <Adafruit_BMP085.h>
#define DEBUG 0
#define dht_pin A0
#define ldr_pin A1
#define MAX_ADC_READING 1023
#define ADC_REF_VOLTAGE 5.0
#define REF_RESISTANCE 5030
#define LUX_CALC_SCALAR 12518931
#define LUX_CALC_EXPONENT -1.405
dht DHT;
84
Adafruit_BMP085 bmp;
SoftwareSerial esp8266Module(10, 11);
String network = "redmi";
String password = "ojie1990";
#define IP "184.106.153.149"
String GET = "GET /update?key=0373ZPYWV2PLPBI1";
Penjelasan:
Sintaks yang diawali dengan #include merupakan inisialisasi pada Arduino
untuk pembacaan sensor. Dimulai dari #include <SoftwareSerial.h> merupakan
sebuah library bawaan Arduino IDE yang berfungsi untuk membuka fungsi serial
monitor. #include <Wire.h> adalah library untuk mengaktifkan fungsi I2C (Inter-
Integrated Circuit), yaitu library yang didedikasikan untuk menangani protokol
serial sinkron, dimana fungsi ini yang digunakan sensor BMP180 untuk
berkomunikasi dengan Arduino. #include <dht.h> sebuah library yang digunakan
untuk mengenali serta mengkalkulasi data dari sensor DHT11. #include
<Adafruit_BMP085.h> merupakan library yang berisi formula serta perhitungan
untuk sensor BMP180.
Selanjutnya sintaks yang diawali dengan #define fungsinya mendefinisikan
pin pada Arduino untuk penggunaan pin sensor. #define DEBUG 0 adalah fungsi
menganalisa jalannya program yang dapat dilihat pada serial monitor, untuk
mengaktifkannya dengan merubah angka 0 ke 1. #define dht_pin A0
mendefinisikan pin A0 pada Arduino untuk pembacaan data sensor DHT11.
85 #define ldr_pin A1 mendefinisikan pin A1 pada Arduino untuk pembacaan nilai
dari LDR.
Kemudian ke baris formula untuk menghitung nilai mentah dari LDR
sehingga mendapatkan nilai akhir yang dapat digunakan bersama satuan LUX.
#define MAX_ADC_READING 1023 mendefinisi pembacaan maksimum nilai
Analog to Digital sebesar 1023. #define ADC_REF_VOLTAGE 5.0 mendefinisi
tegangan referensi untuk Analog to Digital sebesar 5VDC. #define
REF_RESISTANCE 5030 mendefinisi nilai tahanan yang dipakai pada rangkaian
LDR sebesar 5kΩ. #define LUX_CALC_SCALAR 12518931 merupakan definisi
untuk skala perhitungan nilai mentah LDR ke nilai satuan LUX. #define
LUX_CALC_EXPONENT -1.405 mendefinisi nilai eksponen pada kalkulasi nilai
satuan LUX.
Lalu penggantian nama variabel, dht DHT; untuk mempermudah penulisan
maka dht dirubah menjadi DHT;. Adafruit_BMP085 bmp; untuk mempersingkat
penulisan maka variabel tersebut diubah menjadi bmp;. SoftwareSerial
esp8266Module(10, 11); mendedikasikan pin D10 dan pin D11 sebagai jalur
komunikasi serial dengan ESP8266, dimana komunikasi serial yang dimaksud
berguna untuk eksekusi perintah AT-COMMAND dan upload data pengolahan
sensor ke internet.
86
String network = "redmi";
String password = "ojie1990";
#define IP "184.106.153.149"
String GET = "GET /update?key=0373ZPYWV2PLPBI1";
Sintaks diatas merupakan variabel untuk digunakan dalam perintah AT-
COMMAND karena perintah tersebut hanya bisa membaca nilai dengan type
karakter, maka diubah dengan cara mengapit data dengan tanda petik (“ “). Seperti
pada String network = “redmi”; dan String password = “ojie1990”;. Selanjutnya
pendefinisian Internet Protocol dari web Thinkspeak pada #define IP
"184.106.153.149". Berikutnya nilai API Key channel Thinkspeak, dimana nilai
tersebut didapat setelah mendaftar dan membuat channel pada situs Thinkspeak.
Pada situs tersebut terdapat dua macam API Key, yaitu Write dan Read namun
yang digunakan pada alat ini adalah Write API Key dimana alat ini akan meng-
upload data ke channel tersebut.
if (DEBUG)
Serial.begin(9600);
esp8266Module.begin(9600);
if (!bmp.begin())
if (DEBUG)
87
Serial.println("Tidak dapat menemukan sensor BMP180 yang valid, cek
pengkabelan!");
while (1)
delay(2000);
Setelah proses inisialisasi selanjutnya ke tahap setup. Serial.begin(9600); dan
esp8266Module.begin(9600); sintaks ini berfungsi menginisialisasi parameter
baudrate serial Arduino dan ESP8266 dengan frekuensi 9600kbps. if
(!bmp.begin()) fungsi ini akan memeriksa apakah sensor BMP180 telah terpasang
atau belum, jika pada proses ini tidak ditemukan sensor tersebut, maka program
akan stop.
3.6.2. Input
DHT.read11(dht_pin);
double dht_humidity = DHT.humidity;
double bmp_temp = bmp.readTemperature();
double bmp_pressure = bmp.readPressure() / 100.0;
int lightIntensity = analogRead(ldr_pin);
Setelah proses inisialisasi dan setup selesai selanjutnya adalah proses input,
dimana proses ini membaca setiap pin - pin sensor yang dipasang ke Arduino.
Selain proses pembacaan sensor, pada sintaks diatas menentukan tipe data yang
digunakan untuk nilai hasil pembacaan sensor. Seperti untuk sensor DHT11
88 menggunakan tipe data ‘double’, BMP180 bmp_temp dan bmp_pressure
menggunakan tipe data ‘double’, lalu untuk LDR sensor menggunakan tipe data
‘int’.
3.6.3. Main Program
setupEsp8266();
DHT.read11(dht_pin);
double dht_humidity = DHT.humidity;
double bmp_temp = bmp.readTemperature();
double bmp_pressure = bmp.readPressure() / 100.0;
int lightIntensity = analogRead(ldr_pin);
float resistorVoltage, ldrVoltage;
float ldrResistance;
float ldrLux;
resistorVoltage = (float)lightIntensity / MAX_ADC_READING *
ADC_REF_VOLTAGE;
ldrVoltage = ADC_REF_VOLTAGE - resistorVoltage;
ldrResistance = ldrVoltage / resistorVoltage * REF_RESISTANCE;
ldrLux = LUX_CALC_SCALAR * pow(ldrResistance,
LUX_CALC_EXPONENT);
updateTemp(String(bmp_temp), String(ldrLux), String(bmp_pressure),
String(dht_humidity));
89
Main program terdiri dari input dan proses penghitungan serta sejumlah
sintaks untuk mengunggah data pembacaan sensor ke internet. Dimulai dari
SetupESP8266(); fungsi ini akan me-reset lalu men-setup modul Wi-Fi ESP8266.
Selanjutnya pemberian tipe data pada variabel penghitungan nilai LDR ke satuan
LUX dimulai dari:
float resistorVoltage, ldrVoltage;
float ldrResistance;
float ldrLux;
Selanjutnya merupakan bagian rumus untuk mengubah nilai mentah yang
didapat dari LDR sehingga nilai yang telah diolah dapat menggunakan satuan
LUX, dimulai dari:
resistorVoltage = (float)lightIntensity / MAX_ADC_READING *
ADC_REF_VOLTAGE;
ldrVoltage = ADC_REF_VOLTAGE - resistorVoltage;
ldrResistance = ldrVoltage / resistorVoltage * REF_RESISTANCE;
ldrLux = LUX_CALC_SCALAR * pow(ldrResistance,
LUX_CALC_EXPONENT);
Bagian akhir dari Main Program berupa variabel yang akan digunakan untuk
mengunggah data hasil pembacaan sensor ke internet, dimulai dari:
updateTemp(String(bmp_temp), String(ldrLux), String(bmp_pressure),
String(dht_humidity));
90 3.6.4. Output
Pada bagian output merupakan bagian akhir dari program sekaligus terdapat
perintah-perintah AT-COMMAND yang berguna untuk mengubah mode dan
berkomunikasi dengan modul Wi-Fi ESP8266. Berikut sintaks dari setup
ESP8266.
if(DEBUG)
Serial.println("Sedang me-Reset esp8266");
esp8266Module.flush();
esp8266Module.println(F("AT+RST"));
delay(5000);
if (esp8266Module.find("OK"))
if(DEBUG)
Serial.println("Ditemukan 'OK'");
Serial.println("Mengganti mode esp8266");
91
esp8266Module.flush();
changingMode();
delay(3000);
esp8266Module.flush();
verifyMode();
delay(3000);
connectToWiFi();
else
if(DEBUG)
Serial.println("'OK' tidak ditemukan");
92
Selanjutnya ke tahap sintaks penggantian mode ESP8266, pada ESP8266
terdapat tiga mode, yaitu:
1. MODE STA
2. MODE AP
3. MODE BOTH (STA & AP)
Penjelasan dari mode tersebut, Mode STA adalah dimana ESP8266 bertindak
sebagai Client atau pelanggan yang terhubung ke Access Point. Mode AP adalah
dimana modul ESP8266 bertindak sebagai Router Access Point yang dapat
diartikan setiap komputer ataupun perangkat jaringan lainnya dapat terhubung
dengan jaringan yang dibuat oleh modul ESP8266 tersebut. Mode BOTH
merupakan gabungan dari kedua mode yang telah disebutkan diatas, dapat
bertindak menjadi Access Point dan Client. Berikut adalah sintaks penggantian
mode ESP8266:
esp8266Module.println(F("AT+CWMODE=1"));
if (esp8266Module.find("OK"))
if(DEBUG)
Serial.println("Mode berhasil dirubah");
return true;
93
Setelah pengantian mode dilakukan, program akan menjalankan perintah
untuk memverifikasi mode pada ESP8266, berguna untuk mengetahui apakah
langkah penggantian mode pada modul ESP8266 telah berhasil atau tidak, berikut
sintaksnya:
esp8266Module.println(F("AT+CWMODE=1"));
if (esp8266Module.find("no change"))
if(DEBUG)
Serial.println("Sudah dalam mode 1 (STA)");
return true;
else
if(DEBUG)
Serial.println("Error saat mengganti mode");
94
return false;
Setelah penggantian dan verifikasi mode berhasil maka selanjutnya ke tahap
menghubungkan modul ESP8266 dengan Access Point atau jaringan internet
nirkabel, berikut sintaks dari tahap menghubungkan ke Access Point.
if(DEBUG)
Serial.println("Menyambungkan ke WiFi");
String cmd = F("AT+CWJAP=\"");
cmd += network;
cmd += F("\",\"");
cmd += password;
cmd += F("\"");
esp8266Module.println(cmd);
delay(8000);
if (esp8266Module.find("OK"))
if(DEBUG)
95
Serial.println("Terhubung ke Access Point");
return true;
else
if(DEBUG)
Serial.println("Tidak dapat terhubung ke Access Point");
return false;
Bagian akhir dari coding output adalah sintaks untuk mengunggah data ke
situs IoT (Thinkspeak). Untuk melihat data berhasil dikirim atau tidak ke situs
Thinkspeak, dapat diketahui dengan membuka fungsi Serial Monitor pada
Arduino IDE. Berikut sintaksnya.
96
void updateTemp(String voltage1,String voltage2,String voltage3,String
voltage4)
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += IP;
cmd += "\",80";
esp8266Module.println(cmd);
delay(5000);
if(esp8266Module.find("Error"))
if(DEBUG)
Serial.println("ERROR saat MENGIRIM DATA");
return;
cmd = GET + "&field1=" + voltage1 + "&field2=" + voltage2 + "&field3=" +
voltage3 + "&field4=" + voltage4 + "\r\n";
esp8266Module.print("AT+CIPSEND=");
97
esp8266Module.println(cmd.length());
delay(15000); //normal 15000
if(esp8266Module.find(">"))
esp8266Module.print(cmd);
if(DEBUG)
Serial.println("Data terkirim");
else
esp8266Module.println("AT+CIPCLOSE");
if(DEBUG)
Serial.println("Koneksi berakhir");
98
3.7. Hasil Percobaan
Dalam percobaan yang penulis lakukan pada alat monitoring cuaca
berbasis Arduino dan ESP8266 didapat hasil sesuai yang diharapkan, berupa nilai
hasil pembacaan sensor dan proses kerja alat sesuai fungsinya. Hasil percobaan
terbagi menjadi tiga bagian, yaitu:
3.7.1. Hasil Percobaan Input
Untuk memahami hasil percobaan input penulis membuat sebuah tabel.
Dimana hasil percobaan input termasuk pengukuran pada tegangan kerja dan
konsumsi arus.
Tabel III.2
Tabel Hasil Pengukuran Tegangan Kerja
Dari tabel tersebut dapat diketahui bahwa Arduino dan sensor
mendapatkan tegangan kerja yang sesuai. Pengukuran tegangan kerja adalah
langkah penting agar alat dapat bekerja dengan optimal.
Tegangan Kerja & Rata-rata Konsumsi Arus
Arduino 5VDC Arduino 3.3VDC
ESP8266
Sensor DHT11
Sensor BMP180
Sensor LDR Arus
OK OK 3.3VDC 3.3VDC 3.3VDC 5VDC 0.05A - 0.45A
99
Tabel III.3
Hasil Pembacaan Sensor
Hasil pembacaan sensor pada tabel menunjukkan alat bekerja sesuai yang
dengan perancangan. Dapat disimpulkan juga bahwa rangkaian input yang berupa
sensor dapat berfungsi dengan baik.
Data Pembacaan Sensor
Tanggal/Waktu Entry ID
Sensor BMP180 (Suhu)
Sensor LDR (Intensitas Cahaya)
Sensor BMP180 (Tekanan)
Sensor DHT11
(Kelembaban) 2017-07-14 21:32:40 1 31.6 29.41 1007.12 55 2017-07-14 21:35:43 2 31.6 49.08 1007.08 55 2017-07-14 21:36:41 3 31.6 29.78 1007.11 55 2017-07-14 21:37:38 4 31.4 32.25 1006.98 55 2017-07-14 21:46:15 13 31.5 21.29 1006.95 55 2017-08-02 09:38:05 14 28.4 83.54 1004.63 49 2017-08-02 09:39:43 15 28.5 72.82 1004.64 47 2017-08-02 09:40:40 16 28.4 79.95 1004.6 47 2017-08-02 09:41:38 17 28.2 80.84 1004.57 46 2017-08-02 09:43:47 18 28.2 70.46 1004.47 46
100 3.7.2. Hasil percobaan Output
Selanjutnya akan dijelaskan hasil percobaan output, terdapat gambar untuk
memudahkan dalam memahami bagian output.
Sumber: https://thingspeak.com/channels/287763
Gambar III.8
Tampilan Pada Situs IoT Thinkspeak
Bagian output berfungsi sesuai dengan rancangan, data yang telah
melewati proses berhasil diunggah oleh modul WiFi ESP8266 ke situs IoT
Thinkspeak.
101 3.7.3. Hasil percobaan Keseluruhan
Dalam percobaan yang penulis lakukan tentang penggunaan alat
monitoring cuaca berbasis Arduino dan ESP8266, menghasilkan percobaan yang
bagus. Baik dari cara kerja alat maupun hasil pembacaan sensor-sensor.
Penempatan komponen elektronik yang digunakan juga didesain sedemikian rupa
agar mudah dalam pemasangan.
Gambar III.9
Tata Letak Sensor dan Shield
Top Related