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


41 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
      Rendra kusuma pada 15 Agustus 2017 9:01 pm

      Tolong bagi pengalamannya gan…permasalahan awal nya ada dmn??thx

      Balas
        Bagas Dika Anggoro pada 24 Januari 2018 10:39 pm

        Halo mas Rendra,

        Mhn maaf sekali baru direspon. Permasalahan seperti apa ya mas yang dimaksud? Terima kasih,
        Salam,

        BDA

        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
    Rendra kusuma pada 15 Agustus 2017 5:57 pm

    Assalamualaikum mas…sy jg ada masalah ne mas..sy pakai mysql hosting tp data blm masuk ke database mas…semua parameter sdh sy sesuaikan dgn pnya saya…thx

    Balas
    Tyas pada 16 Agustus 2017 7:23 am

    permisi bang itu programnyaudh ada tampilan buat grafiknya kan?

    Balas
      Bagas Dika Anggoro pada 24 Januari 2018 10:38 pm

      Halo Mbak Tyas,

      Mohon maaf baru dibalas, mbak. Sudah ada kok untuk tampilan grafiknya. Tapi kalau mbak mau cari template lain, tentu sangat bisa untuk diotak-atik. Selamat berkarya, mbak! Trims,
      Salam

      Balas
    Didik Kristiana pada 13 November 2017 2:27 pm

    untuk perangkat perangkat dibawah ini belinya sudah terhubung atau kita merakit sendiri… terima kasih

    Board Arduino UNO
    Ethernet Shield
    Sensor Suhu dan Kelembapan DHT11
    Breadboard dan kabel jumpernya

    Balas
      Bagas Dika Anggoro pada 24 Januari 2018 10:37 pm

      Halo Mas Didik,

      Mhn maaf baru dibalas mas. Semua equipment, kalau saya, belinya terpisah, lalu dirakit sendiri, mas. Karena saya memang menggunakan arduino untuk bermacam-macam percobaan, mas. Terima kasiih πŸ™‚

      BDA

      Balas
    kozinul asror pada 22 November 2017 2:07 pm

    siang mas kalo dalam 1 arduino di pasang 3 sensor yang sama
    gimana ya

    mohon bantuannya mas saya sudah muter muter nyari

    Balas
      Bagas Dika Anggoro pada 24 Januari 2018 10:35 pm

      Halo mas Kozinul,

      Mhn maaf baru di reply ya. Baru ada waktu untuk ngurus blog. Untuk sensornya, sensor apa saja memang mas? Kalau jumlah pin nya masih cukup, tentu saja bisa. Trims. Salam,

      BDA

      Balas
    ridwansori pada 24 Januari 2018 10:06 pm

    Mas kalau saya izin menggunakan template web seperti di link ini : kamarku.bagasdika.web.id apakah bisa?

    Balas
      Bagas Dika Anggoro pada 24 Januari 2018 10:34 pm

      Halo mas Ridwan,

      Silahkan mas, tapi jangan lupa credit ya πŸ™‚ Terima kasih.
      Salam,

      Balas
        ridwansori pada 25 Januari 2018 12:28 pm

        Baik mas, Terimakasih telah memberi izin πŸ˜€

        Balas
    Fauxi pada 7 Februari 2018 8:52 am

    client.println(“User-Agent: Arduino/1.0”);
    client.println(“Content-Type: application/x-www-form-urlencoded”);
    client.print(“Content-Length: “);

    maksud rutin ini apa ya mas?

    Balas
    Andi Yuniawan pada 18 April 2018 8:41 pm

    Assalamualaikum.. selamat malam mas Bagas.. saya lagi bikin TA judulnya Penghematan Energi serta Penerapan Metode Fuzzy Logic untuk Monitoring Suhu dan Kelembaban Ruang Server. Saya ATM code mas bagas yg membahas ttg Arduino Web Based Temperature Monitoring. Tapi kok hasil pembacaan suhu dan kelembaban gag mau masuk ke database ya..

    Kalau saya manual pakai metode GET. localhost/monitoring/add.php?temp1=20&hum1=70 baru masuk mas.. tapi kalau melalui sensor muncul error.. mohon pencerahannya mas.

    Balas
      Bagas Dika Anggoro pada 2 Juni 2018 9:37 pm

      Halo mas Andi, mohon maaf atas keterlambatan responnya mas.
      Sepertinya ada yang error di setting IP si ethernet shield nya, mas. Tapi yang saya heran, kok banyak pertanyaan seperti itu ya. APa mungkin ada error di coding saya. Saya juga belum sempat cek mas. Tapi sebelum saya upload, sudah saya pastikan bahwa tidak ada yang error di coding saya. Mungkin akan saya cek lagi mas.
      Terima kasih πŸ™‚

      Balas
    Markus Arianto pada 27 April 2018 11:30 am

    Hallo mas Bagas,

    Mohon dibantu coding di arduino jika menggunakan koneksi WIFI (bukan ethernet).

    Saya sedang trial, namun menggunakan arduino & ESP8266WiFi. Terima kasih.

    Balas
      Bagas Dika Anggoro pada 2 Juni 2018 9:33 pm

      Halo mas Markus,

      Untuk coding dengan menggunakan ESP saya belum pernah mencoba mas. Karena memang belum ada waktu. Mungkin untuk post selanjutnya bisa saya coba mas. Terima kasih πŸ™‚

      Balas
    Imam Ahmad Ashari pada 14 Mei 2018 9:36 am

    IPAddress ip(192, 168, 100, 125);
    IP di dapat darimana ya gan ?

    Balas
      Bagas Dika Anggoro pada 2 Juni 2018 9:32 pm

      Halo mas Imam, mohon maaf untuk keterlambatannya respon πŸ˜€
      Untuk alamat IP nya menyesuaikan setting modemnya mas. Mas coba aja lihat, untuk IP laptop yang terhubung dengan routernya berapa konfigurasinya, lalu kita sesuaikan 3 digit Pertama IP nya, dan untuk digit ke 4 diubah sedikit.
      Sebenarnya baris perintah tersebut dijalankan arduino apabila Ethernet shiel tidak mendapatkan alamat ip secara otomatisnya. Bisa di lihat di baris sebelumnya, ada komen untuk setting IP si Ethernet shieldnya secara otomatis.
      Apabila belum jelas, silahkan ditanyakan kembali, mas. Terima kasih πŸ˜€

      Balas
    GaluhL pada 28 Mei 2018 9:58 am

    hallo mas, mau nanya kalau memakai esp8266 buat komunikasinya bagaimana ya? terima kasih πŸ™‚

    Balas
      Bagas Dika Anggoro pada 2 Juni 2018 9:21 pm

      Halo mas Galuh, mohon maaf untuk keterlambatan responnya, mas.
      Untuk ESP saya belum pernah memakainya mas karena belum ada waktu untuk eksplorasi lebih jauh. Hehe, mohon maaf ya mas.
      Terima kasih πŸ˜‰

      Balas
    Galuh pada 28 Mei 2018 10:40 am

    halo mas, saya mau nanya kalo pake esp bagaimana caranya ya? maaf saya masih newbie masalah seperti ini. terima kasih

    Balas
      Bagas Dika Anggoro pada 2 Juni 2018 9:19 pm

      Halo mas Galuh, mohon maaf untuk keterlambatan responnya, mas.
      Untuk ESP saya belum pernah memakainya mas karena belum ada waktu untuk eksplorasi lebih jauh. Hehe, mohon maaf ya mas.
      Terima kasih πŸ™‚

      Balas

Ada Komentar?


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

*