Go Down

Topic: Librarie PN532 erreur (Read 1 time) previous topic - next topic

J-M-L

#15
Sep 03, 2017, 01:40 pm Last Edit: Sep 03, 2017, 01:42 pm by J-M-L
Quel code avez vous pris ? Le mien n'imprime pas "Didn't find PN53x board" donc je ne pense pas que ce soit celui là...

Vous avez bien la librairie Seeed-Studio PN532 et la librairie NDEF ?
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Calvin-duino

Pour info, je n'ai jamais réussi à le faire marcher...
Je vous redis mon objectif ce soir...

J-M-L

Décrivez

- vos librairies
- votre environnement
- votre code
- vos tags

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Calvin-duino

Je vous décris tout ceci ce soir

Calvin-duino

Je vous explique :

Le lecteur marche mais, pas comme je le voudrais...

En effet, je voudrais avoir toutes les informations d'une carte quand je l'a passe devant. Là, j'utilise le code :
Code: [Select]
// ATTENTION DE BIEN METTRE LES 2 SWITCHES EN POSITION SPI 1 OFF ET 2 ON

#if 1             // <<--- ON MET 1 ICI PARCE QUE ON EST EN SPI, SINON METTRE 0
#include <SPI.h>
#include <PN532_SPI.h>
#include <PN532.h>
#include <NfcAdapter.h>

PN532_SPI pn532spi(SPI, 10);
NfcAdapter nfc = NfcAdapter(pn532spi);

#define SPIMODE // POUR ETRE UTILISE DANS LE SETUP



// ---------- LES AUTRES CI DESSOUS SERONT IGNOREES ----------
// conservés ici juste pour le cas où vous voudriez changer

#elif 0             // <<--- ICI ON LAISSE 0, METTEZ 1 SI EN HSU (Serial) ET CHANGEZ L'AUTRE 1 en 0
#include <PN532_HSU.h>
#include <PN532.h>
#include <NfcAdapter.h>

PN532_HSU pn532hsu(Serial3);
NfcAdapter nfc = NfcAdapter(pn532hsu);

#elif 0             // <<--- ICI ON LAISSE 0, METTEZ 1 SI EN I2C ET CHANGEZ L'AUTRE 1 en 0
#include <Wire.h>
#include <PN532_I2C.h>
#include <PN532.h>
#include <NfcAdapter.h>

PN532_I2C pn532_i2c(Wire);
NfcAdapter nfc = NfcAdapter(pn532_i2c);
#endif
//  ---------- ---------- ---------- ---------- ---------- ----------


void setup(void) {
  Serial.begin(115200);
  Serial.println(F("LECTEUR NDEF"));

#ifdef SPIMODE
  pinMode(10, OUTPUT);
  pn532spi.wakeup();
#endif

  nfc.begin();
}

void loop(void) {
  if (nfc.tagPresent())
  {
    NfcTag tag = nfc.read();
    Serial.println(tag.getTagType());
    Serial.print(F("UID: ")); Serial.println(tag.getUidString());

    if (tag.hasNdefMessage()) // every tag won't have a message
    {

      NdefMessage message = tag.getNdefMessage();
      Serial.print(F("\nThis NFC Tag contains an NDEF Message with "));
      Serial.print(message.getRecordCount());
      Serial.print(F(" NDEF Record"));
      if (message.getRecordCount() != 1) {
        Serial.print(F("s"));
      }
      Serial.println(F("."));

      // cycle through the records, printing some info from each
      int recordCount = message.getRecordCount();
      for (int i = 0; i < recordCount; i++)
      {
        Serial.print(F("\nNDEF Record ")); Serial.println(i + 1);
        NdefRecord record = message.getRecord(i);
        // NdefRecord record = message[i]; // alternate syntax

        Serial.print(F("  TNF: ")); Serial.println(record.getTnf());
        Serial.print(F("  Type: ")); Serial.println(record.getType()); // will be "" for TNF_EMPTY

        // The TNF and Type should be used to determine how your application processes the payload
        // There's no generic processing for the payload, it's returned as a byte[]
        int payloadLength = record.getPayloadLength();
        byte payload[payloadLength];
        record.getPayload(payload);

        // Print the Hex and Printable Characters
        Serial.print(F("  Payload (HEX): "));
        PrintHexChar(payload, payloadLength);

        // Force the data into a String (might work depending on the content)
        // Real code should use smarter processing
        String payloadAsString = "";
        for (int c = 0; c < payloadLength; c++) {
          payloadAsString += (char)payload[c]; // pas eu le temps de changer, je n'aime pas les Strings!
        }
        Serial.print("  Payload (as String): ");
        Serial.println(payloadAsString);

        // id is probably blank and will return ""
        String uid = record.getId();
        if (uid != "") {
          Serial.print("  ID: "); Serial.println(uid);
        }
      }
    }
  }
  delay(3000);
}


Quand je passe le TAG ou la carte devant, j'obtiens ceci :
Code: [Select]
LECTEUR NDEF
Found chip PN532
Firmware ver. 1.6
Tag is not NDEF formatted.
Mifare Classic
UID: B2 58 8E 85
Tag is not NDEF formatted.
Mifare Classic
UID: F2 1D C5 A5


Quand à ma carte de bus, j'obtiens ceci :
Code: [Select]
LECTEUR NDEF
Found chip PN532
Firmware ver. 1.6
NFC Forum Type 2
UID: 04 36 0B BA 3F ** **

This NFC Tag contains an NDEF Message with 1 NDEF Record.

NDEF Record 1
  TNF: 0
  Type:
  Payload (HEX):   
  Payload (as String):


Est'il possible d'avoir toutes les informations de la carte ? Que se passe t'il si je mets une carte bancaire ? Puis-je vaoir toutes les informations qui lui sont liés ?



Calvin-duino

et, y a t'il de la possibilité de mettre des pins différents de 10/11/12/13 pour pouvoir y mettre un lecteur SD ? (ou alors changer les pins de ce dernier) Est-ce possible de mettre les deux sur une carte Arduino UNO ?

Artouste

Je vous explique :

Le lecteur marche mais, pas comme je le voudrais...

En effet, je voudrais avoir toutes les informations d'une carte quand je l'a passe devant. Là, j'utilise le code ...

est'il possible d'avoir toutes les informations de la carte ? Que se passe t'il si je mets une carte bancaire ? Puis-je vaoir toutes les informations qui lui sont liés ?

Bonsoir
Heureusement que non !
basiquement les dispos RFID , repondent "laconiquement avec une reponse simple" à un ATR , cela indique simplement qu'une discussion est possible/etablie.
Aprés pour avoir tous les "détails" il faut engager une discussion plus évoluée et avoir les droits pour le faire 8)




J-M-L

#22
Sep 15, 2017, 08:32 pm Last Edit: Sep 15, 2017, 08:35 pm by J-M-L
OK donc ça fonctionne bien.

Regardez les exemples fournis avec la librairie ils montrent comment lire la mémoire de vos tags (attention de ne pas faire confiance aux Mifare Classic, leur module de crypto a été cassé il y a déjà bien longtemps)

Pour les s à puces et autres gadgets c'est plus compliqué car le protocole est à deux sens (il faut parler au travers d'une API et la crypto rentre en jeu) - les deux supports vont prouver leur authenticité avant de lancer une transaction sécurisée et s'échanger des données. ce n'est pas juste de la bête lecture des secteurs.

Je n'ai pas regardé s'il y avait des librairies pour cela, demandez au GIE cartes bancaires :)



Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

J-M-L

et, y a t'il de la possibilité de mettre des pins différents de 10/11/12/13 pour pouvoir y mettre un lecteur SD ? (ou alors changer les pins de ce dernier) Est-ce possible de mettre les deux sur une carte Arduino UNO ?
On utilise le SPI....
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Calvin-duino

On utilise le SPI pour les deux ?

Code: [Select]
Aprés pour avoir tous les "détails" il faut engager une discussion plus évoluée et avoir les droits pour le faire 8)

Mais est ce possible ?

Code: [Select]
Regardez les exemples fournis avec la librairie ils montrent comment lire la mémoire de vos tags (attention de ne pas faire confiance aux Mifare Classic, leur module de crypto a été cassé il y a déjà bien longtemps)

Pour les s à puces et autres gadgets c'est plus compliqué car le protocole est à deux sens (il faut parler au travers d'une API et la crypto rentre en jeu) - les deux supports vont prouver leur authenticité avant de lancer une transaction sécurisée et s'échanger des données. ce n'est pas juste de la bête lecture des secteurs.

Je n'ai pas regardé s'il y avait des librairies pour cela, demandez au GIE cartes bancaires :)


J'ai bien peur de ne pas tout comprendre...
Si je lis la mémoire des tags, j'ai toutes les informations ?
Pour les cartes bancaires, je n'ai pas compris ce que vous disiez ...

J-M-L

Faut bosser les bases et oubliez le hacking de cartes bancaires... contentez vous de jouer avec des cartes mifare de base
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Artouste

Si je lis la mémoire des tags, j'ai toutes les informations ?
Pour les cartes bancaires, je n'ai pas compris ce que vous disiez ...
8)

"Comparaison n'est pas raison" ;)

Mais ce n'est pas parce que je connais une personne que je vais lui donner  mes clefs pour rentrer chez moi ! :smiley-twist:

J-M-L

Vous ne pouvez "lire" les tags que s'ils veulent bien vous donner l'information
Pour y accéder il faut dialoguer avec la puce suivant un protocole normé sécurisé
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Calvin-duino

Merci beaucoup de votre aide, j'ai encore deux questions :
Pour détecter mon badge je suis obligé de le colle, y a t'il un moyen d'améliorer la porte (en faisant une antenne peut etre, de la manière d'un emetteur/récepteur 433mHz) ?

Et théoriquement, le sans contact des cartes fonctionne en NFC, est ce compatible avec le module ?

J-M-L

Pas avec ce système - le N de NFC ça veut dire NEAR c'est à dire "proche"

Il y a moyen de faire du RFID à distance mais c'est plus compliqué

Modifier une antenne n'est pas une chose aisée
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Go Up