#include <WiFi.h>
#include <SPI.h>
#include <MFRC522.h>
//#include <Firebase_ESP_Client.h>
#include <FirebaseESP32.h>
#include "addons/TokenHelper.h"
#include "addons/RTDBHelper.h"
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
#define API_KEY "AIzaSyBolGHWLA9oI03BAI-XPq3iddw-Y3iRhso"
#define DATABASE_URL "https://studentssproj-default-rtdb.firebaseio.com/"
FirebaseData fbdo;
FirebaseAuth auth;
FirebaseConfig config;
#define SS_PIN 5
#define RST_PIN 22
MFRC522 rfid(SS_PIN, RST_PIN);
int cardCount = 0;
void setup() {
Serial.begin(115200);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Connecting WiFi");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println();
Serial.println("WiFi Connected");
config.api_key = API_KEY;
config.database_url = DATABASE_URL;
config.signer.test_mode = true;
Firebase.begin(&config, &auth);
Firebase.reconnectWiFi(true);
SPI.begin();
rfid.PCD_Init();
Serial.println("Scan RFID card...");
}
void loop() {
if (!rfid.PICC_IsNewCardPresent()) return;
if (!rfid.PICC_ReadCardSerial()) return;
String cardID = "";
for (byte i = 0; i < rfid.uid.size; i++) {
cardID += String(rfid.uid.uidByte[i], HEX);
}
cardID.toUpperCase();
Serial.print("Card ID: ");
Serial.println(cardID);
cardCount++;
String path = "/cards/card" + String(cardCount);
Serial.println("path is : " + path);
if (Firebase.ready()) {
if (Firebase.setString(fbdo, path + "/card_id", cardID)) {
Serial.println("Card saved to Firebase");
} else {
Serial.println("Firebase Error");
Serial.println(fbdo.errorReason());
}
}
delay(3000);
}