diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..4f603e9 --- /dev/null +++ b/main.cpp @@ -0,0 +1,91 @@ +#include +#include +#include +#include +#include + +// --- KONFIGURACJA WIFI I API --- +const char* ssid = "TWOJA_NAZWA_WIFI"; +const char* password = "TWOJE_HASLO_WIFI"; +const String serverUrl = "http://twoja-domena.pl/check_access.php"; +const String apiKey = "MojeTajneHaslo123"; + +// --- KONFIGURACJA PINÓW --- +#define RST_PIN 22 +#define SS_PIN 5 +#define RELAY_PIN 2 // Pin przekaźnika (Brama) + +MFRC522 mfrc522(SS_PIN, RST_PIN); + +void setup() { + Serial.begin(115200); + SPI.begin(); + mfrc522.PCD_Init(); + + pinMode(RELAY_PIN, OUTPUT); + digitalWrite(RELAY_PIN, HIGH); // Stan spoczynkowy (większość modułów) + + // Połączenie z WiFi + WiFi.begin(ssid, password); + Serial.print("Łączenie z WiFi..."); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println("\nPołączono z siecią!"); + Serial.println("Gotowy do odczytu kart ELS..."); + } + + void loop() { + // Sprawdzenie czy karta jest obecna + if (!mfrc522.PICC_IsNewCardPresent() || !mfrc522.PICC_ReadCardSerial()) { + return; + } + + // Konwersja UID na String (HEX) + String uidString = ""; + for (byte i = 0; i < mfrc522.uid.size; i++) { + uidString += String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : ""); + uidString += String(mfrc522.uid.uidByte[i], HEX); + } + uidString.toUpperCase(); + + Serial.println("\n--- Wykryto kartę ---"); + Serial.println("UID: " + uidString); + + // Weryfikacja online + if (WiFi.status() == WL_CONNECTED) { + HTTPClient http; + String requestUrl = serverUrl + "?uid=" + uidString + "&key=" + apiKey; + + Serial.println("Weryfikacja w bazie danych..."); + http.begin(requestUrl); + int httpCode = http.GET(); + + if (httpCode > 0) { + String payload = http.getString(); + Serial.println("Serwer odpowiedział: " + payload); + + if (payload == "ALLOW") { + Serial.println(">>> DOSTĘP PRZYZNANY <<<"); + digitalWrite(RELAY_PIN, LOW); // Aktywacja przekaźnika + delay(2000); // Czas otwarcia bramy + digitalWrite(RELAY_PIN, HIGH); // Dezaktywacja + } else { + Serial.println(">>> DOSTĘP ODMÓWIONY <<<"); + } + } else { + Serial.printf("Błąd HTTP: %s\n", http.errorToString(httpCode).c_str()); + } + http.end(); + } else { + Serial.println("Błąd: Brak połączenia z WiFi!"); + } + + // Zatrzymanie komunikacji z kartą + mfrc522.PICC_HaltA(); + mfrc522.PCD_StopCrypto1(); + + delay(1000); // Zapobieganie wielokrotnemu odczytowi tej samej karty + } + \ No newline at end of file