Skocz do zawartości

Problem z pinem MISO na nodeMCU


Pomocna odpowiedź

Nie wiem dokładnie o jaki typ folii chodzi, ale z foliami mam takie doświadczenie, że na takich urządzeniach zamontowanych na zewnątrz i narażonych na promieniowanie słoneczne, po kilku latach z tej folii wiele nie zostaje.

40 minut temu, SOYER napisał:

Nie wiem dokładnie o jaki typ folii chodzi

Takie coś do laminowania dokumentów i innych karteczek - z tego się robiło covidowe przyłbice.

41 minut temu, SOYER napisał:

po kilku latach z tej folii wiele nie zostaje

No cóż - kilka lat cienkiego szkła na zewnątrz...

W Kryrach sami kulturalni ludzie, nie walą w domofony😁. Ew. sylwestra idą od domu do domu i dzwonią. Czasami furtkę wyciągną.

 

Cześć, co jest nie tak z tym kodem, rc522 podłączone jak wpisano, nic nie zmieniałem poza deklaracjami pinów, zresztą podpięte pod domyślne HSPI. Nie czyta kart.

#include <SPI.h>
#include <MFRC522.h>

#define SCK 14
#define MISO 12
#define MOSI 13
#define SS 15
#define RST_PIN 9
 
MFRC522 rfid(SS); // Instance of the class

MFRC522::MIFARE_Key key; 

// Init array that will store new NUID 
byte nuidPICC[4];

void setup() { 
  Serial.begin(9600);
  SPI.begin(SCK, MISO, MOSI, SS); // Init SPI bus
  rfid.PCD_Init(); // Init MFRC522 

  for (byte i = 0; i < 6; i++) {
    key.keyByte[i] = 0xFF;
  }

  Serial.println(F("This code scan the MIFARE Classsic NUID."));
  Serial.print(F("Using the following key:"));
  printHex(key.keyByte, MFRC522::MF_KEY_SIZE);
}
 
void loop() {

  // Reset the loop if no new card present on the sensor/reader. This saves the entire process when idle.
  if ( ! rfid.PICC_IsNewCardPresent())
    return;

  // Verify if the NUID has been readed
  if ( ! rfid.PICC_ReadCardSerial())
    return;

  Serial.print(F("PICC type: "));
  MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
  Serial.println(rfid.PICC_GetTypeName(piccType));

  // Check is the PICC of Classic MIFARE type
  if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&  
    piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
    piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
    Serial.println(F("Your tag is not of type MIFARE Classic."));
    return;
  }

  if (rfid.uid.uidByte[0] != nuidPICC[0] || 
    rfid.uid.uidByte[1] != nuidPICC[1] || 
    rfid.uid.uidByte[2] != nuidPICC[2] || 
    rfid.uid.uidByte[3] != nuidPICC[3] ) {
    Serial.println(F("A new card has been detected."));

    // Store NUID into nuidPICC array
    for (byte i = 0; i < 4; i++) {
      nuidPICC[i] = rfid.uid.uidByte[i];
    }
   
    Serial.println(F("The NUID tag is:"));
    Serial.print(F("In hex: "));
    printHex(rfid.uid.uidByte, rfid.uid.size);
    Serial.println();
    Serial.print(F("In dec: "));
    printDec(rfid.uid.uidByte, rfid.uid.size);
    Serial.println();
  }
  else Serial.println(F("Card read previously."));

  // Halt PICC
  rfid.PICC_HaltA();

  // Stop encryption on PCD
  rfid.PCD_StopCrypto1();
}


/**
 * Helper routine to dump a byte array as hex values to Serial. 
 */
void printHex(byte *buffer, byte bufferSize) {
  for (byte i = 0; i < bufferSize; i++) {
    Serial.print(buffer[i] < 0x10 ? " 0" : " ");
    Serial.print(buffer[i], HEX);
  }
}

/**
 * Helper routine to dump a byte array as dec values to Serial.
 */
void printDec(byte *buffer, byte bufferSize) {
  for (byte i = 0; i < bufferSize; i++) {
    Serial.print(buffer[i] < 0x10 ? " 0" : " ");
    Serial.print(buffer[i], DEC);
  }
}

 

(edytowany)

Dobra, wygląda, że opanowane. Po długich i irytuąjcych nieudanych próbach, po których byłem pewny, że mam uszkodzone ESP32, znalazłem bibliotekę która obsługuje RC522 i moje ESP32. Dla  potomnych, to ta. Działa na HSPI i VSPI, działa przypisywanie pinów. Później sprawdzę, dwa rfid na jednej lini SPI i dwóch pinach SS. [EDIT] dwa czytniki rfid na tej samej magistrali HSPI też działają na tej bibliotece:).

Teraz muszę się odstresować.

Przy okazji, mam ESP32 wroom, w którym podczas wgrywania softu muszę przytrzymać BOOST, podobno da się to załatwić jakimś kondensatorem między EN i coś tam. Jak to ogarnąć, żeby nic nie uszkodzić?

Edytowano przez SOYER
32 minuty temu, SOYER napisał:

Przy okazji, mam ESP32 wroom, w którym podczas wgrywania softu muszę przytrzymać BOOST

Trochę to dziwne - stan pinu GPIO0 jest odczytywany tylko przy starcie ESP. Z koniecznością chwilowego naciskania BOOT spotkałem się kiedyś, ale to była kwestia mojego kompa (Ubuntu 18.04, coś było nie tak z driverem usb serial). A pin EN raczej nie ma z tym nic wspólnego... Możesz coś bliżej, a przede wszystkim jakiś link do tej płytki?

BTW. zerknąłem na kod wyżej, kod żywcem zerżnięty z avr-ów i avr-owymi zboczeniami typu fafnaście Serial.print zamiast normalnego printfa i zupełnie bezsensownym makrem F(). Miał pełne prawo nie działać  🙂

 

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ę »
×
×
  • Utwórz nowe...