#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 }