100% menganggap dokumen ini bermanfaat (4 suara)
786 tayangan69 halaman

Membuat Aplikasi IoT

Dokumen tersebut membahas tentang Internet of Things (IoT) mulai dari pengertian IoT, contoh aplikasi IoT, sistem dasar IoT, dan tutorial membuat 7 proyek aplikasi IoT menggunakan NodeMCU V3 untuk mengontrol dan memantau perangkat elektronik seperti LED dan sensor."

Diunggah oleh

Bahaa 3
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
100% menganggap dokumen ini bermanfaat (4 suara)
786 tayangan69 halaman

Membuat Aplikasi IoT

Dokumen tersebut membahas tentang Internet of Things (IoT) mulai dari pengertian IoT, contoh aplikasi IoT, sistem dasar IoT, dan tutorial membuat 7 proyek aplikasi IoT menggunakan NodeMCU V3 untuk mengontrol dan memantau perangkat elektronik seperti LED dan sensor."

Diunggah oleh

Bahaa 3
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 69

Apa itu IoT ?

Contoh Aplikasi IoT

Sistem Pada IoT

Membuat aplikasi IoT dengan Nodemcu V3

Modul

Project IoT 1 : Kontrol On Off LED dengan WiFi

Project IoT 2 : Kontrol 2 LED via Internet

Project IoT 3 : Kontrol 4 Lampu via Internet

Project IoT 4 : Monitoring Suhu dg Tampilan Grafik di Internet

Project IoT 5 : Kontrol LED dengan Android

Project IoT 6 : Mengirim Notifikasi ke Telegram

Project IoT 7 : Sistem Keamanan Rumah dg Sensor PIR & Telegram


I. Apa itu IoT ?

IoT (Internet of Things) saat ini memang lagi marak dipakai di dunia IT.
Lantas apakah arti dari IoT tersebut ? Berikut definisi IoT yang saya ambil
dari Wikipedia : IoT 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. Contohnya
bahan pangan, elektronik, peralatan apa saja, termasuk benda hidup yang
semuanya tersambung ke jaringan lokal dan global melalui sensor yang
tertanam dan selalu aktif.

II. Contoh Aplikasi IoT

Banyak sekali contoh penerapan teknologi IoT, beberapa contohnya :


Smart Home (system keamanan rumah berbasis internet, dapat
mengetahui kedaan rumah serta mengontrol peralatan rumah tangga
melalui jaringan internet)
Internet Industri (monitoring dan controlling peralatan serta proses
pada industry)
Pertanian (monitoring dan pengendalian peralatan pertanian)
Kesehatan (monitoring kondisi kesehataan seseorang)
Transportasi (manajemen dan informasi lalu lintas)

III. Sistem pada IoT

Sistem dasar dari IoT terdiri dari 3 hal :


Hardware/fisik (Things)
Koneksi internet
Cloud data center sebagai tempat untuk menyimpan atau menjalankan
aplikasinya.
IV. Membuat Aplikasi IoT dengan Nodemcu V3

Konfigurasi Nodemcu V3
NodeMCU adalah sebuah board elektronik yang berbasis chip
ESP8266 dengan kemampuan menjalankan fungsi mikrokontroler dan
juga koneksi internet (WiFi). Terdapat beberapa pin I/O sehingga dapat
dikembangkan menjadi sebuah aplikasi monitoring maupun controlling
pada proyek IoT.
Bentuk fisik dari modul NodeMCU V3 tampak pada gambar berikut :
Perhatikan pada NodeMCU V3 ini terdapat port USB (mini USB)
sehingga akan memudahkan dalam pemrogramannya nanti.
Spesifikasi :
Tegangan kerja : 3,3 V
Flash memori : 16 MB
Terintegrasi dengan protocol TCP/IP
Processor : Tensilica L106 32 bit
Kecepatan : 80 - 160 Mhz
Jumlah pin Digital I/O : 11 (D0 - D10)

Konfigurasi pin NodeMCu V3 :


Pemrograman NodeMCU V3
NodeMCU V3 dapat diprogram dengan compiler-nya Arduino,
menggunakan Arduino IDE. Tentu saja platform pemrogramannya
memakai bahasa C.
Bagi anda yang belum pernah sama sekali memprogram Arduino,
sebaiknya pelajari dahulu dasar - dasar pemrograman Arduino, karena
nanti akan sangat menunjang pemahaman dan pengembangan
aplikasi IoT dengan modul NodeMCU ini.
Secara sederhana, terdapat 2 fungsi di dalam setiap pemrogramannya
:
Void init()
Void loop()
Penulisan huruf juga harus teliti, karena case sensitive, huruf besar
berbeda dengan huruf kecil.
Ekspresi bilangan, logika pemrograman, operasi aritmatika sama
dengan pemrograman Arduino. Banyak artikel sudah membahasnya,
silakan anda pelajari terlebih dahulu.
Instalasi Driver NodeMCU V3

Board NodeMCU V3 support Win XP, Vista, Win 7/8/10.

Seting Arduino IDE untuk Nodemcu V3


Untuk pemrogramannya kita akan memakai Arduino IDE, jika belum
diseting (default program Arduino IDE belum terdapat board
NodeMCU) maka perlu kita seting terlebih dahulu. File master Arduino
IDE ada di CD. Cukup anda copy paste aja 1 folder ke folder computer
anda. Buka foldernya dan cari file Arduino.exe. Klik 2x untuk
menjalankannya. Selanjutnya kita seting Arduino IDE agar dapat
dipakai untuk NodeMCu V3 kita.
1. Jalankan Arduino IDE. Dari menu File Preference.

2. Pada jendela Preference, di bagian bawah terdapat kolom


Additional Boards Manager URLs kemudian copy-paste link
Berikut :
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Kemudian klik OK.
3. Selanjutnya kita update boardnya. Dari menu Tool Board Board
manager

Akan muncul jendela Boards Manager. Pada bagian bawah cari


esp8266 kemudian klik Install.
sekarang kita cek apakah NodeMCU sudah terinstal di
Arduino IDE kita atau belum. Dari menu Tools Board
NodeMCU seperti pada gambar.

Library Arduino untuk Aplikasi IoT

Sebelum kita menggunakan Arduino IDE untuk membuat program aplikasi IoT,
beberapa library perlu kita tambahkan. Cara menambahkan nya di folder berikut

V. INSTALASI DRIVER NodeMCU V3 DI KOMPUTER/LAPTOP


Buka file di dalam folder driver CH341
Jalankan file CH341SER.EXE
Colokkan NodeMCU V3 ke port USB computer/laptop. Jika sudah berhasil maka akan
tampil di Device Manager.

Buka Device Manager


NodeMCU ada di COM5. Ingat nomor com-nya ini nanti kita seting juga di Arduino IDE pada com 5.

(tiap komputer berbeda, sesuaikan dengan com yang di deteksi)


Tes modul Nodemcu V3

Sekarang saatnya kita coba modul NodeMCU. Koneksikan modul NodeMCU


V3 ke port computer/laptop melalui kabel USB.

Pilih board : NodeMCU 1.0 (ESP-12E Module). Sesuaikan nomor port


dengan nomor com NodeMCU V3 yang terdeteksi di komputer anda.

Untuk nomor port-nya silakan cek di Device Manager komputer anda.


Kita coba program pertama yaitu LED Blink.

Tulis program berikut di sketch Arduino. (nama program : LED Blink).

#define LED_pin D5
void setup() {
pinMode(LED_pin, OUTPUT);
}

void loop() {
digitalWrite(LED_pin, LOW);
delay(1000);
digitalWrite(LED_pin, HIGH);
delay(1000);
}
Simpan (Save) kemudian Upload ke board NodeMCU V3. Klik Upload.

Klik Upload

Programnya sederhana, menghidupkan LED 1 yang ada di board berkedip


(blink) dengan delay 1 detik. Rangkaian LED 1 tampak pada gambar berikut
ini. LED akan nyala jika pada kaki anoda (pin D5) berlogika „HIGH‟.
Program ini untuk testing apakah NodeMCU V3 anda dapat diprogram dan
berjalan dengan Arduino IDE.
Ok sekarang kita Upload ke modul NodeMCU V3. Klik tombol Upload,
tunggu sampai proses compiling s/d upload selesai.
Hasilnya tampak LED 1 pada board akan berkedip dengan delay 1 detik.
Jika belum berhasil silakan cek lagi programnya. Jika ketika proses Upload
mengalami masalah coba cek lagi koneksi NodeMCU V3 ke port USB
(pastikan tidak kendor) dan instalasi driver berhasil (cek di Device Manager)

Tes koneksi Nodemcu V3 dengan WiFi

Selanjutnya kita akan coba koneksikan NodeMCU V3 ini dengan jaringan


internet WiFi. Sebelumnya siapkan hotspot (WiFi) anda. Dapat memakai
modem atau HP.
Catat : nama jaringan WiFi dan passwordnya, nantinya kita gunakan untuk
menulis program.
Misalnya :
o Nama : UPT-TIK
o Password : 12345678
Selanjutnya bikin programnya, sekali lagi ganti nama WiFi dan passwordnya
sesuai dengan jaringan anda (nama program : Tes Koneksi WiFi).

/*************************************
* Program : Tes Koneksi WiFi NodeMCU V3
* Input : -
* Output : Serial Monitor
*
*
* ***********************************/

#include <ESP8266WiFi.h>
const char* ssid = " UPT-TIK "; //nama Wifi sesuaikan dengan WiFi anda
const char* password = "12345678"; //password WiFi sesuaikan dengan WiFi
anda
WiFiServer server(80);

void setup() {
Serial.begin(115200);
delay(2000);
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
}

void loop() {
}

Jangan lupa untuk mengganti nama jaringan (ssid) dan password WiFi
anda).
Simpan (Save) kemudian Upload. Tunggu sampai selesai, setelah itu cek di
Serial Monitor (Tools Serial Monitor) maka akan tampil status koneksi
NodeMCU dengan WiFi. Seting Serial Monitor pada Baudrate 115200.

Jika tidak tampil, silakan anda reset dengan menekan tombol RST di
NodeMCU.

VI. Project IoT 1 : Kontrol On Off LED dengan WiFi


Pada proyek pertama ini kita akan membuat proyek IoT berupa kontrol On -
Off LED melalui jaringan WiFi.
Sehingga rangkaian pada board menjadi seperti ini :

Buat program berikut : Jangan lupa untuk mengganti SSID dan password WiFi
nya.

/*************************************
* Program : Project 1 Kontrol LED
* Input : -
* Output : LED1
*
*
* ***********************************/
#include <ESP8266WiFi.h>
const char* ssid = "UPT-TIK";
const char* password = "12345678";

int ledPin = D5;


WiFiServer server(80);

void setup() {
Serial.begin(115200);
delay(10);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {


delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
server.begin();
Serial.println("Server started");
Serial.print("Use this URL to connect: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}

void loop() {
WiFiClient client = server.available(); if
(!client) {
return;
}

Serial.println("new client");
while(!client.available()){
delay(1);
}

String request = client.readStringUntil('\r');


Serial.println(request);
client.flush();

int value = LOW;


if (request.indexOf("/LED=ON") != -1) {
digitalWrite(ledPin, HIGH);
value = HIGH;
}
if (request.indexOf("/LED=OFF") != -1) {
digitalWrite(ledPin, LOW);
value = LOW;
}

client.println("HTTP/1.1 200 OK");


client.println("Content-Type: text/html");
client.println(""); // do not forget this one
client.println("<!DOCTYPE HTML>");
client.println("<html>");

client.print("Led pin is now: ");

if(value == HIGH) {
client.print("On");
} else {
client.print("Off");
}
client.println("<br><br>");
client.println("<a href=\"/LED=ON\"\"><button>Turn On </button></a>");
client.println("<a href=\"/LED=OFF\"\"><button>Turn Off </button></a><br
/>");
client.println("</html>");
delay(1);
Serial.println("Client disonnected");
Serial.println("");
}
Setelah disimpan (Save) kemudian Upload (pastikan tidak ada eror). Buka
Serial Monitor dengan Baud rate 115200.

Setelah device terkoneksi dengan WiFi, pada Serial Monitor muncul nomor
IP. Copy alamat IP nya, pada contoh diatas alamatnya : 192.168.43.78
kemudian paste di web browser anda.

Kemudian enter maka akan muncul tampilan seperti ini :


Tekan tombol “Turn On” kemudian perhatikan LED 1, jika berjalan normal
maka LED 1 akan nyala (ON).

Tekan tombol “Turn Off” maka LED 1 akan mati (OFF).

VII. Project IoT 2 : Kontrol 2 LED


Selanjutnya kita akan membuat aplikasi IoT untuk mengontrol 2 LED. Jumper
J5 tetap dalam keadaan terpasang ya ..
Kita buat programnya. Jangan lupa untuk mengganti SSID dan password WiFi
nya.

/*************************************
* Program : Project 2: Kontrol 2 LED
* Input : -
* Output : LED1 + LED 2
*
*
* ***********************************/

#include <ESP8266WiFi.h>
const char* ssid = " UPT-TIK ";
const char* password = "12345678";
#define LED1 D5
#define LED2 D6

WiFiServer server(80);

void setup() {
Serial.begin(115200);
delay(10);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);

// Connect to WiFi network


Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {


delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");

server.begin();
Serial.println("Server started");

Serial.print("Use this URL to connect: ");


Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}

void loop() {
WiFiClient client = server.available(); if
(!client) {
return;
}

Serial.println("new client");
while(!client.available()){
delay(1);
}

String request = client.readStringUntil('\r');


Serial.println(request);
client.flush();
if (request.indexOf("/led1on") > 0) {
digitalWrite(LED1, HIGH);

}
if (request.indexOf("/led1off") >0) {
digitalWrite(LED1, LOW);
}
if (request.indexOf("/led2on") > 0) {
digitalWrite(LED2, HIGH);
}
if (request.indexOf("/led2off") >0) {
digitalWrite(LED2, LOW);
}

// Return the response


client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head>");
client.println("<meta name='apple-mobile-web-app-capable' content='yes'
/>");
client.println("<meta name='apple-mobile-web-app-status-bar-style'
content='black-translucent' />");
client.println("</head>");
client.println("<body bgcolor = \"#f7e6ec\">");
client.println("<hr/><hr>");
client.println("<h4><center> Kontrol 2 LED </center></h4>");
client.println("<hr/><hr>");
client.println("<br><br>");
client.println("<br><br>");
client.println("<center>");
client.println("LED 1");
client.println("<a href=\"/led1on\"\"><button>Turn On </button></a>");
client.println("<a href=\"/led1off\"\"><button>Turn Off </button></a><br />");
client.println("</center>");
client.println("<br><br>");
client.println("<center>");
client.println("LED 2");
client.println("<a href=\"/led2on\"\"><button>Turn On </button></a>");
client.println("<a href=\"/led2off\"\"><button>Turn Off </button></a><br />");
client.println("</center>");
client.println("<br><br>");
client.println("<center>");
client.println("<table border=\"5\">");
client.println("<tr>");
//=====================
if (digitalRead(LED1))
{
client.print("<td>LED 1 = ON</td>");
}
else
{
client.print("<td>LED 1 = OFF</td>");
}
client.println("<br />");
//======================
if (digitalRead(LED2))
{
client.print("<td>LED 2 = ON</td>");
}
else
{
client.print("<td>LED 2 = OFF</td>");
}
client.println("</tr>");
//=======================
client.println("<tr>");
client.println("</table>");
client.println("</center>");
client.println("</html>");
delay(1);
Serial.println("Client disonnected");
Serial.println("");
}

Save kemudian Upload. Buka Serial Monitor (Tools Serial Monitor) seting
baud rate pada nilai 115200. Maka akan muncul tampilan status koneksi
dengan WiFi dan nomor IP jaringannya.
Jika tidak muncul keterangan status dll, lakukan :
Cek nama & password WiFi nya, pastikan sesuai
Tekan tombol reset pada NodeMCU V3.
Copy alamat IP nya, pada contoh diatas alamatnya : 192.168.43.78
kemudian paste di web browser anda.

Kemudian ENTER maka akan tampil :


KONTROL 2 LED

Tekan tombol Turn On pada LED 1 dan perhatikan LED 1 akan ON,
demikian juga pada LED 2.

VIII. Project IoT 3 : Kontrol 4 Lampu


Pada proyek IoT ke-3 ini kita akan mengontrol lampu AC sebanyak 4 buah.
Untuk interfacingnya kita pakai relay yang sudah ada di board

Buatlah rangkaian modul relay dengan board seperti pada rangkaian.


Relay modul Board
IN1 D5
IN2 D6
IN3 D7
IN4 D8
VCC +5V
GND GND

Siapkan 4 buah lampu AC beserta kabel dan stecker (jack), kemudian


buatlah rangkaian seperti ini :

Hati - hati dan perhatikan dengan teliti karena kita akan berhubungan
dengan tegangan AC 220V. Anda dapat juga menggantinya dengan lampu
DC. Selanjutnya buatlah program berikut, jangan lupa untuk mengganti SSID
dan password WiFi nya.

/*************************************
* Program : Project 3 : Kontrol 4 Lampu
* Input : -
* Output : Relay 4 unit.
*
*
* ***********************************/
#include <ESP8266WiFi.h>
const char* ssid = "UPT-TIK";
const char* password = "12345678";
#define Relay1 D5
#define Relay2 D6
#define Relay3 D7
#define Relay4 D8
; //
WiFiServer server(80);
void setup() {
Serial.begin(115200);
delay(10);
pinMode(Relay1, OUTPUT);
pinMode(Relay2, OUTPUT);
pinMode(Relay3, OUTPUT);
pinMode(Relay4, OUTPUT);
digitalWrite(Relay1, LOW);
digitalWrite(Relay2, LOW);
digitalWrite(Relay3, LOW);
digitalWrite(Relay4, LOW);
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
server.begin();
Serial.println("Server started");
Serial.print("Use this URL to connect: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}

void loop() {
WiFiClient client = server.available(); if
(!client) {
return;
}
Serial.println("new client");
while(!client.available()){
delay(1);
}
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
if (request.indexOf("/relay1on") > 0) {
digitalWrite(Relay1, HIGH);
}
if (request.indexOf("/relay1off") >0) {
digitalWrite(Relay1, LOW);
}

if (request.indexOf("/relay2on") > 0) {
digitalWrite(Relay2, HIGH);

}
if (request.indexOf("/relay2off") >0) {
digitalWrite(Relay2, LOW);
}
if (request.indexOf("/relay3on") >0) {
digitalWrite(Relay3, HIGH);

}
if (request.indexOf("/relay3off") > 0) {
digitalWrite(Relay3, LOW);

}
if (request.indexOf("/relay4on") > 0) {
digitalWrite(Relay4, HIGH);

}
if (request.indexOf("/relay4off") > 0) {
digitalWrite(Relay4, LOW);

client.println("HTTP/1.1 200 OK");


client.println("Content-Type: text/html");
client.println(""); // do not forget this one
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head>");
client.println("<meta name='apple-mobile-web-app-capable' content='yes'
/>");
client.println("<meta name='apple-mobile-web-app-status-bar-style'
content='black-translucent' />");
client.println("</head>");
client.println("<body bgcolor = \"#f7e6ec\">");
client.println("<hr/><hr>");
client.println("<h4><center> : Kontrol 4 Lampu </center></h4>");
client.println("<h4><center>UPT TIK POLIBAN</center></h4>");
client.println("<hr/><hr>");
client.println("<br><br>");
client.println("<br><br>");
client.println("<center>");
client.println("Lampu 1");
client.println("<a href=\"/relay1on\"\"><button>Turn On </button></a>");
client.println("<a href=\"/relay1off\"\"><button>Turn Off </button></a><br
/>");
client.println("</center>");
client.println("<br><br>");
client.println("<center>");
client.println("Lampu 2");
client.println("<a href=\"/relay2on\"\"><button>Turn On </button></a>");
client.println("<a href=\"/relay2off\"\"><button>Turn Off </button></a><br
/>");
client.println("</center>");
client.println("<br><br>");
client.println("<center>");
client.println("Lampu 3");
client.println("<a href=\"/relay3on\"\"><button>Turn On </button></a>");
client.println("<a href=\"/relay3off\"\"><button>Turn Off </button></a><br
/>");
client.println("</center>");
client.println("<br><br>");
client.println("<center>");
client.println("Lampu 4");
client.println("<a href=\"/relay4on\"\"><button>Turn On </button></a>");
client.println("<a href=\"/relay4off\"\"><button>Turn Off </button></a><br
/>");
client.println("</center>");
client.println("<br><br>");
client.println("<center>");
client.println("<table border=\"5\">");
client.println("<tr>");
//=====================
if (digitalRead(Relay1))
{
client.print("<td>Lampu 1 = ON</td>");
}
else
{
client.print("<td>Lampu 1 = OFF</td>");
}
client.println("<br />");
//======================
if (digitalRead(Relay2))
{
client.print("<td>Lampu 2 = ON</td>");
}
else
{
client.print("<td>Lampu 2 = OFF</td>");
}
client.println("</tr>");
//=======================
client.println("<tr>");

if (digitalRead(Relay3))
{
client.print("<td>Lampu 3 = ON</td>");
}
else
{
client.print("<td>Lampu 3 = OFF</td>");
}
if (digitalRead(Relay4))
{
client.print("<td>Lampu 4 = ON</td>");
}
else
{
client.print("<td>Lampu 4 = OFF</td>");
}
client.println("</tr>");
client.println("</table>");
client.println("</center>");
client.println("</html>");
delay(1);
Serial.println("Client disonnected");
Serial.println("");
}

Save kemudian Upload. Buka Serial Monitor (Tools Serial Monitor) seting
baud rate pada nilai 115200. Maka akan muncul tampilan status koneksi
dengan WiFi dan nomor IP jaringannya.
Jika tidak muncul keterangan status dll, lakukan :
Cek nama &amp; password WiFi nya, pastikan sesuai
Tekan tombol reset pada NodeMCU V3.
Copy alamat IP nya, pada contoh diatas alamatnya : 192.168.43.78
kemudian paste di web browser anda.

Kemudian ENTER maka akan tampil :


Kontrol 4 Lampu
UPT
UPT TIKPOLIBAN
TIK POLIBAN

Tekan tombol Turn On atau Turn Off pada masing - masing lampu maka
lampu yang bersesuaian akan nyala atau padam.

IX. Project IoT 4 : Monitoring Suhu dengan Tampilan Grafik di


Internet

Pada proyek ke-4 ini kita akan membaca nilai temperature (suhu)
lingkungan yang dibaca sensor LM35 kemudian menampilkan hasilnya
di sebuah web server dalam bentuk grafik.
Kita akan menggunakan server ThingSpeak, jika belum mempunyai akun di
ThingSpeak silakan mendaftar dulu.

- Buka : https://thingspeak.com
- Daftarkan akun anda. Klik “Sign Up” yang ada di pojok kanan atas.
- Siapkan sebuah akun email kemudian isi data - data yang diperlukan
serta ikuti petunjuknya sampai regristrasi berhasil.

- Selanjutnya kita buat channel. Klik “New Chanel”

- Berikutnya isi kolom Name, Description dan Field 1.


- OK, selanjutnya klik “Save Channel”

- Berikutnya akan tampil sebuah grafik (chart)

- Langkah selanjutnya kita cek API , klik tab API Keys.


- Perhatikan dan catat kode API Keys-nya , nanti kita pakai untuk
membuat programnya.
- Untuk pembuatan akun Thingspeak sampai disini dulu ya.. kita
lanjutkan ke hardware-nya.

Siapkan sebuah sensor suhu LM35 (sudah ada di board ).

Sensor suhu LM35 sudah sangat umum dipakai untuk membaca temperatur
lingkungan, mulai dari 00 - 1000 Celcius. Rangkaiannya juga mudah, tinggal
beri tegangan 5VDC dan keluaran sensor akan liner dengan persamaan
10mV/10C.
Selanjutnya kita siapkan programnya, buka lembar kerja baru (File New) di
Arduino IDE, kemudian buat source code berikut

/*************************************

* Program :Project 4 Monitoring Suhu Thingspeak

* Input : LM35 di A0

* Output : Grafik Thingspeak

* ***********************************/

int outputpin= A0;

int analogValue;

float millivolts,celsius;

#include <ESP8266WiFi.h>

// ganti dengan API Keys anda di Thingspeak

String apiKey = "0OWL7R5RTKKH7BXL"; const

char* ssid = "UPT-TIK";

const char* password = "12345678";


const char* server = "api.thingspeak.com";

WiFiClient client;
//========================

void setup() {

Serial.begin(115200);

delay(10);

WiFi.begin(ssid, password);

Serial.println();

Serial.println();

Serial.print("Connecting to ");

Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {

delay(500);

Serial.print(".");

Serial.println("");

Serial.println("WiFi connected");
}

//==========================================

void loop() {

analogValue = analogRead(outputpin);

millivolts = (analogValue/1024.0) * 3300;

celsius = millivolts/10;

if (client.connect(server,80)) {

String postStr = apiKey;

postStr +="&field1=";

postStr += String(celsius);

postStr += "\r\n\r\n";
client.print("POST /update HTTP/1.1\n");

client.print("Host: api.thingspeak.com\n");

client.print("Connection: close\n");

client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");

client.print("Content-Type: application/x-www-form-urlencoded\n");

client.print("Content-Length: ");

client.print(postStr.length());

client.print("\n\n");

client.print(postStr);

Serial.print("Temperature: ");

Serial.print(celsius);

Serial.print(" Celcius ");

Serial.println(" send to Thingspeak");

client.stop();
Serial.println("Waitingǥ");

delay(20000); //minimal nunggu 15 detik update Thingspeak

Sesuaikan beberapa variable berikut :

API Keys Cek di akun Thingspeak, copy paste ke program


untuk variable apiKey
Nama jaringan WiFi , isikan ke ssid
Password WiFi , isikan ke password
Save kemudian Upload. Pastikan tidak ada error. Buka Serial Monitor di
Arduino IDE (Tools Serial Monitor ) maka akan tampil :

Buka web thingspeak.com dan masuk ke akun anda dengan user name +
password yang sudah dibuat.

Perhatikan tampilan grafik akan sesuai dengan nilai yang dibaca oleh sensor
suhu LM35.
XI. Project IoT 5 : Kontrol LED dengan Android

Aplikasi IoT selanjutnya akan berhubungan dengan Android. Kita akan


memakai aplikasi Android yang sudah banyak tersedia secara gratis di Play
Store. Siapkan sebuah jaringan WiFi yang akan dipakai untuk koneksi antara
(ESP8266) dengan aplikasi di Android.
Aplikasi Android yang akan kita pakai adalah “ESP Kontrol WiFi Perangkat” Pilih
yang “ESP8266 Kontrol WiFi Perangkat” kemudian Install.
Sekarang kita siapkan softwarenya. Buat lembar kerja baru di Arduino IDE (File
=> New).

/*************************************
* Program :Project 6 Kontrol LED dg Android
* Input : -
* Output : LED1-LED4
*
*
* ***********************************/

#include <ESP8266WiFi.h>
#define ON 1
#define OFF 0

const char* ssid = "UPT-TIK"; // Ganti dengan nama jaringan wifi anda
const char* password = "12345678"; // Ganti dengan password wifi anda

#define LED1 D5 //D5 ESP Board


#define LED2 D6 //D7 ESP Board
#define LED3 D7 //D6 ESP Board
#define LED4 D8 //D5 ESP Board

bool value1 = LOW;


bool value2 = LOW;
bool value3 = LOW;
bool value4 = LOW;
WiFiServer server(80); // Nomor PORT WiFi
//====================================
void setup() {
Serial.begin(115200);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);

// Connect to WiFi network


Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
server.begin();
Serial.println("Server started");
delay (2000);
// Print the IP address
Serial.print("Use this URL to connect: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
delay (2000);
}
//=====================================
void loop() {

WiFiClient client = server.available(); if


(!client) {
return;
}

Serial.println("new client");
while(!client.available()){
delay(1);
}
String request = client.readStringUntil('\r');
Serial.println(request);
delay(1000);
client.flush();
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // do not forget this one
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<fieldset>");
client.println("<font color = redq>");
client.print("Control 4 LED Via Wifi");
client.println("</font>");
client.println("</fieldset>");
client.println("<br><br>");
// Kontrol LED 1
if (request.indexOf("/status1=1") != -1) {
digitalWrite(LED1, ON);
value1 = HIGH;
}
if (request.indexOf("/status1=0") != -1) {
digitalWrite(LED1, OFF);
value1 = LOW;
}
if(value1==HIGH){
client.println("<br><br>");
client.print("status1=1");
}
if(value1==LOW){
client.println("<br><br>");
client.print("status1=0");
}

// Kontrol LED 2
if (request.indexOf("/status2=1") != -1) {
digitalWrite(LED2, ON);
value2 = HIGH;
}
if (request.indexOf("/status2=0") != -1) {
digitalWrite(LED2, OFF);
value2 = LOW;
}
if(value2==HIGH){
client.println("<br><br>");
client.print("status2=1");
}
if(value2==LOW){
client.println("<br><br>");
client.print("status2=0");
}
// Kontrol LED 3
if (request.indexOf("/status3=1") != -1) {
digitalWrite(LED3, ON);
value3 = HIGH;
}
if (request.indexOf("/status3=0") != -1) {
digitalWrite(LED3, OFF);
value3 = LOW;
}
if(value3==HIGH){
client.println("<br><br>");
client.print("status3=1");
}
if(value3==LOW){
client.println("<br><br>");
client.print("status3=0");
}
// Kontrol LED 4
if (request.indexOf("/status4=1") != -1) {
digitalWrite(LED4, ON);
value4 = HIGH;
}
if (request.indexOf("/status4=0") != -1) {
digitalWrite(LED4, OFF);
value4 = LOW;
}
if(value4==HIGH){
client.println("<br><br>");
client.print("status4=1");
}
if(value4==LOW){
client.println("<br><br>");
client.print("status4=0");
}
delay(1);
Serial.println("Client disonnected");
Serial.println("");
delay(1000);
}

Sesuaikan nama jaringan WiFi dan password-nya.


Buka Serial Monitor (Tools => Serial Monitor ). Kalau tidak muncul
keterangan status di Serial Monitor cek lagi baud rate dan modul di reset (
tekan tombol RST yang ada di NodeMCU ).
Sekarang buka aplikasi Android “ ESP8266 Kontrol Perangkat ” .
Pastikan nama WiFi (SSID) sesuai, kemudian klik “CONNECT TO ” . Kalau
sukses akan tampil seperti ini :

OK, selanjutnya kita edit sedikit ya, kita kasih nama untuk masing - masing
Device. Pertama klik tombol Seting (gambar kunci pas) pada Device 1.

Isikan Device Name = LED 1 dan Command = 2, kemudian klik SAVE.


Lakukan pada Device 2 sampai Device 4.

Device Name Command


2 LED 2 3
3 LED 3 4
4 LED 4 5
Sehingga tampilannya menjadi seperti ini :
Tekan tombol POWER OFF pada LED 1. Perhatikan LED 1 pada board akan
nyala.

Pada Serial Monitor juga akan tampil keterangan status.

XII. Project IoT 6 : Mengirim Notifikasi ke Telegram


Sekarang aplikasi IoT dari lebih keren lagi, koneksi dengan aplikasi chating
yaitu Telegram, yang hampir mirip dengan WhatsApp (WA).

Sebelumnya kita harus siapkan Telegram Bot (Robot). Fungsinya untuk


memudahkan kita membuat aplikasi chating atau moderasi di dalam
Telegram. Ikuti langkah - langkah pembuatan Bot Telegram berikut ini :
Anda harus punya aplikasi Telegram di HP Android , jika belum silakan
instal terlebih dulu.

Pada kolom search ketik botfather. Pilih @BotFather .

Klik Start (tombol START yang ada di bawah)

Klik
START
Selanjutnya kita akan membuat bot baru. Ketik /newbot.

/newbot

Berikutnya buatlah sebuah nama untuk Bot anda. Setiap nama


ditambah kata bot. Pada contoh ini namanya maka menjadi
Bot .
Kemudian akan muncul juga sebuah token API. Kode ini penting, nanti
kita pakai untuk pemrograman NodeMCU agar dapat berkomunikasi
dengan Telegram. Pada contoh ini nomor token Bot :
560xxxx06:AAFsBQn_DnZoJluEsqixxxxxx-xxxxTec.

Oke, selanjutnya kita cek apakah token sudah sesuai atau belum.
Buka browser kemudian masuk ke alamat :

https://api.telegram.org/bot

560xxxx06:AAFsBQn_DnZoJluEsqixxxxxx-xxxxTec/getUpdates

Jika sudah benar maka hasilnya seperti ini :


Anda juga dapat mencoba dengan mencari (search) di Telegram

Satu lagi kita akan cek ID telegramnya. Masih dengan aplikasi


Telegram, di kolom search cari get_id_bot . Pilih @get_id_bot.
KLIK

Klik “START” yang ada di bagian bawah, selanjutnya akan muncul ID

Catat ID nya kemudian simpan, nanti akan kita pakai untuk


pemrograman.
Alhamdulillah, sekarang anda sudah punya 3 hal yang nantinya akan kita
pakai untuk membuat aplikasi IoT dengan Telegram, yaitu :

Telegram Bot

Token

ID Telegram

Selanjutnya kita buat programnya. Buat lembar kerja baru di Arduino IDE
kemudian tulis program berikut :

/*************************************
* Program :Project 7 Kirim Notifikasi ke Telegram
* Input : SW1 di pin D2
* Output : Telegram
*
*
* ***********************************/
#include <UniversalTelegramBot.h>
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
//------- WiFi Settings -------
char ssid[] = "UPT-TIK"; // WiFi
char password[] = "12345678"; // password WiFi // ----
--- Telegram config --------
#define BOT_TOKEN "560xxxx06:AAFsBQn_DnZoJluEsqixxxxxx-xxxxTec " // Bot
Token Anda
#define CHAT_ID "212967234" // Chat ID Anda
#define tombol D2
WiFiClientSecure client;
UniversalTelegramBot bot(BOT_TOKEN, client);
String ipAddress = "";
volatile bool tombolFlag = false; int
button;
//===================================
void setup() {
Serial.begin(115200);
pinMode(tombol, INPUT);
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);

Serial.print("Connecting Wifi: ");


Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
IPAddress ip = WiFi.localIP();
Serial.println(ip);
ipAddress = ip.toString();
}

//=====================================================
void sendTelegramMessage() {
Serial.println("Kirim pesan ke Telegram");
String message = "Tombol ditekan....... ";
message.concat("\n");
message.concat(" "); message.concat("\n");
if(bot.sendMessage(CHAT_ID, message, "Markdown")){
Serial.println("Pesan telah dikirim ke TELEGRAM");
}
else Serial.println("gagal kirim..");
tombolFlag = false;
}
//=====================================================
void loop() {
button = digitalRead(tombol);
if(button==HIGH){
Serial.println("Tombol ditekan");
while(button = digitalRead(tombol)); //nunggu low
sendTelegramMessage();
delay(500);
}
}

Jangan lupa ganti/sesuaikan :

SSID

Password WiFi

Bot Token

Chat ID

Hardware yang diperlukan satu buah push button (SW1).


Upload program ke board NodeMCU V3 . Buka Serial Monitor ( Tools Serial
Monitor ), baud rate 115200, akan tampil status koneksi dengan WiFi.

Jika belum muncul di Serial Monitor, silakan tekan tombol reset (RST) di
board NodeMCU nya.

Sekarang kita coba jalannya alat. Tekan tombol push button (SW1), maka
pesan akan muncul di Telegram.
Untuk mengganti isi pesan di Telegram, cukup edit tulisan yang ada di
variable message :

Karakter “\n” adalah karakter “Enter” atau pindah baris baru.


XIII. Project IoT 8 : Sistem Keamanan Rumah dg Sensor PIR &
Telegram

Mari kita kembangkan aplikasi IoT kita. Sistem keamanan rumah dengan
sensor PIR yang akan mendeteksi keberadaan manusia kemudian
mengirimkan ke Telegram.

Langkah - langkah membuat Telegram Bot dll seperti di proyek 7. Kita pakai
saja data - datanya.

Koneksikan pin sensor PIR dengan modul seperti rangkaian.

Sensor PIR NodeMCU


VCC 3V
OUT D5
GND GND
Selanjutnya kita buat programnya. Jangan lupa untuk mengganti :
SSID
Password
Bot Token
Chat ID
/*************************************
* Program :Project 8 Sistem Keamanan Rumah sensor PIR ke Telegram
* Input : Sensor PIR di pin D5
* Output : Telegram

* ***********************************/
#include <UniversalTelegramBot.h>
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>

//------- WiFi Settings -------


char ssid[] = "UPT-TIK"; // WiFi
char password[] = "12345678"; // password WiFi // ----
--- Telegram config --------
#define BOT_TOKEN "560xxxx06:AAFsBQn_DnZoJluEsqixxxxxx-xxxxTec " // Bot
Token Anda
#define CHAT_ID "212967234" // Chat ID Anda
#define PIR_Sensor D5
WiFiClientSecure client;
UniversalTelegramBot bot(BOT_TOKEN, client);
String ipAddress = "";
volatile bool PIRFlag = false; int
sensor;
//===================================
void setup() {
Serial.begin(115200);
pinMode(PIR_Sensor, INPUT);
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(1000);
Serial.print("Connecting Wifi: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
IPAddress ip = WiFi.localIP();
Serial.println(ip);
ipAddress = ip.toString();
}
//==================================================
void sendTelegramMessage() {
Serial.println("Kirim pesan ke Telegram");
delay(200);
String message = "Sensor mendeteksi objek ........";
message.concat("\n");
message.concat("WASPADA !!!");
message.concat("\n");
message.concat(" "); message.concat("\n");
if(bot.sendMessage(CHAT_ID, message, "Markdown")){
Serial.println("Pesan telah dikirim ke TELEGRAM");
}
else Serial.println("gagal kirim..");
}
//=====================================================
void loop() {
sensor = digitalRead(PIR_Sensor);
if(sensor==HIGH){
delay(500);
Serial.println("Sensor PIR Aktif");
while(sensor = digitalRead(PIR_Sensor)); //nunggu low
sendTelegramMessage();
delay(2000);
}
}

Sensor PIR ini sangat sensitive, jadi sebaiknya di daerah depan sensor PIR
jangan ada benda2 yang bergerak.

Ok, simpan program (Save) kemudian Upload ke board NodeMCU.


Selanjutnya buka Serial Monitor (Tools => Serial Monitor) maka akan muncul
informasi koneksi :
Jika belum muncul data di Serial Monitor (blank) silakan reset modul (tombol
RST) , cek juga baud ratenya (115200).

Kita coba ya, gerakkan benda (tangan anda) di depan sensor PIR, maka
sensor akan mendeteksi dan alat akan mengirim pesan Telegram HP anda.

Untuk mengganti pesan ke Telegram cukup anda ganti isi variable “message”
saja.

Anda mungkin juga menyukai