/* CONNECTION INSTRUCTION
email:[email protected]
pass:sumait@2025
V0:TOTAL AMOUNT
V1:SECURITY STATUS
V2:notification
V3:reset
*/
#define BLYNK_PRINT Serial
#define Serial2 sim
#define BLYNK_TEMPLATE_ID "TMPL2Ikh13ZOh"
#define BLYNK_TEMPLATE_NAME "SMART KIBUBU"
#define BLYNK_AUTH_TOKEN "3zUwtn4VS2JUxq3PFT_K2BTOsbqZE8SV"
#define buzzer 19
#define seclock 18
#define rled 4
#define bled 5
#define gled 16
#define coinpin 32
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <LiquidCrystal_I2C.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
String notification;
long totalAmount=2500,amount,ptime;
unsigned int count;
bool State;
void IRAM_ATTR intr()
{
count++;
ptime=millis();
}
void setup()
{
Serial.begin(115200);
delay(1000);
pinMode(buzzer,OUTPUT);
pinMode(rled,INPUT);
pinMode(gled,OUTPUT);
pinMode(bled,OUTPUT);
pinMode(coinpin,INPUT_PULLUP);
digitalWrite(buzzer,LOW);
digitalWrite(rled,HIGH);
Blynk.begin(auth, ssid, pass);
digitalWrite(bled,HIGH);
attachInterrupt(digitalPinToInterrupt(coinpin), intr, FALLING);
}
void loop()
{
Blynk.run();
if(get_money())
{
totalAmount=totalAmount+amount;
amount =0;
notification=String(amount)+"/- tsh. is currently received";
Blynk.virtualWrite(V2,notification);
Blynk.virtualWrite(V0,totalAmount);
}
else
{
notification="WAITING FOR DONATION";
//Blynk.virtualWrite(V0,notification);
}
while(digitalRead(seclock))
{
notification="ATTENSION! DONATION BOX IS OPENNED";
Alert(1);
Blynk.virtualWrite(V0,notification);
}
Serial.println("total Ammount is:");
Serial.print(totalAmount);
}
BLYNK_WRITE(V0)
{
int data=param.asInt();
if(data!= totalAmount)
{
totalAmount=data;
}
}
BLYNK_WRITE(V1)
{
int data=param.asInt();
if(data!= State)
{
State=data;
}
}
bool get_money()
{
if(count==2 && millis()-ptime>=150)
{
digitalWrite(buzzer,HIGH);
count=0;
ptime=millis();
amount= 100;
Serial.print("received amount :");
Serial.println(amount);
digitalWrite(buzzer,LOW);
return HIGH;
}
else if(count==3 && millis()-ptime>=150)
{
digitalWrite(buzzer,HIGH);
count=0;
ptime=millis();
amount= 200;
Serial.print("received amount :");
Serial.println(amount);
digitalWrite(buzzer,LOW);
return HIGH;
}
else if(count==5 && millis()-ptime>=150)
{
digitalWrite(buzzer,HIGH);
count=0;
ptime=millis();
amount= 500;
Serial.print("received amount :");
Serial.println(amount);
digitalWrite(buzzer,LOW);
return HIGH;
}
else
{
return LOW;
}
}
void Alert(uint8_t num)
{
for(num;num>0;num--)
{
digitalWrite(buzzer,HIGH);
delay(1000);
digitalWrite(buzzer,LOW);
delay(500);
}
}