NFC en la Raspberry Pi

Hace tiempo que no escribo en el blog debido a insertar-excusa-que-no-haya-usado-antes-aquí, pero me apetecía compartir el resultado de pasar unas pocas de tardes buscando una buena alternativa para utilizar NFC en la Raspberry Pi.

Las primeras semanas me centré en hacer funcionar el lector NFC ACR122u de ACS, lector que ya había utilizado en la empresa en la que trabajo para hacer una serie de investigaciones con Linux y que arrojaron un resultado aceptable. Pobre de mi, pensaba que con la Raspberry Pi y la misma librería automágica nfcpy que había utilizado en el pasado, encontrar una alternativa estable iba a ser pan comido. No fue así. La Raspberry Pi es un Linux, eso es cierto, concretamente una Debian. Pero la arquitectura no es i386, es ARM (más propia de pequeños dispositivos como smartphones y tablets). A pesar de funcionar más o menos regularmente, el lector ACR122u fallaba de manera aleatoria y sin explicación. Tal y como me comenta un experto en la materia como es Stephen Tiedemann (creador de nfcpy) en este hilo, además de que el lector es de lo peor para estas cosas, el subsistema USB de la Raspberry se muestra muy inestable en cuanto a periféricos más concretos como este (ratones, teclados y demás material básico funciona sin problemas).

El lector NFC ACR122U

El lector NFC ACR122U

Con el primer golpe en la frente, decido no hacerle caso a Stephen que me recomienda probar con una placa PN532 conectable vía serie en plan Arduino, usando electrónica, placas y demás. En su lugar, me tomé la libertad de realizar una pequeña inversión en la placa EXPLORE-NFC NXP PN512 que no tiene soporte por parte de nfcpy pero tiene programas de ejemplo ya escritos en C puro. Esta placa se engancha al puerto de expansión GPIO como si de un conector USB se tratase.

La placa explore-nfc

La placa explore-nfc

Hay programas escritos para los 3 modos de operación de NFC: tag, card emulation y P2P. Un handicap es que el modo P2P sólo tiene escrito un programa para la operación PUT (recibir de Raspberry) pero no para GET (que la Raspberry obtenga del móvil). He escrito un programa Python/GTK como interfaz gráfica hacia este programa P2P ya existente, para probar la operación PUT. El resultado lo podéis ver en el vídeo que adjunto, donde también pruebo la demo del modo Card Emulation, que recoge el valor que asignemos al tag 14443 y lo escribe en el muro de Facebook de mi cuenta dummy.

Enlaces de interés

* Código de ejemplo EXPLORE-NFC:
http://www.element14.com/community/docs/DOC-65447/l/explore-nfc-software-and-project?ICID=knode-devkitnfc-quick

* Comprar EXPLORE-NFC (marcar Business en la ventana modal, aunque seas un particular):
http://es.farnell.com/jsp/displayProduct.jsp?sku=2366201&CMP=KNC-GES-FES-GEN-SKU-MDC

* Código de demo gráfica personal Python/GTK:
https://bitbucket.org/jialvarez/raspberry-mpos

A 1 persona le gusta esta entrada