Affichage numéro puce RFID sur afficheur TM1637

Bonjour à toutes et à tous !

J'ai un projet qui va bientôt voir le jour et j'aimerai avoir un retour de vos avis éclairés sur le sujet car je suis encore un peu novice.

Je dois mettre en place un lecteur de badge RFID, qui affiche un numéro unique à chaque badge allant de 1 à 70. Je vais avoir à ma disposition 70 badges qui doivent avoir chacun leur propre numéro.

Pour cela, je compte acquérir un arduino uno avec un module RC522 et un afficheur TM1637 (pour afficher le numéro du badge présenté).
Le problème est que je ne sais pas si je dois renommer chaque badge pour "juste" faire lire le numéro à mon afficheur ou si je dois laisser les infos des mes badges intacts et mapper chaque UID à un nombre allant de 1 à 70 (ça ne vas pas faire une programmation trop longue et laborieuse à mon arduino ?) ou si vous avez d'autres idées ?

Merci d'avance de vos réponses, je suis bien évidemment également preneur si vous avez d'autres idées que les miennes pour résoudre mon problème. Je ne sais pas si je fais le bon choix de module et de boards (j'ai pensé au UNO par défaut).

Merci !

La UNO n'est pas la carte parfait pour ça. Je te conseillerai plus une NANO ou une pro mini. Le RC522 est parfait pour le job, je ne sais même pas si il en existe d'autre. Pour ce qui est de la manière d'attribuer un chiffre a chaque badge, il me semble que lire un badge est beaucoup plus facile que écrire dessus, mais c'est à ça que j'aurai pensé en premier. Après, si l'option est trop complexe a mettre en œuvre, je doute que tu sois gêner par la taille de l'espace de stockage de programme :wink: Mais il y a sur ce forum des personnes bien plus qualifié(e)s que moi pour cette question. Je ne connais pas cet écran TM1637, mais je vais chercher. Sur cette vidéo, il dit que écrire sur le badge est très difficile : TRONIK AVENTUR 279 - RFID : C'EST QUOI - INITIATION avec ARDUINO - YouTube

Cordialement
Pandaroux007

Tu ne pourras pas modifier l'UID du badge, sauf à disposer de badges très spéciaux.
Tout ce que tu peux faire est programmer un numéro utilisateur dans un bloc de données du badge. Mais cela en vaut-il la peine ?
Il suffit d'adopter un tableau associant un numéro à chaque UID :


struct userUid {
    uint32_t uid;
    uint8_t  userId;
};
const struct userUid myIds[] = {
    0x55A185E9, 1,
    0x55A185EA, 2,
    0x55A185EB, 3,
    0x55A185EC, 4,
    // etc.
};

size_t nCards = sizeof(myIds) / sizeof(myIds[0]);

uint8_t cardUserId(uint32_t uid)
{
  uint8_t userId = 0;
  for (int i ; i < nCards ; i++) {
    if (myIds[i].uid == uid) {
      userId = myIds[i].userId;
      break;
    }
  }
  return userId;
}

Il suffit de savoir faire une boucle sur un tableau de structures.

EDIT : j'ai ajouté une fonction de recherche. Elle retourne ZÉRO si l'uid est inconnu.

Bonjour gmsplinter

Je serai plutôt pour cette version, tu mets les UID des cartes autorisées dans un tableau, qui te permettra de convertir l'UID en un index de la carte et, ainsi, l'afficher sur l'affichage qui ne nécessitera que, au maximum, 2 à 3 digits. L'affichage de l'index sera plus parlant qu'un UID.
L'avantage est que si tu ajoutes ou changes une carte, il te suffit d'intervenir dans le tableau.

Cordialement
jpbbricole

Bonjour pandaroux007

Et pourquoi?
Pour moi, la Nano est la moins pratique des cartes, c'est une "fausse petite", pour être opérationnelle, il faut ajouter plein de trucs autour. Une UNO avec un shield de développement est beaucoup plus pratique.

Cordialement
jpbbricole

C'est vrai, mais le format n'ai pas super-super. Je l'utilise plutôt pour les testes avec platine d'essais :wink: Quand je dis que la uno et moins bien que la nano ou la pro mini, je fais référence :

  • a la taille
  • au faite que les pins sont prévues pour des fils duponds, ( je sais pas si ça s'écrie comme ça... ) et que pour tous désouder et mettre d'autres pins plus pratiques, c'est long et pénible ( je parle d'experience :roll_eyes: )

Edit : merci pour le lien :grin:

Pour ma part la UNO impose des fils DUPONT. Ce n'est pas le cas d'une NANO, que l'on peut souder sur une plaquette à pastilles, pour une réalisation fiable et moins encombrante:


Sur cette photo on voit un RC522, relé à la carte principale à l'aide d'une nappe de 7 fils et deux connecteurs DUPONT 8 broches. Cela fait un peu plus sérieux que 7 fils DUPONT unitaires.

Il faudrait préciser, car à part le format du µcontrôleur CMS au lieu de DIL, je ne vois pas de différence, mis à part que la NANO possède deux entrées A6 A7 que la UNO n'a pas.

Bonjour pandaroux007

Non il ne faut pas aller jusque là, faut être maso :wink:,
J'utilise essentiellement ce type de protoshield,
image
qui sont livrés avec les 2 types de connecteurs.
L'avantage du UNO est que tu as la partie alimentation incluse (jack) qui peut subvenir, le plus souvent, à tes besoins de 5V.

Cordialement
jpbbricole

JACK ou VIN, c'est du kifkif, et VIN existe aussi sur NANO, et le régulateur 5V est le même, donc ...
Une NANO est parfaitement soudable sur une plaquette à pastilles, avec d'autres composants, et dans ce cas, par rapport à une UNO+shield, cela revient au même, sauf que l'on peut souder une NANO sur une grande plaquette à pastilles si besoin :


Imagine que tu doives placer tous ces composants sur un protoshield, tu fais comment ?

Oui, c'est surtout sur la taille que la Uno est problématique. Mais si la taille de la carte n'est pas un problème pour @gmsplinter , alors je ne voie pas l’intérêt de la changer... Mais perso, je partirai plus sur une Nano ( c'est ma préférer ) :grin: Mais il me semble que le sujet de base, c'était le problème de renommer chaque badge, ce qui, d'après le post #3 de @hbachetti est presque impossible a ton échelle. Donc je partirai plus sur le faite de donner un numéro a chaque badge. Comme dit plus haut, la taille de l'espace de stockage de programme ne sera pas un problème :wink:

:star_struck:
trop bien comme réalisation ! Vous pourriez poster le code, que je teste chez moi ?

Tout est ici :

Voir paragraphe Téléchargements

Ok, merci beaucoup ! :grin:

OK. Toutes ces remarques concernant le hardware ne résolvent pas le problème initial de gmsplinter, qui pourrait donner des nouvelles, et en particulier dire s'il a compris la solution proposée, à base de tableau.

Bonjour à tous, tout d'abord merci pour vos réponses c'est super agréable et appréciable.

En effet j'ai cru comprendre que c'était très laborieux de modifier les numéros utilisateurs et merci pour le tableau. Mais avec cette méthode les numéros affectés à chaque badge ne vont pas changés à chaque redémarrage ?

Sinon j'ai compris ton code mis à part la partie "nCards", le
"size_t nCards = sizeof(myIds) / sizeof(myIds[0]);" est censé stopper le tableau lorsque le nombre de badge est atteint ?

et je dois déclarer chaque const struct id ?

Sinon coté hardware je pense finalement partir sur un nano au vu des retours, ça ne changera pas les numéros de pin pour le RC522 par rapport au UNO ?

Merci !

Tu aurais la réf de cette plaquette ? et tu peux envoyer une photo de l'autre côté de la plaquette pour que je comprenne le fonctionnement ?
Merci

Le tableau est déclaré const, c'est à dire non modifiable.

nCards représente le nombre de lignes dans le tableau.

Aucune différence.

C'est un PCB personnel, dessiné et gravé par moi-même. Voir #12.

Sinon, la carte du #9 est standard (plaquette à pastilles).

Voici le dessous :

Les fils fins sont du fil à wrapper.
Il faut un fer à souder à pointe fine bien sûr.

Il faudrait en dire plus sur ton projet. Il est rare que l'on associe un ARDUINO + un RC522 sans rien d'autre.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.