Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Autres constituants d’un robot > Les circuits spécialisés > Modules de communication sans-fil > NFC sur Arduino grâce à NDEF

NFC sur Arduino grâce à NDEF

jeudi 24 avril 2014, par Julien H.

Un nouveau standard permet un accès simple aux tags NFC quelle que soit la technologie utilisée. Il s’agit de NFC Data Exchange Format (NDEF).

Pour cet atelier rapide, on utilisera une carte Arduino, une extension NFC Shield v2 de la marque Seeedstudio et des tags de différents formats fournis par IDENTIVE (Mifare Ultralight C, NTAG203, Mifare DESFire EV1). Grâce à #LeCubeMedia, on développe sur une Raspberry Pi avec l’outil en ligne de commande "inotool".

Liens utiles

 le wiki de l’extension NFC shield v2
 le code source et les explications sur NDEF

Code source

// programme de lecture d'ID NFC

#include <SPI.h>
#include <PN532_SPI.h>
#include <PN532.h>
#include <NfcAdapter.h>

// utilisation de NDEF
PN532_SPI pn532spi(SPI, 10);
NfcAdapter nfc = NfcAdapter(pn532spi);

void setup() {
        Serial.begin(9600);
        delay(3000);
        Serial.println("Test NFC !");
        //
        nfc.begin();
        //
        Serial.println("Attente d'un tag NFC");
}


void loop() {
        // on teste la présence d'un tag
        if (nfc.tagPresent()) {
                Serial.println(); // nouvelle ligne

                NfcTag tag = nfc.read(); // représentation d'un tag
                Serial.print("{\"ID\":"); // construction d'une structure JSON
                Serial.print(tag.getUidString()); // récupération de l'Uid en texte
                Serial.print("}"); // fin de la structure JSON

                Serial.println(); // nouvelle ligne
        }
        Serial.print("."); // marque d'activité
        delay(500); // attente d'1/2 seconde
}

Compilation

Rappel de l’utilisation d’inotool : une seule commande "ino" permet de lancer les différentes opérations d’initialisation d’un nouveau projet, de compilation, de téléchargement dans la carte et même de lancer un terminal série (picocom).

Le code source est dans un fichier "sketch.ino" dans un répertoire "nfc_read_ID/src" et les bibliothèques téléchargées sur GitHub sont dans un répertoire "nfc_read_ID/lib".

On peut même enchaîner les opérations avec &&.

pi@lecube ~/lecubemedia/src/arduino/nfc_read_ID $ ino build && ino upload && ino serial

Le résultat

Dans ce premier test, on observe l’affichage de l’ID dans la console série :

{"ID":"04 DD FD 12 87 2A 80"}
.......
{"ID":"04 85 74 22 0E 2A 80"}

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.