IoT Monitoring Menggunakan ESP8266 dan Arduino Uno

Kali ini saya akan membuat contoh IoT monitoring menggunakan esp8266 dan arduino uno. Kalo sebelumnya saya menggunakan rest api berbasis codeigniter kali ini saya akan menggunakan thingspeak untuk menampung data hasil monitoring.

Untuk monitoring saya menggunakan aplikasi android buatan saya sendiri yaitu IoThingspeak yang bisa didownload di playstore. Sebelumnya buat akun dulu di thingspeak dulu untuk mendapatkan user api key. Untuk memasukkan user api key bisa dilihat di video di bawah ini

Sekedar info, ESP8266 adalah modul wifi murah meriah dengan harga 50ribuan ynag dapat digunakan untuk mengirim data ke server. Komunikasi ESP8266 dengan arduino menggunakan komunikasi serial (AT+Command).

Di atas adalah skema pin ESP8266. Rangkaian esp8266 dan arduino uno adalah sebagai berikut :

Arduino ESP8266
3.3 V VCC
3.3 V RST
3.3 V CH_PD
RX TX
TX RX

Algoritma di dalam sketch arduino dibagi menjadi 2 bagian, yaitu pada bagian untuk menyambungkan ke router wifi dieksekusi pada bagian void setup().

void setup(){
  Serial.begin(Baud_Rate);
  Serial.println("AT");

  delay(5000);

  //sambungkan ke wifi
  Serial.println("AT+CWMODE=1");//mode wifi client
  delay(2000);

  String cmd = "AT+CWJAP=\"";//at command konek ke wifi router
  cmd += SSID;
  cmd += "\",\"";
  cmd += PASS;
  cmd += "\"";//simpelnya ya gini AT+CWJAP="SSID","PASS";

  Serial.println(cmd);
  delay(5000);

  if(Serial.find("OK")){
    digitalWrite(4,HIGH);
    digitalWrite(3,LOW);
  }else{
    digitalWrite(4,LOW);
    digitalWrite(3,HIGH);
  }
  //end sambungan ke wifi
}

Selanjutnya adalah bagian untuk mengirim data ke server.

void loop(){
  //inisialisasi alamat server
  String cmd = "AT+CIPSTART=\"TCP\",\"184.106.153.149\",80";//ip api.thingspeak.com
  Serial.println(cmd);
  delay(500);

  //coba kirim data
  String getStr = "GET /update?api_key=";
  getStr += APIKEY;
  getStr += "&field1=";
  getStr += "150";//silahkan ganti nilai sensor
  getStr += "\r\n\r\n";
  
  //Serial.print("AT+CIPSEND=");
  //Serial.println(cmd.length());
  cmd = "AT+CIPSEND=";
  cmd += String(getStr.length());

  Serial.println(cmd);
  
  if(Serial.find(">")){
    Serial.print(getStr);
  }else{
    Serial.println("AT+CIPCLOSE");
  }

  if(Serial.find("OK")){
    for(int a = 0; a < 5; a++){
      digitalWrite(4,HIGH);
      digitalWrite(3,LOW);
      delay(200);
      digitalWrite(4,LOW);
      digitalWrite(3,HIGH);
      delay(200);
    }
  }else{
    for(int a = 0; a < 5; a++){
      digitalWrite(4,HIGH);
      digitalWrite(3,HIGH);
      delay(200);
      digitalWrite(4,LOW);
      digitalWrite(3,LOW);
      delay(200);
    }
  }
  
  //end coba kirim data
  delay(5000);
}

Untuk mendapatnya write api key channel bisa dicopy paste dari halaman channel di thingspeak.

write api key
write api key

Sketch lengkap yang saya gunakan.

#include <stdlib.h>
#define SSID "F4DL" //nama wifinya
#define PASS "isipasswordnya" //password wifi routernya
#define Baud_Rate 115200
#define Delay_Time 5000
#define WRITE_APIKEY "J6HJJVN2XH"//channel read apikey

bool kirimdata; //cek status kirim data

void setup(){
  Serial.begin(Baud_Rate);
  Serial.println("AT");

  delay(5000);

  //sambungkan ke wifi
  Serial.println("AT+CWMODE=1");//mode wifi client
  delay(2000);

  String cmd = "AT+CWJAP=\"";//at command konek ke wifi router
  cmd += SSID;
  cmd += "\",\"";
  cmd += PASS;
  cmd += "\"";//simpelnya ya gini AT+CWJAP="SSID","PASS";

  Serial.println(cmd);
  delay(5000);

  if(Serial.find("OK")){
    digitalWrite(4,HIGH);
    digitalWrite(3,LOW);
  }else{
    digitalWrite(4,LOW);
    digitalWrite(3,HIGH);
  }
  //end sambungan ke wifi
}
void loop(){
  //inisialisasi alamat server
  String cmd = "AT+CIPSTART=\"TCP\",\"184.106.153.149\",80";//ip api.thingspeak.com
  Serial.println(cmd);
  delay(500);

  //coba kirim data
  String getStr = "GET /update?api_key=";
  getStr += WRITE_APIKEY;
  getStr += "&field1=";
  getStr += "150";//silahkan ganti nilai sensor
  getStr += "\r\n\r\n";
  
  //Serial.print("AT+CIPSEND=");
  //Serial.println(cmd.length());
  cmd = "AT+CIPSEND=";
  cmd += String(getStr.length());

  Serial.println(cmd);
  
  if(Serial.find(">")){
    Serial.print(getStr);
  }else{
    Serial.println("AT+CIPCLOSE");
  }

  if(Serial.find("OK")){
    for(int a = 0; a < 5; a++){
      digitalWrite(4,HIGH);
      digitalWrite(3,LOW);
      delay(200);
      digitalWrite(4,LOW);
      digitalWrite(3,HIGH);
      delay(200);
    }
  }else{
    for(int a = 0; a < 5; a++){
      digitalWrite(4,HIGH);
      digitalWrite(3,HIGH);
      delay(200);
      digitalWrite(4,LOW);
      digitalWrite(3,LOW);
      delay(200);
    }
  }
  
  //end coba kirim data
  delay(5000);
}

Setelah berhasil mengirim data, maka di web thingspeak akan tampil grafik seperti gambar berikut

hasil monitoring
hasil monitoring

Dan tampilan pada hasil monitoring di aplikasi androidnya seperti berikut :

Demo hasil jadinya bisa dilihat di video di bawah ini

Selamat mencoba.

Ada manfaatnya silahkan share, ada pertanyaan isi saja di kolom komentar. 😀

59 thoughts on “IoT Monitoring Menggunakan ESP8266 dan Arduino Uno

  1. elda Balas

    min, mau tanya nih…
    kira kira kalo kita pengontrolannya lewat smartphone gimana? terimakasih :))

    • fadlur PenulisBalas

      Kalo pake aplikasi android bisa pake retrofit untuk membaca hasil data yang berhasil diinput dari aplikasi arduino.

  2. Wiryawan Balas

    Kalau ingin monitoring paket waktu pengiriman data ke server menggunakan wireshark/tcpdump bsa gak ya mas?

    • fadlur PenulisBalas

      Kemungkinan bisa pake wireshark, karena kan pake wifi. CMIIW

  3. yudi Balas

    min, link “untuk pembuatan aplikasi di servernya bisa lihat disini” error. Halaman nya kosong..

  4. boraks Balas

    min, bisa gak monitoring pengontrolan air menggunakan modul wifi esp 8266? misalnya, saya pakai sensor ultrasonik mendeteksi ketinggian air, ketika air nya sudah ada di wadah sekitar 85%, informasi 85% tersebut muncul di android melalui modul wifi. bisa tidak seperti itu? terima kasih banyak

  5. putri maheswari Balas

    mau tanya jarak jangkauan esp8266 ini klo outdoor bisa sampai berapa meter ya?terimakasih

  6. momon Balas

    sangat bermanfaat bang. mau nanya, monitoring menggunakan aplikasi android dan modul wifi esp8266 bisa gak bang?

    • fadlur PenulisBalas

      Bisa, data dikirim ke server abis itu diakses pake aplikasi android

        • fadlur PenulisBalas

          Pake REST aja. Bisa pake php framework semacam CI atau laravel. Bisa juga pake thingspeak.

          • momon

            berarti harus connect ke wifi yang tersedia ya bang? maaf masih amatir bang, banyak tanya

          • fadlur Penulis

            Ya pastinya, kan harus konek ke internet.

  7. Alim Prasaja Balas

    alhamdulillah postingan sangat membantu buat tugas akhir saya gan, tapi untuk link pembuatan aplikasi di servernya kok ga bisa dibuka ya? butuh banget soalnya hehe

  8. Dwi Satrio Balas

    Gan ko saya command AT nya ga muncul OK ya ? kalau saya ketik manual muncul OK kalau di buat otomatis melalui script tidak muncul OK

    • fadlur PenulisBalas

      Maksudnya kirim data “OK” dari serial terminal ke arduino? karena “OK” itu output dari espnya mas yang dikirimkan ke arduino sebagai balasan dari AT-command yang dikirimkan arduino ke esp8266.

      • Dwi Satrio Balas

        iya di serial monitor tidak muncul “OK”, apa tidak masalah ? soalnya kalau saya ketik manual AT muncul OK

      • Dwi Satrio Balas

        String datasensor = “id=17&output=12&key=7cd28681ada1dbb9bdd”;//output bisa diganti pake output sensor anda

        Saya juga mau tanya itu id,output,dan key di dapat dari mana ya gan ? makasih sebelum nya

    • fadlur PenulisBalas

      Bisa juga pake modul mikro sd, tapi kalo butuh grafiknya bisa di lihat di webnya thingspeak.

  9. agus Balas

    assalamu’alaikum wr wb kalo mengirim data dari lebih dari satu arduino ke satu arduino (sebagai server) menggunakan esp8266 bisa ngga min ? caranya gimana ya ?

    • fadlur PenulisBalas

      Wa’alaikum salam. Maksudnya semisal 5 arduino ngirim data ke 1 arduino? Kalo iya saya blm pernah bikin yang kayak gitu.hehe..

  10. Kevin Balas

    Mas kalo saya mau kirim data ke google spreadsheet bagaimana?
    Terimakasih

    • fadlur PenulisBalas

      Digabung bisa, tapi tetep satu2 (ada delay dr masing2 sensor). Karena masing2 channel 1 sensor.

    • fadlur PenulisBalas

      Buat aja di dalam loop() trus hasil pembacaan ditaruh di bagian ini

        getStr += “150”;//silahkan ganti nilai sensor

  11. Khairul nde Balas

    Maaf agak melenceng mas . mau tanya mas pada saat flashing sukses lalu mencoba ketik AT pada Serial monitor arduino tetap tidak ada respone pdhal sudah berhasil flashingnya .thx

    • fadlur PenulisBalas

      Minimal cek dulu serialnya, sudah diinisialisasi belum.

  12. dika Balas

    mas mau tanya kode ini gunanya untuk apa ya?
    digitalWrite(4,HIGH);
    digitalWrite(3,LOW);
    memangnya di D4 & D3 arduinonya dipasang suatu komponen kah?
    terimakasih

  13. Rizkymridwan Balas

    Selamat pagi. Saya lagi bikin monitoring suhu ruangan. Data hasil nilai suhu ruangan nya taro di thingspeak. Nah bagai mana dari thingpeak ke android studio nya biar bisa di liat ke android studio mengunakan apa ya?

Tinggalkan Balasan

This site uses Akismet to reduce spam. Learn how your comment data is processed.