#include <WiFi.h>
#include "ThingSpeak.h"
#include <MPU6050_light.h>
#include <Wire.h>
#include <NewPing.h> // Library for ultrasonic sensor
const int buzzerPin = 23;
const int trigPin = 4; // Trig pin of ultrasonic sensor
const int echoPin = 5; // Echo pin of ultrasonic sensor
MPU6050 mpu(Wire);
#define SECRET_SSID "Wokwi-GUEST"
#define SECRET_PASS ""
#define SECRET_CH_ID 2499159
#define SECRET_WRITE_APIKEY "07GW09X9P31GJTR7"
char ssid[] = SECRET_SSID;
char pass[] = SECRET_PASS;
WiFiClient client;
unsigned long myChannelNumber = SECRET_CH_ID;
const char *myWriteAPIKey = SECRET_WRITE_APIKEY;
unsigned long timer = 0;
// Define the ultrasonic sensor
NewPing sonar(trigPin, echoPin);
void setup() {
pinMode(buzzerPin, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(115200);
Wire.begin();
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
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.");
}
byte status = mpu.begin();
mpu.calcOffsets();
mpu.setFilterGyroCoef(0.98);
mpu.setFilterAccCoef(0.02);
}
void loop() {
mpu6050result();
}
void mpu6050result() {
mpu.update();
int distance = sonar.ping_cm(); // Get the distance from ultrasonic sensor
if ((millis() - timer) > 100) {
ThingSpeak.setField(1, mpu.getAccX());
ThingSpeak.setField(2, mpu.getAccY());
ThingSpeak.setField(3, mpu.getAccZ());
ThingSpeak.setField(4, mpu.getGyroX());
ThingSpeak.setField(5, mpu.getGyroY());
ThingSpeak.setField(6, mpu.getGyroZ());
ThingSpeak.setField(7, distance); // Add distance data to field 7
int httpCode = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if (httpCode > 0) {
Serial.println("Data sent to ThingSpeak successfully.");
tone(buzzerPin, 1000, 200);
} else {
Serial.println("Problem sending data to ThingSpeak. HTTP error code " + String(httpCode));
}
timer = millis();
}
}