Librarie PN532 erreur

YoYoYoYoYoYo,

J'ai acheté un PN532 Module Version 3 :

Mais, la librairie ne marche pas... j'en ai essayé deux mais, j'ai toujours la même erreur :
https://www.noelshack.com/2017-35-3-1504079504-capture.png

J'ai essayé :

Ce qui est bizarre, c'est que seul cette partie de la librairie ne semble pas marcher etant donné que seul cette erreur apparaît...

Quelqu'un a t'il une solution ?

A ton 103 eme post tu en es toujours à dire ; ca marche pas sans plus d'explications ?
As tu essayé les exemples de la bibliothèque, on ne devrait pas être obligé de poser cette question.

Le machin noir que tu ajouté est illisible et tu n'as pas pu ne pas t'en rendre compte.
Lien vers le module --> on n'est pas sensé tout connaitre.

PS en général les bibliothèques fonctionnent, voir plutôt ce qui se passe entre la chaise et le clavier

hello

d'après l'erreur, tu n'as pas installé la lib .
_soit sous un nom incorrect " le nom cherché est "PN532_I2C.h"
_soit pas au bon endroit

68tjs:
A ton 103 eme post tu en es toujours à dire ; ca marche pas sans plus d'explications ?
As tu essayé les exemples de la bibliothèque, on ne devrait pas être obligé de poser cette question.

Le machin noir que tu ajouté est illisible et tu n'as pas pu ne pas t'en rendre compte.
Lien vers le module --> on n'est pas sensé tout connaitre.

PS en général les bibliothèques fonctionnent, voir plutôt ce qui se passe entre la chaise et le clavier

OOOOOOO, j'apprécierais que tu me parles autrement !!!

Si je poste, c'est que je n'ai pas trouvé de solution !
Si tu avais un peu de bon sens, tu te demanderais pourquoi j'ai mis un lien au dessus du "machin noir" !

Pour le module, tu peux demander gentiment : https://dangerousthings.com/wp-content/uploads/PN532_Manual_V3-1.pdf

"voir plutôt ce qui se passe entre la chaise et le clavier" Je te prierai de retirer ceci !!!

dfgh:
hello

d'après l'erreur, tu n'as pas installé la lib .
_soit sous un nom incorrect " le nom cherché est "PN532_I2C.h"
_soit pas au bon endroit

Merci pour ta réponse (qui au moins est digne d'intérêt).
Je ne vois pas où est l'erreur...

Tout est bien normalement :?
https://image.noelshack.com/fichiers/2017/35/3/1504084616-capture.png

Que puis-je faire ?

J'ai résolu ce problème, j'ai changer la place des fichiers et, c'est bon. Néanmoins mon module n'est pas détécté. J'ai soudé les pins sur le module pour qu'il marche en I2C. Je le connecte comme dit dans le User Guide et je lance l'example iso... mais, le module n'est pas détécté...

Le message lors du téléversement est le suivant :

http://textup.fr/218779Cu

Le programme se téléverse quand même mais, le résultat donne ceci :

Hello!
Hello!
Didn't find PN53x board

Si une personne a un peu de temps a me consacré, je ne serai pas contre..

hello
c'est pourtant là

Capture.PNG

Calvin-duino:
"voir plutôt ce qui se passe entre la chaise et le clavier" Je te prierai de retirer ceci !!!

Pourtant l'erreur vient bien de là!

Il faut lire les messages renvoyés par la chaîne de compilation
Le machin noir disait que la librairie n'était pas installée

Et dans ta dernière copie d'écran il y a des warnings sur des problèmes que je qualifierais de critiques pour le bon fonctionnement du programme.

Faudrait peut-être traiter les warning concernant la taille des données: un int transformé en uint8, les décalages qui dépassent la taille des données sur lesquelles ils sont appliqués.

Concernant les messages d'erreur, l'IDE te propose de les copier il suffit ensuite de les coller dans ton message au lieu de nous obliger à aller charger une image sur un site extérieur.

Est-ce qu'un scanner I²C détecte le module?

Ce que je ne comprends pas c'est qu'il s'agit d'un programme d'exemple fourni avec la librairie...

Je ne sais pas par quel bout commencé donc ; ma première question sera :

Qu'est ce que vous entendez par un scanner i2c ? Ou en télécharger un ?

Un scanner ici

Donc non, le capteur n'est pas détécté, pourquoi ?

I2C slave scanner
   reserved adress
.  no slave detected
X  slave detected


   0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
0                          .  .  .  .  .  .  .  . 
1  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 
2  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 
3  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 
4  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 
5  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 
6  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 
7  .  .  .  .  .  .  .  .  .  .  .  . 


0 device found on the bus

Que faire ?

Après plusieurs tentatives, j'ai obtenu ceci ;

0 1 2 3 4 5 6 7 8 9 A B C D E F
0 . . . . . . . .
1 . . . . . . . . . . . . . . . .
2 . . . . X . . . . . . . . . . .
3 . . . . . . . . . . . . . . . .
4 . . . . . . . . . . . . . . . .
5 . . . . . . . . . . . . . . . .
6 . . . . . . . . . . . . . . . .
7 . . . . . . . . . . . .

1 device found on the bus

Neanmoins, le programme ne marche pas, est ce normal ?

Dans cette partie du code :

void setup(void) {
  Serial.begin(115200);
  Serial.println("Hello!");

  nfc.begin();

  uint32_t versiondata = nfc.getFirmwareVersion();
  if (! versiondata) {
    Serial.print("Didn't find PN53x board");
    while (1); // halt
  }
  
  // Got ok data, print it out!
  Serial.print("Found chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX); 
  Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC); 
  Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);
  
  // Set the max number of retry attempts to read from a card
  // This prevents us from waiting forever for a card, which is
  // the default behaviour of the PN532.
  nfc.setPassiveActivationRetries(0xFF);
  
  // configure board to read RFID tags
  nfc.SAMConfig();
    
  Serial.println("Waiting for an ISO14443A card");
}

Je suis censé avoir des lignes qui me mettent en attente de signal mais là, j'ai juste un : "Hello !"

WTF ?!

Bonjour

Quelques remarques et questions d'un gars qui n'a pas encore joué avec le PN532 .....

Concernant le bout de copie d'écran indiqué au message #3 :

  1. image tronquée qui ne permet pas de s'assurer que la librairie a été installe au bon endroit.

  2. l'initialisation I2C est effectuée à l'adresse 0x48, le scanner I2C localise, lui, un périphérique à l'adresse 0x42 (message #10)........bizarre !!

  3. Y-a-t-il quelque part (coté Arduino ou côté module) des résistances de pull-up indispensables au fonctionnement du bus I2C ?

  4. Le PN532 parait avoir plusieurs modes de fonctionnement (SPI, I2C,HSU) a-t-il bien été configuré en I2C au moyens des deux petits interrupteurs visibles en haut à droite sur le module ?

Remarque : les libraires sont souvent polyvalentes (modules voisins présentant qq différences, variantes de cartes Arduino....) il est nécessaire de bien vérifier la totale adaptation du code avec le périphérique particulier. ON n'est pas tout à fait en 'plug and play'.

Passons sur votre réponse 3 qui n'est pas appropriée... 68tjs a raison, même si ici parfois on ne prend pas trop de gants pour dire ce que l'on pense, c'est dans le cadre de "qui aime bien châtie bien" :slight_smile: - mettez cela sur le compte de la frustration de ne pas pouvoir vous aider rapidement et "move on"...


Il y a un post où j'en ai parlé et donné du code de test.. si vous remontez dans mon historique de post vous le retrouverez j'avais mis aussi une photo pour les switches

EDIT - voilà je l'ai retrouvé - je vous laisse lire pour trouver le bout de code (et voir qu'il faut les exemple en fonction du mode de communication)

Essayez en SPI

pour le mode SPI le switch 1 doit être à 0 (à gauche) et le switch 2 doit être à 1 (à droite)

et bien sûr tout doit être bien connecté:

Module <---> ARDUINO
SCK <--> 13
MISO <-->12
MOSI <--> 11
SS <--> 10
[b][color=red]Vcc <--> 3.3V[/color][/b]
GND <--> GND
IRQ <--> 2
RST0 <--> 3

Bonjour, j'ai pris votre code, connecté les broches et ajusté les interrupteurs mais, j'ai le même problème...

LECTEUR LECTEUR NDEF
Didn't find PN53x board

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 ?

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

Décrivez

  • vos librairies
  • votre environnement
  • votre code
  • vos tags

Je vous décris tout ceci ce soir

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 :

// 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 :

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 :

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 ?