Conectando el lector NFC RC522 (MF-522AN) en Arduino
Primero que nada disculpas a todos por no haber escrito estos últimos días, han sido días muy pesados en el trabajo.
La próxima semana tendré algunos días libres y aprovecharé para publicar varias entradas que me han quedado en borrador que pienso les parecerán muy interesantes.
Pueden conectar el módulo NFC como muestro en el diagrama en Fritzing a continuación:
Una pequeña nota: El módulo NFC se conecta de frente, el pin de más a la izquierda es el marcado como SDA y el de más a la derecha 3.3V. Voy a tratar de hacer la parte para Fritzing luego cuando me quede más tiempo.
El código de prueba lo pueden obtener de la siguiente dirección:
http://www.grantgibson.co.uk/blog/wp-content/uploads/2012/04/ggrfid.ino_.zip
La próxima semana tendré algunos días libres y aprovecharé para publicar varias entradas que me han quedado en borrador que pienso les parecerán muy interesantes.
Primero, hablemos un poco de Fritzing
Fritzing es una herramienta muy sencilla, fácil de usar, en donde pueden elaborar "sketchs" de sus proyectos electrónicos. Pero más que una herramienta para hacer proyectos es una interfaz rápida de publicación en línea para proyectos Open-Hardware.
Si tienes una idea de un pequeño proyecto, puedes armarla en Fritzing y publicarla directamente en línea. Una de las cosas que me gusta de este software es que pasas del Sketch al circuito a la PCB e incluso puedes ordenar la manufactura de tus PCB en línea así que la recomiendo mucho.
Podrás encontrar el vínculo de descarga al final de esta entrada.
Hablando un poco más sobre el lector NFC
Hace unos días publiqué una entrada sobre como hacer funcionar el lector NFC RC522 con la Raspberry Pi. Este módulo funciona a 3.3V así que se puede conectar directamente a la Raspberry Pi sin mayor problema.
Sin embargo, cuando uno busca información sobre este módulo en Internet el primer ejemplo con que se encuentra es un ejemplo de uso en Arduino donde conectan dicho módulo directamente al Arduino y funciona sin mayor problema.
El problema es que al revisar la hoja técnica nos encontramos con algunos parámetros importantes que hay que tomar en consideración.
Voltaje de alimentación límite
Según el fabricante, el voltaje de alimentación digital (Vdd) soporta desde -0.5 hasta +4.0V y el voltaje de trabajo de las entradas digitales soporta hasta Vdd +/- 0.5V, esto significa que alimentando el módulo con 4V podemos colocar entre 3.5V y 4.5V en un pin digital y en teoría el módulo debería de soportarlo.
El problema es que el Arduino trabaja con 5V, conectado a USB he obtenido lecturas de cerca de 4.6V y 4.7V y con una fuente externa de voltaje este se incrementa un poco más.
Este problema de voltajes se ve agravado cuando utilizamos la alimentación de 3.3V regulada por el Arduino, esto reduce el rango de voltaje de las entradas digitales desde 2.8 hasta 3.8V, con los voltajes de las salidas digitales de Arduino trabajando casi a 5V estamos superando el voltaje límite recomendado.
En otras palabras: Este es un buen ejemplo de algo que "se puede hacer" pero no "se debería hacer", al corto plazo puede que el módulo funcione bien y haga las lecturas normalmente pero al estar utilizando voltajes que superan los límites establecidos por el fabricante nada nos garantiza que al largo plazo el módulo se mantenga funcionando de manera estable o simplemente nos despertemos un día y nos demos cuenta que el módulo está dañado y ya no funciona más.
Pero entonces... ¿Qué hacemos?
La solución más sencilla es utilizar un convertidor de nivel lógico de voltaje, este pequeño circuito se encarga de regular los niveles de voltaje para evitar que dañemos el dispositivo.
El funcionamiento y la conexión es bastante sencillo, a un lado tenemos la alimentación de voltaje inferior (3.3V) y al otro lado una alimentación de 5V, el módulo tiene varias líneas de conexión (TX y RX) que permiten conectar entre sí módulos de diferentes voltajes.
El convertidor de nivel lógico de SparkFun tiene además la ventaja de que la línea TX es bi-direccional es decir puede utilizarse tanto para envío y recepción de señales, algo muy util en conexiones bi-direccionales como I2C.
De esta manera podemos utilizar módulos a 3.3V en nuestro Arduino sin miedo a dañarlos.
Pueden conectar el módulo NFC como muestro en el diagrama en Fritzing a continuación:
Una pequeña nota: El módulo NFC se conecta de frente, el pin de más a la izquierda es el marcado como SDA y el de más a la derecha 3.3V. Voy a tratar de hacer la parte para Fritzing luego cuando me quede más tiempo.
El código de prueba lo pueden obtener de la siguiente dirección:
http://www.grantgibson.co.uk/blog/wp-content/uploads/2012/04/ggrfid.ino_.zip
Concluyendo
Las hojas técnicas son sus amigas. Los fabricantes de componentes invierten mucho tiempo en determinar los parámetros óptimos de funcionamiento de los mismos. Leer las hojas técnicas nos puede ahorrar un montón de tiempo, dolores de cabeza y además nos garantiza que lo que sea que estemos armando no solo se comporte de manera predecible sino también dure por bastante tiempo.
Espero que esta entrada les sea util y no teniendo nada más que decir...
¡Hasta la próxima!
Comentarios