Membuat Aplikasi IoT
Membuat Aplikasi IoT
Modul
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.
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)
Sebelum kita menggunakan Arduino IDE untuk membuat program aplikasi IoT,
beberapa library perlu kita tambahkan. Cara menambahkan nya di folder berikut
#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
/*************************************
* 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.
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";
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);
void loop() {
WiFiClient client = server.available(); if
(!client) {
return;
}
Serial.println("new client");
while(!client.available()){
delay(1);
}
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.
/*************************************
* 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);
server.begin();
Serial.println("Server started");
void loop() {
WiFiClient client = server.available(); if
(!client) {
return;
}
Serial.println("new client");
while(!client.available()){
delay(1);
}
}
if (request.indexOf("/led1off") >0) {
digitalWrite(LED1, LOW);
}
if (request.indexOf("/led2on") > 0) {
digitalWrite(LED2, HIGH);
}
if (request.indexOf("/led2off") >0) {
digitalWrite(LED2, LOW);
}
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.
Tekan tombol Turn On pada LED 1 dan perhatikan LED 1 akan ON,
demikian juga pada LED 2.
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);
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 & 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.
Tekan tombol Turn On atau Turn Off pada masing - masing lampu maka
lampu yang bersesuaian akan nyala atau padam.
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.
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
/*************************************
* Input : LM35 di A0
* ***********************************/
int analogValue;
float millivolts,celsius;
#include <ESP8266WiFi.h>
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);
delay(500);
Serial.print(".");
Serial.println("");
Serial.println("WiFi connected");
}
//==========================================
void loop() {
analogValue = analogRead(outputpin);
celsius = millivolts/10;
if (client.connect(server,80)) {
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);
client.stop();
Serial.println("Waitingǥ");
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
/*************************************
* 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
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() {
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);
}
OK, selanjutnya kita edit sedikit ya, kita kasih nama untuk masing - masing
Device. Pertama klik tombol Seting (gambar kunci pas) pada Device 1.
Klik
START
Selanjutnya kita akan membuat bot baru. Ketik /newbot.
/newbot
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
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);
//=====================================================
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);
}
}
SSID
Password WiFi
Bot Token
Chat ID
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 :
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.
* ***********************************/
#include <UniversalTelegramBot.h>
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
Sensor PIR ini sangat sensitive, jadi sebaiknya di daerah depan sensor PIR
jangan ada benda2 yang bergerak.
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.