Project Blynk LCD, DHT, Sensor Tanah dan Pompa Air
Project Blynk LCD, DHT, Sensor Tanah dan Pompa Air
Project ini untuk monitoring suhu, kelembaban tanah, dan kelembaban udara. Serta otomatisasi/kontrol pompa air dari jarak jauh
Note: Jangan lupa masukkan Library Blynk dan DHT Sensor Library
Simulasi dengan Wokwi
#define BLYNK_TEMPLATE_ID "xxxxxxxxxxxxxxx" //ubah bagian ini
#define BLYNK_TEMPLATE_NAME "xxxxxxxxx" //ubah bagian ini
#define BLYNK_AUTH_TOKEN "xxxxxxxxxxxxxxxx" //ubah bagian ini
#define BLYNK_PRINT Serial
#include <LiquidCrystal_I2C.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
char ssid[] = "xxxxxxxxxx"; //ubah bagian ini
char pass[] = "xxxxxxxxxx"; //ubah bagian ini
#define pinPompa 4
#define DHTPIN 19
#define DHTTYPE DHT11 //sesuaikan jenis DHT yang digunakan
#define pinTanah 35
LiquidCrystal_I2C lcd(0x27,16,2);
DHT dht(DHTPIN, DHTTYPE);
String otomatis = "";
BLYNK_WRITE(V0)
{
int nilai = param.asInt();
otomatis = String(nilai);
}
BLYNK_WRITE(V1)
{
int pompa = param.asInt();
if (pompa == 1){
digitalWrite(pinPompa, HIGH);
Blynk.virtualWrite(V8, "Pompa ON");
lcd.setCursor(12,1);
lcd.print("ON ");
}
if (pompa == 0){
digitalWrite(pinPompa, LOW);
Blynk.virtualWrite(V8, "Pompa OFF");
lcd.setCursor(12,1);
lcd.print("OFF ");
}
}
void setup() {
Serial.begin(115200);
pinMode(pinPompa, OUTPUT);
pinMode(pinTanah, INPUT);
digitalWrite(0, LOW);
dht.begin();
lcd.init();
lcd.backlight();
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
while (!Blynk.connected()){
lcd.setCursor(0,0);
lcd.print("Proses Koneksi..");
for(int i = 0; i<16; i++){
lcd.setCursor(i,1);
lcd.print(". ");
delay(50);
}
}
lcd.setCursor(0,0);
lcd.print(" BLYNK ");
lcd.setCursor(0,1);
lcd.print(" TERHUBUNG ");
delay(2000);
lcd.clear();
}
void loop(){
if (Blynk.connected()){
Blynk.run();
float h = dht.readHumidity();
float t = dht.readTemperature();
int baca = analogRead(pinTanah);
int s = map(baca, 0, 4095, 100, 0);
lcd.setCursor(0,0);
lcd.print(String(t,0) + " C " + String(h,0) + " % " + String(s) + " ");
Blynk.virtualWrite(V5, h);
Blynk.virtualWrite(V6, t);
Blynk.virtualWrite(V7, s);
if(otomatis == "1") {
lcd.setCursor(0,1);
lcd.print("OTOMATIS");
if (s > 20){
digitalWrite(pinPompa, LOW);
Blynk.virtualWrite(V8, "Pompa OFF");
Blynk.virtualWrite(V1, 0);
lcd.setCursor(12,1);
lcd.print("OFF ");
}
else {
digitalWrite(pinPompa, HIGH);
Blynk.virtualWrite(V8, "Pompa ON");
Blynk.virtualWrite(V1, 1);
lcd.setCursor(12,1);
lcd.print("ON ");
}
}
else {
lcd.setCursor(0,1);
lcd.print("MANUAL ");
}
}
else {
lcd.setCursor(0,0);
lcd.print(" BLYNK ");
lcd.setCursor(0,1);
lcd.print(" TERPUTUS ");
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
lcd.clear();
}
delay (2000);
}