//Project Predictive Maintenance
//CHAN JIY CHUAN 201060001FTL PSDC
#include <DHTesp.h> //library of DHT sensor
#include <WiFi.h>// library of WiFi
#include <ThingSpeak.h>// library of thingspeak iot platform
#define SECRET_SSID "Wokwi-GUEST"
#define SECRET_PASS ""
#define SECRET_CH_ID 2028514 //thingspeak channel ID
#define SECRET_WRITE_APIKEY "LNRMDHSWAHXLQQQU" //thingspeak API key
#define LED_1 22 //green
#define LED_2 23 //red
#define LED_3 26 //blue
#define POTENTIOMETER_PIN 32 //potentiometer
#define PIR_PIN 27 //PIR sensor
char ssid[] = SECRET_SSID;
char pass[] = SECRET_PASS;
int keyIndex = 0;
WiFiClient client;
unsigned long myChannelNumber = SECRET_CH_ID;
const char * myWriteAPIKey = SECRET_WRITE_APIKEY;
const int DHT_PIN = 15;
DHTesp dhtSensor;
void setup() {
Serial.begin(115200);
//Initialise Pins I/O
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
pinMode(LED_1, OUTPUT);
pinMode(LED_2, OUTPUT);
pinMode(LED_3, OUTPUT);
pinMode(PIR_PIN, INPUT);
while (!Serial){
;
}
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
}
void loop() {
if(WiFi.status()!=WL_CONNECTED)
{
Serial.print("Attempting to connect to SSID: ");
Serial.println(SECRET_SSID);
while(WiFi.status()!=WL_CONNECTED)
{
WiFi.begin(ssid,pass);
Serial.print(".");
delay(5000);
}
Serial.println("\nConnected.");
}
Serial.println("----------------------------------------------");
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temperature Environment: " + String(data.temperature, 2) + "°C");//Temperature
Serial.println("Humidity Environment: " + String(data.humidity, 1) + "%");//Humidity
int potValue = analogRead(POTENTIOMETER_PIN);
Serial.println("Moisture: "+ String(potValue*100/4095)+ "%");//Moisture
int pirValue = digitalRead(PIR_PIN);
Serial.println("Vibration: "+ String(pirValue));//detect vibration
Serial.println("----------------------------------------------");
if(pirValue < 1){
digitalWrite(LED_3,LOW);
Serial.print("No Vibration\n");
}else{
digitalWrite(LED_3,HIGH);
Serial.print("Vibration Detected!!!!\n");
}
if(potValue > 1650){
digitalWrite(LED_1,LOW);
digitalWrite(LED_2,HIGH);
Serial.print("Surrounding Have Water");
}else{
digitalWrite(LED_1,HIGH);
digitalWrite(LED_2,LOW);
Serial.print("Surrounding No Water");
}
ThingSpeak.setField(1,data.temperature);
ThingSpeak.setField(2,data.humidity);
ThingSpeak.setField(3,(potValue*100/4095));
ThingSpeak.setField(4,pirValue);
int x = ThingSpeak.writeFields(myChannelNumber,myWriteAPIKey);
if(x==200)
{
Serial.println("\nChannel update successful");
}
else
{
Serial.println("\nProblem updating channel. HTTP error code"+String(x));
}
delay(15000);
}