Go Down

Topic: ARDUINO NANO + NFC  (Read 759 times) previous topic - next topic

MikaJoker

Bonjour tout le monde,

J'aimerais savoir avec quels matériels est-ce que je pourrais faire exactement..

Je n'ai pas de poste à soudé.

Voici les composants que j'ai trouver :
                                                 
PUCE NFC : https://www.amazon.fr/gp/product/B00M5PC0FG/ref=s9u_simh_gw_i1?ie=UTF8&pd_rd_i=B00M5PC0FG&pd_rd_r=S38D72NBTG4AMRXGAZ11&pd_rd_w=gyNi1&pd_rd_wg=JWg8R&pf_rd_m=A1X6FK5RDHNB96&pf_rd_s=&pf_rd_r=G101Y706S8BDVQ0PNNJ8&pf_rd_t=36701&pf_rd_p=0b859718-c367-4193-9234-547be923bc0a&pf_rd_i=desktop

LECTEUR ARDUINO NFC : je ne sais pas lequel prendre, j'aimerais le faire fonctionner avec un Arduino Nano.

D'avance, merci .

Mickael





J-M-L

#1
Jul 15, 2017, 10:11 am Last Edit: Jul 15, 2017, 10:48 am by J-M-L
Pour le lecteur prenez un shield à base de PN532 (la version 3 du Kit Module Lecteur Graveur V3 NXP PN532 NFC fonctionne au moins en mode série rapide, je me souviens avoir eu des soucis en I2C avec la librairie de base (supporte I2C, SPI et HSU (High Speed UART))

Votre soucis sera sans doute qu'il y aura un peu de soudure à  faire pour mettre les pins qui ne sont généralement pas montées

Il y a des petits kit de fer à  souder pas très cher (15 à 25 euros) pour de l'occasionnel sur des pins ou fils par exemple
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

MikaJoker

Re,

J'ai acheter le fer à souder le lecteur NFC en question, j'ai mon Arduino nano, et un FTDI juste au cas ou mais je ne sais pas comment faire fonctionner tout ça !

Ce projet me tiens vraiment à cœur.

D'avance, merci

J-M-L

#3
Jul 26, 2017, 12:24 am Last Edit: Jul 26, 2017, 12:24 am by J-M-L
Connectez le PN532 en SPI par exemple (réglez les switchs comme il faut)

Explorez les exemples de cette librairie NDEF en installant  bien sûr la librairie PN532

Dans les exemples au début du code il faut modifier un des ifdef pour choisir votre connexion SPI
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

MikaJoker

Merci pour votre réponse, je pense avoir compris ce dont vous parlez pour les librairie mais je ne comprends pas le terme "switchs".

Merci, encore.

J-M-L

#5
Jul 26, 2017, 07:25 pm Last Edit: Jul 26, 2017, 08:43 pm by J-M-L
les switches sont les petits interrupteurs placés sur votre carte. il y en a 2, que vous devez configurer en fonction du protocole de communication retenu entre votre carte et l'arduino



Si vous les avez à 0FF OFF vous discutez en HSU (port série), ON OFF en I2C et OFF ON en SPI (ils sont recouverts d'un petit bout de scotch transparent à enlever)
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

MikaJoker

Merci pour tes réponses imagées, qui sont très clair, j'ai fais quelques teste de branchements et je pense avoir grillé le module car je l'ai branché sur du 5v au lieu du 3.3v.

Pourrais-tu m'en dire un peu plus sur les branchements ?

Et merci encore pour ton aide précieuse.

Bien cordialement.

J-M-L

#7
Aug 06, 2017, 12:03 am Last Edit: Aug 06, 2017, 10:37 am by J-M-L
Quote
j'ai fait quelques tests de branchements et je pense avoir grillé le module car je l'ai branché sur du 5v au lieu du 3.3v.
Je ne pense pas le module est résistant

le Serial ou le I2C se fait en 5V et le SPI en 3.3V

Quelle mode de communication avez vous essayé?

Par exemple vous pourriez connecter la partie à 8 pins (en supposant que votre nano est un ATmega328P à 16MHz)

Module <---> ARDUINO
SCK <--> 13
MISO <-->12
MOSI <--> 11
SS <--> 10
Vcc <--> 3.3V
GND <--> GND
IRQ <--> 2
RST0 <--> 3


(au fait la doc du nano dit que le SPI n'est pas implementé mais c'est un bug de la doc qui n'a pas été mise à jour depuis 2008)


et pour lire un tag voici un code qui devrait fonctionner si vous avez installé les librairies listées plus haut dans le post #3

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);
}


(tiré des exemples et légèrement modifié pour les commentaires et F() de ReadTagExtended)
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

MikaJoker

Bonjour et merci pour le code et les branchements, ça peut être utile , j'ai acheter le nouveau module sur le site : https://www.sunfounder.com/modules/communication/rfid/pn532-nfc.html

Je ne vois aucune informations sur le moniteur. ( combien de Baud ? lecture écriture ? )

J-M-L

#9
Aug 19, 2017, 10:32 pm Last Edit: Aug 19, 2017, 10:35 pm by J-M-L
Je ne vois aucune informations sur le moniteur. ( combien de Baud ? lecture écriture ? )
c'est dans le code ;)

Code: [Select]
void setup(void) {
  Serial.begin(115200);


donc on parle au port série à 115200 bauds

attention votre tag fourni doit sans doute être du Mifare 1k classic donc pas formaté en NDEF et pas compatible avec les smartphones (si d'aventure vous vouliez l'utiliser avec votre tel aussi)
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

MikaJoker

Merci pour vosinformations aussi simples soit-elles, je vois à présent un peu plus clair :

LECTEUR NDEF
Didn't find PN53x board
( donc apparemment il ne trouve pas le module NFC )


voici un schéma que j'ai fais de mon branchement
 

http://imagizer.imageshack.us/a/img924/2913/thl7zk.png

Merci beaucoup pour votre aide !

J-M-L

#11
Aug 21, 2017, 10:00 am Last Edit: Aug 21, 2017, 10:08 am by J-M-L
avez vous pensé à régler les fameux switches sur le mode SPI ?

c'est le contraire des switch de ma photo du post #5 (qui est en I2C)

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
Vcc <--> 3.3V
GND <--> GND
IRQ <--> 2
RST0 <--> 3



Pour moi ça fonctionne sur un UNO. je n'ai pas testé sur le Nano. la différence peut éventuellement provenir de l'intensité max dispo sur la broche 3.3v de votre Nano. Normalement le 3.3V du Nano provient du composant FT232 et seulement 50mA sont dispos mais ça devrait être suffisant.

Est-ce que vous avez un "vrai" nano ? éventuellement alimenter le module en 3.3V séparément de la carte et joignez les GND pour vous assurer que le problème ne vient pas de là

Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

MikaJoker

Merci, pour vos informations très utiles, j'en prend noteet je pense acheter un Arduino 2560 pour bien commencer et si tout se passe bien, je passerais au Arduino nano officiel et on verra ce qu'il se passe.

Je tiens le post informé

Encore merci, pour vos informations et votre temps.

Cordialement Mickael

MikaJoker

Bonjour tout le monde,

Après quelques essaie avec les nouveaux composants

NFC - https://www.sunfounder.com/pn532-nfc.html
NANO - https://www.sunfounder.com/sunfounder-nano-v4-0-for-arduino.html

( ils sont un peu plus cher que d'autre modèle, mais ça a marché du premier coups )

Voici une photo un schéma des connexions sur les composants.





Maintenant J'aimerais essayer de connecter un module wifi ou ethernet en plus du NFC, est-ce possible ? si oui comment ? d'avance merci.

J-M-L

Quote
Maintenant J'aimerais essayer de connecter un module wifi ou ethernet en plus du NFC, est-ce possible ? si oui comment ? d'avance merci.
oui  il vous faut un composant pour vous connecter. par exemple un shield wifi, un ESP-01 ou mieux et vous utilisez le port série pour parler à ce composant (il y a des librairies pour vous simplifier la vie)
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

Go Up