IoT Project: Mengontrol Volume Air Tangki (Platform Cayenne & Board NodeMCU ESP8266)

Pada Postingan saya sebelumnya tentang Cara Kontrol Pompa Air Pada Tangki Reservoir Dengan Arduino Dan Sensor Ultrasonic, yaitu bagaimana memonitor volume air didalam tangki reservoir dengan display LCD sekaligus mengontrol pompa air secara otomatis. Nah kali ini saya akan mencoba menampilkan hasil monitoring bukan di LCD namun pada Platform IoT berbasis web, yaitu CAYENNE. Kalian bisa check tentang Cayeene pada website resminya di www.mydevice.com. Jika kalian baru pertama kali menggunakan Cayenne bisa dibaca terlebih dahulu postingan sebelumnya di Sini.

1. Alat

  1. NodeMCU ESP8266 (V3)
  2. Sensor Ultrasonic 
  3. Relay 5V

2. Wiring & Schematic

Device & Pin Pin NodeMCU ESP8266
Sensor Ultrasonic  
Pin Ground Ground/eksternal
Pin VCC VCC eksternal
Pin Trigger 14 atau sama dengan D5
Pin Echo 12 atau sama dengan D6
Relay 5V  
Pin Ground Ground/eksternal
Pin VCC VCC eksternal
Pin Input 15 atau sama dengan D8

Baca juga:

Cara Akses Cayenne Dengan Board NodeMCU ESP8266

3. Programming

Skematik yang digunakan disini sama dengan postingan saya terdahulu. yang membedakan disini saya menggunakan board NodeMCU ESP8266 dengan koneksi Wifi yang yang terdahulu menggunakan board Arduino Uno dan display hanya pada LCD.

#include <CayenneMQTTESP8266.h>
#define CAYENNE_DEBUG
#define CAYENNE_PRINT Serial

//Board: Generic ESP8266 Module
#include <ESP8266WiFi.h>

//wifi network
const char* ssid="xxxxxxxxxxxx"; //nama wifi
const char* Password="xxxxxxxxxx";//password wifi

//cayenne authentification info
char* username = "05282900-793f-11ea-93bf-xxxxxxxxx";
char* password = "6b6e398b5ae7275596dfd029ccxxxxxxxx";
char* clientID = "58fd51e0-811e-11ea-93bf-xxxxxxx";

//Deklarasikan Pin sensor ultrasonic dan relay
#define triggerPin 14 //D5
#define echoPin 12 //D6
#define relayPin 15 //D8

void setup() {
//komunikasi dengan serial monitor
 Serial.begin(9600);
 Cayenne.begin(username, password, clientID, ssid, Password);
 pinMode(relayPin, OUTPUT); // Relay untuk pompa
 pinMode(triggerPin,OUTPUT);
 pinMode (echoPin,INPUT);

//tampilkan pada serial monitor
Serial.println();
Serial.print("connecting");

while(WiFi.status()!=WL_CONNECTED){
  delay(500);
  Serial.print(".");
}
  Serial.println("Wifi Connected Success!");
  Serial.print("NodeMCU IP Address: ");
  Serial.println(WiFi.localIP()); 
}

void loop() {

 Cayenne.loop();

//inisialisasi duration, distance, volume tanki
long duration,distance; 
double volumeTanki;  

//ini perintah untuk menjalankan sensor ultrasonic bekerja
digitalWrite(triggerPin,HIGH);
delayMicroseconds(2);
digitalWrite(triggerPin,LOW);
delayMicroseconds(10);
digitalWrite(triggerPin,LOW);
duration = pulseIn(echoPin,HIGH);
distance = duration/58.2;

//ini rumus untuk menghitung volume air dalam tabung
volumeTanki = 3.79*(2.5-(distance/100));

//display ke serial monitor
Serial.print(distance);
Serial.print("Centimeter:");
Serial.print(",");
Serial.print(volumeTanki);
Serial.println("m3");

//display ke Cayenne dashboard
Cayenne.virtualWrite(0, distance); //Virtual Channel 0 pada cayenne untuk membaca distance
Cayenne.virtualWrite(2, volumeTanki);//Virtual Channel 2 pada cayenne untuk membaca volume tangki

//relay pompa statement
if (distance<=20){
digitalWrite (relayPin, HIGH);
Cayenne.virtualWrite(1, "POMPA OFF");}//Virtual Channel 1 pada cayenne untuk membaca Pompa Off
else if (distance>=100){
digitalWrite(relayPin, LOW);
Cayenne.virtualWrite(1, "POMPA ON");}//Virtual Channel 1 pada cayenne untuk membaca Pompa On
delay (500);
}

4. Web Cayenne.mydevice.com

Setelah koneksi sukses, maka langkah selanjutnya adalah menyusun widget pada dashboard cayenne. Saya menggunakan widget Tanki untuk display hasil pengukuran distance yang saya buat. dan menggunakan widget LCD untuk hasil Relay Pompa. jika kalian ingin menambahkan fiture baru, tinggal klik Add new…. pada kiri atas. 

Hasil Pada Dashboard Cayenne