Placa Prototipo

En un proyecto tan complicado como este, es necesario disponer de una placa inicial, con el diseño lo más pulido posible para, a partir de ella, terminar de diseñar y ajustar los detalles del hardware.

Es muy probable que haya fallos en los "footprint" de los componentes, ya que he tenido que dibujar o retocar la mayoría de ellos. El mayor peligro es que a veces, los fabricantes te muestran el "footprint" del componente visto desde arriba, y otras, visto desde abajo, por lo que si no pones mucha atención, en alguno de ellos las posiciones de los "pad" de soldadura quedarán situados en la posición simétrica a la que en realidad le corresponde.






Placa prototipo, antes de montar los componentes.

Ajuste del módulo de mando.

Una vez montados los componentes que pertenecen a la zona de mando, comienzo a probar y ajustar cada uno de los módulos de control que voy a utilizar:

  • Escritura/Lectura en memoria Flash.
  • Activar/leer entradas digitales.
  • Bus I2C
  • Bus SPI
  • Bus Serie
  • Conexión Bluetooth
  • Conectividad NFC
  • JTAG
  • Carga de programas a través de mini-USB
  • Mando a través de pantalla táctil.
  • etc...

Detalle de algunos elementos que iremos empleando a lo largo del proyecto.

Aunque yo tenga debilidad por el depuerador de Keil, también voy a emplear el propio de ST Microelectronics. La razón es que los microcontroladores STM32 gestionan el pin de reset de JTAG de forma que hay alguna incompatibilidad con cómo trabaja Keil, que creo que es la referencia en este asunto.

Debido a ello, para que el depurador de Keil funcione correctamente, su pin de reset ha de ir conectado al del chip, y no es suficiente con conectarlo al pin específico de la entrada JTAG. Debido a ello, uando empleemos el depurador de Keil, se producirán ciertas limitaciones de depuración, pues un reset durante el "debug" conllevará un reset hardware completo, y no será simplemente un reset software en caliente.

Para adquirir estos depuradores, podéis buscar en la web:

http://www.aliexpress.com

introduciendo las palabras clave "keil ULINK 2" o "ST-Link/V2" y os aparacerán precios desde 10-20€ en adelante.

Depurador/cargador de programas "ULINK 2", de Keil

Depurador/cargador de programas "ST-Link/V2", de ST Microelectronics

Módulos Bluetooth de Roving Networks (ahora Microchip) modelos RN-41 y RN-42, usados en este proyecto.

Analizador de Señales "Saleae Logic", muy útil a la hora de depurar errores en los buses Serie, I2C y SPI

Convertidores de continua, para las tensiones de mando.

Uno de los primeros problemas a resolver, es decidir cómo será el sistema de alimentación. Es un tema bastante trascendente, porque los convertidores de continua son componentes que encarecen mucho la placa.

Hubo que tener en cuenta varios factores:

  • Margen de tensión de alimentación que admitirá la placa.
  • Esquema de uso de los convertidores de continua.

Como regla general, los sistemas destinados a equipos semi-profesionales, emplean una tensión de alimentación de 24v, y a veces, de 48v. Esto ocasiona que muchos equipos destinados a trabajar con una tensión, no sirvan para hacerlo con la otra, debido a la necesidad de seleccionar componentes de coste ajustado.

en esta placa, vamos a saltarnos esa limitación, empleando componentes capaces de trabajar desde 18v hasta 75v.

Por otro lado:

Teniendo en cuenta que vamos a necesitar 3,3v y 5v, una posibilidad era incluir un convertidor de continua desde la tensión de alimentación, hasta 5v, y de ahí, con un pequeño regulador, obtener 3,3v.

Otra posibilidad era obtener primero los 3,3v con un convertidor de gran calidad, y de ahí utilizar un elevador a 5v. En nuestra placa esto tiene la ventaja de obtenerse una tensión de alimentación de 3,3v muy limpia, para el microcontrolador, la antena NFC y el módulo Bluetooth, que forman el corazón del sistema de control, mientras que los 5v solo son necesarios para la conexión micro-USB OTG (On-The-Go) cuando trabaja como Máster, o para alimentar la(s) pantalla(s) táctil(es) que se prevén como algo opcional.

Finalmente opté por esta opción, para lo que empleé un convertidor de continua Traco Power, capaz de aceptar una tensión de entrada de entre 18v y 75v y entregar a la salida 3,3v constantes.

A esta salida se conecta otro convertidor-elevador, de Traco Power, para obtener los 5v auxiliares.





Testeando las diferentes tensiones de alimentación empleada en la placa (+5v, +3,3v)

Ajuste del Bus I2C

Mi primer objetivo fue logar que el sistema de mando tuviera algún tipo de conectividad con el exterior, de forma que la depuración resultara menos penosa. Para lograrlo, enseguida me focalicé en conseguir poner en funcionamiento el bus I2C, ya que me permitiría conectar el microcontrolador a una pantalla táctil, que ya tenía en funcionamiento, gracias al proyecto del control para mesa giratoria. Además, la antena NFC también se conecta al microcontrolador a través del bus I2C así que también me serviría para avanzar en la puesta en marcha de este modulo.

El ajuste del bus I2C lo realicé utilizando la depuración tradicional basada en la conexión JTAG de la que disponen todos estos microcontroladores. También necesité el analizador de señales para comprobar si lo que se enviaba por el hilo de datos (SDA) del bus, era correcto, o no.

Uso del analizador de señales, para visualizar lo que se envía por el bus. En este caso, se envía el valor 0x0002 en el Registro de control de la antena NFC, para habilitarla.

Por ejemplo, el analizador de señales me fue muy útil durante la puesta en marcha de la antena NFC. La escritura en los registros de 16 bits usados como registros de configuración del transponder NFC me daba resultados erróneos.

Después de muchas pruebas, pregunté al fabricante si me podía enviar la traza I2C de escritura de un determinado registro, con el valor 0x01.

Al cotejar el gráfico del hilo SDA de mi escritura y la escritura correcta que me envió Texas Instruments, vi cuál era el problema: Yo estaba escribiendo 8 bits, y a continuación otro ciclo de escritura de los restantes 8 bits, que completaban el registro. Pero la forma correcta de hacerlo era escribir los 16 bits del registro como si fuera un buffer continuo, antes de cerrar la comunicación I2C.





Verificando el bus I2C en modo Slave y su correcto acoplamiento a la pantalla táctil de mando.

Ajuste de la Funcionalidad NFC

Esta parte me ha llevado muchísimo tiempo. El motivo es que involucra a casi todos los módulos del sistema de control.

Al conectar la alimentación, el microcontrolador, a través del bus serie (UART) ha de activar el modo "AT" del módulo Bluetooth, para así poder enviarle comandos administrativos, y obtener su dirección MAC y su nombre.

Con esta información, el microcontrolador ha de construir un mensaje NDEF y escribirlo, a través del bus I2C, en el Transponder de la antena NFC.

Para saber si esto está funcionando correctamente, necesitamos una aplicación Android que sea capaz de activarse cuando el móvil encuentra un mensaje NDEF, que lo lea, lo decodifique, y use la MAC recibida para establecer una conexión directa (sin cifrar) con el módulo Bluetooth de la placa de control.

Como vemos, ha sido necesario poner en funcionamiento y comprender: Bus Serie, Bus I2C, Estudiar el módulo Bluetooth, su conexionado y modo Administrativo, estudiar cómo son los mensajes NDEF, estudiar el hardware de la antena NFC y cómo se configura y se escribe un mensaje NDEF en el transponder, y claro, estudiar Android y su API para el diseño de aplicaciones que hagan uso la funcionalidad NFC.




Pruebas y ajuste de NFC.

En la imagen se aprecia una antena NFC montada sobre un soporte en pinza.

También un móvil NFC, un JTAG de ST microelectronics, y un analizador de señales.

NFC y acceso automático a la instalación de la aplicación Android de control.

A continuación se muestra sobre cómo, con un poco de esfuerzo de programación en el sistema de control y en la aplicación Android, es posible automatizar completamente el proceso de puesta en marcha del conjunto.

Al acercar un tablet a la antena NFC de la placa, Android lee el mensaje NDEF en dicha antena, y verifica si la aplicación a la que hace referencia el mensaje, está instalada, o no.

Como no lo está, arranca Google Play y nos lleva a la página donde hemos instalado una App de control, para pruebas.

Una vez instalada, vemos que al acercar el tablet a la antena NFC, se lanza la aplicación de control, e inmediatamente se emplea la información contenida en el mensaje NDEF referida a la configuración del módulo Bluetooth, para establecer una conexión directa Bluetooth entre el tablet y la placa de control.

Desde ese mismo momento, la App nos permitirá gobernar la placa, leer datos de configuración almacenados en la flash (en el vídeo la llamamos EEPROM porque hay una parte de la flash que la usamos para emular una memoria EEPROM).

La conclusión final, es que con una buena programación en ambos lados (placa y máquina Android) es posible hacer transparente el proceso de puesta en marcha de nuestro sistema.



Acceso automático a Google Play, para la instalación de la aplicación de control en una máquina Android.

Etiquetas NFC "Tags".

Una vez que tenemos funcionando nuestro sistema de control, con una antena NFC como la mostrada en los vídeos, podemos pasar a la fase siguiente, y última, de la puesta en marcha de la funcionalidad NFC en la placa.

He comprado unas cuantas etiquetas o "Tags" con un minúsculo chip de radiofrecuencia y una antena embebida. Puede parecer muy sofisticado... bueno, es una tecnología avanzada, pero barata: Cada etiqueta cuesta 1€ ó 1$ dependiendo donde la compres.




Las dos etiquetas superiores llevan una capa aislante entre el adhesivo y el chip, para que pueda ser pegada sobre una superficie metálica, sin que ésta apantalle su antena.

Las otras cuatro etiquetas son semejantes, aunque tengan diferentes formas y gráficos.

Todas ellas llevan un chip NXP NTAG203.

Las etiquetas de las fotos llevan un chip NDEF tipo 2, por ejemplo un chip de NXP, NTAG 203, que permite almacenar 144 bytes de datos,

otros modelos de chip, y su memoria de usuario disponible, son: Ultralight (46 bytes), Ultralight C (137 bytes), Desfire 4k (4094 bytes), Topaz 512 (454 bytes), NTAG203 (144 bytes).

En todos estos chips, los datos están protegidos en escritura por una clave. Para que funcione con nuestro movil, el valor de la clave ha de ser el definido por NFC Forum. El valor de la clave es público: 0xD3F7D3F7D3F.

Es decir, si compramos una etiqueta con este chip, y queremos emplearla en nuestro proyecto, tenemos que asegurarnos de que la clave de protección contra escritura es la que define NFC forum, porque de lo contrario habría que cambiarla, a partir del valor cargado.

Uso de "Tags" en este proyecto.

Con una sencilla aplicación gratuita para móviles Android, descargable de Google Play, podemos copiar el contenido de una etiqueta, y escribirlo en otra. Eso es lo que vamos a hacer nosotros:

Leeremos el contenido de la flamante antena NFC de la placa de control, y grabaremos su contenido en una etiqueta NFC de 1€. A partir de ese momento, podemos prescindir de la antena NFC en nuestra placa.

Arrancamos nuevamente la placa de control, ya sin la antena NFC.

Para que la aplicación Android que desarrollamos en este proyecto arranque por sí sola, y se establezca un canal Bluetooth, etc. bastará con acercar el dispositivo móvil a la etiqueta o "Tag".

En ese momento el dispositivo leerá el contenido de dicha etiqueta, y usará esa información de la misma forma que con la antena, ya que para el dispositivo móvil, son totalmente equivalentes.

Es decir, Android seleccionará la aplicación correcta para nuestro sistema de control, y la lanzará. La aplicación establecerá un canal Bluetooth serie, para el envío y recepción de comandos entre placa y dispositivo móvil. Ya estamos en marcha, otra vez...!



Proceso de volcado del mensaje que hay en la antena NFC, a un "tag" de 1€, para facilitar el uso de la placa.

Tipo de etiqueta Especificaciones técnicas.

El objetivo de estas especificaciones es definir cómo se leen y escriben los mensajes NDEF en las etiquetas NFC. Las etiquetas o "Tags" pueden ser de tipo 1/2/3/4. Se basan en productos sin contacto ya existentes y están disponibles comercialmente.

Tag Tipo 1

Se basa en ISO / IEC 14443A. Los Tag se pueden leer y volver a escribir; Los usuarios pueden configurar la etiqueta para que sea de sólo lectura. La disponibilidad de memoria es de 96 bytes y se puede ampliar a 2 kbytes.

Tag Tipo 2

Se basa en ISO / IEC 14443A. Los Tag se pueden leer y volver a escribir; Los usuarios pueden configurar la etiqueta para que sea de sólo lectura. La disponibilidad de memoria es de 48 bytes y se puede ampliar a 2 kbytes.

Tag Tipo 3

Se basa en el estándar industrial japonés (JIS) X 6319-4, también conocido como FeliCa. Los Tag se pre-configuran durante la fabricación para ser “de lectura y reescribibles” o de sólo lectura. La disponibilidad de memoria es variable, el límite teórico de memoria es de 1MByte.

Tag Tipo 4 (NFC Forum 2.0)

Es totalmente compatible con la serie de estándares ISO / IEC 14443. Las etiquetas se pre-configuran durante la fabricación para ser “de lectura y reescribibles” o de sólo lectura. La disponibilidad de memoria es variable, hasta 32 KBytes; La interfaz de comunicación es compatible con Tipo A o Tipo B.

Quiero comprar un "tag" NFC ¿Cuál funciona con todos los móviles y tablets NFC?

Hay cierta confusión sobre este tema, creada involuntariamente por el fabricante NXP. Hoy día, vemos que productos que se ofrecen como "tags NFC", solo funcionan con algunos móviles, pero con otros no.

Este es el caso de "tags" que incorporan un chip Mifare Classic, el cual NO cumple las especificaciones NFC Forum, y por eso NO son reconocidas por por la mayoría de los móviles y tablets, con funcionalidad NFC.

Sin embargo, aquellos móviles o tablets que utilicen hardware de NXP serán capaces de leer esos productos. Y no porque ese hardware sea mejor, sino porque Mifare la definió también NXP, por lo que su hardware lee cualquier "tag" definido por NXP, aunque no cumpla la especificación NFC Forum. Este es el caso del Samsung Galaxy S2 y S3, que lo leen casi todo.

Por contra, los tablet Nexus 7 o los móviles Galaxy S4, que incorporan hardware de Broadcom, solo leen etiquetas NFC que cumplan estrictamente la especificación NFC Forum, por lo que NO pueden leerlos.

Los chips totalmente compatibles con NFC son, principalmente:

  • Tag Type 1: Broadcom Topaz
  • Tag Type 2: NXP Mifare Ultralight, Ultralight C, NTAG203, NTAG210, NTAG212
  • Tag Type 4: NXP Mifare Desfire

De ellos, los chips NFC más comunes son NTAG203 y Topaz.

Comentarios sobre estos chips.

El chip Topaz es el más simple y barato. Tiene la limitación de no implementar un protocolo de anticolisión, por lo que si tenemos dos "tags" Topaz juntos, no podrán ser leidos.

El "Tag Type 2" especificado por NFC Forum es en realidad la especificación del chip NXP Mifare Ultralight, por lo que éstos serán siempre compatibles.

Los chips NXP Mifare Ultralight y los tags NTAG203, NTAG210, NTAG212 son iguales (cosas del márketing), y el chip NXP Mifare Ultralight C también es similar, pero añadiendo una pequeña funcionalidad de autenticación basada en triple DES. Todos ellos funcionan muy bien.

Los Tag Type 4, como los chips NXP Mifare Desfire, son los más avanzados y de mayor capacidad de almacenamiento, aunque son también los más caros.

Conclusión.

En mi opinión, la mejor opción es comprar "tags" tipo 2, con alguno de estos chips:

  • NXP Mifare Ultralight
  • NXP Mifare Ultralight C
  • NXP NTAG203
  • NXP NTAG210
  • NXP NTAG212

Y solo si tenemos que almacenar mucha información (más de 144 bytes) entonces comprar "tags" tipo 4, con chips:

  • NXP Mifare Desfire.

Finalizar diciendo que yo recomiendo especialmente etiquetas con chip NTAG203.

¿Y ahora, que será lo siguiente?

En este punto del proyecto, ya tenemos resuelta la conectividad entre la placa de control y la pantalla táctil, a través del bus I2C (una sola pantalla para todo, o una para cada eje, según prefiera cada usuario), y la conectividad con la máquina Android a través de Bluetooth y NFC.

Estos son los dos sistemas de control manual previstos en el proyecto, así que podemos pasar a otra fase de desarrollo, para incluir las funcionalidades de usuario que hemos definido al comienzo.


Siguiente página ->

<-Página anterior