#include <WiFi.h>
#include <ThingSpeak.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
// Wi-Fi Credentials
char ssid[]= "Wokwi-GUEST";
char password[] = "";
// ThingSpeak API
long myChannelNumber= 2759883;
const char* myWriteApiKey = "47QOPDV83XSRK5Z9";
int statusCode;
// Pins
#define DHTPIN 15
#define DHTTYPE DHT22
#define SOIL_MOISTURE_PIN 34
// Sensors
DHT dht(DHTPIN, DHTTYPE);
Adafruit_MPU6050 mpu;
// Variables
float temperature = 0.0, humidity = 0.0;
float accelX = 0.0, accelY = 0.0, accelZ = 0.0;
int soilMoisture = 0;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
// Wait for Wi-Fi connection
Serial.print("Connecting to Wi-Fi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nConnected to Wi-Fi!");
dht.begin();
if (!mpu.begin()) {
Serial.println("Failed to find MPU6050 chip!");
while (1);
}
Serial.println("MPU6050 Initialized.");
}
void loop() {
temperature = dht.readTemperature();
humidity = dht.readHumidity();
// Read data from soil moisture sensor
soilMoisture = analogRead(SOIL_MOISTURE_PIN);
// Read accelerometer data from MPU6050
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
accelX = a.acceleration.x;
accelY = a.acceleration.y;
accelZ = a.acceleration.z;
// Print sensor data to Serial Monitor
Serial.println("Sensor Readings:");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.println(" %");
Serial.print("Moisture:");
Serial.print(soilMoisture);
ThingSpeak.setField(1,temperature);
ThingSpeak.setField(2,humidity);
ThingSpeak.setField(3,soilMoisture);
statusCode=ThingSpeak.writeFields(myChannelNumber,myWriteApiKey);
if(statusCode==200){
Serial.println("channel update successful");
}
else{
Serial.println("problem writing data.HTTP error code : "+String(statusCode));
}
delay(1000);
}