SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
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
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
Í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
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
● 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
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
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
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
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
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
Mensajes NDEF
10/32
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
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
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
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
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
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
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
Raspberry Pi B+
18/32
Opciones NFC Raspberry
● Lectores USB
ACR122U
SCM SCL011
19/32
Opciones NFC Raspberry
● Dispositivos conectados al GPIO
NFC R522
EXPLORE-NFC
20/32
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
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
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
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
Demo time!
25/32
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
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
Explore-NFC: card emulation
28/32
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
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
Spam! Sorry...
Contactar con: cromero@uco.es 31/32
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

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

data structures- back tracking
data structures- back trackingdata structures- back tracking
data structures- back tracking
 
Packages In Python Tutorial
Packages In Python TutorialPackages In Python Tutorial
Packages In Python Tutorial
 
Methods in Java
Methods in JavaMethods in Java
Methods in Java
 
Oops concept on c#
Oops concept on c#Oops concept on c#
Oops concept on c#
 
#5 formal methods – hoare logic
#5 formal methods – hoare logic#5 formal methods – hoare logic
#5 formal methods – hoare logic
 
ADVANCED ALGORITHMS-UNIT-3-Final.ppt
ADVANCED   ALGORITHMS-UNIT-3-Final.pptADVANCED   ALGORITHMS-UNIT-3-Final.ppt
ADVANCED ALGORITHMS-UNIT-3-Final.ppt
 
BackTracking Algorithm: Technique and Examples
BackTracking Algorithm: Technique and ExamplesBackTracking Algorithm: Technique and Examples
BackTracking Algorithm: Technique and Examples
 
Back patching
Back patchingBack patching
Back patching
 
Polymorphism in C# Function overloading in C#
Polymorphism in C# Function overloading in C#Polymorphism in C# Function overloading in C#
Polymorphism in C# Function overloading in C#
 
Theory of automata and formal language lab manual
Theory of automata and formal language lab manualTheory of automata and formal language lab manual
Theory of automata and formal language lab manual
 
C# Lab Programs.pdf
C# Lab Programs.pdfC# Lab Programs.pdf
C# Lab Programs.pdf
 
Chapter 09 design and analysis of algorithms
Chapter 09  design and analysis of algorithmsChapter 09  design and analysis of algorithms
Chapter 09 design and analysis of algorithms
 
OS Security Hardening for SAP HANA
OS Security Hardening for SAP HANAOS Security Hardening for SAP HANA
OS Security Hardening for SAP HANA
 
Regular Expressions Cheat Sheet
Regular Expressions Cheat SheetRegular Expressions Cheat Sheet
Regular Expressions Cheat Sheet
 
Game Tree ( Oyun Ağaçları )
Game Tree ( Oyun Ağaçları )Game Tree ( Oyun Ağaçları )
Game Tree ( Oyun Ağaçları )
 
Notification android
Notification androidNotification android
Notification android
 
Control Flow Testing
Control Flow TestingControl Flow Testing
Control Flow Testing
 
Basic Programming concepts - Programming with C++
Basic Programming concepts - Programming with C++Basic Programming concepts - Programming with C++
Basic Programming concepts - Programming with C++
 
Backtracking
BacktrackingBacktracking
Backtracking
 
Object Oriented Concepts and Principles
Object Oriented Concepts and PrinciplesObject Oriented Concepts and Principles
Object Oriented Concepts and Principles
 

Andere mochten auch

Instalación de windows xp
Instalación de windows xpInstalación de windows xp
Instalación de windows xp
Jesus Estrada
 
Catalogue fr qw2011
Catalogue fr qw2011Catalogue fr qw2011
Catalogue fr qw2011
EUROPAGES
 

Andere mochten auch (20)

Aplicaciones de beacons y NFC
Aplicaciones de beacons y NFCAplicaciones de beacons y NFC
Aplicaciones de beacons y NFC
 
"Un Modelo de Desarrollo de Escenarios para Interacciones NFC Sensibles al Co...
"Un Modelo de Desarrollo de Escenarios para Interacciones NFC Sensibles al Co..."Un Modelo de Desarrollo de Escenarios para Interacciones NFC Sensibles al Co...
"Un Modelo de Desarrollo de Escenarios para Interacciones NFC Sensibles al Co...
 
Conexiones VPN y chip NFC
Conexiones VPN y chip NFCConexiones VPN y chip NFC
Conexiones VPN y chip NFC
 
"Receta Móvil: Sistema basado en NFC para personas dependientes" presentada p...
"Receta Móvil: Sistema basado en NFC para personas dependientes" presentada p..."Receta Móvil: Sistema basado en NFC para personas dependientes" presentada p...
"Receta Móvil: Sistema basado en NFC para personas dependientes" presentada p...
 
Instalación de windows xp
Instalación de windows xpInstalación de windows xp
Instalación de windows xp
 
Intelify tags - NFC
Intelify tags - NFCIntelify tags - NFC
Intelify tags - NFC
 
NFC: funcionamiento, usos e implicaciones en seguridad
NFC: funcionamiento, usos e implicaciones en seguridadNFC: funcionamiento, usos e implicaciones en seguridad
NFC: funcionamiento, usos e implicaciones en seguridad
 
NFC-Conexiones remotas a bases de datos
NFC-Conexiones remotas a bases de datosNFC-Conexiones remotas a bases de datos
NFC-Conexiones remotas a bases de datos
 
Near Field Communication (NFC) y sus aplicaciones
Near Field Communication (NFC) y sus aplicacionesNear Field Communication (NFC) y sus aplicaciones
Near Field Communication (NFC) y sus aplicaciones
 
Charla nuevas tecnologías Android: realidad aumentada, geolocalización, NFC
Charla nuevas tecnologías Android: realidad aumentada, geolocalización, NFCCharla nuevas tecnologías Android: realidad aumentada, geolocalización, NFC
Charla nuevas tecnologías Android: realidad aumentada, geolocalización, NFC
 
Capitulo 22 windows XP
Capitulo 22 windows XPCapitulo 22 windows XP
Capitulo 22 windows XP
 
CISTI 2013 - SimpleNFC: Simplificación del acceso a servicios del mundo digit...
CISTI 2013 - SimpleNFC: Simplificación del acceso a servicios del mundo digit...CISTI 2013 - SimpleNFC: Simplificación del acceso a servicios del mundo digit...
CISTI 2013 - SimpleNFC: Simplificación del acceso a servicios del mundo digit...
 
Arquitectura de pagos del futuro en entorno cerrado y Público (Luis Amo, Coges)
Arquitectura de pagos del futuro en entorno cerrado y Público (Luis Amo, Coges)Arquitectura de pagos del futuro en entorno cerrado y Público (Luis Amo, Coges)
Arquitectura de pagos del futuro en entorno cerrado y Público (Luis Amo, Coges)
 
"NFC, móviles y máquinas: accesibilidad inesperada" - Ladislao Aceituno (Re...
"NFC, móviles y máquinas: accesibilidad inesperada" - Ladislao Aceituno (Re..."NFC, móviles y máquinas: accesibilidad inesperada" - Ladislao Aceituno (Re...
"NFC, móviles y máquinas: accesibilidad inesperada" - Ladislao Aceituno (Re...
 
Tecnología NFC
Tecnología NFCTecnología NFC
Tecnología NFC
 
Validadores
ValidadoresValidadores
Validadores
 
Tecnología NFC - Betabeers
Tecnología NFC - BetabeersTecnología NFC - Betabeers
Tecnología NFC - Betabeers
 
Catalogue fr qw2011
Catalogue fr qw2011Catalogue fr qw2011
Catalogue fr qw2011
 
Slides udm-080910
Slides udm-080910Slides udm-080910
Slides udm-080910
 
Validadores NFC
Validadores NFCValidadores NFC
Validadores NFC
 

Ähnlich wie Comunicación NFC entre Raspberry Pi y Android

CursoProgramacionNFC-Dia1
CursoProgramacionNFC-Dia1CursoProgramacionNFC-Dia1
CursoProgramacionNFC-Dia1
Aditium
 
Trabajo practico nº 12
Trabajo practico nº 12Trabajo practico nº 12
Trabajo practico nº 12
Jimena
 
Trabajo practico nº 12
Trabajo practico nº 12Trabajo practico nº 12
Trabajo practico nº 12
Jimena
 
Protocolos en las capas del modelo osi
Protocolos en las capas del modelo osiProtocolos en las capas del modelo osi
Protocolos en las capas del modelo osi
michrom
 
Protocolos en las capas del modelo osi
Protocolos en las capas del modelo osiProtocolos en las capas del modelo osi
Protocolos en las capas del modelo osi
michrom
 
Protocolos en las capas del modelo osi
Protocolos en las capas del modelo osiProtocolos en las capas del modelo osi
Protocolos en las capas del modelo osi
michrom
 
Colegiosancarlos 111206185843-phpapp01
Colegiosancarlos 111206185843-phpapp01Colegiosancarlos 111206185843-phpapp01
Colegiosancarlos 111206185843-phpapp01
lucasoliver12
 
Colegiosancarlos 111206185843-phpapp01
Colegiosancarlos 111206185843-phpapp01Colegiosancarlos 111206185843-phpapp01
Colegiosancarlos 111206185843-phpapp01
lucasoliver12
 

Ähnlich wie Comunicación NFC entre Raspberry Pi y Android (20)

Sysmana 2015 - Comunicación NFC entre Raspberry pi y Android
Sysmana 2015 - Comunicación NFC entre Raspberry pi y AndroidSysmana 2015 - Comunicación NFC entre Raspberry pi y Android
Sysmana 2015 - Comunicación NFC entre Raspberry pi y Android
 
Tutorial Near Field Communication (NFC)
Tutorial Near Field Communication (NFC)Tutorial Near Field Communication (NFC)
Tutorial Near Field Communication (NFC)
 
CursoProgramacionNFC-Dia1
CursoProgramacionNFC-Dia1CursoProgramacionNFC-Dia1
CursoProgramacionNFC-Dia1
 
Nfc
NfcNfc
Nfc
 
Trabajo practico nº 12
Trabajo practico nº 12Trabajo practico nº 12
Trabajo practico nº 12
 
Trabajo practico nº 12
Trabajo practico nº 12Trabajo practico nº 12
Trabajo practico nº 12
 
Protocolos en las capas del modelo osi
Protocolos en las capas del modelo osiProtocolos en las capas del modelo osi
Protocolos en las capas del modelo osi
 
Protocolos en las capas del modelo osi
Protocolos en las capas del modelo osiProtocolos en las capas del modelo osi
Protocolos en las capas del modelo osi
 
Protocolos en las capas del modelo osi
Protocolos en las capas del modelo osiProtocolos en las capas del modelo osi
Protocolos en las capas del modelo osi
 
Redes informaticas
Redes informaticasRedes informaticas
Redes informaticas
 
D resumenes
D resumenesD resumenes
D resumenes
 
Pract campo
Pract campoPract campo
Pract campo
 
Colegio san carlos
Colegio san carlosColegio san carlos
Colegio san carlos
 
Colegiosancarlos 111206185843-phpapp01
Colegiosancarlos 111206185843-phpapp01Colegiosancarlos 111206185843-phpapp01
Colegiosancarlos 111206185843-phpapp01
 
TIC
TICTIC
TIC
 
MTM eSEC-ENISE 26Oct - Framework DNIe y Cardmodule
MTM eSEC-ENISE 26Oct - Framework DNIe y CardmoduleMTM eSEC-ENISE 26Oct - Framework DNIe y Cardmodule
MTM eSEC-ENISE 26Oct - Framework DNIe y Cardmodule
 
Fundamentos del tcp
Fundamentos del tcpFundamentos del tcp
Fundamentos del tcp
 
Tp17
Tp17Tp17
Tp17
 
Colegiosancarlos 111206185843-phpapp01
Colegiosancarlos 111206185843-phpapp01Colegiosancarlos 111206185843-phpapp01
Colegiosancarlos 111206185843-phpapp01
 
Tp de informatica 14
Tp de informatica 14Tp de informatica 14
Tp de informatica 14
 

Mehr von José Ignacio Álvarez Ruiz

Mehr von José Ignacio Álvarez Ruiz (9)

Servicios Web con Python + web.py (Homenaje a Aaron Swartz)
Servicios Web con Python + web.py (Homenaje a Aaron Swartz)Servicios Web con Python + web.py (Homenaje a Aaron Swartz)
Servicios Web con Python + web.py (Homenaje a Aaron Swartz)
 
Sistemas de control de versiones distribuidos: Controla las versiones de tu t...
Sistemas de control de versiones distribuidos: Controla las versiones de tu t...Sistemas de control de versiones distribuidos: Controla las versiones de tu t...
Sistemas de control de versiones distribuidos: Controla las versiones de tu t...
 
The blockchain disruption
The blockchain disruptionThe blockchain disruption
The blockchain disruption
 
Sysmana 2016 - Desarrollo seguro de aplicaciones C/C++ en Android con NDK
Sysmana 2016 - Desarrollo seguro de aplicaciones C/C++ en Android con NDKSysmana 2016 - Desarrollo seguro de aplicaciones C/C++ en Android con NDK
Sysmana 2016 - Desarrollo seguro de aplicaciones C/C++ en Android con NDK
 
Sysmana 2017 monitorización de logs con el stack elk
Sysmana 2017   monitorización de logs con el stack elkSysmana 2017   monitorización de logs con el stack elk
Sysmana 2017 monitorización de logs con el stack elk
 
Sysmana 2017 metodologías gestión ágil de proyectos
Sysmana 2017   metodologías gestión ágil de proyectosSysmana 2017   metodologías gestión ágil de proyectos
Sysmana 2017 metodologías gestión ágil de proyectos
 
WUL4 Training Thursday #2 Sistemas de control de versiones distribuidos: GIT
WUL4 Training Thursday #2 Sistemas de control de versiones distribuidos: GITWUL4 Training Thursday #2 Sistemas de control de versiones distribuidos: GIT
WUL4 Training Thursday #2 Sistemas de control de versiones distribuidos: GIT
 
Realidad aumentada en Android: reconocimiento de imágenes y geolocalización u...
Realidad aumentada en Android: reconocimiento de imágenes y geolocalización u...Realidad aumentada en Android: reconocimiento de imágenes y geolocalización u...
Realidad aumentada en Android: reconocimiento de imágenes y geolocalización u...
 
Analisis distribuciones GNU/Linux Mayo 2010 (revisado)
Analisis distribuciones GNU/Linux Mayo 2010 (revisado)Analisis distribuciones GNU/Linux Mayo 2010 (revisado)
Analisis distribuciones GNU/Linux Mayo 2010 (revisado)
 

Kürzlich hochgeladen

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Kürzlich hochgeladen (10)

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 

Comunicación NFC entre Raspberry Pi y Android

  • 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. 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. Í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. 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. ● 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. 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. 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. 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. 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. 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
  • 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. 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. 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. 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. 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. 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. 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
  • 20. Opciones NFC Raspberry ● Lectores USB ACR122U SCM SCL011 19/32
  • 21. Opciones NFC Raspberry ● Dispositivos conectados al GPIO NFC R522 EXPLORE-NFC 20/32
  • 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. 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. 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. 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
  • 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. 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
  • 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. 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. Spam! Sorry... Contactar con: cromero@uco.es 31/32
  • 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