Setup4 - Smartboard

Le matériel

 

2 arduino MEga, ESP8266 on board avec cables USB      24,0 euro 

5 modules RFID - MFRC522                                                    7,5 euro

1 batterie 30000 mah 2 ports                                              12,0 euro

25 cables dupond                                                                    1,0 euro

 5 led +resistance                                                                     1,0 euro

Total                                                                                          45,5 euro


Commentaires

Après avoir monté le smartplayer, je pensais pouvoir réaliser le storyboard en 2 ou 3 jours.

 

J'ai ma base d’échange et de lecture de 2 lecteurs RFID, j'ai la bibliothèque de miguel balboa avec son programme pour la lecture de 5 lecteurs RFID MFRC522, donc emballé...c'est pesé.

 

Mais comme souvent avec l'arduino, nos expériences sont mises à rude épreuves et...CA NE FONCTIONNAIT PAS !!!!!

 

j'explique :

je branchais 2 RFID aliexpress, mais déjà j'avais de problèmes aléatoires de fonctionnement, et lorsque je branchais le 3 eme lecteur, plus rien ne fonctionnait.

 

Comme je ne suis pas doué en soudure, j'ai du vérifier et revérifier le fonctionnement de chaque lecteur.

Faire et refaire les câbles et tripodes permettant de relier le lecteur à l’Arduino

M'assurer de la qualité de l'alimentation électrique

Vérifier 50 fois mes branchements compte tenu du nombre de câbles, et j'ai souvent eu des erreurs de ports.

 

Au bout de 1 semaine, je me suis tourné vers les forums pour trouver ces 3 articles :

https://github.com/miguelbalboa/rfid/issues/290

 

https://forum.arduino.cc/index.php?topic=119945.0

 

http://www.learningaboutelectronics.com/Articles/Multiple-SPI-devices-to-an-arduino-microcontroller.php

 

Et comme je suis sympa je vais essayer de résumer les trucs que j'ai piqué à droite et à gauche

 

- séparer les RST et SS pin pour chaque lecteur

- effectuer un PDC.init a chaque utilisation d'un module RFID, le but et d'activer/lire/désactiver avant de passer au lecteur suivant.

- mettre un peu de delay entre certains opérations le temps que le module se réveille ou se réinitialise

- les modules aliexpress génère un bruit parasite sur le port MOSI, ce qui fait qu'au delà de 2 lecteurs, ça ne fonctionnera plus sans correction matériel ou logiciel.

 

Ce dernier point est la source de mes ennuis.

J'ai donc déjà fait pas mal d'essai avec les 3 premiers points avant de comprendre que ce ne serait pas suffisant.

il y a 2 propositions de corrections matériel :

un multiplexeur 7 ou 15 ports analogique https://github.com/mikedotalmond/Arduino-Mux-CD74HC4067

Materiel : Prix 2 euros l'unité frais d'envoi inclus

https://www.aliexpress.com/item/32724398868.html?spm=a2g0o.productlist.0.0.717a341b3bflIb&algo_pvid=1531ae01-8552-4347-a315-663c2751cd19&algo_expid=1531ae01-8552-4347-a315-663c2751cd19-14&btsid=0ab50f4915911781665022503e2beb&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_

 

 

le MUX ne peut lire qu'un port à la fois, donc il est dédié au SS_PIN dans notre cas.

 

Inutile de vous dire que je n'en avais pas sur la main.

j'ai donc chercher à savoir si je pouvais éteindre électriquement les lecteurs que je n'utilisais pas et en faisant des essais, si je passais le port RST en low, mes 3 lecteurs fonctionnaient parfaitement.

L'utilisation du PDC.init remet automatiquement le port RST à HIGH

 

Du coup je n'ai pas essayé jusqu’à 5 lecteurs sur un même MEGA parce que mes soudures étaient vraiment mauvaises.

 

Et si vous avez vouloir lire mon code, vous verrez que j'ai oublié ce qu’était une fonction pour avoir un bout de code pour chaque module, l'important c'est qu'il marche et que j'ai de la place en mémoire disponible en quantité suffisante

 

L’inconvénient, il me faut une batterie avec 2 ports USB et d'une capacité suffisante pour alimenter les 2 MEGA

 

L’esthétique est encore à travailler, mais tant que c'est fonctionnel, ça0 me permet d'avancer.

Le boitier est composé d'un carton de clavier de PC suffisamment grand.

 

Les led ( 3 bleu pour le flop) , 1 jaune pour la river, 1 jaune pour la turn permettent de suivre les premières étapes du code ( fin du setup, réception de la première trame OK pour valider la communication avec le serveur), puis elles s'allument à chaque lecture d'un tag pour un lecteur RFID.

 

Lorsque la carte 1 du flop est retiré, toutes les leds s’éteignent.

 

 

 

 


Le cablage

 

5 ports communs - MISO/MOSI/SCK,GND,3,3 V

 

Les couleurs de mon cablage ne sont pas identiques au dessin

 

 


Le code

Voici les 2 codes pour chaque arduino MEGA

 

La partie ESP reste inchangé et l'utilisation du MEGA aussi, donc pour cela se reporter au modop sur le SMARTPLAYER 4.

 

 

La partie de code du lecteur MFRC522 permettant son fonctionnement

 

dans le loop

 if( current_rfid>previous_rfid+4002)
    {   
          digitalWrite(RST_1_PIN,LOW);
          Serial.println("debug MEGA -- loop - lire rfid 1");
          lire_mfrc522_1();
          digitalWrite(RST_1_PIN,LOW);
          lire_mfrc522_2();
          digitalWrite(RST_2_PIN,LOW);
          lire_mfrc522_3();
          digitalWrite(RST_3_PIN,LOW);
          previous_rfid=millis();
    } 

 

Exemple d'une fonction, le code est simplifié. Le code complet est dans le fichier à télécharger ci contre.

 

void lire_mfrc522_2()
{
  [..]  

  Serial.println("debug MEGA ::  lire_mfrc522  - lecteur 2 ");
 
    // Look for new cards
    if (mfrc522_2.PICC_IsNewCardPresent() && mfrc522_2.PICC_ReadCardSerial())
    {
      
     // envoi vers ESP01 si different
       ajout_buffer_retry(cmdfromarduino, controle_len, 3);
          [...] 
       // evite l'envoi multiple du meme RFID sur le meme lecteur

         [...]

        // Halt PICC
      mfrc522_2.PICC_HaltA();
      // Stop encryption on PCD
      mfrc522_2.PCD_StopCrypto1();
    } //end if    
   else
   {
             [...]            
               Serial.println(" carte enlevé du lecteur 2");
      }

 

// je fais l'init en fin de procédure car cela prend 2 à 3 secondes.
   mfrc522_2.PCD_Init( SS_2_PIN , RST_2_PIN); // Init each MFRC522 card
   delay(100);
} //end lire MFRC522_2

 

 

Télécharger
smartpoker - smartboard-MEGA-1.css
Fichier Cascading Style Sheet 31.4 KB
Télécharger
smartpoker - smartboard-MEGA-2.css
Fichier Cascading Style Sheet 27.0 KB


La demo