#include <SPI.h>
#include <MFRC522.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266HTTPClient.h>
constexpr uint8_t RST_PIN = D3; // Configurable, see typical pin layout above
constexpr uint8_t SS_PIN = D4; // Configurable, see typical pin layout above
MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
MFRC522::MIFARE_Key key;
String tag;
void setup() {
Serial.begin(115200); //Serial connection
pinMode(D8, OUTPUT);//buzzer pin d8 set
SPI.begin(); // Init SPI bus
rfid.PCD_Init(); // Init MFRC522
WiFi.begin("iot", "12345678"); //WiFi connection
while (WiFi.status() != WL_CONNECTED) { //Wait for the WiFI connection completion
delay(500);
Serial.println("Waiting for connection");
}
}
void loop() {
if ( ! rfid.PICC_IsNewCardPresent())
return;
if (rfid.PICC_ReadCardSerial()) {
for (byte i = 0; i < 4; i++) {
tag += rfid.uid.uidByte[i];
}
Serial.println(tag);
String mainlink = "http://192.168.43.151:8080/com.schoolsecurity/Student/Test.jsp?name=";
String link = mainlink + tag;
if (WiFi.status() == WL_CONNECTED) { //Check WiFi connection status
HTTPClient http; //Declare object of class HTTPClient
http.begin(link); //Specify request destination
http.addHeader("Content-Type", "text/plain"); //Specify content-type header
http.setTimeout(20000);
int httpCode = http.POST("Message"); //Send the request
String payload = http.getString(); //Get the response payload
payload.trim();
if(httpCode > 0)
{
if(payload.equals("done"))
{
Serial.println("Access Granted!");
digitalWrite(D8, HIGH);
delay(100);
digitalWrite(D8, LOW);
delay(100);
digitalWrite(D8, HIGH);
delay(100);
digitalWrite(D8, LOW);
delay(100);
digitalWrite(D8, HIGH);
delay(100);
digitalWrite(D8, LOW);
}
else
{
Serial.println("Access Denied!");
digitalWrite(D8, HIGH);
delay(2000);
digitalWrite(D8, LOW);
}
}
else
{
Serial.print("Error code: ");
Serial.println(httpCode);
}
http.end(); //Close connection
} else {
Serial.println("Error in WiFi connection");
}
mainlink = "";
tag = "";
link = "";
rfid.PICC_HaltA();
rfid.PCD_StopCrypto1();
delay(1000);
}
}