Thumbnail Nodemcu V3 Lolin, DHT11 send data to thingspeak

Project IOT akses sensor DHT11 dengan THINGSPEAK

Pada artikel ini akan dijelaskan bagaimana cara menggunakan thingspeak untuk memonitoring data pembacaan sensor dht11 menggunakan nodemcu.

Dimana nodemcu tersebut harus terhubung dengan internet aktif, untuk mengirimkan data pembacaannya.

Secara rangkaian hampir sama dengan project sebelumnya yaitu Monitoring sensor DHT11 dengan NodeMCU ESP8266 via Browser.

Perbedaanya terletak pada pembacaan datanya yang sebelumnya menggunakan browser yang menuliskan ip address nodemcu, dan untuk kali dapat diakses dimana saja dan kapan saja menggunakan server thingspeak.

Skema Alur project nodemcu ini seperti gambar dibawah

Nodemcu V3 Lolin, DHT11 send data to thingspeak

Sensor DHT11 merupakan sensor suhu dan sensor kelembaban yang mudah diakses dengan harga yang terjangkau, untuk detail dapat diakses disini.

Thingspeak adalah server yang dikhususkan untuk Internet of Things Device, gratis yang dapat digunakan untuk membuat proyek – proyek IOT, dan dapat diakses dimanapun kalian berada.


Kebutuhan yang diperlukan project NodeMCU ESP8266 ThingSpeak

Bahan yang diperlukan :

Rangkaian yang perlu dirangkaikan

Rangkaian nodemcu v.3 Lolin dengan DHT11 dan thingspeak

Library yang dibutuhkan 

  • DHT11 : [ddownload id=”1457″]
  • Adafruit Sensor : [ddownload id=”1458″]
  • ESP Daily Task : [ddownload id=”2740″]

Peletakan Library pada masing – masing Operation System :

  • PC (Windows) : Program file /Arduino/ libraries
  • Mac : (home directory)/Applications/Arduino (Show Package Content)/Contents/Java/Libraries
  • Linux : (home directory)/sketchbook/libraries

Membuat Setting New Channel di ThingSpeak

Jika belum memiliki akun di thingspeak silahkan “Sign Up” terlebih dahulu, masukan email, alamat negara, nama kalian, dan password. Setelah itu bukalah email kalian untuk proses verifikasi jika dibutuhkan, dan sign in.

Tampilan Thingspeak

Kemudian lakukan sign in, dan pada 10 januari 2018 kalian diharuskan melakukan 2x login yaitu untuk thingspeak dan MathWorks account. Klik pada channels, pilih my channel, dan terakhir pilihlah new channel.

Cara membuat new channel di thingspeak

Pada new channel isikan data seperti contoh gambar dibawah ini, dapat kalian modifikasi dengan apa yang kalian akan buat project.

New channel pada thingspeak

Setelah masuk pada dashboard channel “nyebarilmu.com – Monitoring DHT11” dan setting pada nama field chart yang dimana bergambar kotak merah.

Tampilan di setting new thingspeak

Isikan data dengan nama Suhu C pada Field 1 Chart dan Field 2 chart dengan nama Kelembaban %.

Membuat Setting Write API Key

API Key adalah kode yang bersifat rahasia yang dimana tiap akun bersifat unik yang berfungsi untuk mempublikasikan hasil pembacaan sensor yang terpasang. Dikarenakan tujuan dari project yaitu mengirim data dan menuliskan ke thingspeak, maka yang harus dipilih yaitu “Write Api Key” dan kode tersebut harus dimasukan pada program yang akan dibuat.

Cara untuk mendapatkan api key yaitu masih sama pada dashboard seperti gambar diatas, pilihlah “Api Keys”. Dan pilih kode pada Write Api Key, dan copy paste kan pada notepad sementara untuk dimasukan ke dalam program.

Write API Key nyebarilmu.com DHT11

Setelah semua selesai, lanjut ke pemrogram Nodemcu V.3 Lolin menggunakan software IDE Arduino.

Kode Program

//www.nyebarilmu.com

#include <ESP8266WiFi.h>
#include <ESPDailyTask.h> //library yang dimasukan di program file (x86)/arduino/libraries
#include "DHT.h"

//sensor yang digunakan
#define DHTTYPE DHT11   // DHT 11

const char* ssid     = "Blok21no12";
const char* password = "Komponen08";

//Copy paste API KEYS yang write
const char* apiKey = "HW8UN4E7YJ4XG5O8";

const char* resource = "/update?api_key=";

// Thing Speak API server
const char* server = "api.thingspeak.com";

// Set waktu kapan harus mengirimkan data
ESPDailyTask dailyTask(7*60 + 15); // 7:15am

// DHT Sensor pada pin 5 di NodeMCU
const int DHTPin = 5;
//inisialisasi library DHTpin
DHT dht(DHTPin, DHTTYPE);

// Variabel temporary untuk suhu dan kelembaban
static char temperatureTemp[7];
static char humidityTemp[7];

void setup() {
  //Serial port untuk komunikasi serial
  Serial.begin(115200);
  delay(10);

  //mengirimkan data per hari hanya 1 kali, sesuai dengan waktu yang telah diset
  dailyTask.sleep1Day();

  //proses pembacaan sensor
  dht.begin();

  //fungsi untuk mengkoneksikan nodemcu ke wifi
  initWifi();

  //fungsi untuk komunikasi ke thingspeak
  makeHTTPRequest();

  //untuk kembali ke mode sleep setelah mengirimkan data
  dailyTask.backToSleep();
}

void loop() {
}

//Koneksi nodemcu ke wifi
void initWifi() {
  Serial.print("Connecting to: ");
  Serial.print(ssid);
  WiFi.begin(ssid, password);

  int timeout = 10 * 4; // 10 detik

  while(WiFi.status() != WL_CONNECTED  && (timeout-- > 0)) {
    delay(250);
    Serial.print(".");
  }
  Serial.println("");

  if(WiFi.status() != WL_CONNECTED) {
     Serial.println("gagal terkoneksi, ke mode sleep");
  }

  Serial.print("Wifi sukses terkonek: ");
  Serial.print(millis());
  Serial.print(", IP addr : ");
  Serial.println(WiFi.localIP());
}

//membuat http request ke thingspeak
void makeHTTPRequest() {
  //pembacaan sensor
  float h = dht.readHumidity(); //untuk kelembaban
  float t = dht.readTemperature(); //untuk suhu dalam bentuk celcius
  float f = dht.readTemperature(true); //untuk suhu dalam bentuk fahrenheit

  //mengecek pembacaan sensor dht11
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Gagal pembacaan data DHT11!");
    strcpy(temperatureTemp,"GAGAL");
    strcpy(humidityTemp, "GAGAL");
    return;
  }

  else {
    float hic = dht.computeHeatIndex(t, h, false);
    dtostrf(hic, 6, 2, temperatureTemp);

    float hif = dht.computeHeatIndex(f, h);
    //dtostrf(hif, 6, 2, temperatureTemp);

    dtostrf(h, 6, 2, humidityTemp);
    Serial.print("Kelembaban: ");
    Serial.print(h);
    Serial.print(" %\t Suhu: ");
    Serial.print(t);
    Serial.print(" *C ");
    Serial.print(f);
    Serial.print(" *F\t Heat index: ");
    Serial.print(hic);
    Serial.print(" *C ");
    Serial.print(hif);
    Serial.print(" *F");
  }

  Serial.print("Connecting to ");
  Serial.print(server);

  WiFiClient client;
  int retries = 5;
  while(!!!client.connect(server, 80) && (retries-- > 0)) {
    Serial.print(".");
  }
  Serial.println();
  if(!!!client.connected()) {
     Serial.println("gagal terkoneksi, ke mode sleep");
  }

  Serial.print("Permintaan sumber: ");
  Serial.println(resource);
  //kunci dalam pengiriman data ke thingspeak
  client.print(String("GET ") + resource + apiKey + "&field1=" + temperatureTemp + "&field2=" + humidityTemp +
                  " HTTP/1.1\r\n" +
                  "Host: " + server + "\r\n" +
                  "Connection: close\r\n\r\n");

  int timeout = 5 * 10; // 5 seconds
  while(!!!client.available() && (timeout-- > 0)){
    delay(100);
  }
  if(!!!client.available()) {
     Serial.println("Tidak ada response, going back to sleep");
  }
  while(client.available()){
    Serial.write(client.read());
  }

  Serial.println("\nclosing connection");
  client.stop();
}

Hasil pengetesan dari project diatas

Rangkai semua komponen atau module yang dibutuhkan, copy paste program diatas (modifikasi untuk write api key, wifi, dan password), dan siap upload ke nodemcu nya.

Nodemcu Lolin V.3 + DHT11 dan thingspeak

 

Di program menggunakan serial port 9600 yang ditampilkan ke serial monitor Software Arduino IDE, dan hasil pembacaannya seperti ini dengan cara menekan reset. Dikarenakan program diatas dibuat untuk membaca sensor DHT11 dalam 1 hari hanya 1x.

Sedangkan untuk hasil data yang terkirim pada thingspeak hanya ada 1x saja, untuk mensimulasikan bisa dilakukan tiap 1 jam sekali dengan menghubungkan pin RESET dan pin D0 dan tekan tombol reset pada nodemcu lolin v3 nya.

Hasil trial nodemcu v.3 Lolin dengan DHT11 dan thingspeak

Terimakasih, sudah mampir!

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *