#include <Arduino.h>
#include <WiFi.h>
#include <WiFiMulti.h>
#include <HTTPClient.h>
#include <NewPing.h>
#include <PubSubClient.h>
WiFiMulti WiFiMulti;
const char* ssid = "Ystn";
const char* password = "beammms.";
const char* host = "https://script.google.com/macros/s/AKfycbzEJI2veGkIzpKPXgSybtAi_B5-9kaLZ_ZPtEK-Dk1BRYltW9vDu9MxFbrm5-whd_CBgQ/execsensor=value&status=status&pump=pump";
const int trigPin1 = 32; // Trig pin of first HC-SR04 connected to pin 32
const int echoPin1 = 33; // Echo pin of first HC-SR04 connected to pin 33
const int ledPin1 = 16; // LED pin for tank 1 status
NewPing sonar(trigPin1, echoPin1); // NewPing object for HC-SR04 sensor
void setup() {
Serial.begin(9600);
pinMode(ledPin1, OUTPUT); // Set LED pin 1 as output
Serial.println("Connecting to WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
// Read distance from HC-SR04 sensor
long distance = sonar.ping_cm();
// Calculate tank level in percentage
int tank1Percent = map(distance, 400, 2, 0, 100);
// Print tank level to Serial Monitor
Serial.print("Tank 1: ");
Serial.print(tank1Percent);
Serial.println("%");
// Determine water level status
String status;
if (tank1Percent <= 35) {
status = "Low water level";
digitalWrite(ledPin1, HIGH); // Turn on LED for tank 1 if level is critical
Serial.println("Pump: ON"); // Turn on pump
} else if (tank1Percent <= 65) {
status = "Half tank";
digitalWrite(ledPin1, LOW); // Turn off LED for tank 1
Serial.println("Pump: OFF"); // Turn off pump
} else if (tank1Percent <= 95) {
status = "Water nearly full";
digitalWrite(ledPin1, LOW); // Turn off LED for tank 1
Serial.println("Pump: OFF"); // Turn off pump
} else {
status = "Tank full";
digitalWrite(ledPin1, LOW); // Turn off LED for tank 1
Serial.println("Pump: OFF"); // Turn off pump
}
// Send data to Google Sheets
sendData(tank1Percent, status);
} else {
Serial.println("WiFi not connected");
}
delay(1000); // Delay 1 second before next iteration
}
void sendData(int percent, String status) {
WiFiClient client;
if (client.connect(host, 80)) {
Serial.println("Sending data to Google Sheets...");
String url = "/macros/s/AKfycbzEJI2veGkIzpKPXgSybtAi_B5-9kaLZ_ZPtEK-Dk1BRYltW9vDu9MxFbrm5-whd_CBgQ/exec?sensor=value&status=" + status + "&pump=ON"; // แทนที่ AKfycbzEJI2veGkIzpKPXgSybtAi_B5-9kaLZ_ZPtEK-Dk1BRYltW9vDu9MxFbrm5-whd_CBgQ ด้วย ID ของ Google Apps Script ของคุณ
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
while (client.connected() && !client.available());
while (client.available()) {
Serial.print(char(client.read()));
}
Serial.println();
client.stop();
Serial.println("Data sent to Google Sheets");
} else {
Serial.println("Failed to connect to Google Sheets server");
}
}
Loading
esp32-devkit-c-v4
esp32-devkit-c-v4