Sedikit Pengenalan
Internet of Things Wifi ESP8266 merupakan project elektronika arduino, dimana pada project ini saya akan memberikan tutorial untuk mengendalikan semua LED melalui jaringan internet. Kok bisa? Bisa sekarang sudah dikembangkan dan sedang ramai dibicarakan tentang konsep IoT, yang merupakan sebuah konsep yang bertujuan untuk memanfaatkan konektivitas internet yang tersambung secara terus-menerus dengan server. Adapun manfaat dari kemampuan seperti berbagi data, remote control, dan sebagainya, termasuk juga pada benda di dunia nyata. Contohnya bahan pangan, elektronik, koleksi, peralatan apa saja, termasuk benda hidup yang semuanya tersambung ke jaringan lokal dan global melalui sensor yang tertanam dan selalu aktif.
Pada project ini saya akan membagikan project IoT ini dengan contoh pemrograman server dengan menggunakan bahasa pemrograman website PHP dan MySQL. Serta dengan pemrograman hardware dengan menggunakan Module wifi ESP8266 nodeMCU dengan bahasa pemrograman Arduino.
Cara Kerja IoT
Dari gambar diatas dapat dijelaskan bagaimana sistem IoT bekerja. IoT dibagi menjadi 3 bagian Things, Server, dan platform. Things merupakan alat yang sensor ataupun pengendali. Server merupakan tempat menyimpanan data Global maupun Local. Dan Platform merupakan perangkat komunikasi dengan manusia, dimana dapat berupa hardware, website, aplication, dll.
Instalasi Xampp Local Server
Untuk tutorial installasinya dapat dilihat di video berikut:
Selanjutnya kita masuk tahap pemrograman, dimana teman-teman akan membuat sebuah program website sederhana dengan tampilan tombol dan koneksi dengan MySQL. OK langsung saja lanjut ke halaman selanjutnya.
Pemrograman Website (PHP, MySQL)
Selanjutnya temen-temen dapat membuat file PHP dengan menggunakan text editor, seperti notepad, notepad++, sublime, dan simpan dengan ekstensi .php. Simpan hasil file dapam folder htdocs di XAMPP. Berikut ini beberapa file yang wajib di buat:
config.php
[php]
<?php
$dbhost = “localhost”;
$dbuser = “root”;
$dbpass = “”;
$dbname = “demo_iot”;
$mysqli = mysqli_connect($dbhost,$dbuser,$dbpass,$dbname);
?>
[/php]
index.php
[php]
<?php
include ‘config.php’;
?>
<!DOCTYPE html>
<html>
<head>
<title>Fans Electronics IOT</title>
</head>
<body>
<button onclick=”window.location.href=’control.php?id=1&nilai=1′”>ON</button>
<button onclick=”window.location.href=’control.php?id=1&nilai=0′”>OFF</button>
<?php
$data = mysqli_query($mysqli, “SELECT nilai FROM led WHERE id=’1′”);
if($val=mysqli_fetch_array($data)){
$hasil = $val[‘nilai’];
if($hasil == 1){
$status = “ON”;
}
else {
$status = “OFF”;
}
echo “LED1 “;
echo $status;
}
?>
</body>
</html>
[/php]
baca-data.php
[php]
<?php
include ‘config.php’;
$id = $_GET[‘id’];
$nilai_sensor=mysqli_query($mysqli,”SELECT nilai FROM led WHERE id=’$id'”);
if($val=mysqli_fetch_array($nilai_sensor)){
echo “#”;
echo $val[‘nilai’];
echo “#@”;
}
?>
[/php]
control.php
[php]
<?php
include ‘config.php’;
$id = $_GET[‘id’];
$nilai = $_GET[‘nilai’];
mysqli_query($mysqli,”UPDATE led SET nilai=’$nilai’ WHERE id=’$id'”);
header(“location:index.php”);
?>
[/php]
Setelah pembuatan file lengkapnya selesai, lanjut proses pembuatan program arduino ESP8266. Baca di halaman selanjutnya.
Pemrograman ESP8266 (nodeMCU)
Bagi teman-temen yang belum tau cara install library ESP8266 di Arduino, bisa lihat divideo dibawah.
Program Control LED Arduino nodeMCU
[code lang=”arduino”]
#include <ESP8266WiFi.h>
#define LED D2
const char* ssid = “FansElectronics”; // Nama WIFI kamu
const char* password = “PasswordKamuApa?”; // Password Wifi
const char* host = “192.168.1.5”; // Link website / Ip Server
bool Parsing = false;
String dataPHP, data[8];
void setup()
{
Serial.begin(115200);
Serial.println();
Serial.printf(“Connecting to %s “, ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(“.”);
}
Serial.println(” connected”);
pinMode(LED, OUTPUT);
digitalWrite(LED, HIGH);
}
void loop()
{
WiFiClient client;
Serial.printf(“\n[Connecting to %s … “, host);
if (client.connect(host, 80)) {
Serial.println(“connected]”);
Serial.println(“[Sending a request]”);
String url = “tutorial-iot/baca-data.php?id=1”; // Lokasi File Baca Data
client.print(String(“GET /”) + url + ” HTTP/1.1\r\n” +
“Host: ” + host + “\r\n” +
“Connection: close\r\n” +
“\r\n”
);
Serial.println(“[Response:]”);
while (client.connected())
{
if (client.available())
{
dataPHP = client.readStringUntil(‘\n’);
int q = 0;
Serial.print(“Data Masuk : “);
Serial.print(dataPHP);
Serial.println();
data[q] = “”;
for (int i = 0; i < dataPHP.length(); i++) {
if (dataPHP[i] == ‘#’) {
q++;
data[q] = “”;
}
else {
data[q] = data[q] + dataPHP[i];
}
}
Serial.println(data[1].toInt());
digitalWrite(LED, data[1].toInt());
Parsing = false;
dataPHP = “”;
}
}
client.stop();
Serial.println(“\n[Disconnected]”);
}
else
{
Serial.println(“connection failed!]”);
client.stop();
}
delay(5000); // Jeda pembacaan setiap 5 detik
}
[/code]
Ok sekian dulu artikel rangkuman dari project IOT dengan menggunakan program PHP, MySQL dan Arduino. Jika ada pertanyaan bisa tinggalkan pesan pada kotak komentar dibawah. Semoga Bermanfaat.
mantaap nih buat dicoba..terimaksih
Sama-sama, silakan dicoba
keren , kalau bikin 2 led koding apa aja yg harus di tambah mas?
Bisa ditambah aja mas, itu untuk koding PHPnya dengan ID lain, dan untuk program di arduinonya dibuat parsing datanya lednya mas
Maksudnya parsing itu bgaimana?
Dari contoh diatas, parsing disini memecah2 data dari yang awalnya berupa data tunggal berupa String, Contoh: #1#0#0#1. Akan dipecah menjadi beberapa bagian, dicontoh ada 4 variable nilai yang dipisah dengan tanda #. Jadi nilai angka pertama mewakili Outputan ke-1, dan seterusnya. Semoga menjawab pertanyaannya 🙂
Bang ndak ada kah video tutorial untuk 2 led??
Untuk saat ini tidak ada, tp dari tutorial diatas harusnya sudah ada gambaran untuk gimana mengendalikan 2 bahkan lebih outputan.
Gan, alat yg di pakai ntk proyek ini ada yg Arduino Uno atw sjenisnya? Mau sy jdikan referensi
Maaf gan, belum ada. sebenernya sama saja, cuma kalau pakai uno harus menggunakan AT command ke module ESP
5
Gan saya udah coba 1 lampu dan ditambah 1 kipas tapi nyala nya bareng, klo mau nyala sendiri2 gimana ya kodingnya?
Buat datanya menjadi 2 gan, misal 1#0#@, setelah itu diparsing datanya, misal data pertama untuk relay 1 dan data kedua untuk relay 2.
tolong bg untuk lampunya lebih dari satu gimana yah, sudah puyeng bg
Mungkin nanti ya mas, saya buatkan yang untuk 2 lampu. karena masih ada kesibukan lain hehe
Mantap bro irfan, ane udah nyoba berhasil kendalikan led, dengan rata-rata waktu 1-2 detik nyala dan mati ketika klik tombol ON atau OFF, padahal pakai housting dan domain gratis 000webhost, terus berkarya sehat selalu
Alhamdulillah, semoga bermanfaat tulisan saya ya! Amin doanya selalu gan, biar tetep semangat nulis, hehe akhir2 ini lg males karena kesibukan skripsi.
Kak kalau mau pakai link 000webhost koding mana saja yang hrus diganti?
alamat domain, kemudian file config komunikasi dengan database.. coba pelajari dulu dasar2nya program website, alangkah lebih mudahnya memahaminya kalau anda sudah memahami dasar2nya.
Permisi bang, mau tanya kalau mengirim data sensor suhu misalnya, itu kodingannya bagaimana ya? Jadi hanya monitor nilai suhu aja bang, nodeMCU sebagai pengirim data sensor suhu aja. Kalau kayak gitu gimana ya? Makasih bang
Metodenya sama gan, tidak jauh berbeda dengan yang ada diatas. Kita cuma manfaatkan metode GET untuk kirim data ke Database. Masnya bisa join ke grup agar kita bisa diskusikan bersama..
MANTAP GANNN BERMANFAAT SEKALI, mau nanya ini emng delay nya agak lama setelah di klick button nya?
-newbie
Ya betul memang agak lama, masnya bisa kasih delay kicil, tp ini akan berefek boros data
mas di serial monitor arduino saya kok gak masuk dataPHP nya.. di serial monitor setelah serial print{“response”) terus gaaada tulisannya apa2.. itu kenapa ya mass
Apa sudah bener sesuai tutorial, rekan lain sudah banyak yg bisa..
Ass. Bang kalau pake arduino uno sama tdk tutorialnya yang di atas?
Ass?? (pantat) haha Ask kah? ditutorial menggunakan ESP8266 saya rekomendasikan menggunakan Wemos atau menggunakan NodeMCU
Mau tanya gan.. semua data sudah saya sesuaikan tpi ketika dirunning saya di phpmyadmin sudah berubah cuma di nodemCu.nya tidak mau merespon.. kira” masalahnya dimana gan?
Terima kasih..
coba koneksinya udah manual gan via browser apa sudah bisa, harusnya bisa jika mengikuti semuanya, karena udah ada yg bisa menjalankannya.
bang maaf mau nanya agak panjang, tapi dibuat simple aja bang. bingung program bagian ini
dataPHP = client.readStringUntil(‘\n’);
int q = 0;
Serial.print(“Data Masuk : “);
Serial.print(dataPHP);
Serial.println();
data[q] = “”;
for (int i = 0; i < dataPHP.length(); i++) {
if (dataPHP[i] == '#') {
q++;
data[q] = "";
}
else {
data[q] = data[q] + dataPHP[i];
}
}
itu maksudnya apa yah bang?
itu untuk parsing, kalau di program php biasanya dikenal perintah explode(). digunakan untuk mengambil data array dari string. misal data 1#2#3#4, hasilnya data[0] = 1, dst.
INI NIH WEB TERBAIK TAPI DI GOOGLE SUSAH UNTUK DI TEMUKAN PADAHAL SANGAT BERMANFAAT
makasih masukannya, next time saya update lg SEOnya
Ask. Bang kalo mau pake 4 relay atau lebih setelah di parsing data untuk memilah masing masing id bagaimana caranya kan di tutorial pake satu outputan yg dipanggil id 1 dari file baca data String url = “tutorial-iot/baca-data.php?id=1”; . Newbie bang dah mentok puyeng pula ????
Kalau ini harus belajar dasar2 php dulu ya gan, agan bisa membuat file baca-data.php dengan outputan berupa data JSON, kemudian diarduino bisa diparsing dengan menggunakan Library ArduinoJSON.. mungkin lain waktu saya akan bahas lebih dalam seputar IOT seperti ini..
Kak mau tanya. Untuk IP server nya dapat nya gmna ya kak?
cek di pc anda melalui CMD, ketik “ipconfig”, cari ip dari koneksi yang digunakan WLAN untuk Wifi dan LAN untuk jaringan kabel