merinum Napisano Luty 12, 2023 Udostępnij Napisano Luty 12, 2023 (edytowany) witam szanowni Państwo, Staram się połączyć na ESP8266 czytnik mikro SD oraz czytnika RFID PN532 po SPI i napotykam na nierozwiązywalny dla mnie problem - po zainstalowaniu wszystkich bibliotek zarówno dla czytnika SD jak i RFID wszystko się instaluje poprawnie: jest informacja o poprawnej inicjalizacji obu urządzeń, wtedy mogę bez problemu skanować i odczytywać dane z RFID skanując kartę, ale w momencie, w którym odznaczę zahaszowane pola dotyczące odczytu z karty pewnych danych ("pobieranie danych z karty SD") to odczyt z SD się realizuje, ale niestety później nie ma już opcji by czytnik RFID działał, czy możecie mnie naprowadzić jak rozwiązać ten problem bo walczę z tym już któryś dzień i nic sensownego nie wymyśliłem. z góry dziekuje za pomoc, poniżej kod: #include <SPI.h> #include <SD.h> #include <PN532_SPI.h> #include "PN532.h" #define SD_PIN D3 PN532_SPI pn532spi(SPI, D4); //było 10 PN532 nfc(pn532spi); File myFile; char c[59]; int i = 0; int znaki = 59; char zerowanie; String sd_server_token = ""; String server_token = ""; void setup() { // Inicjalizacja portu szeregowego Serial.begin(115200); delay(1000); // Inicjalizacja czytnika SD if (!SD.begin(SD_PIN)) { Serial.println("SD initialization failed!"); while (1); } else { Serial.println("SD initialization done."); } // Inicjalizacja czytnika NFC nfc.begin(); uint32_t versiondata = nfc.getFirmwareVersion(); if (!versiondata) { Serial.print("PN532 initialization failed!"); while (1); } else { Serial.println("PN532 initialization done."); } // Konfiguracja modulu do odczytu znacznikow RFID nfc.SAMConfig(); // //pobieranie danych z karty SD // digitalWrite(SD_PIN, LOW); // if (SD.exists("server_token.txt")) { // myFile = SD.open("server_token.txt"); // if (myFile) { // while (myFile.available()) { // c[i] = myFile.read(); // i++; // } // myFile.close(); // sd_server_token = c; // sd_server_token.trim(); // server_token = sd_server_token; // Serial.print("sd_server_token: "); // Serial.println(sd_server_token); // for (int i = 0; i < znaki; i++) { // c[i] = zerowanie; // } // i = 0; // } // } // digitalWrite(SD_PIN, HIGH); // //pobieranie danych z karty SD Serial.println("Oczekiwanie na kartę RFID..."); } void loop() { // Status uint8_t success; // Bufor przechowujacy unikatowy identyfikator uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 }; // Dlugosc unikatowego identyfikatora. uint8_t uidLength; // Proba odczytania znacznika success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength); // Jesli sukces odczytu if (success) { // wyswietlenie unikatowego identyfikatora Serial.print("UID: "); nfc.PrintHex(uid, uidLength); // wyswietlenie typu znacznika if (uidLength == 4) { uint8_t keya[6] = { 0xD3, 0xF7, 0xD3, 0xF7, 0xD3, 0xF7 }; int kod_int[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; String kod_string = ""; int kod_length = 0; uint8_t data1[16]; uint8_t data2[16]; success = nfc.mifareclassic_AuthenticateBlock(uid, uidLength, 4, 0, keya); if (success) { success = nfc.mifareclassic_ReadDataBlock(4, data1); success = nfc.mifareclassic_AuthenticateBlock(uid, uidLength, 5, 0, keya); success = nfc.mifareclassic_ReadDataBlock(5, data2); for (int i = 11; i < 16; i++) { kod_int[i - 11] = data1[i] - 48; } for (int i = 0; i < 4; i++) { kod_int[i + 5] = data2[i] - 48; } for (int i = 0; i < 9; i++) { kod_string += kod_int[i]; } kod_length = kod_string.length(); if (kod_length == 9) { nfc.PrintHexChar(data1, 16); nfc.PrintHexChar(data2, 16); Serial.print("ilość znaków kodu: "); Serial.println(kod_length); Serial.print("numer karty NFC: "); Serial.println(kod_string); } else { Serial.println("karta ma niewłaściwy format"); } } else { Serial.println("karta jest sformatowana"); } } } delay(1000); } Edytowano Luty 12, 2023 przez merinum Link do komentarza Share on other sites More sharing options...
Zakrzewiaczek Luty 19, 2023 Udostępnij Luty 19, 2023 Zmień przy pinMode z D4 na 4 (estetyka). Nie widzę polecenia SD.close(); po każdej sesji odczytywania sesja z kartą musi być tym poleceniem zakończona. Sprawdź, czy karta SD działa( i lepiej jak jest sformatowana na fat) Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »