Aller au contenu


Photo
- - - - -

Instabilité de carte ITEAD PN532 avec le clone Arduino Uno

pn532 arduino uno nfc

  • Veuillez vous connecter pour répondre
15 réponses à ce sujet

#1 7hibault

7hibault

    Nouveau membre

  • Membres
  • 26 messages

Posté 30 mai 2022 - 12:13

Bonjour à tous,

 

Je suis sur un projet avec

- un clone Arduino Uno

- des lecteurs NFC ITEAD PN532

 

J'ai réussi à faire fonctionner ces cartes ensemble, en utilisation la librairie Adafruit PN532.

 

Le problème est que la détection des cartes NFC est instable, et dépend de l'alimentation. J'alimente l'arduino par USB. Lorsque celui-ci est connecté à une source sur secteur (PC sur secteur, batterie externe sur secteur), ça fonctionne 2/3 du temps. Lorsque celui-ci est connecté à un source hors secteur (batterie externe), l'arduino s'allume et exécute son code, mais la détection des cartes NFC ne fonctionne pas.

 

C'est-à-dire, l'exécution du code suivant affiche "Didn't find PN53x board"

nfc.begin();
uint32_t versiondata = nfc.getFirmwareVersion();
if (!versiondata) {
  Serial.print("Didn't find PN53x board");
  set_error_state();
}

J'ai également ajouté des LEDs qui s'allument en rouge lorsque cette partie du code est atteinte. C'est ce qu'il se passe lorsque le montage est alimenté par batterie externe.

 

Je suis toujours débutant en électronique et les aspects alimentation me dépassent un peu. Vous voyez quelque chose qui pourrait causer ce comportement ? On m'a dit que ça pourrait être le niveau d'alimentation des cartes NFC qui est mauvais, mais j'aimerais bien comprendre pourquoi si c'est ça, le comportement changerait en fonction de l'alimentation USB.

 

 

Le schéma ressemble à ça

 

multi_nfc_join.png

 

Dans mon montage final, j'ai 4 cartes.

 

Un code minimal de setup qui reproduit cette erreur serait

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_PN532.h>
#include <FastLED.h>

FASTLED_USING_NAMESPACE

#define DATA_PIN    9
#define LED_TYPE    WS2811
#define COLOR_ORDER RGB
#define NUM_LEDS    4
CRGB leds[NUM_LEDS];

#define BRIGHTNESS          96
#define FRAMES_PER_SECOND  120

#define N_BOARDS (4)

Adafruit_PN532 nfc_1(2, 5, 3, 4);
Adafruit_PN532 nfc_2(2, 5, 3, 6);
Adafruit_PN532 nfc_3(2, 5, 3, 7);
Adafruit_PN532 nfc_4(2, 5, 3, 8);
Adafruit_PN532 boards[N_BOARDS] = {nfc_1, nfc_2, nfc_3, nfc_4};

void setup_nfc(Adafruit_PN532 nfc, int i) {
  Serial.println((String)"Setting up board #"+i);
  delay(5000);
  nfc.begin();

  uint32_t versiondata = nfc.getFirmwareVersion();
  if (!versiondata) {
    Serial.print("Didn't find PN53x board");
    set_error_state();
  }
  // 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);
  
  // configure board to read RFID tags
  nfc.SAMConfig();
}

void set_error_state() {
  for (int i = 0; i < NUM_LEDS; i++) {
      leds[i] = CRGB::Red; 
  }
  FastLED.show(); 
  delay(1000);
  while(1); // halt
}

void setup(void) {
  Serial.begin(115200);
  while (!Serial) delay(100);

  // Setup LEDs
  FastLED.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
  FastLED.setBrightness(BRIGHTNESS);
  FastLED.clear();
  FastLED.show();

  // Setup NFC boards
  for (int i = 0; i < N_BOARDS; i++) {
    setup_nfc(boards[i], i);
  }

  delay(3000); // 3 second delay for recovery  
}

void loop(void) {
  // do stuff...
}

PS: si vous êtes sur le forum Arduino, vous verrez peut-être également mon message en anglais. Entre mes imprécisions liées au fait que je suis débutant et les pertes en traduction, je commence à avoir une impression d'illégitimité croissante à y demander de l'aide...



#2 Melmet

Melmet

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 406 messages
  • Gender:Male
  • Location:Saint-Sozy (46200)

Posté 30 mai 2022 - 06:17

C'est quoi ta batterie exterieur?

Les problemes d'alims sont le plus souvent au manque de puissance de celle-ci.


Ne demande jamais à un robot de faire ce que tu peux faire toi même. :nono: :laugh1:


#3 7hibault

7hibault

    Nouveau membre

  • Membres
  • 26 messages

Posté 30 mai 2022 - 08:27

C'est quoi ta batterie exterieur?

Les problemes d'alims sont le plus souvent au manque de puissance de celle-ci.

Merci de ta réponse. J'en ai essayé 3

  • PNY M4H4 / Output : USB 5V 2.1A 5200mAh 24Wh
  • Sony CP-V3A / Output : USB 5V 1.5A 1600mAh 8.0Wh
  • neoxeo X370H37012 / Output : USB 5.0V 1A 4400mAh


#4 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 384 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 31 mai 2022 - 01:20

tu utilises réellement une grande breadboard comme sur l'image ? Si oui vérifie bien au multimètre que tes 5V et tes GND sont bien reliés. Les grandes breadboard comme celle ci  ont des coupures au milieu. Si c'est réellement ça le problème j'en viendrais à me demander comment ça a pu marché ^^ 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 

 

Les réalisations de Mike118  

 

 

 


#5 7hibault

7hibault

    Nouveau membre

  • Membres
  • 26 messages

Posté 31 mai 2022 - 08:43

tu utilises réellement une grande breadboard comme sur l'image ? Si oui vérifie bien au multimètre que tes 5V et tes GND sont bien reliés. Les grandes breadboard comme celle ci  ont des coupures au milieu. Si c'est réellement ça le problème j'en viendrais à me demander comment ça a pu marché ^^ 

Non c'est une petite breadboard :) Celle-ci pour être précis

 

J'ai vérifié au multimètre, ça m'a l'air ok. Mais comme tu disais, ça serait étonnant que ça ait fonctionné un jour si ça avait été ça !

 

 

Petite information supplémentaire : quand je diminue le nombre de cartes, ça fonctionne avec la batterie externe

 

  • Avec 1 carte : OK
  • Avec 2 cartes : OK
  • Avec 3 cartes : OK mais pas tout le temps
  • Avec 4 cartes : KO

(dans mon montage final j'ai 4 cartes)

 

C'est quoi la différence entre alimenter via USB connecté au PC et alimenter via USB connecté à une batterie externe ?



#6 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 384 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 01 juin 2022 - 01:10

Comme ça j'ai l'impression que ta batterie externe est plus limitée en courant qu'elle peut fournir plutôt que ton PC... 

Ton PC peut éventuellement fournir du 3A en pointe alors que ton alimentation externe peut bloquer à 2A en continue ... ça m'étonne juste un peu que tu consommes autant mais je ne connais pas tes modules... si ça se trouve tu as juste des pics de consommation  ... Et c'est suffisant pour déclencher le problème...


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 

 

Les réalisations de Mike118  

 

 

 


#7 7hibault

7hibault

    Nouveau membre

  • Membres
  • 26 messages

Posté 01 juin 2022 - 10:09

Comme ça j'ai l'impression que ta batterie externe est plus limitée en courant qu'elle peut fournir plutôt que ton PC... 

Ton PC peut éventuellement fournir du 3A en pointe alors que ton alimentation externe peut bloquer à 2A en continue ... ça m'étonne juste un peu que tu consommes autant mais je ne connais pas tes modules... si ça se trouve tu as juste des pics de consommation  ... Et c'est suffisant pour déclencher le problème...

La spec des modules a l'air de dire que le courant nominal est autour de 120mA. Je sais pas combien consomme le circuit en tout (clone arduino + 4 NFC + 4 Leds + 4 moteurs), mais ça me semble pas incroyable non plus.

 

J'ai pas trop d'ordre de grandeur en tête pour la consommation du arduino et des autres composants mais ça me semble pas non plus incroyable comme consommation

 

Tu aurais des idées pour valider/invalider ça ? Et des pistes de solution ?

 

Je sais pas si ça peut marcher si je trouve un moyen d'alimenter les cartes indépendamment pour pas qu'elles s'interfèrent...?



#8 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 384 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 01 juin 2022 - 02:22

Franchement je ne sais pas ...
C'est assez curieux ... et n'ayant jamais utilisé ce produit avant ... j'ai pas plus de suggestion ... Mais en effet l'idée de surconsommation ne me paraît pas "logique" au vu de ce que c'est censé consommé ... tu peux néanmoins mettre un condensateur au niveau de chaque carte entre le GND et le 5V ... 

Autre point, bien vérifier que toutes les masses sont reliées, et qu'il n'y ait pas une boucle de masse ... 

Ou vérifier en faisant des permutation de carte pour s'assurer que c'est pas uniquement la carte N°3 ou 4 que tu ajoutes toujours en avant dernier ou en dernier qui provoque un problème et que sans celle ci tout marche toujours ... 

Après je donne ma langue au chat pour le moment.

 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 

 

Les réalisations de Mike118  

 

 

 


#9 7hibault

7hibault

    Nouveau membre

  • Membres
  • 26 messages

Posté 03 juin 2022 - 08:39

C'est des super idées, j'ai essayé plusieurs trucs mais je m'en suis pas sorti...

 

 

Franchement je ne sais pas ...
C'est assez curieux ... et n'ayant jamais utilisé ce produit avant ... j'ai pas plus de suggestion ... Mais en effet l'idée de surconsommation ne me paraît pas "logique" au vu de ce que c'est censé consommé ... tu peux néanmoins mettre un condensateur au niveau de chaque carte entre le GND et le 5V ...

 

J'ai tenté mais ça n'a rien changé :/

 

 

Autre point, bien vérifier que toutes les masses sont reliées, et qu'il n'y ait pas une boucle de masse ...

 

A priori c'est ok mais je suis pas à l'abris d'avoir loupé un truc...

 

 

Ou vérifier en faisant des permutation de carte pour s'assurer que c'est pas uniquement la carte N°3 ou 4 que tu ajoutes toujours en avant dernier ou en dernier qui provoque un problème et que sans celle ci tout marche toujours ...

J'ai fait ça et j'ai aussi essayé de remplacer certaines cartes par d'autres mais même résultat...

 

Peut-être plus bizarre encore : j'ai alimenté chaque carte individuellement avec une pile 9V + un régulateur de tension et relié les masses. Même résultat : ça marche en alimentation USB sur secteur (via PC ou adaptateur) mais pas sur batterie externe. Après j'improvise un peu donc c'est bien possible que même là j'ai fait une bêtise de câblage mais bon



#10 Melmet

Melmet

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 406 messages
  • Gender:Male
  • Location:Saint-Sozy (46200)

Posté 04 juin 2022 - 07:56

Ta batterie, tu la branche sur quel pin ou connecteur ?

Si tu la branche sur les PIN, tu dois brancher le + sur la PIN  VIN et le GND.


Ne demande jamais à un robot de faire ce que tu peux faire toi même. :nono: :laugh1:


#11 7hibault

7hibault

    Nouveau membre

  • Membres
  • 26 messages

Posté 05 juin 2022 - 05:00

Ta batterie, tu la branche sur quel pin ou connecteur ?

Si tu la branche sur les PIN, tu dois brancher le + sur la PIN  VIN et le GND.

La batterie c'est une batterie externe USB donc je la branche en USB



#12 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 5 973 messages
  • Gender:Male

Posté 05 juin 2022 - 08:34

Pourrais-tu essayer d'alimenter ton Arduino en 9V par la prise PC ?



#13 7hibault

7hibault

    Nouveau membre

  • Membres
  • 26 messages

Posté 08 juin 2022 - 02:16

Pourrais-tu essayer d'alimenter ton Arduino en 9V par la prise PC ?

Qu'entends tu par la prise PC ?



#14 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 5 973 messages
  • Gender:Male

Posté 08 juin 2022 - 08:22

Qu'entends tu par la prise PC ?

Sur l'Arduino Uno, il y a le connecteur USB et l'autre connecteur qui sert à l'alimentation. Ce connecteur est identique au connecteur d'alimentation des PC.

Désolé, j'ai dit prise, mais je voulais dire connecteur.



#15 7hibault

7hibault

    Nouveau membre

  • Membres
  • 26 messages

Posté 13 juin 2022 - 06:16

Sur l'Arduino Uno, il y a le connecteur USB et l'autre connecteur qui sert à l'alimentation. Ce connecteur est identique au connecteur d'alimentation des PC.

Désolé, j'ai dit prise, mais je voulais dire connecteur.

Pas de soucis :) Malheureusement je ne trouve pas de connecteur qui semble compatible :/

 

Je sais pas si ça aide, ou si ça répond à l'hypothèse que tu voulais tester, mais quand je branche en USB sur secteur (avec un adaptateur) ça fonctionne correctement



#16 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 5 973 messages
  • Gender:Male

Posté 13 juin 2022 - 06:50

quand je branche en USB sur secteur (avec un adaptateur) ça fonctionne correctement

Comme vous avez été plusieurs à vous pencher sur le problème, sans trouver de solution, je propose de tout mettre à plat et de commencer par le début.

C'est à dire, alimenter une Arduino Uno par son connecteur d'alimentation. Après on verra pour la suite.

N'as-tu pas une vieille alimentation de PC portable avec un . . . . . . connecteur PC ?

12V serait l'idéal, mais souvent elles sont à 19V. Cela devrait aller au vue des spécifications, mais on approche de la limite, https://store.arduin...TUxNDE5ODkuNTg.

Sinon, il y a ça, https://www.robot-ma...r pc&results=76avec une pile 9V.







0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users