Multiples MFRC522

Buenas tardes a toda la comunidad de Arduino en español:

Permítanme presentarme: Soy una persona autodidacta que se ha metido de fondo en el mundo de la electrónica, impresión 3d y domótica hará ya unos ocho meses (desde que comenzó la pandemia, vamos). Esta pasión no nace solo del placer de aprender sino también de cara al futuro tener algún tipo de negocio basado en esto.

Y eso me lleva a mi proyecto por el cual me presento aquí con mis dudas, dispuesto a oír lo que los más y menos expertos tengan que decirme al asunto, siempre atento para aprender de vosotros.

En mi proyecto, necesito conectar 4 MFRC522(Lectores RFID) a un Arduino Nano y detectar cuando haya 4 objetos particulares (cada uno con su ID) colocados a la vez en los lectores correspondientes. Primero opté por montar el circuito en un breadboard y tras trastear durante algunos días logré hacerlo funcionar, el problema principal que encontré fue el tema de la generación de ruidos entre los diferentes dispositivos de mi circuito y su impacto en la comunicación SPI con el arduino Nano y entre ellos. Una vez solucionado este problema usando cables RJ45 Cat5 me dispuse a comenzar a aprender a diseñar PCB y plasmar mis circuitos de forma esquemática. Opté por usar Fritzing.

Tras varios intentos fallidos y tras leer mucho al respecto, logré al fin entender cómo iba el tema.
Adjunto los esquemáticos de mi proyecto.

Como podéis ver, no fue quizás el mejor proyecto para aprender de forma progresiva, sino que me forcé a aprender cosas más complejas y luego aplicarlas en cosas más pequeñas (Suelo aprender todo así, a los golpes).

El proyecto se basa en 4 MFRC522, 2 reguladores de voltaje con preset, de 12v a 5v (MP1584EN), un regulador de voltaje LM1117T a 3.3v (este se encargará de alimentar los MFRC522 y el ESP8266) , un módulo ESP8266-S1 (encargado de enviar ciertas señales a un servidor broker en mi red local), una tira de led 2812b a 5v (algo meramente estético) y finalmente, para que el cableado sea más cómodo y con menos generación de ruidos, 4 conectores rj45 tanto en el inicio de la PCB (conexiones salientes) como en el inicio de los lectores RFID. (para más referencia, mirar foto adjunta "heimdallruneserror2" y "heimdallruneserror").

Bien, fabricado el PCB y ya con él en mi casa, me dispongo a soldar los elementos. Ningún problema por aquí, excepto algún problemilla de diseño con los Jacks 2.1 y con los conectores RJ45 que tuve que soldarlos por la parte de abajo para que los pines cuadraran con los pines de cada MFRC522.

He revisado que haya conductividad en cada uno de los pines y la hay, los 7 pines usados para los lectores RFID tienen conectividad y además, VCC Y GND me dan 3.3v estables sobre el ESP8266 y los MFRC522.

Aún así, no logro hacer funcionar ninguno de los lectores cuando, como dije antes, en breadboard funcionaba a la perfección todo. Al depurar con el monitor serial no detecta el firmware de ninguno de los lectores.

Cabe destacar que soy consciente de que algunos módulos de este tipo no son tolerantes a 5v y que se suele usar un "level shifter" para que funcionen sin problemas con un pin digital de arduino. Sin embargo, estos 4 MFRC522 funcionan sin este cambio de niveles lógicos, comprobado, por lo tanto la falta de estos componentes queda descartada como fallo en este caso.

Para cada uno de los MFRC522 estoy usando un SDA, y uso como común el pin de RESET, MOSI, MISO y SCK.
El circuito tiene GND compartido en todos sus componentes.

Adjunto también proyecto de fritzing por si alguno desea mirar más profundamente.
Cualquier ayuda o consejo es bienvenido, se agradece de antemano vuestra paciencia y colaboración!

Un cordial saludo y quedando pendiente,

heimdallRunes.zip (104 KB)

Hola Nicolas
Emm. Veo que tenes dos cosas espectaculares para este proyecto (Autodidacta y la pasión por aprender).
En contra tenes por lo que leo estás solo. Eso endurece encontrar soluciones.

No logro sacar en concreto tus dudas o inquietudes, leo y vuelvo a leer y me cuesta sacar las dudas claras.

Pero releyendo tu post solo puedo decirte:

Vos escribiste:
“He revisado que haya conductividad en cada uno de los pines y la hay, los 7 pines usados para los lectores RFID tienen conectividad y además, VCC Y GND me dan 3.3v estables sobre el ESP8266 y los MFRC522.

Aún así, no logro hacer funcionar ninguno de los lectores cuando, como dije antes, en breadboard funcionaba a la perfección todo. Al depurar con el monitor serial no detecta el firmware de ninguno de los lectores."

Cuando leo esto estoy obligado a preguntarme.
.Todo estará alimentado desde la misma fuente?

.Que amperaje posee la Fuente de Alimentación?

.Habrá realizado un cálculo aprox. Del consumo de todos los componentes, Dicho de otro modo habrá realizado un esquema del circuito en base a el consumo de cada uno para saber cuántos ampers necesita?

.Tendrá vinculadas la conexiones de Gnd al compartir señales y los componentes involucrados?

.Sabrá bien acerca de los defectos y virtudes del NANO cuando hacemos un circuito de este tipo?

.Cuando hay cuatro componentes de un mismo tipo; Porqué no leo nada acerca de la comunicación I2C (Ordenando y canalizando datos de entrada).

.Sabrá el problema que existe cuando empleamos un cableado, acerca de la perdida de la señal obligándonos a emplear otros recursos (como por ejemplo. La necesidad de emplear un Transmisor de potencia)?

.Sabrá acerca del consumo del ESP8266 de acuerdo a la frecuencia en la que trabaja?

Bueno, lamento no poder serte de utilidad; pero espero de todo corazón que logres responderte a vos mismo estas dudas que me han surgido de tu proyecto. Te deseo lo mejor.

Tu conexión es SPI no I2C.

La interfaz SPI requiere 4 líneas, MOSI, MISO, SCLK o reloj y el CS o Chip Select que debe estar en HIGH para desactivar los módulos y LOW para activarlos.

Un pin por cada RC5222 debes tener como CS y cuando seleccionas un módulo lo pones en LOW y cuando no, vuelve a HIGH para deshabilitar el/los RC522 que no se consultan.
Supongo que esos pines son D2 a D5.

El siguiente problema es que esa línea debe estar con un resistor PULL-UP o sea resistor a VCC. Si la tiene en el PCB del RC522 olvídate, y solo te falta indicar y cablear una linea del NANO a cada CS.
Verifica que las líneas quedan en HIGH cuando no la seleccionas.

No me preguntes porque en el protoboard funcionaba y ahora no. Mi desagrado por ellos no me permite siquiera especular.

Solo quiero felicitarte por tu aprendizaje y por lo que has logrado incluido el PCB.
Ese fallo te aseguro que lo hemos tenido todos.

Al estilo @tauro0221 te recomendaría capacitores de desacople en cada RC522, 100nF y 10 a 22uF entre VCC y GND.

Buenas noches Humberto y surbyte,

Gracias por vuestra contestación, habéis mencionado algún que otro aspecto que quizás valía la pena revisar.

Finalmente, tras mucho testear, terminé por decidirme en repetir la soldadura de los componentes en la PCB y parece que eso lo arregló.

Cuando juegas con MFRC522 y sobre todo cuando usas bus SPI se ve que las soldaduras tienen que estar al dedillo sino todo se va al garete.

Nuevamente, gracias!

Era muy raro que algo que te funcionara bien en Protoboard no lo hiciera en PCB, pero pasa.. muchas veces el error es nuestro (del que diseña el PCB) pero bueno, no fue el caso.
Me alegro que lo resolvieras y no importa si es tonto o no la resolución del problema. Te aseguro que la próxima estarás muy atento a esto.
Los errores mi amigo se repiten muchas veces en la vida.. si sabré de errores.