#include "WiFi.h"
#include "AdafruitIO_WiFi.h"
#define IO_USERNAME "Irawan1122"
#define IO_KEY "aio_YNXl33QkwBtIOVAELLHwBOageCNr"
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASS ""
AdafruitIO_WiFi io(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
AdafruitIO_Feed *motionFeed = io.feed("motion-detected");
AdafruitIO_Feed *relayControlFeed = io.feed("relay-control");
AdafruitIO_Feed *vibrationFeed = io.feed("vibration-level");
#define PIR_SENSOR_PIN 13
#define RELAY_PIN 12
#define BUZZER_PIN 14
#define LED_PIN 27
#define VIBRATION_PIN 34
bool alarmAktif = false;
void handleRelayControl(AdafruitIO_Data *data) {
String command = data->toString();
Serial.print("š” Perintah dari Adafruit IO: ");
Serial.println(command);
if (command == "ON") {
alarmAktif = true;
} else if (command == "OFF") {
alarmAktif = false;
digitalWrite(RELAY_PIN, LOW);
digitalWrite(BUZZER_PIN, LOW);
digitalWrite(LED_PIN, LOW);
}
}
void setup() {
Serial.begin(115200);
pinMode(PIR_SENSOR_PIN, INPUT);
pinMode(RELAY_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
pinMode(VIBRATION_PIN, INPUT);
Serial.print("š Connecting to Adafruit IO...");
io.connect();
while(io.status() < AIO_CONNECTED) {
Serial.print(".");
delay(1000);
}
Serial.println("\nā
Connected to Adafruit IO!");
relayControlFeed->onMessage(handleRelayControl);
relayControlFeed->get();
}
void loop() {
io.run();
int motion = digitalRead(PIR_SENSOR_PIN);
int vibration = analogRead(VIBRATION_PIN);
Serial.print("š Getaran (potensiometer): ");
Serial.println(vibration);
vibrationFeed->save(vibration);
if (motion == HIGH && alarmAktif) {
Serial.println("šØ Gerakan terdeteksi!");
digitalWrite(RELAY_PIN, HIGH);
digitalWrite(BUZZER_PIN, HIGH);
digitalWrite(LED_PIN, HIGH);
motionFeed->save("Terdeteksi");
} else {
digitalWrite(RELAY_PIN, LOW);
digitalWrite(BUZZER_PIN, LOW);
digitalWrite(LED_PIN, LOW);
motionFeed->save("Tidak Ada");
}
delay(1000);
}