Rasanya sudah ratusan tahun sejak terakhir kali ngoprek Arduino. Kali ini ngoprek lagi karena ada mainan baru, yaitu Wemos D1 Mini yang punya chip ESP8266. Kalau boleh dibilang, ini board keren banget. Bentuknya kecil banget. Kompatibel dengan Arduino yang artinya kita bisa memprogramnya dengan IDE Arduino. Itu belum seberapa kalau kita sadari bahwa Wemos D1 Mini ini sudah memiliki modul WiFi build in. Terima kasih karena kehadiran chip ESP8266.
Sekedar catatan, tadinya ESP8266 adalah modul WiFi untuk board Arduino. Tapi ternyata bisa dikembangkan menjadi board sendiri. Dan dengan adanya modul WiFi inilah Wemos menjadi board yang siap untuk IoT (internet of thing).
Memang sih, Wemos D1 Mini tidak memiliki pin sebanyak Arduino. Demikian pula cuma punya 1 pin input analog. Detail lebih lanjut tentang Wemos D1 Mini bisa dilihat di: Wemos D1 Mini.

Dalam rangka uji coba board mungil ini, saya pun mencoba membuat pemantau suhu dan kelembaban udara ruangan versi IoT. Suhu dan kelembaban akan dikirimkan ke server via internet.
Walau kelihatan rumit, tapi sebenarnya tidak sulit kok. Modalnya sederhana, cukup Wemos D1 Mini plus DHT11 (digital humidity & temperature sensor). Sebenarnya masih ada komponen lain, yaitu modem wifi dan server, hehehe…
Baiklah mari kita buat…
Sebelum melangkah lebih lanjut, kalian cari tahu sendiri cara koneksi IDE Arduino ke board Wemos ya? Gampang kok, banyak tutorialnya.
Lanjut… Mari kita sambungkan DHT11 ke Wemos. Berikut sambungan yang saya pakai dalam proyek ini:
DHT11 | Wemos |
---|---|
VCC | 3.3V |
DATA | D2 |
GND | GND |
Kemudian ini code yang saya pakai:
#include #include #define DHTPIN D2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); /* Parameters: * t = temperature * h = humidity * i = ID */ const char* server = "api.servermu.com"; // ganti dengan alamat servermu const char* ssid = "wifimu"; // ganti dengan SSID modem/router wifimu const char* password = "passwordmu"; // ganti dengan password utk konek ke wifimu const char* SensorID = "ESP001"; // ini sekedar identitas sensormu WiFiClient client; void setup() { Serial.begin(115200); delay(10); dht.begin(); pinMode(BUILTIN_LED, OUTPUT); digitalWrite(BUILTIN_LED, HIGH); WiFi.begin(ssid, password); Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.print(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi Connected"); } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println("Gagal membaca sensor DHT"); return; } Serial.print("Temperature: "); Serial.print(t); Serial.print(" *C. Humidity: "); Serial.println(h); if (client.connect(server,80)) { Serial.print("Posting data..."); digitalWrite(BUILTIN_LED, LOW); Serial.println("Temperature: " + String(t) + ", Humidity: " + String(h)); client.println("GET /dht.php?t=" + String(t) + "&h=" + String(h) + "&i=" +SensorID+ " HTTP/1.1"); client.println("HOST: api.servermu.com"); client.println("Connection: close"); client.println(); /* while (client.connected() && !client.available()) delay(1); while (client.connected() || client.available()) { char c = client.read(); Serial.print(c); } */ client.stop(); Serial.println(); digitalWrite(BUILTIN_LED, HIGH); } delay(5000); // Beri delay 5 detik sebelum polling berikutnya }
Kemudian upload code tersebut ke Wemos. Coba monitor aktivitas Wemos dengan mengaktifkan Serial Monitor. Kalau berhasil, mungkin akan menampilkan seperti contoh berikut:
Oh iya, saya sengaja menyalakan LED internal di Wemos saat posting data supaya kita tahu kapan Wemos ini mencoba posting data. Kalau dirasa 5 detik waktu posting data kurang lama, silakan tambahkan angka di delay.
Oh iya, di sisi server kita perlu buat tabel penampung data. Buat tabel log_sensor di mysql dengan struktur seperti ini:
Kemudian buat script dht.php untuk menyimpan data dari Wemos. Berikut adalah code-nya:
<?php // Author : Emanuel Setio Dewo, 03/07/206 // Ubah parameter koneksi berikut sesuai servermu: $db_amb = mysqli_connect("localhost", "user", "password", "namadb"); if (!$db_amb) die("Gagal terkoneksi ke DB Utama. Error : " . mysqli_connect_error()); $t = $_REQUEST['t']; $h = $_REQUEST['h']; $IP = $_SERVER['REMOTE_ADDR']; $i = $_REQUEST['i']; if (!empty($t) && !empty($h) && !empty($i) && !empty($IP)) { $s = "insert into log_sensor set IP='$IP', SensorID='$i', Temp='$t', Humid='$h', Waktu=now()"; $r = mysqli_query($db_amb, $s); echo "OK"; } else echo "ERR"; ?>
Untuk mengecek apakah data berhasil disimpan di database server, jalankan query berikut ini:
Kalau terisi data, berarti proyek sukses. Kelak kita bisa bikin tampilan yang keren untuk memantau suhu dan kelembaban ruangan dari web browser. Atau bisa juga dari aplikasi Android.
Asyik kan? Untuk menjadikan Wemos menjadi web server pemantau suhu/kelembaban bisa ke: Server Monitor Suhu dan Kelembaban Ruangan Dengan Wemos D1 Mini
[…] Tulisan sejenis: Pemantau Suhu dan Kelembaban Udara dengan Wemos D1 Mini dan DHT11 […]
[…] Pemantau Suhu dan Kelembaban Udara dengan Wemos D1 Mini dan DHT11 yang akan polling sensor dan mengirimkan data ke server […]
maaf mas mau tanya, itu program arduinonya yang di example esp8826 apa ya namanya ? #include nya ga ada .h nyaaa yg mas posting. terimaksih mas
Oh iya, itu sepertinya terpotong code-nya. Nanti saya lihat source code aslinya ya. Soalnya di komputer lain code-nya.
Thanks.
iya mas itu #include apa ya ?
maaf mas mau nanya, untuk pengisian server itu pake url apa pake http://WWW.Server.com gitu aja,,
terima kasih
Oh itu harus punya server sendiri. Bisa hosting, cloud, atau colocation.
mas, kalau servernya lum ada bisa ga diganti pakai localhost dulu (masih pakai XAMMP) nih
oke mas, terimakasih bnyak
Mau tanya dong…
saya sudah coding arduinonya, namun pada saat coding php muncul message berikut:
Notice: Undefined index: t in C:\xampp\htdocs\Project1\dht.php on line 6
Notice: Undefined index: h in C:\xampp\htdocs\Project1\dht.php on line 7
Notice: Undefined index: i in C:\xampp\htdocs\Project1\dht.php on line 9
OK
berikut syntax phpnya:
Mas kalau mau kirim ke cloud google map bagaimana ?
Pak, untuk file dht.php diletakan dimana ya ?
Di server.