O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Comunicación NFC entre Raspberry Pi y Android

2.738 visualizações

Publicada em

Charla sobre comunicación NFC entre Raspberry Pi y Android en el evento Google DevFest Córdoba el 31/10/2014

Publicada em: Tecnologia
  • Seja o primeiro a comentar

Comunicación NFC entre Raspberry Pi y Android

  1. 1. GDG DevFest Córdoba - 31 Oct 2014 Comunicación NFC entre Raspberry Pi y Android Nacho Álvarez @neonigmacdb ✉ neonigma@gmail.com http://www.nacho-alvarez.es
  2. 2. Acerca de mí ● Ingeniero en Informática por la UCO ● Trayectoria profesional: ○ Soporte Servicio Informática UCO ○ Desarrollo Web ○ Desarrollo / Integración distribuciones GNU/Linux ○ Android mobile + backend developer (WUL4) ○ Actualmente: Área de Innovación (Redsys) 1/32
  3. 3. Índice 1) NFC a) Visión general b) Modos c) Beam, NDEF y ejemplo 2) Raspberry Pi a) Definición y proyectos b) Componentes c) Opciones d) GPIO 3) Explore-NFC 4) Demo 2/32
  4. 4. NFC - Visión general ● Near Field Communication es una tecnología de comunicación inalámbrica, de corto alcance y alta frecuencia que permite el intercambio de datos entre dispositivos. ● Los estándares de NFC cubren protocolos de comunicación y formatos de intercambio de datos, y están basados en ISO 14443 (RFID, radio-frequency identification) y FeliCa ● El protocolo NFCIP-1 puede funcionar a diversas velocidades como 106, 212, 424 o 848 Kbit/s (BLE4 24Mbit/s) y trabaja en la banda de 13,56MHz 3/32
  5. 5. ● En el modo R/W, podemos leer tags NDEF y tarjetas contactless como las relativas al uso de transportes. ● En el modo P2P se puede realizar un intercambio de información entre el móvil y otro dispositivo NFC gracias a Android Beam, una API que sin embargo aún se queda un poco corta. ● El modo CE (Card Emulation) fue introducido en versiones posteriores de Gingerbread para soportar el uso de Google Wallet. El elemento seguro embebido se conecta al controlador NFC a través de una conexión S2C (NFC-WI). NFC - Modos en Android 4/32
  6. 6. NFC - Host Card Emulation ● Novedad de Android 4.4 (KitKat): soporte de la especificación Host Card Emulation (HCE) para pagos móviles con NFC ● Cualquier aplicación puede representar virtualmente y de forma segura a través de NFC una tarjeta inteligente ● Permite realizar una transacción sin necesidad de usar el Secure Element (elemento seguro). 5/32
  7. 7. NFC - Host Card Emulation ● Aparecen multitud de soluciones con esta apertura: ○ Visa PayWave ○ Mastercard ○ Vodafone Wallet ○ Isis Mobile Wallet ○ Y algunas más... 6/32
  8. 8. NFC - P2P: protocolo SNEP ● Logical Link Control Protocol (LLCP): define un protocolo a nivel de capa 2 (enlace de datos) para soportar comunicación P2P entre dos dispositivos con NFC. ● Simple NDEF Exchange Protocol (SNEP): protocolo del NFC Forum que permite a una app de un dispositivo con NFC intercambiar mensajes NDEF con otro dispositivo cuando ambos operan en modo P2P. Hace uso de LLCP para el intercambio de datos. ● NDEF Push Protocol (NPP): protocolo cliente- servidor de Google que permite la transferencia entre dispositivos NFC operando en modo P2P. 7/32
  9. 9. Android Beam ● Sistema de transmisión de contenido entre dispositivos utilizando las tecnologías NFC y/o Bluetooth ● Disponible desde Ice Cream Sandwich ● Si lo que compartimos son URLs o archivos muy poco pesados se intercambiarán mediante NFC ● Si los archivos son más pesados, como vídeos o fotos, se activará automáticamente el Bluetooth y se desactivará al terminarse la transmisión ● Debemos tener visible en la pantalla el contenido a compartir y unir las partes traseras de los dispositivos 8/32
  10. 10. Mensajes NDEF ● NDEF -NFC Forum Data Exchange Format- es un formato ligero de mensaje binario diseñado para encapsular una o más cargas útiles de información dentro de un mensaje simple. ● Un mensaje NDEF contiene uno o más registros NDEF, cada uno de los cuales transporta una carga de información de tipo arbitrario. ● Un registro NDEF transporta tres parámetros de cabecera para describir su payload: tipo, identificador opcional y longitud. 9/32
  11. 11. Mensajes NDEF 10/32
  12. 12. Ejemplo NFC Android ● Ejemplo de transmisión de un texto personalizado de un terminal a otro vía NFC (las partes interesantes) ● Código disponible en: https: //bitbucket. org/jialvarez/android-beam- p2p-demo 11/32
  13. 13. Ejemplo NFC Android @Override public NdefMessage createNdefMessage(NfcEvent event) { Time time = new Time(); time.setToNow(); NdefMessage msg = new NdefMessage( new NdefRecord[] { createMimeRecord( "text/plain", “ola k ase”.getBytes()) }); return msg; } 12/32
  14. 14. Ejemplo NFC Android public NdefRecord createMimeRecord(String mimeType, byte[] payload) { byte[] mimeBytes = mimeType.getBytes(Charset.forName("US-ASCII")); NdefRecord mimeRecord = new NdefRecord( NdefRecord.TNF_MIME_MEDIA, mimeBytes, new byte[0], payload); return mimeRecord; } @Override public void onNewIntent(Intent intent) { setIntent(intent); } 13/32
  15. 15. Ejemplo NFC Android @Override public void onResume() { super.onResume(); if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) processIntent(getIntent()); } void processIntent(Intent intent) { Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter. EXTRA_NDEF_MESSAGES); NdefMessage msg = (NdefMessage) rawMsgs[0]; mInfoText.setText(new String(msg.getRecords()[0].getPayload())); } 14/32
  16. 16. Raspberry Pi ● Microordenador lanzado en Febrero 2012 por la Raspberry Pi Foundation ● Hasta la fecha, han aparecido 3 versiones: ○ Modelo A ○ Modelo B ○ Modelo B+ ● Puede comprarse en varias tiendas: ○ RS Online: http://es.rs-online.com/web/generalDisplay.html? id=raspberrypi ○ Farnell: http://es.farnell.com/raspberry-pi 15/32
  17. 17. Raspberry Pi: Proyectos ● Algunos proyectos interesantes que utilizan Raspberry Pi + Android ○ Fing + ConnectBot (Obtener IP local + SSH) ○ Streaming video con VLC (Pi) + VLC Beta (Android) ○ Mando remoto de XBMC ○ Control remoto de coches Lego https://www.youtube. com/watch?v=5K_Eyxi56tk ○ FTP, VNC, etc... 16/32
  18. 18. Raspberry Pi components SoC Broadcom BCM2835 CPU ARM 1176JZFS a 700MHz GPU Videocore 4 RAM 512 MB (256 MB al principio) Video HDMI y RCA Resolución 1080p Audio HDMI y 3.5 mm USB 2 x USB 2.0 Redes Ethernet 10/100 17/32
  19. 19. Raspberry Pi B+ 18/32
  20. 20. Opciones NFC Raspberry ● Lectores USB ACR122U SCM SCL011 19/32
  21. 21. Opciones NFC Raspberry ● Dispositivos conectados al GPIO NFC R522 EXPLORE-NFC 20/32
  22. 22. Raspberry Pi - GPIO ● Acrónimo de General Purpose Input/Output ● Este puerto de expansión permite a los periféricos y placas de expansión acceder a la CPU mediante la exposición de entradas y salidas. 26 pins en modelo B y 40 pins en B+. ● Ejemplos de programación de GPIO con Scratch: http://pihw. wordpress.com/lessons/rgb-led-lessons/rgb-led-lesson-2-scratch- gpio-getting-started/ ● Ejemplos con Python: http://makezine.com/projects/tutorial- raspberry-pi-gpio-pins-and-python/ 21/32
  23. 23. Raspberry Pi - GPIO ● SPI Serial Peripheral Interface: estándar para controlar un dispositivo electrónico digital que acepte un flujo de bits serie regulado por un reloj ● UART Universal Asynchronous Receiver-Transmitter, se encuentra en placas base, convierte datos paralelo a serie ● I²C Inter-Integrated Circuit, para comunicar microcontroladores y sus periféricos en sistemas integrados 22/32
  24. 24. Explore-NFC en Raspberry ● Basado en solución NXP PN512 ● Cumple con los tres modos de operación: reader, P2P y Card Emulation ● Soportada por libnfc, ofrece una interfaz SPI flexible ● Software: ○ libnfc - SDK de bajo nivel ○ nfcpy (no soportado por ahora ) ○ Open source code propio - http://www.element14. com/community/community/designcenter/explorenfc ○ Python Wrapper - https://github.com/svvitale/nxppy 23/32
  25. 25. Software Explore-NFC ● El software se entrega en 3 paquetes: uno por cada modo NFC ● Se descomprime cada paquete y se compila cada aplicación preparada con CMake ● El código está escrito en C ● Tienen una documentación muy buena: http://www.element14. com/community/docs/DOC-65447/l/explore-nfc-software-and- project?ICID=designcenter-devkitnfc-quick 24/32
  26. 26. Demo time! 25/32
  27. 27. Explore-NFC: polling ● Se utiliza para saber de qué tipo es una tarjeta ● Se realiza un proceso continuo de búsqueda de este tipo de tarjetas: ○ MiFare ○ Felica ○ ISO/IEC 14443B ● También se buscan tarjetas de débito/crédito con NFC lanzando el PSE: 1PAY.SYS.DDF01 y el 2PAY.SYS.DDF0126/32
  28. 28. Explore-NFC: card emulation ● El sistema consta de tres partes: ○ App Android que permite leer, componer y enviar mensajes a la Raspberry vía NFC ○ App C para el intercambio de datos ○ App Java que toma el mensaje recibido del smartphone y lo postea en tu muro de Facebook 27/32
  29. 29. Explore-NFC: card emulation 28/32
  30. 30. Explore-NFC: P2P com ● Ejemplo de transferencia de datos utilizando protocolo P2P ● Enviaremos una imagen de la Raspberry a nuestro terminal Android ● Se utiliza internamente protocolo LLCP + SNEP ● La imagen se transfiere íntegramente por NFC, con las limitaciones de velocidad conocidas 29/32
  31. 31. Explore-NFC: own P2P ● Veremos un pequeño programa en Python que simula un comercio ● El comerciante escribe el importe de la compra del cliente (como en los pinpads) ● El sistema solicita al cliente que toque su móvil en la Raspberry ● Se realiza la transferencia de datos necesaria hacia la Raspberry y el sistema procesa el pago, enviando confirmación al móvil ● Podemos añadir multitud de elementos: autenticación biométrica, GCM pushes, tokenización... 30/32
  32. 32. Spam! Sorry... Contactar con: cromero@uco.es 31/32
  33. 33. GDG DevFest Córdoba - 31 Oct 2014 Comunicación NFC entre Raspberry Pi y Android Nacho Álvarez @neonigmacdb ✉ neonigma@gmail.com http://www.nacho-alvarez.es

×