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. Utk localhost: 127.0.0.1
 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"); // Alamat web anda lagi
 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/
Bagikan ke temanShare on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn



Kategori

  • Arduino (3)
  • DIY Project (4)
  • Elektronika (2)
  • Iseng (1)
  • Programming (1)
  • Scilab (1)
  • Software (3)

  • 6 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..

      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

    Ada Komentar?


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

    *