Arduino Web Based Temperature Monitoring

Oleh Bagas Dika Anggoro pada Kamis, Oktober 29th, 2015



Halo pembaca, akhirnya bisa post lagi setelah sekian lama. Kali ini aku mau berbagi tentang Secuil dari Smart Home: Online Temperature Monitoring? Kenapa aku bilang hanya secuil? Yaaa namanya Smart Home nggak cuma dilihat dari monitoring suhu saja. Automatisasi juga merupakan salah satu bagian dari Smart Home juga, jadi kalau hanya monitoring sih baru tahap paling awal (menurutku pribadi sih).

Konsepnya adalah Arduino membaca nilai suhu dan kelembapan (Relative Humidity, RH) dari sensor. Setelah itu, arduino melakukan POST Request ke suatu Website yang sudah dipersiapkan juga sebelumnya. POST Request dibaca oleh script dan disimpan di dalam database. Ketika ada permintaan untuk melihat data Suhu dan RH, ditampilkan dalam suatu halaman website. Penyajian dalam grafik merupakanΒ additional featuresΒ yang dapat kita tambahkan.

Langsung saja, berikut adalah alat-alat yang dibutuhkan:

  1. Board Arduino (yang aku gunakan adalah Arduino UNO)
  2. Ethernet Shield (bisa juga menggunakan device lain, namun code yang diupload ke board akan berbeda)
  3. Sensor Suhu dan Kelembapan DHT11
  4. Breadboard dan kabel jumpernya
  5. Kabel LAN yang terkoneksi ke Jaringan internet

Berikut ini adalah Wiring Diagramnya

arduino_post_request_bb

Sebagai Webserver, kita gunakan XAMPP terlebih dahulu. Siapkan berbagai hal berikut:

  1. Database MySQL dengan nama tabel tbl_log yang terdiri atas 3 kolom
    • tgl Β –> dengan data type berupa TimeStamp
    • temp Β –> dengan datatype berupa varchar(4)
    • rh –> dengan datatype berupa varchar(4)
  2. File Index.php; add.php; graph.php serta tables.php. Untuk style: style.css. Tampilan halaman website menggunakan Bootstrap.
  3. Sketch Arduino yang akan diupload ke Boardnya

 

Arduino Sketch

#include <dht.h>
#include <Ethernet.h>
#include <SPI.h>
byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x01 }; // RESERVED MAC ADDRESS
IPAddress ip(192, 168, 100, 125);
EthernetClient client;
dht DHT;
#define DHT11_PIN 5 // SENSOR PIN
long previousMillis = 0;
unsigned long currentMillis = 0;
long interval = 2500; // READING INTERVAL
float t = 0; // TEMPERATURE VAR
float h = 0; // HUMIDITY VAR
String data;
void setup() { 
 Serial.begin(9600);
 Serial.println("Passed Step to Start The Serial"); 
 if (Ethernet.begin(mac) == 0) {
 Serial.println("Failed to configure Ethernet using DHCP"); 
 Ethernet.begin(mac,ip);
 }
Serial.print("Passed Step to Getting IP");
delay(1000); // GIVE THE SENSOR SOME TIME TO START
data = "";
}
void loop(){
 Serial.print("DHT11, \t");
 int chk = DHT.read11(DHT11_PIN);
 switch (chk)
 {
 case DHTLIB_OK: 
 Serial.print("OK,\t"); 
 break;
 case DHTLIB_ERROR_CHECKSUM: 
 Serial.print("Checksum error,\t"); 
 break;
 case DHTLIB_ERROR_TIMEOUT: 
 Serial.print("Time out error,\t"); 
 break;
 case DHTLIB_ERROR_CONNECT:
 Serial.print("Connect error,\t");
 break;
 case DHTLIB_ERROR_ACK_L:
 Serial.print("Ack Low error,\t");
 break;
 case DHTLIB_ERROR_ACK_H:
 Serial.print("Ack High error,\t");
 break;
 default: 
 Serial.print("Unknown error,\t"); 
 break;
 }
 currentMillis = millis();
 if(currentMillis - previousMillis > interval) { // READ ONLY ONCE PER INTERVAL
 previousMillis = currentMillis;
 h = DHT.humidity;
 t = DHT.temperature;
 }
 h = DHT.humidity;
 t = DHT.temperature;
 data = "temp1=" + String(t) + "&hum1=" + String(h);
if (client.connect("xxxx.com",80)) { // Ganti dengan alamat web anda. Lihat bagian ralat di bawah
 Serial.println("Sending to Server: ");
 client.println("POST /add.php HTTP/1.1"); 
 Serial.println("POST /add.php HTTP/1.1"); 
 client.println("Host: xxxxx.com"); // Lihat bagian ralat dii bawah
 client.println("User-Agent: Arduino/1.0");
 client.println("Content-Type: application/x-www-form-urlencoded"); 
 client.print("Content-Length: "); 
 client.println(data.length()); 
 client.println(); 
 client.println(data); 
 Serial.print(data);
 }
if (client.connected()) { 
 client.stop(); // DISCONNECT FROM THE SERVER
 }
delay(600000); // WAIT FIVE MINUTES BEFORE SENDING AGAIN
}

Library DHT 11 aku dapatkan di halaman ini, sedangkan Source Code untuk Sketch di atas saya dapatkan dari halaman ini dengan sedikit perubahan. Dan berikut ini hasil yang didapatkan (bisa dilihat pada: kamarku.bagasdika.web.id)

snip_20151029000120

Semua file yang dibutuhkan dapat di download pada link ini. Selamat berkarya! πŸ™‚

Referensi:

  1. http://forum.arduino.cc/index.php?topic=155218.0
  2. https://arduino-info.wikispaces.com/DHT11-Humidity-TempSensor
  3. http://www.instructables.com/id/Online-Temperature-Monitoring-using-Arduino-Ethern/
  4. http://www.instructables.com/id/Save-data-of-temperature-and-humidity-on-MySQL-wit/

Ralat!

Menghubungkan langsung antara ethernet shield dengan laptop kemungkinan tidak bisa (atau saya yang belum tahu?) Khusus Untuk anda yang belum punya hostig, anda dapat menghubungkannya, laptop yang terinstall xampp dan arduino harus menggunakan router. Dan di bagian client.connect dan Host:xxxx diisi dengan alamat ip laptop anda. Mohon maaf atas kesalahan penulisan sketchnya. Semoga beruntung teman-teman πŸ™‚

Bagikan ke temanShare on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn



Kategori


18 komentar pada “Arduino Web Based Temperature Monitoring

    Menia pada 7 April 2017 2:07 pm

    saya mau tanya, kalo untuk yang sensor ultrasonik berarti program dht nya tinggal ubah dari program ultrasonik ya? kalo komunikasinya pake Modul SIM 900 bisa?karena untuk sekalian SMS Gateway.
    trmksh.

    Balas
      Bagas Dika Anggoro pada 7 April 2017 3:42 pm

      Halo mas, terimakasih sudah mampir ke blog saya.
      Untuk penggunaan sensor ultrasonik yang ter-log ke website pada dasarnya sama, tinggal mengganti fungsionalitas yang awalnya berupa DHT menjadi ultrasonic. Komunikasi pakai Modul SIM tentu saja sangat bisa, namun karena saya belum mempunyai modulnya jadi saya belum bisa menunjukkan bagaimana komunikasinya.
      Perlu diingat bahwa apabila Anda menggunakan Library yang banyak dapat menyebabkan board arduino full memory dan program tidak bisa ditulis ke dalam boardnya. Terima kasih mas πŸ™‚

      Balas
        Arpin Hervian pada 14 April 2017 5:24 pm

        saya mau tanya mas, kok punya saya gak konek ke webnya yah, saya pake localhost, POSTnya udah diganti jadi 127.0.0.1, tapi tetp saja tidak ada koneksi, kenapa yah mas. terima kasih

        Balas
          Bagas Dika Anggoro pada 15 April 2017 6:24 pm

          Terima kasih mas sudah bersedia mengunjungi blog saya.
          Iya betul mas, ada kesalahan dalam penulisan tutorial tersebut. Seharunsya antara arduino dengan komputer tidak bisa dihubungkan secara langsung, tapi melalui router. Lalu alamat IP nya diganti dengan alamat komputer yang ada pada router tersebut.
          Apabila kurang jelas, silahkan PM melalui WA/Line via nmr yang tertera, mas. Terima kasih πŸ™‚

          Balas
            Arpin Hervian pada 22 April 2017 1:49 pm

            udah pakai routersih saya juga, nanti saya ulik ulik lagi mas, terima kasih..

            Bagas Dika Anggoro pada 15 Mei 2017 11:49 pm

            Selamat malam mas,
            Maaf baru dibalas, apakah sudah bisa? Kalau belum jangan sungkan utk tanya ke saya πŸ™‚
            Terima kasih πŸ™‚

    Abuy pada 16 April 2017 8:01 pm

    setelah di ulik ulik disesuaikan sama kondisi akhirnya jalan juga nih, thanks mas bagas tutornya jadi ada pencerahan buat TA. hehe

    Balas
      Bagas Dika Anggoro pada 15 Mei 2017 11:49 pm

      selamat malam mas, syukurlah kalau sudah bisa mas. Jangan lupa creditnya ya mas, supaya ilmunya tersebar lebih luas sehingga lebih banyak orang lain yang bisa belajar. Terima kasih πŸ™‚

      Balas
    muhammad yusuf pada 13 Mei 2017 7:29 pm

    mas kalo mau buat grafik mingguannya gimana ya ?

    Balas
      Bagas Dika Anggoro pada 15 Mei 2017 11:52 pm

      Selamat malam mas, maaf baru dibalas.

      Untuk membuat grafik mingguan, berarti mas harus membuat terlebih dahulu rata-rata nilainya dalam rentang 7 hari, lalu dimasukkan ke dalam grafiknya. Begitu mas. Namun untuk kodingnya saya belum ada waktu utk membuat hal tsb di atas, jadi mungkin bisa mas utak atik sendiri.
      Terima kasih πŸ™‚

      Balas
    SAAE pada 15 Mei 2017 11:24 pm

    om boleh lihat struktur databasenya gak. saya kok error ya gak mau masuk datanya.

    Balas
      Bagas Dika Anggoro pada 16 Mei 2017 12:05 am

      Selamat malam mas,
      Terima kasih telah mengunjungi blog saya. Kalau tidak masuk bukan berarti hanya struktur databasenya yang salah, mas. Silahkan pastikan hal-hal berikut ini:

      1. Pastikan bahwa struktur database sudah benar
      2. Pastikan bahwa anda menggunakan router untuk koneksi antara arduino dan laptop (bila menggunakan xampp)
      3. Pastikan user dan password untuk koneksi ke server sudah benar
      4. PAstikan bahwa di Serial monitor, sudah muncul status pengiriman berhasil yang ditandai dengan “Sending to Server”

      Selamat mencoba mas, jangan sungkan untuk tanya apabila ada yang kurang jelas. Terima kasih πŸ™‚

      Balas
    rian pada 9 Juni 2017 10:53 am

    pingin bisa mas.. tapi saya binggung, cara bikin webservernya gmn ? pengen coba pakai lm35. mohon pencerahannya

    nuhun.

    Balas
      Bagas Dika Anggoro pada 13 Juni 2017 8:47 am

      Halo mas Rian, terima kasih sudah berkujung ke blog saya mas.
      Untuk pembuatan web server mas bisa menggunakan server local dengan software seperti xampp/wampp dsb. Jika mas mempunyai budget lebih, mas bisa menyewa hosting untuk percobaan ini.
      Untuk pemakaian LM35 bisa mas cari di web-web tentang DIY world seperti instructables.com, kipkay.com dan sebagainya mas. Atau dari arduinonya sendiri menyediakan blog yang memungkinkan mas untuk belajar langsung di situ.
      Terima kasih πŸ™‚

      Balas
    Rival Biasrori pada 16 Juni 2017 2:25 pm

    mas ada no wa atau email nggak?
    mau tanya kalo waterflow+wifi gmna caranya buat ngirim dan nampilin?
    terimakasih banyak mas

    Balas
      Bagas Dika Anggoro pada 14 Agustus 2017 2:44 pm

      Halo mas Rival
      Ada mas, silahkan lihat di kontak saya ya. Trims πŸ™‚

      Balas
    Deni pada 12 Agustus 2017 1:42 am

    mas bagas ini database nya kok gak ada ya.

    Balas
      Deni pada 12 Agustus 2017 1:45 am

      ehhh sori mas. ternyata udah ada keterangan struktur nya diatas. bacanya kurang focus. heheh

      Balas

Ada Komentar?


Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

*