Bonjour,
je rencontre un problème de connexion avec 2 modules SPI.
le projet fonctionne sur un MEGA 2560 pro mini.
je gère de nombreux capteurs et des actionneurs, l'interface est gérée par un NEXTION 10" l'identification est géré avec des cartes RFID le tout en réseau avec un serveur.
Jusque là tout fonctionnait très bien, une borne est en fonctionnement et tout se passe bien.
je dois maintenant lancer une production de 3 nouvelles bornes et là brutalement, se pose un problème de compatibilité entre le réseau et le capteur RFID RC522.
Alors que tout marchait bien lors des essais et des 2 premières bornes, il devient impossible de faire fonctionner les 2 modules RFID en même temps.
Dès que je raccorde le module RFID le réseau est bloqué.
Mais si j'utilise un câble très court pour le RFID les 2 fonctions marchent normalement.
Hors j'ai besoin de 30 cms de câble pour le capteur RFID et cela fonctionnait très bien sur les 2 premières.
J'utilise le même circuit imprimé et les mêmes composants.
J'ai fait des tas de tests avec le même circuit:
Un programme ne gérant que le RFID avec 30cms de cable, ça marche.
Un programme avec uniquement le réseau, ça marche. mais dès que je connecte le RFID ça bloque le programme. Même sans gestion du RFID
Pour info, j'utilise la pin 47 pour le RST des 2 modules.
La pin 53 pour le SS du réseau
La pin 39 pour le SS du RFID
Je bloque systématiquement la sortie SS non utilisée en mode HIGH et la sortie SS sollicitée en mode LOW
Après avoir rechercher des réponses, j'en arrive au fait que le module RFID ne gère pas correctement la connexion SS et pollue le MISO alors qu'il devrait ne pas tenir compte des infos transmises sur le réseau SPI.
Sur la capture écran, on voit bien que le réseau fonctionne dans le premier test et dès que je branche un module RFID il se bloque.
Je précise que j'ai tester différent modèles de RFID et que j'utilise un module W5500 pour le réseau.
Là, je bloque complètement après des tas d'essais, je n'avance pas.
Est-ce que j'oublie quelque chose ?
Est-ce que mon explication est assez claire ?
Lorsque j'aurai résolu ce problème, je propose de faire un topo précis des cette application comportant un grand nombre de modules afin d'en faire profiter la communauté.
Merci de votre aide.
Patrick
Brancher un module RFID sans l'initialiser ? pas forcément une bonne chose.
J'ai rencontré le même problème avec un W5100 et une carte µSD. La solution était : initialiser le W5100 avant la µSD, + un condensateur sur l'alimentation de la µSD.
2 RFID sur la même borne ?
Et en réduisant la vitesse SPI ?
OK, j'ai fait un petit programme de test.
je déclare le module RFID et le W5500:
//constantes SPI
#define RST_PIN 47 //Reset identique pour les 2 modules SPI
#define SS_IP 53 //blocage = HIGH pour le réseau
#define SS_RFID 39 //blocage = HIGH pour RFID
MFRC522 mfrc522(SS_RFID, RST_PIN); // Créer MFRC522 instance
EthernetClient client; //ETHERNET INSTANCE
ensuite dans le SETUP, j'initialise le W5500
Ethernet.init(SS_IP);
Toujours pareil, le réseau démarre sans le module RFID mais bloque dès que le module est raccordé, je n'arrive même pas à l'initialisation du RFID.
OK pour le condo sur l'alim, tu mettrais quelle valeur ?
Non, c'est une erreur dans le message, il n'y a qu'un RFID et un Réseau.
Réduire la vitesse SPI ?
je vais explorer cette option (après déjeuner)
bon appétit
Le condo de 10µF permettait d'éviter les échecs d'initialisation de la µSD. Il est probable que l'alimentation était un peu faiblarde (simple cordon USB). Une µSD consomme pas mal.
Cela dit, une capa de découplage sur chaque module ne fait pas de mal.
me revoilà,
j'ai testé toutes les vitesses offertes pour le SPI, aucun changement
j'ai ajouté un condo de 10µF sur l'alim du RFID, rien à faire, même avec toutes les vitesses possibles.
j'ai aussi essayé d'utiliser une alim 3.3v différente à partir du 12V principal avec une masse commune, rien à faire.
Dans chaque cas de figure le programme bloque à l'initialisation du réseau dès que la carte RFID est raccordée. J'ai essayé avec plusieurs cartes de différents modèles sans changement.
J'ai un vrai problème, ça me rend fou...
je force la sortie 51 (MISO) en OUTPUT et la pin 50 (MOSI) en INPUT.
pas de changement.
pinMode(SS_IP, OUTPUT);
pinMode(SS_RFID, OUTPUT);
pinMode(SS_RFID, OUTPUT);
pinMode(51,OUTPUT); //MOSI
pinMode(50,INPUT); //MISO
digitalWrite(SS_RFID, HIGH); //je bloque le RFID
digitalWrite(SS_IP, LOW); //j'active le réseau
J'essaierais de surveiller le signal MISO.
Dans mon cas, à l'oscilloscope la pin MISO était tirée à ZÉRO par le W5100 et empêchait la µSD de s'initialiser.
Il faudrait observer ce signal, W5100 seul, RFID seul, etc.
Mais ce qui me paraît le plus bizarre est ceci :
Je vais pas pouvoir faire ces tests, je n'ai pas d'oscillo.
Jusque là je m'appuyai sur un copain, mais depuis quelque temps il a disparu des radars !!!
Peut-être tombé amoureux.
Concernant la longueur du câble, c'est aussi ce qui me surprend le plus, d'autant que les 2 premières bornes fonctionnent très bien avec plus de 30cms.
ça ça ne marche pas.
ça, ça marche.
comprend pas...
Il y a tout de même une différence : dans le premier cas, câble blindé ? + connecteur ?
Un simple voltmètre suffit.
Brancher le W5500. MISO doit être à ZÉRO (avec un W5100 c'est le cas).
Initialiser le W5500, MISO doit remonter.
Idem pour le RFID.
Le câble noir n'est pas blindé, c'était le câble propre utilisé sur les 2 bornes précédentes.
Mais si j'utilise un câble de test plus long, j'ai le même problème.
Je vais faire les mesures de tension sur les ports MISO.
Dernière idée : échanger le matériel un à un avec une borne qui marche (câble, lecteur).
La dernière option est une excellente idée qui m'a déjà effleurée, malheureusement la borne qui fonctionne est installée chez un client et pas vraiment à côté. Ceci dit elle fonctionne très bien depuis 3 mois.
J'ai testé les tensions sur la pin MISO, et c'est bien ça, au démarrage elle est à zéro et dès l'initialisation elle monte à 5v et n'en bouge plus. (en jaune)
la PIN SS du RFID (en bleu) est également à 5 v.
On voit bien les tentatives de connexion ou je bascule de SS du RFID.
Je note que le 5 volts du MISO chute légèrement lorsque le module RFID est branché !!!
Ici sans le RFID
ici avec le RFID
Si je démarre avec le RFID branché, plus rien ne se passe le programme est bloqué sur l'initialisation réseau.
est-ce qu'une tension de 4.30 au lieu de 5 peut perturber le module WS5500 ?
Attention, je parle de la pin MISO, sinon, il est alimenté en 3.3v
Je ne vois toujours pas le rapport avec la longueur du câble.
Il faut peut-être comparer.
je vais refaire les test de tension avec différents cables
j'abandonne pour aujourd'hui.
merci beaucoup pour le temps passé et bonne soirée.
Bonjour,
depuis ce matin, j'ai tout vérifié, le circuit, les soudures...
et j'ai fait une modif sur le câblage circuit.
Sur le mega2560 mini les pin SPI peuvent être câblées de différentes manières ,
Sur les connecteurs SPI ou sur les connecteurs ICSP.
J'avais choisi la connexion sur ICSP. j'ai modifié pour raccordé le SCK sur la même borne que le RFID, sur le connecteurs SPI avec un câble plus court.
Et ça à l'air de fonctionner. le premier test est positif.
Je vais remonter la platine complète et faire des tests complet de fonctionnement.