MODULelektro.um.ac.id/.../Sistem-Kendali-Jarak-Jauh-Modul-Keseluruhan.pdf · MODUL SISTEM KENDALI...
Transcript of MODULelektro.um.ac.id/.../Sistem-Kendali-Jarak-Jauh-Modul-Keseluruhan.pdf · MODUL SISTEM KENDALI...
MODUL
SISTEM KENDALI JARAK
JAUH
Dr. Eng. Mokh. Sholihul Hadi
Universitas Negeri Malang
2017
Modul 1
2
Monitoring suhu dengan smarthone android via Arduino dan Bluetooth
HC-05
Alat dan Bahan yang dibutuhkan :
• 1x Arduino UNO
• 1x IC LM35 (Sensor Suhu)
• 1x Modul Bluetooth HC-05 / HC-06
• Kabel jumper secukupnya
• Smartphone Android
• Aplikasi android Arduino Bluetooth
Langkah - Langkahnya :
1.) Pertama, Susunlah rangkaian untuk bluetooth ini pada breadboard
Keterangan Konfigurasi Kabel Rangkaian Bluetooth :
3
• Pin 5V pada Arduino dihubungkan ke VCC
• Pin GND pada Arduino dihubungkan ke GND
• Pin RX pada Arduino dihubungkan ke TXD Bluetooth modul
• Pin TX pada Arduino dihubungkan ke RXD Bluetooth modul
2.) Lalu, setelah itu susunlah rangkaian seperti gambar berikut ini.
Keterangan Konfigurasi Kabel :
• Pin VCC pada IC LM35 dihubungkan ke Pin 5V pada Arduino
• Pin OUT pada IC LM35 dihubungkan ke Pin A0 pada Arduino
• Pin GND pada IC LM35 dihubungkan ke Pin GND pada Arduino
3.) Setelah itu sambungkan Arduino pada Laptop/PC dengan menggunakan kabel
serial.
4.) Download dan Install program Arduino IDE di Arduino.cc ( If Needed )
5.) Setelah terinstall, jalankan program Arduino-nya.
6.) Klik menu "Tools -> Board -> Arduino Uno"
4
7.) Klik menu "Tools -> Port -> ( Pilih Port arduino yang terdeteksi di komputer anda
)
8.) Lalu masukan Sketch dibawah ini, dan terakhir klik upload.
float temp; //Membuat hasil suhu dengan bilangan desimal
int temperaturePin = 0; //Mendefinisikan Output dari IC LM35 ke Analog input
void setup() {
Serial.begin(38400); //Sesuaikan dengan Baudrate Modul Bluetooth anda!
}
void loop() {
temp = analogRead(temperaturePin);
temp = temp * 0.48828125; //Hasil LM35 dikali 0.48828125 (Dari Datasheet)
Serial.print(temp); //Tampilkan hasil suhu sebenarnya
delay(1000); //Pergantian hasil suhu setiap 1 detik
}
mit app inventor
5
Modul 2
6
Mengontrol nyala mati
lampu dengan perintah
suara
Alat dan Bahan yang dibutuhkan :
• 1x Arduino UNO
• 1x Bluetooth modul HC-06 / HC -05
• 4x Resistor 330 Ohm
• 4x LED ( Warna Bebas )
• 1x Projectboard ( Breadboard )
• Kabel jumper secukupnya
• Smartphone Android
• Aplikasi android Boarduino.
Langkah - Langkahnya :
1.) Susunlah rangkaian berikut ini.
7
Keterangan Konfigurasi Kabel :
• Pin VCC pada Arduino dihubungkan ke Pin VCC pada HC-06 / HC-05
• Pin GND pada Arduino dihubungkan ke Pin GND pada HC-06 / HC-05
• Pin 10 pada Arduino dihubungkan ke Pin TX pada HC-06 / HC-05
• Pin 11 pada Arduino dihubungkan ke Pin RX pada HC-06 / HC-05
• Pin 2 pada Arduino dihubungkan ke Anoda LED 1
• Pin 3 pada Arduino dihubungkan ke Anoda LED 2
• Pin 4 pada Arduino dihubungkan ke Anoda LED 3
• Pin 5 pada Arduino dihubungkan ke Anoda LED 4
• Hubungkan semua katoda LED1 sampai LED4, lalu di jumper ke GND
2.) Setelah itu sambungkan Arduino pada Laptop/PC dengan menggunakan kabel
serial.
3.) Download dan Install program Arduino IDE di Arduino.cc ( If Needed )
4.) Setelah terinstall, jalankan program Arduino-nya.
5.) Klik menu "Tools -> Board -> Arduino Uno"
6.) Klik menu "Tools -> Port -> ( Pilih Port arduino yang terdeteksi di komputer anda
8
)
7.) Lalu masukan Sketch dibawah ini, dan terakhir klik upload.
#include <SoftwareSerial.h>
SoftwareSerial BT(10, 11);
String perintah;
void setup() {
BT.begin(9600);
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
}
void loop() {
while (BT.available()) {
delay(10);
char c = BT.read();
perintah += c;
}
if(perintah.length() > 0) {
Serial.println(perintah);
// perintah dibawah ini dapat anda sesuaikan dengan perintah anda gan :v
if (perintah == "hidupkan lampu kamar tidur")
{ digitalWrite(2, HIGH); }
else if(perintah == "matikan lampu kamar tidur")
{ digitalWrite(2, LOW); }
9
else if(perintah == "hidupkan lampu kamar mandi")
{ digitalWrite(3, HIGH); }
else if(perintah == "matikan lampu kamar mandi")
{ digitalWrite(3, LOW); }
else if(perintah == "hidupkan kipas angin")
{ digitalWrite(4, HIGH); }
else if(perintah == "matikan kipas angin")
{ digitalWrite(4, LOW); }
else if(perintah == "hidupkan komputer")
{ digitalWrite(5, HIGH); }
else if(perintah == "matikan komputer")
{ digitalWrite(5, LOW); }
else if(perintah == "hidupkan semua")
{ digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH); }
else if(perintah == "matikan semua")
{ digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW); }
perintah="";}}
10
Mengontrol servo dengan
android
Alat dan Bahan yang dibutuhkan :
• 1x Arduino UNO
• 1x Bluetooth modul ( HC-05 atau HC-06 juga boleh)
• 1x Motor servo
• 1x Project board ( Breadboard )
• Smartphone Android
• Aplikasi android Boarduino. Silahkan Download di Playstore DOWNLOAD
• Kabel jumper secukupnya
Langkah - Langkahnya :
1.) Susunlah rangkaian berikut pada breadboard
11
Keterangan Konfigurasi Kabel :
• Pin 5V pada arduino dihubungkan ke VCC modul bluetooth
• Pin GND pada arduino dihubungkan ke GND pada modul bluetooth
• Pin 10 pada arduino dihubungkan ke TX pada modul bluetooth
• Pin 11 pada arduino dihubungkan ke RX pada modul bluetooth
• Pin 9 pada arduino dihubungkan ke kabel kuning Servo
• Kabel merah pada servo di jumper ke 5V ( Tegangan positif )
• Kabel hitam pada servo di jumper ke GND ( Tengangan negatif )
12
2.) Setelah itu sambungkan Arduino pada Laptop/PC dengan menggunakan kabel
serial.
3.) Download dan Install program Arduino IDE di Arduino.cc ( If Needed )
4.) Setelah terinstall, jalankan program Arduino-nya.
5.) Klik menu "Tools -> Board -> Arduino Uno"
6.) Klik menu "Tools -> Port -> ( Pilih Port arduino yang terdeteksi di komputer anda
)
7.) Lalu masukan Sketch dibawah ini, dan terakhir klik upload. #include <SoftwareSerial.h>
#include <Servo.h>
Servo myservo;
int bluetoothTx = 10;
int bluetoothRx = 11;
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
void setup() {
myservo.attach(9);
Serial.begin(9600);
bluetooth.begin(9600);
}
void loop() {
if(bluetooth.available()> 0 )
{
int servopos = bluetooth.read();
Serial.println(servopos);
myservo.write(servopos);
}
}
13
Modul 4
14
Mengendalikan mobil RC
dengan android
Tutorial Arduino kali ini adalah Mengontrol Motor DC dengan Arduino dan Android,
dan yang kita kontrol adalah 2 buah Motor DC. Tutorial ini juga bisa anda jadikan
project Mobil Remot Android / Remot control yang bisa anda kendalikan melalu
bluetooth dan smartphone Android.
Alat dan Bahan yang dibutuhkan :
• 1x Arduino UNO
• 1x Bluetooth modul HC-06 / HC-05
• 1x IC L293D (Silahkan lihat datasheet L293D)
• 2x Motor DC / Motor Gearbox
• 2x Roda (Bila diperlukan)
• Project board / Breadboard
• Kabel jumper secukupnya
• Smartphone Android
• Aplikasi android Boarduino. Silahkan Download di Playstore DOWNLOAD
Langkah - Langkahnya :
1.) Susunlah konfigurasi kabel seperti dibawah ini.
15
Keterangan Konfigurasi Kabel :
• Pin 5V pada Arduino dihubungkan ke pin VCC modul bluetooth HC05/HC06
• Pin GND pada Arduino dihubungkan ke pin GND modul bluetooth
HC05/HC06
• Pin RX pada Arduino dihubungkan ke pin TXD modul bluetooth HC05/HC06
• Pin TX pada Arduino dihubungkan ke pin RXD modul bluetooth HC05/HC06
16
• Pin 3 pada Arduino dihubungkan ke kaki 2 pada IC L293D
• Pin 4 pada Arduino dihubungkan ke kaki 7 pada IC L293D
• Pin 6 pada Arduino dihubungkan ke kaki 1 pada IC L293D
• Pin 8 pada Arduino dihubungkan ke kaki 10 pada IC L293D
• Pin 9 pada Arduino dihubungkan ke kaki 15 pada IC L293D
• Pin 11 pada Arduino dihubungkan ke kaki 9 pada IC L293D
• Kaki 4 dan 5 pada IC L293D di jumper ke GND
• Kaki 12 dan 13 pada IC L293D di jumper ke GND
• Kaki 8 dan 16 pada IC L293D di jumper ke VCC
• Kaki 3 dan 6 pada IC L293D dihubungkan ke Motor DC Kiri
• Kaki 11 dan 14 pada IC L293D dihubungkan ke Motor DC Kanan
2.) Setelah itu sambungkan Arduino pada Laptop/PC dengan menggunakan kabel
serial.
3.) Download dan Install program Arduino IDE di Arduino.cc ( If Needed )
4.) Setelah terinstall, jalankan program Arduino-nya.
5.) Klik menu "Tools -> Board -> Arduino Uno"
6.) Klik menu "Tools -> Port -> ( Pilih Port arduino yang terdeteksi di komputer anda
)
7.) Lalu masukan Sketch dibawah ini.
Klik LIHAT DONG untuk melihat sketch
/*
* Mengontrol 2 Motor DC dengan Android
* Tutorial Arduino ~ http://www.boarduino.blogspot.com
*/
int motor1Pin1 = 3;
int motor1Pin2 = 4;
int enable1Pin = 6;
17
int motor2Pin1 = 8;
int motor2Pin2 = 9;
int enable2Pin = 11;
int state;
int flag=0;
int stateStop=0;
void setup() {
// Set Motor DC sebagai output:
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enable1Pin, OUTPUT);
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
pinMode(enable2Pin, OUTPUT);
// Set Enable pada 2 buah Motor DC
digitalWrite(enable1Pin, HIGH);
digitalWrite(enable2Pin, HIGH);
// inisialisasi komunikasi serial
Serial.begin(9600);
}
void loop() {
// Jika data diterima, maka dimasukkan ke variabel state
if(Serial.available() > 0){
state = Serial.read();
flag=0;
}
// Jika state = F, maka Motor DC bergerak maju
if (state == 'F') {
digitalWrite(motor1Pin1, HIGH);
18
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
if(flag == 0){
Serial.println("MAJU TAK GENTAR!");
flag=1;
}
}
// Jika state = L, maka Motor DC berbelok ke kiri
else if (state == 'L') {
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, LOW);
if(flag == 0){
Serial.println("BELOK KIRI GAN!");
flag=1;
}
delay(1500);
state=3;
stateStop=1;
}
// Jika state = S, maka Motor DC akan berhenti
else if (state == 'S' || stateStop == 1) {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, LOW);
if(flag == 0){
19
Serial.println("BERHENTI DULU");
flag=1;
}
stateStop=0;
}
// Jika state = R, maka Motor DC berbelok ke kanan
else if (state == 'R') {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
if(flag == 0){
Serial.println("BELOK KANAN GAN!");
flag=1;
}
delay(1500);
state=3;
stateStop=1;
}
// Jika state = B, maka Motor DC bergerak mundur
else if (state == 'B') {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
if(flag == 0){
Serial.println("MUNDUR BUKAN BERARTI KEKALAHAN");
flag=1;
}
20
}
}
Konfigurasi Aplikasi Android Mobiduino :
Sketch diatas harus disesuaikan dengan Aplikasi Mobiduino, lihat keterangan pada
gambar.
Perhatikan pada sketch, ada baris code yang seperti berikut ini
if (state == 'F') // Maju
if (state == 'B') // Mundur
if (state == 'R') // Kanan
if (state == 'L') // Kiri
if (state == 'S') // Stop
21
Anda juga bisa memodifikasi dengan menambahkan Headlight (Lampu Depan) dan
juga dapat menambahkan Tail Lights (Lampu Belakang) pada Mobil remot anda,
dengan menyesuaikan tombol dari aplikasi Mobiduino dengan keterangan pada
gambar diatas.
MODUL 6
22
GSM SECURITY SYSTEM DENGAN ANDROID
GSM Security adalah sebuah aplikasi Android yang saya buat dan temasuk dalam
salah satu fitur yang ada di aplikasi Boarduino Total Control. Aplikasi GSM Security
ini ditujukan untuk Home Security System dengan Smartphone Android, aplikasi ini
dapat melakukan Panggilan Telepon atau mengirimkan SMS ke nomor tujuan tanpa
membutuhkan GSM Modul atau GSM Shield.
Next time akan saya posting juga Tutorial Home Security system dengan Arduino
dan Twitter bro, Prinsip kerjanya sama saja seperti GSM Security tetapi hanya jadi
lebih "Eksis" bro.
Oke langsung saja disimak dan di praktekkan gan Tutorialnya :)
Alat dan Bahan yang dibutuhkan :
• 1x Arduino UNO
• 1x PIR Sensor HC-SR501
• 1x Modul Bluetooth HC-05 / HC-06
• Kabel jumper secukupnya
• Smartphone Android
• Aplikasi android Boarduino. Silahkan Download di Playstore DOWNLOAD
Langkah - Langkahnya :
1.) Pertama, Susunlah rangkaian untuk bluetooth ini pada breadboard
23
Keterangan Konfigurasi Kabel Rangkaian Bluetooth :
• Pin 5V pada Arduino dihubungkan ke VCC
• Pin GND pada Arduino dihubungkan ke GND
• Pin RX pada Arduino dihubungkan ke TXD Bluetooth modul
• Pin TX pada Arduino dihubungkan ke RXD Bluetooth modul
2.) Lalu, setelah itu susunlah rangkaian seperti gambar berikut ini.
24
Keterangan Konfigurasi Kabel :
• Pin VCC pada PIR sensor dihubungkan ke Pin 5V pada Arduino
• Pin OUT pada PIR sensor dihubungkan ke Pin 2 pada Arduino
• Pin GND pada PIR sensor dihubungkan ke Pin GND pada Arduino
3.) Setelah itu sambungkan Arduino pada Laptop/PC dengan menggunakan kabel
serial.
4.) Download dan Install program Arduino IDE di Arduino.cc ( If Needed )
5.) Setelah terinstall, jalankan program Arduino-nya.
6.) Klik menu "Tools -> Board -> Arduino Uno"
7.) Klik menu "Tools -> Port -> ( Pilih Port arduino yang terdeteksi di komputer anda
25
)
8.) Lalu masukan Sketch dibawah ini, dan terakhir klik upload.
/*Arduino GSM Security ~ www.boarduino.blogspot.com */
const int pirSensorPin = 2; // Pir Sensor hubungkan ke Pin 2
int pirSensorState = 0; // Status saat pertama mulai = 0
void setup() {
Serial.begin(9600);
pinMode(pirSensorPin, INPUT); // Definisikan PIR sebagai input
}
void loop() {
pirSensorState = digitalRead(pirSensorPin);
if (pirSensorState == HIGH) { // Jika ada object didepan sensor = HIGH
Serial.println("1"); // Tampilkan angka 1 di serial monitor (Terdeteksi Object)
delay(3000); // Tunda 3 detik untuk mendeteksi object selanjutnya
}
}
26
MODUL 7
AUTOMATIC DOOR LOCK DENGAN QR CODE
ANDROID
Alat dan Bahan yang dibutuhkan :
• 1x Arduino UNO
• 2x LED (Merah dan Hijau)
• 2x Resistor 330 Ohm
• 1x LCD 16x2
• 1x Potensiometer 10K
• 1x Modul Bluetooth HC-05 / HC-06
• Kabel jumper secukupnya
• Smartphone Android
• Aplikasi Android QRduino DoorLock
Langkah - Langkahnya :
1.) Susunlah rangkaian seperti gambar berikut ini.
27
2.) Setelah itu sambungkan Arduino pada Laptop/PC dengan menggunakan kabel
serial.
3.) Download dan Install program Arduino IDE di Arduino.cc ( If Needed )
4.) Setelah terinstall, jalankan program Arduino-nya.
5.) Klik menu "Tools -> Board -> Arduino Uno"
6.) Klik menu "Tools -> Port -> ( Pilih Port arduino yang terdeteksi di komputer anda
)
7.) Lalu masukan Sketch dibawah ini, dan terakhir klik upload.
Klik LIHAT DONG untuk melihat sketch
#include <LiquidCrystal.h>
/*
- lcd rs pin ke digital pin 12
- lcd enable pin ke digital pin 11
- lcd d4 pin ke digital pin 5
- lcd d5 pin ke digital pin 4
28
- lcd d6 pin ke digital pin 3
- lcd d7 pin ke digital pin 2
*/
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int indikatorLED = 6; // Indikator LED di pin 6
int relayDoorlock = 7; // Relay doorlock di pin 7
int statusRelay = 0; // Status relay di awali dengan 0
String readString;
void setup() {
Serial.begin(9600);
lcd.begin(16,2);
pinMode(relayDoorlock, OUTPUT); // Set Relay sebagai output
pinMode(indikatorLED, OUTPUT); // Set Indikator sebagai output
lcd.setCursor(2,0);
lcd.print("Pintu Sedang");
lcd.setCursor(4,1);
lcd.print("Terkunci");
digitalWrite(indikatorLED, HIGH); // Aktifkan Indikator Terkunci
}
void loop() {
statusRelay = digitalRead(relayDoorlock);
while (Serial.available()) {
delay(3);
char c = Serial.read();
readString += c;
}
if (readString.length() >0) {
29
Serial.println(readString);
if (readString == "6vevqreytodthh1p1isg") // Ubah dengan Random string ente
{
digitalWrite(relayDoorlock, HIGH); // Aktifkan relay selama 30 detik
digitalWrite(indikatorLED, LOW); // Aktifkan indikator Terbuka
lcd.setCursor(2,0);
lcd.print("Pintu Sedang");
lcd.setCursor(4,1);
lcd.print("Terbuka!");
delay(30000);
digitalWrite(relayDoorlock, LOW); // Setelah 30 detik, matikan relay
digitalWrite(indikatorLED, HIGH); // Aktifkan indikator Terkunci
lcd.setCursor(2,0);
lcd.print("Pintu Sedang");
lcd.setCursor(4,1);
lcd.print("Terkunci");
readString="";
}
}
}
Setelah selesai pada hardware, mari kita menuju ke software. Berikut ini adalah
langkah-langkah untuk membuat aplikasi android untuk Arduino, yang aplikasinya
saya beri nama QRduino.
MIT APP INVENTOR
30
31
MODUL 8
MENGONTROL NYALA LAMPU DENGAN
ANDROID VIA BLUE TOOTH
Alat dan Bahan yang dibutuhkan :
• 1x Arduino UNO
• 1x Bluetooth modul HC-06 / HC -05
• 4x Resistor 330 Ohm
• 4x LED ( Warna Bebas )
• 1x Projectboard ( Breadboard )
• Kabel jumper secukupnya
• Smartphone Android
• Aplikasi android Boarduino. Silahkan Download di Playstore DOWNLOAD
Langkah - Langkahnya :
1.) Susunlah rangkaian berikut ini pada breadboard.
32
Keterangan Konfigurasi Kabel :
• Pin VCC pada Arduino dihubungkan ke Pin VCC pada HC-06 / HC-05
• Pin GND pada Arduino dihubungkan ke Pin GND pada HC-06 / HC-05
• Pin RXD pada Arduino dihubungkan ke Pin TX pada HC-06 / HC-05
• Pin TXD pada Arduino dihubungkan ke Pin RX pada HC-06 / HC-05
• Pin 2 pada Arduino dihubungkan ke Anoda LED 1
• Pin 3 pada Arduino dihubungkan ke Anoda LED 2
• Pin 4 pada Arduino dihubungkan ke Anoda LED 3
• Pin 5 pada Arduino dihubungkan ke Anoda LED 4
• Hubungkan semua katoda LED1 sampai LED4, lalu di jumper ke GND
Apabila ente ingin mengganti LED dengan Relay Modul 5Volt, maka susunlah
seperti ini
33
2.) Setelah itu sambungkan Arduino pada Laptop/PC dengan menggunakan kabel
serial.
3.) Download dan Install program Arduino IDE di Arduino.cc ( If Needed )
4.) Setelah terinstall, jalankan program Arduino-nya.
5.) Klik menu "Tools -> Board -> Arduino Uno"
6.) Klik menu "Tools -> Port -> ( Pilih Port arduino yang terdeteksi di komputer anda
)
7.) Lalu masukan Sketch dibawah ini, dan terakhir klik upload.
Klik LIHAT DONG untuk melihat sketch
char val;
void setup() {
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
Serial.begin(9600);
}
34
void loop() {
if( Serial.available() >0 ) {
val = Serial.read();
Serial.println(val);
}
if( val == '1' ) {
digitalWrite(2,HIGH); }
else if( val == '2' ) {
digitalWrite(3,HIGH); }
else if( val == '3' ) {
digitalWrite(4,HIGH); }
else if( val == '4' ) {
digitalWrite(5,HIGH); }
else if( val == '5' ) {
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
}
else if( val == 'A' ) {
digitalWrite(2,LOW); }
else if( val == 'B' ) {
digitalWrite(3,LOW); }
else if( val == 'C' ) {
digitalWrite(4,LOW); }
else if( val == 'D' ) {
digitalWrite(5,LOW); }
else if( val == 'E' ) {
digitalWrite(2,LOW);
digitalWrite(3,LOW);
35
digitalWrite(4,LOW);
digitalWrite(5,LOW);
}
}
36
MODUL 9 SMARTHOME SYSTEM DENGAN KONEKSI
INTERNET VIA ESP8266 DAN ANDROID
ALAT DAN BAHAN YANG DIBUTUHKAN :
• 1x Arduino UNO (Compatible) • 1x Modul ESP8266 • 1x Relay Modul • Breadboard / Projectboard • Kabel jumper secukupnya • Smartphone Android • Aplikasi Android Relay Control Internet di Playstore, silahkan klik DOWNLOAD
LANGKAH - LANGKAHYA : 1.) Download terlebih dahulu Flash Download Tools dan Firmware
2.) Setelah proses download selesai, upload lah terlebih dahulu sketch Arduino di bawah ini.
int ch_pd = 3;
int io0 = 2;
void setup() {
pinMode(ch_pd, OUTPUT);
pinMode(io0, OUTPUT);
digitalWrite(io0,LOW);
digitalWrite(ch_pd, LOW);
delay(1000);
digitalWrite(ch_pd, HIGH);
}
void loop() {
//Biarkan Kosong saja
}
3.) Langkah selanjutnya adalah, susunlah rangkaian seperti gambar dibawah ini.
37
KETERANGAN KONFIGURASI KABEL ARDUINO KE ESP8266 :
• Pin 3.3V pada Arduino dihubungkan ke VCC di ESP8266 • Pin GND pada Arduino dihubungkan ke GND di ESP8266 • Pin 2 pada Arduino dihubungkan ke GPIO0 di ESP8266 • Pin 3 pada Arduino dihubungkan ke CH_PD di ESP8266 • Pin RX pada Arduino dihubungkan ke RX di ESP8266 • Pin TX pada Arduino dihubungkan ke TX di ESP8266
4.) Setelah selesai merangkai, tancapkan Arduino pada port USB Komputer ente. 5.) Setelah itu, extract file yang telah anda download tadi 6.) Nah sekarang firmware telah diperbarui, sekarang ubah wiring diagram menjadi seperti ini.
38
KETERANGAN KONFIGURASI KABEL ARDUINO KE ESP8266 :
• Pin 3.3V pada Arduino dihubungkan ke VCC di ESP8266 • Pin 3.3V pada Arduino dihubungkan ke CH_PD di ESP8266 • Pin GND pada Arduino dihubungkan ke GND di ESP8266 • Pin 10 pada Arduino dihubungkan ke UTXD di ESP8266 • Pin 11 pada Arduino dihubungkan ke URXD di ESP8266
7.) Setelah step nomor 6 selesai, maka susunlah konfigurasi seperti dibawah ini
KETERANGAN KONFIGURASI KABEL ARDUINO KE RELAY MODULE :
• Pin 5V pada Arduino dihubungkan ke VCC Relay modul
39
• Pin GND pada Arduino dihubungkan ke GNDRelay modul • Pin 2 pada Arduino dihubungkan ke IN1 Relay modul • Pin 3 pada Arduino dihubungkan ke IN2 Relay modul • Pin 4 pada Arduino dihubungkan ke IN3 Relay modul • Pin 5 pada Arduino dihubungkan ke IN4 Relay modul
8.) Bila wiring untuk mengontrol Relay sudah selesai di rangkai, mari ke langkah selanjutnya. 9.) Kita buat channel di Web ThingSpeak.com untuk mendapatkan API Key dan Channel ID.
10.) Apabila channel sudah dibuat, anda copy paste Channel ID dan API Key anda ke Notepad. 11.) Setelah itu kita tambahkan library espduino, Buka Software Arduino lalu klik
Sketch > Include Library > Add .ZIP Library...
12.) Lalu pilih file espduino.zip dari folder yang ente download tadi, dan klik Open.
13.) Maka library espduino sudah berhasil ditambahkan pada software Arduino IDE ente.
14.) Setelah itu silahkan copy sketch dibawah ini dan pastekan pada Arduino IDE.
Klik LIHAT GAN untuk melihat sketch untuk Relay ACTIVE LOW
#include <SoftwareSerial.h>
#include <espduino.h>
40
#include <rest.h>
SoftwareSerial espPort(10, 11);
ESP esp(&espPort, &Serial, 9);
REST rest(&esp);
boolean wifiConnected = false;
const int relay1 = 2;
const int relay2 = 3;
const int relay3 = 4;
const int relay4 = 5;
boolean data1 = false;
boolean data2 = false;
boolean data3 = false;
boolean data4 = false;
int loop_count = 0;
char response[266];
char buff[64];
String strId,strData,strCode;
String strData_Last1,strData_Last2,strData_Last3,strData_Last4;
void(* resetFunc) (void) = 0;
void clearBuffer(void) {
for (int i = 0;i<266;i++ ) {
response[i]=0;
}
}
void wifiCb(void* response)
{
41
uint32_t status;
RESPONSE res(response);
if(res.getArgc() == 1) {
res.popArgs((uint8_t*)&status, 4);
if(status == STATION_GOT_IP) {
Serial.println("TERHUBUNG KE WIFI");
wifiConnected = true;
} else {
wifiConnected = false;
}
}
}
void setup() {
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
digitalWrite(relay1,HIGH);
digitalWrite(relay2,HIGH);
digitalWrite(relay3,HIGH);
digitalWrite(relay4,HIGH);
Serial.begin(9600);
espPort.begin(19200);
esp.enable();
delay(500);
esp.reset();
42
delay(500);
while(!esp.ready());
Serial.println("ARDUINO: Setup client");
if(!rest.begin("api.thingspeak.com")) {
Serial.println("ARDUINO: Gagal Setup client");
while(1);
}
Serial.println("ARDUINO: Menghubungkan dengan Wifi");
esp.wifiCb.attach(&wifiCb);
esp.wifiConnect("Andy182 Network","waipigratis");
Serial.println("ARDUINO: System sudah siap!");
}
void loop() {
loop_start:
esp.process();
if(wifiConnected) {
char str_field1[6] , str_field2[6] , str_field3[6] , str_field4[6];
sprintf(buff, "/channels/58419/fields/1/last");
Serial.println(buff);
rest.get((const char*)buff);
if(rest.getResponse(response, 266) == HTTP_STATUS_OK){
strId = "";
strData = "";
strCode = "";
43
getData();
if (strData == "1" || strData == "1.0" || strData == "1.00" ){
digitalWrite(relay1,LOW);
data1 = true;
}
if (strData == "0" || strData == "-1" || strData == "0.1" || strData == "0.10"){
digitalWrite(relay1,HIGH);
data1 = false;
}
}
else{
hardReset();
resetFunc();
}
delay(10000);
sprintf(buff, "/channels/58419/fields/2/last");
Serial.println(buff);
rest.get((const char*)buff);
if(rest.getResponse(response, 266) == HTTP_STATUS_OK){
strId = ""; strData = ""; strCode = "";
getData();
if (strData == "1" || strData == "1.0" || strData == "1.00"){
digitalWrite(relay2,LOW);
data2 = true;
}
44
if (strData == "0" || strData == "-1" || strData == "0.1" || strData == "0.10"){
digitalWrite(relay2,HIGH);
data2 = false;
}
}
else{
hardReset();
resetFunc();
clearBuffer();
goto loop_start;
}
delay(10000);
sprintf(buff, "/channels/58419/fields/3/last");
Serial.println(buff);
rest.get((const char*)buff);
if(rest.getResponse(response, 266) == HTTP_STATUS_OK){
strId = ""; strData = ""; strCode = "";
getData(); // GET DATA
if (strData == "1" || strData == "1.0" || strData == "1.00"){
digitalWrite(relay3,LOW);
data3 = true;
}
if (strData == "0" || strData == "-1" || strData == "0.1" || strData == "0.10"){
digitalWrite(relay3,HIGH);
data3 = false;
}
45
}
else{
hardReset();
resetFunc();
clearBuffer();
goto loop_start;
}
delay(10000);
sprintf(buff, "/channels/58419/fields/4/last"); // field x last Data
Serial.println(buff);
rest.get((const char*)buff);
if(rest.getResponse(response, 266) == HTTP_STATUS_OK){
strId = ""; strData = ""; strCode = "";
getData(); // GET DATA
if (strData == "1" || strData == "1.0" || strData == "1.00"){
digitalWrite(relay4,LOW);
data4 = true;
}
if (strData == "0" || strData == "-1" || strData == "0.1" || strData == "0.10"){
digitalWrite(relay4,HIGH);
data4 = false;
}
}
else{
hardReset();
resetFunc();
46
clearBuffer();
goto loop_start;
}
delay(10000);
loop_count++;
Serial.println("LOOP : ");
Serial.println(loop_count);
if(loop_count == 6 ){
loop_count = 0;
if(data1) {
dtostrf(1, 1, 1, str_field1);
}else{
dtostrf(0.1, 2, 1, str_field1);
}
if(data2) {
dtostrf(1, 1, 1, str_field2);
}else{
dtostrf(0.1, 2, 1, str_field2);
}
if(data3) {
dtostrf(1, 1, 1, str_field3);
}else{
dtostrf(0.1, 2, 1, str_field3);
}
if(data4) {
dtostrf(1, 1, 1, str_field4);
}else{
dtostrf(0.1, 2, 1, str_field4);
}
47
sprintf(buff,
"//update?key=65OKK4T6SKM96AVO&field1=%s&field2=%s&field3=%s&field4=%s",str_field1,str_fi
eld2,str_field3,str_field4);
Serial.println(buff);
rest.get((const char*)buff);
Serial.println("ARDUINO: Mengirim data terbaru");
if(rest.getResponse(response, 266) == HTTP_STATUS_OK){
Serial.println("ARDUINO: Berhasil GET Data");
strId = ""; strData = ""; strCode = "";
getData();
}
delay(5000);
}
}
else{
}
}
void getData(){
int i=0,j=0,k=0;
for (i = 0; i < 10; i++){
if((response[i] == '\r') || (response[i] == '\n')) {
}
else{
strId += response[i];
}
48
if (response[i] == '\n'){
i++;
break;
}
}
Serial.println("");
Serial.print("ID : ");
Serial.print(strId);
for (j = i; j < (i+20); j++){
if((response[j] == '\r') || (response[j] == '\n')) {
}
else{
strData += response[j];
}
if (response[j] == '\n'){
j++;
break;
}
}
Serial.println("");
Serial.print("Data : ");
Serial.print(strData);
for (k = j; k < (j+10); k++){
if((response[k] == '\r') || (response[k] == '\n')) {
}
else{
49
strCode += response[k];
}
if (response[k] == '\n'){
break;
}
}
Serial.println("");
Serial.print("Code : ");
Serial.print(strCode);
Serial.println("");
}
boolean hardReset() {
String tmpData;
}
KETERANGAN SKETCH : Sketch Pada baris berikut ini, ubah dan sesuaikan dengan SSID dan Password Wifi anda
esp.wifiConnect("Andy182 Network","waipigratis");
Ubah sketch pada setiap semua di baris berikut ini sesuai dengan Channel ID thingspeak anda
sprintf(buff, "/channels/58419/fields/1/last"); // untuk field 1
sprintf(buff, "/channels/58419/fields/2/last"); // untuk field 2
sprintf(buff, "/channels/58419/fields/3/last"); // untuk field 3
sprintf(buff, "/channels/58419/fields/4/last"); // untuk field 4
Sketch pada baris ini, ubah dan sesuaikan dengan API Key dari Channel Thingspeak anda
sprintf(buff,
"//update?key=65OKK4T6SKM96AVO&field1=%s&field2=%s&field3=%s&field4=%s",str_field1,str_fi
eld2,str_field3,str_field4);
TAMBAHAN : ALUR PROGRAM APLIKASI ANDROID Bagi kalian yang ingin membuat sendiri aplikasi Android seperti Reconnet, silahkan di buat Blok Pemogramannya dengan App inventor 2, Ikuti saja Flow Chart Reconnet yang saya buat.
Silahkan klik gambar Download dibawah ini, lalu buka file tersebut dengan browser ente.
50
51
MODUL 10
Kendali peralatan listrik jarak jauh dengan
esp8266 dan android
Alat dan bahan:
• Wemos D1 Mini Board ini adalah board wifi kecil berbasis ESP8266.
ESP8266 dikenal sebagai modul WiFi yang handal, ekonomis dan
komunitas yang besar. ESP8266 inilah yang akan menghubungkan
perangkat kita dengan internet via WiFi. Ada banyak varian prototype
board berbasis ESP8266, seperti NodeMCU, Adafruit HUZZAH
ESP8266, ESPDuino, SparkFun ESP8266 Thing, dan Wemos. Kita
sebenarnya bisa langsung memprogram ESP8266 langsung tanpa
menggunakan yang breakout board. Tapi kali ini saya menggunakan
Wemos D1 Mini karena board ini adalah yang paling murah dan mudah
didapatkan dibanding board sejenisnya. Selain itu board
ini sudah dilengkapi dengan onboard microUSB dan Serial driver
sehingga tidak perlu lagi USB to TTL atau FTDI adapter. Cocok
untuk belajar.
• Relay module Modul ini berfungsi sebagai sakelar digital untuk lampu
yang on-offnya akan kita kendalikan menggunakan ESP8266 board.
• Breadboard
• Kabel jumper
52
• Set lampu Rangkaian lampu lengkap dengan dudukan lampu, kabel
dan stekernya. Perhatikan bahwa bagian tengah dari salah
satu line kabelnya kita putus untuk nantinya dihubungkan ke
relay.Selain perangkat-perangkat di atas, Kamu akan
memerlukan Wifi Access Point yang terhubung ke internet. Access Point
ini yang nantinya akan digunakan oleh ESP8266 untuk terkoneksi ke
internet. Kamu bisa menggunakan jaringan Wifi rumah kalo punya,
sekolah, kantor atau melalui tethering
hotspot dari smartphone atau wireless router. Selain itu, Kamu juga bakal
memerlukan beberapa alat seperti obeng dan gunting.
Install Hardware Package ESP8266
ESP8266 dapat diprogram dengan Arduino IDE. Untuk itu kita akan menginstal
terlebih dahulu hardware package untuk ESP8266 pada Arduino IDE. Ada dua
jalan untuk itu, yakni melalui board manager pada Arduino IDE, atau
mengunduh source code atau git clone dari repo Github. Saya asumsikan Kamu
sudah menginstal Arduino IDE di komputermu. Dan untuk menggunakan
ESP8266 disarankan untuk menggunakan Arduino IDE v1.6.7 ke atas. Kalo
Kamu belum menginstal Arduino IDE, unduh terlebih dahulu installernya
di sini lalu jalankan untuk menginstal di komputermu. Setelah itu ikuti salah
satu langkah di bawah ini untuk menginstal hardware package untuk ESP8266.
53
Via Board Manager
• Jalankan Arduino IDE
• Pilih menu File > Preferences
• Pada kolom "Additional Boards Manager URLs", isikan tautan
berikut:http://arduino.esp8266.com/stable/package_esp8266com_i
ndex.json Kalo kolom Boards Manager sudah ada isinya sebelumnya,
pisahkan dengan koma.
• Pilih menu Tools > Board: > Boards Manager..., akan muncul jendela
Boards Manager. Pilih "esp8266 by ESP8266 Community" lalu klik
tombol install di sebelah kanan bawahnya.
Via Git
• Masuk ke folder Sketchbook location untuk Arduino IDE. Lokasi
Sketchbook location dapat dilihat pada menu File > Preferences, pada
jendela Preferences bagian atas.
• Buat folder hardware/esp8266com/ lalu masuk ke dalam folder tersebut.
• Di dalam folder hardware/esp8266com/ clone repository ESP8266 dengan
perintah berikut: git clone --depth=1
https://github.com/esp8266/Arduino.git esp8266
• Unduh binary tools untuk ESP8266. (Untuk tahap ini kita akan
menjalankan script python, maka komputermu harus terisntall python 2.7
ke atas). Masuk ke folder esp8266/tools/ lalu jalankan perintah
berikut: python get.py
54
• Restart Arduino IDE
Merangkai Alat
Rangkai semua perangkat menjadi seperti bagan berikut:Perhatian: karena kita
bermain dengan listrik AC bertegangan tinggi, maka pastikan Kamu memasang
kabel ke steker dan dudukan lampu dengan rapi, dan masukkan kedua ujung
kabel ke relay dengan rapi agar tidak tersentuh saat arus tertutup.Pada umumnya
ada 3 port pada relay, yang diberi simbol C, NC dan NO. C singkatan
dari Common Connection, NC singkatan dari Normally Closed dan NO
singkatan dari Normally Opened. Jadi bila kita menghubungkan kedua ujung
kabel ke C dan NC, maka rangkaian listrik akan tertutup pada awalnya, dan bila
dihubungkan ke C dan NO, maka rangkaian listrik akan terbuka. Kita akan
gunakan C dan NO agar lampu tidak menyala saat pertama kali listrik
dihubungkan.
Membuat Project di AgnosThings
Sebenarnya ESP8266 dapat berlaku sebagai Access Point, sehingga perangkat
lain seperti komputer dan smartphone dapat terhubung langsung ke ESP8266
dan mengirimkan sinyal perintah tertentu. Namun bila skenarionya demikian,
maka kita hanya bisa mengontrol ESP8266 dalam jarak yang terbatas. Pada
tutorial kali ini kita akan memanfaatkan salahsatu platform IoT
yakni AgnosThings yang akan kita gunakan untuk menyimpan nilai untuk
55
mengindikasikan lampu menyala dan mati. Nantinya perangkat Wemos kita
akan kita hubungkan ke internet dan mengambil nilai dari server AgnosThings
untuk menentukan apakah lampu harus menyala atau mati.
Pertama-tama mauk terlebih dahulu ke website AgnosThings
di http://agnosthings.com kemudian registrasi. Setelah proses registrasi
selesai, login dengan akun yang sudah Kamu buat melalui halaman login. Kamu
akan diarahkan ke halaman dashboard AgnosThings.
Sekarang kita akan membuat project di AgnosThings. Project yang kita
buat akan menyimpan data yang kita simpan untuk kebutuhan proyek IoT kita.
Pilih menu untuk membuat Project/Channel baru. Kamu akan diarahkan ke
halaman form untuk membuat project. Isi setiap field form seperti pada gambar
di bawah ini. Bagian paling penting adalah kolom Field(s). Kolom ini berisi
field apa saja yang akan disimpan datanya. Karena tutorial kita hanya
memerlukan pengecekan satu nilai saja --lampu menyala atau mati, maka kita
hanya akan mengisi kolom ini dengan satu field
bernama 'switch'.Daftar project/channel dapat diakses melalui menu Channel
List. Setiap project/channel akan memiliki setidaknya tiga halaman fitur yang
bisa diamati: Info, Raw Data dan Chart. Halaman Info berisi informasi
seputar project kita beserta daftar API yang dapat kita gunakan untuk
menyimpan dan mengambil data dari server. Halaman Raw Data menampilkan
tabel berisi data yang sudah tersimpan di server. Halaman Chart menampilkan
grafik data yang sudah tersimpan di server dari mulai data pertama hingga data
terakhir yang masuk.
56
Setiap project memiliki ID dan GUID yang akan digunakan pada API.Coba
masuk ke halaman Info dan perhatikan bagian Channel API. Salin URL API
yang berlabel 'Sending data to channel' dan panggil pada browser lain. Atau
Kamu dapat menggunakan aplikasi seperti Postman untuk memanggil API
tersebut. Kamu dapat mengganti tag {value} pada URL API dengan nilai yang
ingin disimpan. Karena kita hanya akan menyalakan dan mematikan lampu,
maka kita hanya perlu menyimpan nilai 0 dan 1.Kamu dapat mengecek data
yang sudah masuk pada halaman Raw Data dan Chart.
Kamu juga dapat memanggil data yang sudah tersimpan dengan menggunakan
URL API yang ada di bawah label 'Getting data back from channel' pada
halaman Info. Kamu dapat mencoba berbagai API yang tersedia dan melihat
hasilnya.
57
Menuliskan Kode
Kita sudah mendapatkan API untuk mengambil data dari server AgnosThings.
Sekarang kita akan gunakan pada program ESP8266.
Buka Arduino IDE dan hubungkan board Wemos D1 Mini ke komputer
menggunakan kabel MicroUSB.
Pada menu Tools > Board:, pilih WeMos D1 R2 & mini. Set CPU
Frequency ke 80MHz. Pilih Flash Size ke 4M (1M SPIFFS). Pilih Upload
Speed ke 115200. Terakhir set Port ke port USB dimana WeMos terhubung.
Setelah itu tuliskan kode program berikut:
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
ESP8266WiFiMulti WiFiMulti;
void setup()
{
Serial.begin(115200);
58
// set Wifi SSID dan passwordnya
WiFiMulti.addAP("SSID", "Password");
}
void loop()
{
// tunggu koneksi Wifi
if((WiFiMulti.run() == WL_CONNECTED))
{
HTTPClient http;
// ganti dengan URL API Last Feed punyamu sendiri
http.begin("http://agnosthings.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/field/last/feed/xx/switch");
// mulai koneksi dan ambil HTTP Header
int httpCode = http.GET();
59
// httpCode akan bernilai negatif bila error
if(httpCode > 0)
{
// cetak httpCode ke Serial
Serial.printf("[HTTP] GET... code: %d\n", httpCode);
// bila nilai dari server diterima
if(httpCode == HTTP_CODE_OK)
{
// cetak string json dari server
String json = http.getString();
Serial.println(json);
}
} else {
Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
}
60
// tutup koneksi HTTP
http.end();
}
delay(5000);
}
Penjelasan program:
Kita menggunakan dua library milik ESP8266,
yakni ESP8266WiFiMulti untuk terkoneksi dengan jaringan WiFi,
dan ESP8266HTTPClient untuk mengakses halaman HTTP. Pada fungi
setup(), set parameter addApp() dengan SSID dan password jaringan WiFi
yang ingin digunakan untuk terhubung ke Internet. Pada fungsi loop(), set
parameter fungsi http.begin() dengan URL API project AgnosThings Kamu.
API yang digunakan adalah API untuk mengambil data terakhir (last feed).
Apabila koneksi berhasil dan server mengirimkan respon, respon server akan
kita ambil dengan fungsi http.getString(). Value dari respon ini adalah string
json dari value terakhir. Di akhir program, kita memanggil
fungsi delay(5000) agar program mengulang memanggil API setelah jeda 5
detik. Kamu dapat mengeset waktu tunggu ini lebih cepat atau lebih lambat
tergantung kebutuhan nantinya.
61
Upload kode program Kamu kemudian setelah proses upload selesai, buka
jendela Serial Monitor melalui menu Tools > Serial Monitor. Bila programmu
benar, mestinya WeMos akan mencetak data seperti pada gambar berikut:
Sembari program jalan dan terus mengecek API setiap 5 detik, coba Kamu
perbaharui valuenya menggunakan API untuk mengirim data. Ubah value
switch dari 1 menjadi 0, kemudian update lagi menjadi 1, dan mestinya
data terakhir yang diterima oleh program kita pun berubah sesuai dengan data
terakhir yang sudah kita update ke server.
Menyalakan dan Mematikan Lampu
62
Kita sudah bisa memanggil data switch kita dari server AgnosThings. Sampai
sini kita masih belum bisa menyalakan dan mematikan lampu. Kita hanya perlu
menambahkan pengecekan value jsonnya. Bila
valuenya {"value":"1","code":200} maka kita nyalakan lampu dan bila
valuenya {"value":"0","code":200} kita matikan lampu.
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
ESP8266WiFiMulti WiFiMulti;
// set variabel pin untuk lampu
int lamp = LED_BUILTIN;
void setup()
{
Serial.begin(115200);
// set Wifi SSID dan passwordnya
63
WiFiMulti.addAP("SSID", "Password");
// set pin mode ke output
pinMode(lamp, OUTPUT);
}
void loop()
{
// tunggu koneksi Wifi
if((WiFiMulti.run() == WL_CONNECTED))
{
HTTPClient http;
// ganti dengan URL API Last Feed punyamu sendiri
http.begin("http://agnosthings.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/field/last/feed/xx/switch");
// mulai koneksi dan ambil HTTP Header
64
int httpCode = http.GET();
// httpCode akan bernilai negatif bila error
if(httpCode > 0)
{
// cetak httpCode ke Serial
Serial.printf("[HTTP] GET... code: %d\n", httpCode);
// bila nilai dari server diterima
if(httpCode == HTTP_CODE_OK)
{
// cetak string json dari server
String json = http.getString();
Serial.println(json);
// cek value json
if(json == "{\"value\":\"1\",\"code\":200}"){
65
// set ke LOW untuk menyalakan
digitalWrite(lamp, LOW);
} else {
// set ke HIGH untuk mematikan
digitalWrite(lamp, HIGH);
}
}
} else {
Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
}
// tutup koneksi HTTP
http.end();
}
delay(5000);
}
66
Penjelasan program:
Sebelum fungsi setup(), kita deklarasikan variable ingeger lamp untuk
menyimpan nomor pin yang akan kita gunakan untuk menyalakan dan
mematikan lampu. Saya set variabel ini dengan LED_BUILTIN yakni nomor pin
LED yang ada pada onboard ESP8266 agar kita mudah dalam proses
pengecekan. Bila program sudah berfungsi dengan baik, maka kita bisa
kemudian mengubah nilai variabel ini menjadi D1 seperti pada bagan rangkaian
pada step 4. Pada fungsi setup() kita set pin mode untuk variabel lamp ke
mode OUTPUT. dan pada fungsi loop(), setelah kode Serial.println(json);,
kita menambahkan kode untuk mengecek nilai json yang nantinya digunakan
untuk mengeset nilai digital pin lamp.
Upload program dan tes dengan mengupdate nilai switch menggunakan API
update value. Bila Kamu set value ke 1 dan LED menyala, begitu juga bila
value diset ke 0 dan LED mati, berarti program Kamu selesaaaai! :D
Langkah Terakhir
Pastikan rangkaian lampu sudah terhubung dengan relay dan pin D1 pada
WeMos terhubung ke pin input signal relay. Kemudian update baris kode int
lamp = LED_BUILTIN; menjadi int lamp = D1;. Kemudian Upload lagi
programmmu. Apakah lampu besarmu menyala dan mati sesuai harapan??