//NIM : 2440023583
//Nama : Irenna Violla
//Judul Sistem : Pintu Kulkas Otomatis dengan Sensor Ultrasonik
//dan Lampu Otomatis dengan Sensor LDR (ESP1)
//SENDING DATA TO THINGSPEAK
#include <WiFi.h>
#include <HTTPClient.h>
#include <LiquidCrystal.h>
const int echoPin = 4;
const int trigPin = 2;
const int ldrPin = 34;
long lastTime = 0;
long timerDelay = 100;
LiquidCrystal lcd(14, 27, 26, 25, 33, 32);
const char ssid[] = "Wokwi-GUEST";
const char password[]= "";
String serverName = "https://api.thingspeak.com/update?api_key=1NIR2UKT30OQMS2D&field1=0";
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
WiFi.begin(ssid,password, 6);
while(WiFi.status() != WL_CONNECTED){
delay(500);
Serial.print('-');
}
Serial.println("");
Serial.print("System Connected");
Serial.println(WiFi.localIP());
lcd.begin(16,2);
lcd.clear();
}
void loop() {
if((millis() - lastTime) > timerDelay){
if(WiFi.status() == WL_CONNECTED){
digitalWrite(trigPin, LOW); //perintah untuk memastikan sensor ultrasonik belum memancarkan gelombang
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); //sensor ultrasonik memancarkan gelombang ultrasoniknya
delayMicroseconds(10); //durasi pancaran gelombang ultrasonik
digitalWrite(trigPin, LOW); //perintah untuk menghentikan pancaran gelombang ultrasonik
int durasiPantulan = pulseIn(echoPin, HIGH); //perintah untuk membaca jeda ketika gelombang dipancarkan oleh trigger kemudian diterima kembali oleh echo
float jarak = durasiPantulan * 0.034 / 2; //rumus jarak dalam cm
lcd.setCursor(0, 0); //set posisi karakter di lcd pada kolom 0, baris 0
lcd.print("Jarak: ");
lcd.print(jarak);
lcd.print(" cm");
int cahaya = analogRead(ldrPin);
lcd.setCursor(0, 1);
lcd.print("Cahaya: ");
lcd.print(cahaya);
delay(100);
sendData(jarak, cahaya);
}
else{
Serial.println("Wifi Disconnected");
}
lastTime = millis();
}
}
void sendData(int jarak, int cahaya){
HTTPClient http; //instalasi HTTP Client
Serial.print("Jarak : ");
Serial.println(jarak);
Serial.print("Cahaya : ");
Serial.println(cahaya);
String url = serverName + "&field1=" + jarak + "&field2=" + cahaya;
http.begin(url.c_str()); // send HTTP Request/inisialisasi
int httpResponseCode = http.GET(); //check status data
if(httpResponseCode > 0){
Serial.print("HTTP Response Code:");
Serial.println(httpResponseCode);
}
else{
Serial.print("Error Code");
Serial.println(httpResponseCode);
}
http.end();
}