#include <WiFi.h>
#include <ThingsBoard.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>
#define CURRENT_FIRMWARE_TITLE "TEST"
#define CURRENT_FIRMWARE_VERSION "1.0.0"
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
#define TOKEN "uoOOKmu3MhgUGR3xmkXF"
#define THINGSBOARD_SERVER "thingsboard.cloud"
// Baud rate for debug serial
#define SERIAL_DEBUG_BAUD 115200
const byte buzz_Pin =19 ;
const byte trig_Pin =26 ;
const byte echo_Pin =25 ;
const byte pir_Pin =27 ;
// Initialize ThingsBoard client
WiFiClient espClient;
// Initialize ThingsBoard instance
ThingsBoard tb(espClient);
// the Wifi radio's status
int status = WL_IDLE_STATUS;
//Buzzer
int freqB = 900;
int chainIB = 0;
int resoB = 8;
int dutyCycleB = 128;
//Ultrasonic
float waktu,jarak;
void InitWiFi()
{
Serial.println("Connecting to AP ...");
// attempt to connect to WiFi network
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to AP");
}
void reconnect() {
// Loop until we're reconnected
status = WiFi.status();
if ( status != WL_CONNECTED) {
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to AP");
}
}
void setup() {
Serial.begin(115200);
pinMode(trig_Pin, OUTPUT);
pinMode(echo_Pin, INPUT);
pinMode(pir_Pin, INPUT_PULLUP);
InitWiFi();
ledcSetup(chainIB, freqB, resoB);
ledcAttachPin(buzz_Pin, chainIB);
}
void loop()
{
digitalWrite(trig_Pin, HIGH);
delayMicroseconds(100);
digitalWrite(trig_Pin, LOW);
waktu = pulseIn(echo_Pin, HIGH);
jarak = 0.017 * waktu;
int pirSensor = digitalRead(pir_Pin);
if(pirSensor == 1){
Serial.println("=== Gerakan TERDETEKSI ===");
ledcWrite(chainIB, dutyCycleB);
delay(300);
if (jarak <399){
Serial.print("=== Jarak :");
Serial.print(jarak);
Serial.print("cm ===");
delay(300);
}
else {
Serial.print("=== Jarak Lebih dari :");
Serial.print(jarak);
Serial.print("cm ===");
delay(300);
}
}
else{
Serial.println(" TIDAK ADA GERAKAN");
ledcWrite(chainIB, 0);
(jarak = 0);
delay(1000);
}
}