Pemantau Suhu & Kelembaban Udara dengan Wemos D1 Mini + DHT11

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.

Wemos D1 Mini

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.

DWO_0013

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:

Screen Shot 2016-07-10 at 7.44.17 PM

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:

Screen Shot 2016-07-10 at 7.49.14 PM

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:

Screen Shot 2016-07-10 at 7.51.07 PM

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

Tentang Emanuel Setio Dewo

Tumbuh, Berkembang, Berbuah...
Pos ini dipublikasikan di Personal dan tag , , , , . Tandai permalink.

2 Balasan ke Pemantau Suhu & Kelembaban Udara dengan Wemos D1 Mini + DHT11

  1. Ping balik: Server Monitor Suhu dan Kelembaban Ruangan Dengan Wemos D1 Mini | Emanuel Setio Dewo

  2. Ping balik: Membaca Suhu & Temperatur dari Android | Emanuel Setio Dewo

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s