Agradecimientos148.206.53.84/tesiuami/UAMI16725.pdf · II.4.3 Creación de la base de datos en...
Transcript of Agradecimientos148.206.53.84/tesiuami/UAMI16725.pdf · II.4.3 Creación de la base de datos en...
2
Agradecimientos
Doy gracias a mis padres y hermanos que son el pilar más fuerte de mi vida, agradezco su
apoyo incondicional en todo momento.
Gracias a todos mis amigos y compañeros y todas aquellas personas que estuvieron a mi
lado durante mi estadía en la universidad, con los que compartí grandes momentos.
Gracias al doctor Miguel López Guerrero por brindarme la oportunidad de colaborar con el
y por dedicarme su tiempo asesorándome a lo largo del proyecto.
3
Índice
Resumen ................................................................................................................................. 5
Parte I Descripción de la tecnología NFC ........................................................................ 6
I.1 Introducción ...................................................................................................................... 6
Tecnología NFC .................................................................................................................... 7
Usos de la tecnología NFC ..................................................................................................... 7
I.2 RFID .................................................................................................................................. 8
I.2.1 Tipos de etiquetas RFID ............................................................................................. 9
I.2.1.1 Etiquetas RFID pasivas ....................................................................................... 9
I.2.1.2 Etiquetas RFID activas ........................................................................................ 9
I.2.1.3 Etiquetas RFID semipasivas ............................................................................... 9
I.2.2 Frecuencia de operación de etiquetas RFID ............................................................... 9
I.3 NFC Forum ..................................................................................................................... 10
I.3.1Misión ....................................................................................................................... 10
I.3.2 Objetivos .................................................................................................................. 10
I.4 Estándares........................................................................................................................ 10
I.4.1 ISO/IEC 14443 ......................................................................................................... 10
Parte 1 (ISO/IEC 14443-1)2 ......................................................................................... 11
Parte 2 (ISO/IEC 14443-2) ........................................................................................... 11
Parte 3 (ISO/IEC 14443-3) ........................................................................................... 11
Parte 4 (ISO/IEC 14443-4) ........................................................................................... 11
I.4.2 ISO/IEC 15693 ......................................................................................................... 12
I.4.3 ISO/IEC 18092 ......................................................................................................... 12
I.4.4 ECMA 352 o ISO/IEC 21481 (NFCIP-2) ................................................................ 13
I.5 Modos de comunicación.................................................................................................. 13
I.5.1 Modo Lector/Escritor (Reader/Writer Mode) .......................................................... 13
I.5.2 Modo emulación de tarjeta (Card Emulation Mode) ............................................... 13
I.5.3 Modo de igual a igual (Peer to Peer Mode) ............................................................. 13
I.6 Velocidades de transmisión ............................................................................................. 14
I.7 Capa física ....................................................................................................................... 14
I.7.1 Codificación Manchester ......................................................................................... 14
I.7.2Codificación Miller ................................................................................................... 14
I.7.3 Codificación Miller Modificado .............................................................................. 15
I.8 Tipos de etiquetas ............................................................................................................ 15
I.8.1 Etiqueta tipo1 ........................................................................................................... 15
I.8.2 Etiqueta tipo2 ........................................................................................................... 16
I.8.3 Etiqueta tipo3 ........................................................................................................... 16
I.8.4 Etiqueta tipo4 ........................................................................................................... 16
I.9 Controlador PN53X (531, 532, 533) ............................................................................... 17
I.9.1 PN531 ....................................................................................................................... 17
I.9.2 PN532 ....................................................................................................................... 18
I.9.3 PN533 ....................................................................................................................... 19
Protocolo I2C ........................................................................................................................ 19
Protocolo SPI ........................................................................................................................ 20
Parte II Propuesta de la tecnología NFC al diseño de un servicio en un museo .............. 21
II.1 Descripción del problema .............................................................................................. 21
4
II.2 Propuesta de solución al problema planteado. ............................................................... 21
II.3 Descripción general de una base de datos...................................................................... 22
II.4 Diseño de la base de datos ............................................................................................. 23
II.4.1 Diseño del diagrama entidad- relación ................................................................... 23
II.4.2 Traducción: diagrama entidad-relación a tablas ..................................................... 24
II.4.3 Creación de la base de datos en MySQL Workbench............................................. 26
II.4.4 Llenado de información y búsqueda en la BD ........................................................ 29
II.5 Diseño de un código en c ............................................................................................... 32
Conclusiones ......................................................................................................................... 33
Referencias ........................................................................................................................... 34
Anexo A ................................................................................................................................ 35
5
Resumen
En este proyecto se tiene como objetivo describir la tecnología de comunicación de campo
cercano (NFC) así como dónde puede ser implementada. Por otro lado se pretende mostrar
una aplicación de esta tecnología que cuente como un elemento fundamental una base de
datos.
La tecnología ha evolucionado mucho a lo largo de los años, se ha visto como grandes
tecnologías que hace algunos años fueron muy bien recibidas en la sociedad ahora ya no
son más utilizadas por los usuarios. Ahora es turno la tecnología NFC ya que aún no es
muy utilizada en la actualidad.
En este trabajo se describirán normas las cuales rigen a la tecnología NFC, los diferentes
tipos de etiquetas que existen, modos de comunicación, los protocolos y el uso que se le da
en algunas aplicaciones.
Para la segunda parte se analiza una situación donde la tecnología NFC se aplique al uso
del servicio de un audioguía en un museo. Se hará una propuesta para una base de datos
creada en lenguaje MySQL; que servirá como consulta de información para las obras
exhibidas en el museo.
Al final del documento se anexa un código en lenguaje c, el cual se pretende que sea
modificado más adelante con instrucciones de una biblioteca que contenga funciones para
un lenguaje MySQL.
6
Parte I Descripción de la tecnología NFC
I.1 Introducción
Este proyecto se basa en el uso de la tecnología NFC, por sus siglas en ingles Near Field
Communication, aplicable a un servicio de audioguía en un museo, haciendo uso de un
smartphone o de una tablet.
El teléfono móvil ha evolucionado de una manera fascinante de un dispositivo que sólo
servia para realizar llamadas por voz hasta lo que ahora conocemos como un smartphone,
donde el usuario puede realizar distintos tipos de tareas.
La tecnología inalámbrica NFC resulta interesante para el desarrollo de aplicaciones para
un teléfono móvil ya que el uso de este se ha vuelto muy importante en la vida cotidiana de
los seres humanos.
Se espera que la tecnología NFC se consolide en un futuro para que los usuarios puedan
tener acceso de una forma simple al utilizar esta tecnología. Ya sea como identificación,
transferencia de contenido, realizar pagos, etc.
En este documento se propone una aplicación de la tecnología NFC para el servicio de un
audioguía en un museo, en el cual el usuario pueda tener acceso haciendo uso de un
smartphone o de una tablet a la información de las obras de arte existentes en un museo.
7
Tecnología NFC
La tecnología inalámbrica NFC, por sus siglas en inglés Near Field Communication, o
comunicación de campo cercano, es una tecnología de comunicación inalámbrica de corto
alcance, basada en la tecnología RFID (identificación por radiofrecuencia). NFC permite el
intercambio bidireccional de datos entre dispositivos a una distancia corta,
aproximadamente de 10cm, a una velocidad moderada, ésta se puede dar del modo activo o
del modo pasivo.
El estándar NFC define dos modos de operación:
Modo activo: En este modo tanto el transmisor como el receptor generan una señal
de radio frecuencia (RF) para transmitir los datos. Cada extremo de la conexión
transmite los datos mediante modulación por desplazamiento de amplitud (ASK)
[1].
Modo pasivo: En este modo sólo un dispositivo genera el campo de RF, y el
segundo dispositivo aprovecha la energía de la señal recibida para transferir
información de vuelta al dispositivo activo o iniciador. En este caso, el dispositivo
que inicia la comunicación es el que genera dicho campo. Como ejemplo tenemos la
comunicación con etiquetas en la que el lector es el encargado de establecer la
comunicación.
Una de las características más significativas de NFC es su compatibilidad con las
tecnologías inalámbricas ya existentes como lo son el Bluetooth e identificación por
radiofrecuencia (RFID).
La tecnología NFC permite transferir información entre un teléfono y otros dispositivos
NFC, tales como teléfonos, etiquetas NFC o terminales de pago.
Las etiquetas NFC contienen pequeños fragmentos de información programados que se
pueden insertar en pósters, anuncios en carteles o en propaganda de productos en tiendas
[2].
Usos de la tecnología NFC
La tecnología NFC se introdujo principalmente para el pago con dispositivos móviles; pero
se espera que exista una gran variedad de aplicaciones para ésta. Algunos usos de esta
tecnología son:
Realización de pagos bancarios.
Lectura de información de ofertas y descuentos especiales anunciados en carteles o
vallas publicitarias inteligentes.
Control de acceso al transporte público, estacionamientos o entrar a eventos.
8
Transferencia o impresión de una foto.
Para demostrar identidad.
Para usar una televisión como pantalla de un móvil.
Escuchar música.
Etcétera
figura 1. Diversas aplicaciones para la tecnología NFC. (Tomado de [3])
I.2 RFID
La identificación por radio frecuencia o RFID (radio frequency identification) es una
tecnología que permite identificar automáticamente un objeto gracias a un radio
incorporado en el mismo que transmite por radiofrecuencia los datos identificativos del
objeto, siendo esta identificación normalmente unívoca [4].
Una etiqueta RFID permite almacenar y enviar información a un lector a través de ondas de
radio. Coloquialmente suelen denominarse tags que es el término en inglés.
Hay una diversa variedad de etiquetas RFID. Existen diferentes tipos dependiendo de la
fuente de energía que utilicen, la forma física que posean, el mecanismo que utilicen para
almacenar datos, la cantidad de datos que pueden almacenar, la frecuencia de
funcionamiento o de la comunicación que utilizan para transmitir la información al lector.
Gracias a esto, es posible elegir la etiqueta más adecuada para cada aplicación específica.
9
I.2.1 Tipos de etiquetas RFID
I.2.1.1 Etiquetas RFID pasivas
Las etiquetas RFID pasivas no necesitan una fuente de alimentación interna, son circuitos
resonantes, ya que toda la energía que requieren se la suministra el campo electromagnético
creado por el lector, que se encarga de activar el circuito integrado y alimentar el chip para
que éste transmita una respuesta. En este tipo de etiquetas, la antena debe estar diseñada
para que pueda obtener la energía necesaria para funcionar.
I.2.1.2 Etiquetas RFID activas
Las etiquetas RFID activas poseen una batería interna, con la que alimentan sus circuitos y
transmiten la respuesta al lector. Su cobertura de difusión es mayor gracias a que poseen
una batería propia, y su capacidad de almacenamiento también es superior.
I.2.1.3 Etiquetas RFID semipasivas
Las etiquetas RFID semipasivas poseen una mezcla de características de los dos tipos
anteriores. Por un lado, activa el chip interno utilizando una batería (como las etiquetas
RFID activas) pero por otro, la energía que necesitan para comunicarse con el lector, se la
envía el propio lector en sus ondas de radio que al ser captadas por la antena de la etiqueta,
aportan suficiente energía para la emisión de la información (como las etiquetas RFID
pasivas).
I.2.2 Frecuencia de operación de etiquetas RFID
Dependiendo de la frecuencia de operación, las etiquetas se pueden clasificar en baja, alta,
ultra alta frecuencia y microondas. La frecuencia de operación determina aspectos de la
etiqueta como la capacidad de transmisión de datos, la velocidad y tiempo de lectura de
éstos, el radio de cobertura y el costo de la etiqueta.
Frecuencia Denominación Rango
125 kHz – 134 kHz LF (Baja Frecuencia) Hasta 45 cm
13.553 MHz – 13.567 MHz HF (Alta Frecuencia) De 1 a 3 m
400 MHz – 1000 MHz UHF (Ultra Alta Frecuencia) De 3 a 10 m
2.45 GHz – 5.4 GHz j Microondas Más de 10m tabla 1. Bandas de frecuencias utilizadas en la tecnología RFID.
10
I.3 NFC Forum
I.3.1Misión
El NFC Forum se formó para promover el uso de la tecnología Near Field Communication
a través del desarrollo de especificaciones, garantizando la interoperabilidad entre los
dispositivos y servicios, y dar a conocer al mercado esta tecnología. Formado en 2004, el
Forum cuenta ahora con más de 170 miembros. Los fabricantes, desarrolladores de
aplicaciones, instituciones de servicios financieros, y otros, todos trabajan juntos para
promover el uso de la tecnología NFC en electrónica de consumo, dispositivos móviles, PC
y más [5].
I.3.2 Objetivos
Los objetivos NFC Forum son:
Desarrollar estándares basados en las especificaciones de NFC que definan una
arquitectura modular y los parámetros de interoperabilidad de dispositivos y
protocolos.
Fomentar el desarrollo de productos con las especificaciones del Foro NFC.
Trabajar para asegurar que los productos que proporcionen capacidades NFC
cumplan con las especificaciones del Foro NFC.
Dar a conocer a los consumidores y las empresas a nivel mundial la tecnología
NFC.
I.4 Estándares
La tecnología NFC se ha consolidado gracias al NFC Forum al establecer estándares
claramente definidos, los cuales son los descritos en las siguientes subsecciones:
I.4.1 ISO/IEC 14443
ISO/IEC 14443 es una serie de normas internacionales que describen los parámetros para
las tarjetas inteligentes de identificación sin contacto. Las tarjetas de proximidad de circuito
integrado o proximity integrated circuit cards (PICC) operan a una distancia de 10cm del
dispositivo de acoplamiento de proximidad (lector de tarjeta de proximidad) o proximity
coupling device (PCD) el cual contiene un microprocesador y una antena que opera a una
frecuencia de 13MHz. Esta norma se conforma de 4 partes:
11
Parte 1: Características físicas
Parte 2: Energía de radio frecuencia e interfaz de señal
Parte 3: Inicialización y anticolisión
Parte 4: Protocolos de transmisión
Parte 1 (ISO/IEC 14443-1)2
En la parte 1 se definen las características de tamaño y físicas de las tarjetas inteligentes de
identificación sin contacto. También se enumeran varios factores ambientales que la tarjeta
debe ser capaz de soportar. Estas características son dependientes de la construcción de la
tarjeta así como del diseño de la antena.
Parte 2 (ISO/IEC 14443-2)
En la parte 2 se define la potencia de radio frecuencia y la interfaz de señal, dos esquemas
de señalización, tipo A y tipo B, así como el esquema de comunicación del tipo half-duplex
a una velocidad de 106kbps en ambas direcciones. La tarjeta es alimentada por el campo de
radio frecuencia sin requerir algún tipo de batería.
Parte 3 (ISO/IEC 14443-3)
En la parte 3 se definen los protocolos de inicialización y anticolisión para el tipo A y el
tipo B. En esta parte de la norma se describen los comandos anticolisión, respuesta, trama
de datos y sincronización.
Parte 4 (ISO/IEC 14443-4)
En la parte 4 se definen protocolos de transmisión de datos de alto nivel para el tipo A y el
tipo B. Los protocolos descritos en esta parte de la norma son opcionales. De esta forma las
tarjetas de proximidad se pueden diseñar con o sin la ayuda de los protocolos de la parte 4.
Los estándares de tarjetas sin contacto cubren una variedad de tipos que se concretan en la
norma ISO/IEC 10536 (tarjetas de acoplamiento cerrado), ISO/IEC 14443 (tarjetas de
proximidad), ISO/IEC 15693 (tarjetas de cercanía). Éstos están destinados para la
operación cuando se está muy cerca, cerca y en una distancia mayor de los dispositivos de
acoplamiento asociados, respectivamente [6].
12
En la tabla 2 se muestran algunos nombres de tarjetas y de sus respectivos fabricantes.
Nombre Fabricante
FeliCa Sony
Mifare NXP
Calypso Consorcio Transportes Europeo
Topaz Broadcom
tabla 2. Tarjetas y los fabricantes de éstas.
I.4.2 ISO/IEC 15693
ISO/IEC 15693 es una de una serie de normas internacionales que describe los parámetros
para las tarjetas de identificación definidos en la norma ISO / IEC 7810 y las tarjetas
delgadas y flexibles que se ajusten a la norma ISO/IEC 15457-1, y el uso de dichas tarjetas
para facilitar intercambio internacional. Esta norma internacional no se opone a la
incorporación de otras tecnologías estándar de la tarjeta [7].
ISO/IEC 15693 consta de las siguientes partes:
Parte 1: Características físicas.
Parte 2: Energía de radiofrecuencia y señal de interfaz.
Parte 3: Anticolisión y protocolo de transmisión.
I.4.3 ISO/IEC 18092
La norma internacional ISO/IEC 18092 define los modos de comunicación para la interfaz
de comunicación de campo cercano y el protocolo NFCIP-1 usando dispositivos acoplados
inductivos que operan a la frecuencia central de 13.56 MHz para interconexión de
periféricos informáticos. También define tanto el modo activo como los modos de
comunicación pasivos de interfaz de comunicación de campo cercano y el protocolo
NFCIP-1. Esta norma internacional especifica, en particular, los esquemas de modulación,
las codificaciones, las velocidades de transferencia, y el formato de la trama de la interfaz
de RF, así como los regímenes de inicialización y las condiciones requeridas para el control
de colisión de datos durante la inicialización. Por otra parte, esta norma internacional define
un protocolo de transporte, incluyendo la activación de protocolos y los métodos de
intercambio de datos [8].
13
I.4.4 ECMA 352 o ISO/IEC 21481 (NFCIP-2)
ISO/IEC 21481:2005 especifica el mecanismo de selección de modo de comunicación,
diseñado para no interferir a ninguna comunicación en curso a 13.56 MHz, para los
dispositivos de aplicación de la norma ISO/IEC 18092 y la funcionalidad del lector de
tarjetas de circuitos integrados compatibles con la norma ISO/IEC 14443 o ISO/IEC 15693.
ISO/IEC 21481:2005 requiere implementaciones para entrar en el modo de comunicación
seleccionado tal como se especifica en la norma internacional. Las especificaciones
relativas al modo de comunicación, sin embargo, están fuera del alcance de este NFCIP-2
estándar internacional [9].
I.5 Modos de comunicación
Existen 3 modos distintos de comunicación entre los dispositivos NFC a conectarse:
I.5.1 Modo Lector/Escritor (Reader/Writer Mode)
En el modo de emulación de tarjeta el dispositivo NFC puede leer o escribir etiquetas. En
este caso se genera un campo de radio frecuencia (RF) para comunicarse con otros
dispositivos como pueden ser tarjetas sin contacto, etiquetas RFID (tags) u otros
dispositivos. Si dos o más tarjetas están presentes en el campo de la portadora del lector, se
selecciona uno usando un algoritmo de anticolisión. NFC también se encarga de detectar si
la tarjeta elegida es la ISO 14443 tipo A o B.
I.5.2 Modo emulación de tarjeta (Card Emulation Mode)
En el modo de emulación de tarjeta el dispositivo NFC se comporta como una tarjeta
inteligente sobre la cual un lector puede obtener información de forma pasiva. Como
dispositivo pasivo no debe generar ningún campo de radio frecuencia.
I.5.3 Modo de igual a igual (Peer to Peer Mode)
Modo de comunicación directa entre dispositivos, es decir permite a un dispositivo
comunicarse con otro dispositivo NFC, ya sea de forma activa o pasiva. El objetivo
principal de este modo de operación es permitir al usuario enviar sus propios datos, tan
pronto como sea posible (es decir, después de unos pocos milisegundos). En una sesión de
peer-to-peer ya sea tanto el iniciador como el destino pueden estar en modo activo o el
iniciador en activo y de destino en el modo pasivo.
14
I.6 Velocidades de transmisión
NFC ofrece tres velocidades de transmisión: 106, 212 o 424 kbps. La tasa de bit la
establece el dispositivo iniciador de la conexión.
I.7 Capa física
Cuando se realiza una comunicación entre los dispositivos NFC a conectarse, se usa una
modulación por desplazamiento de amplitud ASK (amplitude-shift keying) con diferentes
profundidades de modulación (10% o del 100%) mediante una codificación Manchester o
Miller Modificado.
I.7.1 Codificación Manchester
El código Manchester se caracteriza por poseer siempre una transición a mitad del intervalo
de duración del bit. Esta transición sirve como un procedimiento de sincronización a la vez
que permite la transmisión de los datos. Así, una transición de bajo a alto representa un 1
binario, mientras que una transición de alto a bajo representa un 0 binario.
figura 2. Ejemplo de una codificación Manchester.
I.7.2Codificación Miller
Es un código polar, que no tiene más de una transición por tiempo de bit; pero tiene al
menos una por cada 2 intervalos de bit [10].
El criterio consiste en dar una sola transición en el punto medio del intervalo de periodo.
Cuando se trata de un 1 binario produce una transición a mitad del intervalo. Si se trata de
un 0 binario no produce ninguna transición si va seguido de un 1 binario, en caso de que
vaya seguido por un 0 binario se produce una transición al final del intervalo.
15
I.7.3 Codificación Miller Modificado
En esta variante del código Miller, cada transición es reemplazada por un pulso ‘negativo’.
El código Miller Modificado es altamente recomendable para transmitir del lector al tag en
sistemas RFID que usan acoplamiento inductivo.
figura 3. Representación grafica de algunas codificaciones
En el modo activo los datos enviados usan una codificación de Miller con 100% de
modulación si la tasa de envío es de 106 kBaudios. Si la tasa de envío es mayor a 106
kBaudios se usa codificación Manchester 10% de modulación.
En el modo pasivo los datos siempre son transmitidos a una modulación de 10% con
Codificación Manchester.
I.8 Tipos de etiquetas
Existen muchas maneras de utilizar la tecnología NFC mediante el uso de diferentes tipos
de etiquetas. Las etiquetas especificadas por NFC Forum se describen a continuación [11].
I.8.1 Etiqueta tipo1
La etiqueta Tipo1 utiliza un modelo de memoria simple y está basada en el estándar
ISO14443-A. Las etiquetas son de lectura y reescritura y los usuarios pueden configurar las
etiquetas para ser de sólo lectura. La disponibilidad de memoria es de 96 bytes de datos de
usuario y ampliable a 2 kbytes. La memoria deberá ser considerada como dividida en
bloques de 8 bytes cada uno. La velocidad de comunicación es de 106 kbps.
16
I.8.2 Etiqueta tipo2
La etiqueta Tipo2 se basa en la norma ISO 14443-A estándar. Las etiquetas son de lectura y
de re-escritura. Los usuarios pueden configurar la etiqueta para ser sólo de lectura. La
estructura de la memoria es estática la cual se utiliza para las etiquetas con tamaño de
memoria equivalente a 64 bytes (total) y 48 bytes están disponibles para los datos del
usuario y ampliable a 2 kbytes. La estructura de la memoria se divide en bloques de 4 bytes
cada uno. Cada bloque tiene una numeración del 0-15 para la estructura de la memoria
estática. Los 4 bytes dentro de cada bloque se numeran de 0 a 3. Para cada bloque, el byte 0
es el MSB (byte más significativo) y el byte 3 es el LSB (byte menos significativo). La
velocidad de comunicación es de 106 kbits/s.
I.8.3 Etiqueta tipo3
La etiqueta Tipo3 se basa en la Norma Industrial Japonesa (JIS) X 6319-4 también
conocido como FeliCa. Las etiquetas están preconfiguradas en fábrica para ser de lectura y
re-escritura, o simplemente de sólo lectura. Su disponibilidad de memoria es variable
aunque el límite de memoria teórica es de 1 MB por servicio. La velocidad de
comunicación es de 212 kbps o 424 kbps.
La forma física no está definida. La unidad básica de información utilizada en la gestión de
memoria se denomina bloque. Cada bloque tiene un tamaño fijo de 16 bytes. El número de
bloques de memoria disponibles depende del hardware de chip. Los bloques de memoria no
se acceden directamente, sino en relación con el servicio al que pertenecen. Cada servicio
tiene un número de bloques de memoria asociados con ella. Los servicios pueden ser
accedidos utilizando su código de servicio, que debe ser único dentro de cada etiqueta de
Tipo3.
Cada etiqueta Tipo3 contiene datos de gestión, denominado Sistema de información. El
Sistema de Información de una etiqueta Tipo3 se compone de las siguientes partes:
Información de fabricación.
Información de definición del sistema.
Servicio de información de definición.
I.8.4 Etiqueta tipo4
La etiqueta Tipo4 es totalmente compatible con la norma ISO 14443-A y las normas ISO
14443-B. Las etiquetas están preconfiguradas en fábrica para ser de lectura y reescritura, o
simplemente de sólo lectura. Su disponibilidad de memoria es variable y puede ser de hasta
32 kbytes por servicio. La velocidad de comunicación es de hasta 424 kbps.
17
Estas etiquetas ofrecen un sistema de archivos flexible con los diferentes archivos y tipos
de acceso, incluidos los controles de integridad de datos y opciones de cifrado como
algunas de las principales características.
I.9 Controlador PN53X (531, 532, 533)
La tecnología NFC cuenta con chips de la familia Chipset PN53X, éstos están incrustados
en la mayoría de los teléfonos o dispositivos con está tecnología. Pueden realizar varias
funciones, como leer y escribir en etiquetas, comunicarse con teléfonos y algunas otras
más.
Debido a que los chips pueden leer y escribir en etiquetas, también se pueden usar para
proyectos que utilicen etiquetas RFID. Existen diferentes etiquetas que funcionan muy bien
con estos chips. El Chipset PN532 es el chip más popular de NFC.
Existen 3 controladores de NFC basadas en la familia del Chipset PN53X.
I.9.1 PN531
El PN531 es un modulo de transmisión integrado para la comunicación sin contacto, opera
en la frecuencia de 13.56 MHz. Sus modos de funcionamiento son:
Modo Reader/writer para FeliCa y tarjetas de ISO14443A.
Modo interfaz de tarjeta para FeliCa e ISO14443A/MIFARE
Modo de NFC IP-1
Para el intercambio de información en una comunicación puede utilizar las interfaces por
UART (Universal Asynchronous Receive Transmit), SPI (Serial Parallel Interface), I2C
(Inter-Integrated Circuit) y USB (Universal Serial Bus).
El chip utiliza un microcontrolador 80C51 con 32 kbytes de ROM y 1 kbyte de RAM,
cuenta con circuitos analógicos para la transmisión y recepción, un detector de nivel de RF
y un detector de modo.
18
figura 4. Diagrama a bloques del PN531
I.9.2 PN532
Al igual que el PN531 es un módulo de transmisión integrado para la comunicación sin
contacto, opera en la frecuencia de 13.56 MHz, es altamente usado en la tecnología NFC y
compatible con:
ISO/IEC 14443A/MIFARE Reader/Writer
FeliCa Card emulation
FeliCa Reader/Writer
ISO/IEC 14443B Reader/Writer
ISO/IEC 14443A/MIFARE Card MIFARE Classic 1K or MIFARE Classic 4K card
emulation mode
ISO/IEC 18092, ECMA 340 Peer-to-Peer
Para el intercambio de información en una comunicación puede utilizar las interfaces por
UART, SPI e I2C.
El chip utiliza un microcontrolador 80C51 con 40 kbytes ROM y 1 kbyte de RAM, detector
de nivel de RF, interfaz analógica, detector de modo de datos. La memoria intermedia FIFO
permite la transferencia de datos desde el host a la UART sin contacto y viceversa.
19
figura 5. Diagrama a bloques del PN532
I.9.3 PN533
Al igual que los dos anteriores el PN533 es un modulo transmisión integrado para la
comunicación sin contacto, opera en la frecuencia de 13.56 MHz. Los modos de
funcionamiento que soporta son:
ISO/IEC 14443A Reader/Writer
ISO/IEC 14443B Reader/Writer
FeliCa Reader/Writer
ISO/IEC 18092, ECMA 340 Peer-to-Peer
A diferencia del PN531 y del PN532 el PN533 solamente utiliza la interfaz USB para el
intercambio de información en una comunicación.
El chip utiliza un microcontrolador 80C51 con 44 kbytes ROM y 1232 kbytes de RAM,
detector de nivel de RF y detector de modo de datos.
Protocolo I2C
El protocolo de comunicación I2C (Inter-Integrated Circuit) es un bus bidireccional de
comunicaciones serie síncronas desarrollado por Phillips muy utilizado en la industria para
la comunicación entre microcontroladores y sus periféricos en sistemas integrados.
20
Utiliza únicamente dos líneas para trasmitir los datos SDA (Serial Data) y la señal de reloj
SCL (Serial Clock). Necesitan resistencias pull-up, ya que los dispositivos sólo pueden
forzar al bus a ponerse a ‘0’.
La línea de tierra debe ser común a todos los dispositivos (estar unida). Es bidireccional
Half-Duplex y sigue el modelo maestro-esclavo.
El maestro es el dispositivo que comienza la transferencia en el bus y se encarga de
generar la señal de reloj. Mientras que el esclavo es el dispositivo seleccionado.
Protocolo SPI
El protocolo de comunicación SPI (Serial Peripheral Interface) es un bus de
comunicaciones serie síncronas desarrollado por Motorola, usado para la transferencia de
información entre circuitos integrados en equipos electrónicos.
Utiliza un bus de 3 líneas, para la salida de datos del maestro y entrada de datos a los
esclavos MOSI (Master Output Slave Input), para salida de datos de los esclavos y entrada
de datos al maestro MISO (Master Input Slave Output) y para generar la señal de reloj
SCLK. La señal de reloj la genera uno de los dispositivos (el que actúa de maestro). La
línea de tierra debe ser común a todos los dispositivos (estar unida).
Permite comunicación full-duplex (enviar y recibir información de manera simultánea).
Utiliza el modelo maestro-esclavo donde el maestro selecciona al esclavo y comienza el
proceso de transmisión/recepción.
21
Parte II Propuesta de la tecnología NFC al diseño de un
servicio en un museo
II.1 Descripción del problema
En la actualidad las obras de arte que son exhibidas en un museo cuentan con una breve
descripción de ellas en una placa con un grabado o en algún tipo de hoja con un texto
impreso.
Aprovechando el hecho de que una gran mayoría de la gente usa un teléfono móvil y
siempre y cuando éste contenga la tecnología NFC integrada, se busca llegar a suplir las
placas grabadas u hojas impresas por tarjetas NFC y de esta manera hacer que un
smartphone o una tablet le sirva a un usuario como un servicio de audioguía durante su
recorrido por las salas de un museo.
II.2 Propuesta de solución al problema planteado
En este proyecto se hará uso de la tecnología NFC para poder ofrecer a los visitantes de un
museo o galería información de las obras de arte que se encuentren en existencia. Así, se
podrá tener una visita guiada sin la necesidad de tener que rentar una audioguía o tener que
contratar al personal del museo durante un recorrido, el usuario logrará tener acceso a la
información mediante el uso de dispositivos móviles (smartphone y tablets).
Para lograr esto es necesario diseñar y crear una base de datos (BD) en la cual se guardará
la información de cada una de las obras de arte que se exhiban en un museo o galería. La
información almacenada sobre las obras de arte estará distinguida por un número único que
posteriormente será grabado en una etiqueta NFC. De esta forma será posible realizar una
búsqueda para cada una de las obras de arte almacenadas en la base de datos.
La búsqueda se realizará por medio de un dispositivo equipado con la tecnología NFC para
leer la información que se encuentre grabada en la etiqueta NFC. Como se mencionó
anteriormente, la información grabada en la etiqueta NFC será un número único.
En el momento en el que un dispositivo lea la información grabada en la etiqueta NFC se
realizará la búsqueda en la base de datos con el número único, regresando al dispositivo la
información que esté relacionada con dicho número en la base de datos, mostrando así las
características de una obra en específica en la pantalla del dispositivo.
De esta manera los visitantes de un museo lograrán tener acceso a la información contenida
en la base de datos de una manera sencilla.
En la figura 6 se muestra el esquema del sistema propuesto para la consulta.
22
figura 6. Esquema propuesto para el diseño de la aplicación.
II.3 Descripción general de una base de datos
A continuación se hará una breve descripción de las partes que conforman a una base de
datos.
Algunos conceptos fundamentales sobre las bases de datos son: entidad, atributos, relación,
llave primaria, llave foránea, restricciones de asignación, diagrama entidad-relación.
Entidad: Es un objeto que existe y que puede distinguirse de otros objetos, es decir es la
representación de un objeto del mundo real que es distinguible de otros objetos por un
nombre único. Cada entidad está representada por un conjunto de atributos.
Atributos: Son propiedades de interés de una entidad, éstos describen la estructura de una
base de datos.
Relación: Es una asociación entre dos o más entidades.
Llave primaria: Es un atributo que permite hacer distinciones de una entidad de forma
única. De esta manera es posible distinguir entidades dentro de un conjunto de entidades.
Llave foránea: Es uno o más atributos de una entidad que hacen referencia al atributo o
atributos de la llave primaria de otra entidad, es una llave externa que indica cómo están
relacionadas las entidades.
Restricciones de asignación:
Existen restricciones que se crean al momento de planificar una base de datos entre las
entidades y relaciones, éstas se pueden ajustar al contenido de la base de datos.
23
Una restricción importante es la cardinalidad de asignación, que expresa el número de las
entidades con las que puede asociarse otra entidad mediante un conjunto de relaciones.
En un conjunto binario de relaciones, entre los conjuntos de entidades A y B la cardinalidad
puede ser alguna de las siguientes:
Una a una: Una entidad A se asocia con una y solamente con una entidad en B, y
viceversa, una entidad en B está asociada con una y solamente con una entidad en
A.
Una a muchas: Cada entidad en A se asocia con varias entidades de B.
Muchas a muchas: Cualquier entidad de A está asociada con varias entidades de B,
y viceversa, cualquier entidad en B está asociada con varias entidades de A.
Diagrama entidad-relación (E-R)
En general, la estructura lógica de una base de datos puede representarse en forma gráfica
(diagrama entidad-relación) la cual está compuesta por los siguientes componentes:
Rectángulos: Los rectángulos representarán al conjunto de entidades.
Rombos: Los rombos representarán al conjunto de relaciones.
Líneas: Se utilizarán para conectar a los conjuntos de entidades a los conjuntos de
relaciones.
Elipses: Las elipses representan a los atributos de las entidades y de las relaciones.
II.4 Diseño de la base de datos
II.4.1 Diseño del diagrama entidad- relación
En la solución para el diseño del diagrama entidad-relación de una galería de arte se
considerarán 3 entidades: artista, obra y colección; las cuales serán conectadas por las
relaciones: realiza y pertenece. El enunciado para hacer entendible el uso de las entidades,
atributos es el siguiente:
Un artista está caracterizado por: un número de artista, nombre del artista, año de
nacimiento y año de fallecimiento. Una obra se caracteriza por tener: un número de obra,
título de la obra, año y una descripción. Una colección se caracteriza por tener un número
de colección y un nombre.
En este diseño no será necesario el uso de elipses para representar a cada uno de los
atributos ya que los atributos se mostrarán junto con el símbolo de las entidades
(rectángulos) separadas por una línea, siendo el primer campo de forma descendente el
nombre de la entidad en letras mayúsculas y el segundo campo lo ocuparán los atributos
siendo el primero la llave primaria.
24
Con la descripción antes mencionada es posible realizar el diagrama entidad-relación y
posteriormente hacer la traducción a tablas que nos serán de ayuda para generar la base de
datos.
En la figura 7 se muestra la solución del diagrama entidad-relación correspondiente a la
galería de arte, mostrando las restricciones entre las entidades.
figura 7. Diagrama entidad-relación de la galería de arte.
II.4.2 Traducción: diagrama entidad-relación a tablas
Para hacer la traducción del diagrama entidad-relación a tablas es necesario utilizar una
simbología que sea de ayuda para distinguir cada uno de los campos. En la figura 8 se
muestra la simbología que se utilizará para la realización de las tablas.
Para la creación de la base de datos mediante un software, se utilizará MySQL Workbench.
*num_Artista
nom_Autor
año_Nacimiento
año_Fallecimiento
*num_Coleccion
nom_Coleccion
*num_Obra
titulo
año
descripcion
ARTISTA
OBRA
COLECCION
Realiza Pertenece
GALERÍA DE
ARTE
25
Figura 8. Simbología utilizada para la creación de las tablas.
Las tablas diseñadas son las siguientes:
Tabla de la entidad artista, cuenta con 4 atributos.
ARTISTA
num_Artista nom_Autor Año_Nacimiento año_Fallecimiento
INT
UNSIGNED
PRIMARY
A/I
VARCHAR(100)
INT
UNSIGNED
INT
UNSIGNED
tabla 3. Tabla de la entidad artista y sus atributos.
Tabla de la entidad obra, cuenta con 4 atributos y 2 llaves foráneas.
OBRA
num_Obra Titulo Año Descripcion num_Artista Num_Coleccion
INT
PRIMARY
UNSIGNED
A/I
VARCHAR
(100)
INT
UNSIGNED
VARCHAR
(500)
INT
UNSIGNED
INDEX
INT
INDEX
tabla 4. Tabla de la entidad obra y sus atributos.
Tabla de la entidad colección, cuenta con 2 atributos.
COLECCION
num_Coleccion nom_Coleccion
INT
PRIMARY
UNSIGNED
VARCHAR (100)
tabla 5. Tabla de la entidad colección y sus atributos.
26
II.4.3 Creación de la base de datos en MySQL Workbench
MySQL Workbench es una herramienta visual unificada para los arquitectos de bases de
datos, desarrolladores y administradores de bases. MySQL Workbench proporciona el
modelado de datos, desarrollo de SQL y herramientas completas de administración de la
configuración del servidor, la administración de usuarios, copia de seguridad, y mucho
más. MySQL Workbench está disponible en Windows, Linux y Mac OS X.
Para crear la BD ejecutamos el sistema gestor de bases de datos MySQL Workbench, éste
nos ofrece la facilidad de crear una BD de forma gráfica a través del modelo entidad-
relación, con ayuda del diseño mostrado en la figura 7. La utilizaremos para poder
introducir las tablas correspondientes ya mencionadas en la sección anterior.
Al seleccionar la opción New Model del menú File aparecerá en pantalla el entorno
mostrado en la figura 9.
figura 9. Entorno de MySQL Workbench, seleccionar la opción
Add Diagram mostrada en el recuadro rojo para crear una BD.
Al hacer doble clic en Add Diagram se abre el entorno de trabajo mostrado en la figura 10.
27
figura 10. Entorno de trabajo. Hacer clic en la opción señalada con la
flecha roja para colocar una nueva tabla.
En la figura 10 se indica con una flecha un símbolo; este símbolo nos sirve para colocar una
nueva tabla, al hacer clic en el aparecerá un objeto, lo soltamos con otro clic en cualquier
parte del entorno de trabajo. Se realizará el mismo procedimiento para colocar las tablas
que sean necesarias.
Para editar las tablas y sus atributos hacemos doble clic sobre alguna de ellas y en la parte
inferior del entorno de trabajo aparecerá un nuevo recuadro donde podremos insertar cada
uno de los atributos con sus correspondientes características.
figura 11. Edición de una tabla.
28
En la figura 12 se logra observar la traducción de la tabla 3 en el lenguaje MySQL
Workbench. Se realizará lo mismo para las tablas 4 y 5.
figura 12. Traslado de atributos de la tabla 3
a una tabla en MySQL Workbench
Una vez editadas las tres tablas se procede a ligar las tablas por medio de sus restricciones
de asignación, la relación que existe entre las tablas artista y obra es de uno a muchos al
igual que las tablas colección y obra. Al añadir las restricciones por medio del botón 1:n se
seleccionará primero la tabla en la cual se trasladará la llave primaria y al final la tabla
restante, por ejemplo en la relación que existe entre la entidad artista y obra es de uno a
muchos, la llave primaria de la entidad artista deberá trasladarse a la entidad obra quedando
como llave foránea, entonces se seleccionará primero la entidad obra y enseguida la entidad
artista.
Las relaciones quedarán como se muestra en la figura 13 lográndose observar que las llaves
primarias de la tablas artista y colección se trasladaron a la tabla obra quedando como
llaves foráneas de esta tabla.
29
figura 13. Diagrama final del modelo entidad-relación de la forma gráfica.
De esta manera queda finalizado el modelo entidad-relación de la forma gráfica. Por último
hay que generar las tablas para la base de datos, para realizar esto seleccionamos la opción
Forward Engineer del menú Database. Al hacer esto aparecerá una nueva ventana,
seguimos una serie de pasos para terminar el proceso. Para verificar que realmente se creó
la conexión, en la pantalla de inicio de MySQL Workbench aparecerá la conexión que se
acaba de crear, dando doble clic sobre ella se abrirá el entorno donde se podrán realizar
consultas, insertar información en las tablas, etc.
II.4.4 Llenado de información y búsqueda en la BD
Para insertar información en la BD abrimos la conexión que se realizó anteriormente en el
entorno de trabajo se escribirá la palabra reservada insert seguida del nombre de la tabla
colocando entre paréntesis separados por comas los atributos de la tabla, porsterirmente se
escribirá la palabra reservada values y entre paréntesis la información de los atributos
también separados por comas; para ejecutar la instrucción se dará clic en el símbolo del
rayo simple, de esta manera se agregará información a una tabla.
Ejemplo para agregar información en la tabla artista:
insert artista (num_Artista, nom_Autor, año_Nacimiento, año_Fallecimiento)
values (4, 'Pablo Picasso', 1881, 1973)
30
En este caso, en la tabla artista se agrega un número 4 de artista con nombre Pablo Picasso
con año de nacimiento en 1881 y año de fallecimiento en 1973.
Se realizará el mismo procedimiento para agregar información en cualquier tabla. En la
figura 14 se muestra el ejemplo anterior en el entorno de MySQL Workbench.
figura 14. Ejemplo para ingresar información en una tabla.
Para poder ver el contenido de la tabla utilizaremos la palabra reservada select espacio un *
la palabra reservada from espacio y el nombre de la tabla.
Ejemplo para ver el contenido de una tabla:
SELECT *
FROM artista
Para ejecutar esta instrucción damos clic en el símbolo de rayo simple y nos desplegará en
pantalla la información contenida de toda la tabla. En la figura 15 se mostrará el ejemplo
anterior en el entorno de MySQL Workbench.
31
figura 15. Ejemplo para ver el contenido de una tabla.
A continuación se muestra un ejemplo de una búsqueda un poco más compleja. Esta serie
de instrucciones nos dice que busque las obras que se encuentran con número de artista 1.
select * from obra
inner join artista
on artista.num_Artista = obra.ARTISTA_num_Artista
where obra.ARTISTA_num_Artista = 1
El resultado es el mostrado en la figura 16, donde se observa que las obras que pertenecen
al artista 1 (Leonardo da Vinci) en la BD son las obras número 1 y 3 su descripción y años
de nacimiento y fallecimiento del artista.
figura 16. Búsqueda de obras en la BD que pertenecen a un artista en específico.
32
II.5 Diseño de un código en c
En esta subsección se plantea un código realizado en lenguaje de programación C, dicho
código se encuentra en el Anexo A.
En el código se ejemplifica una solución para realizar la búsqueda de obras de arte,
simulando una base de datos. Se pretende darle continuidad a esta aplicación, las partes son
las siguientes:
El código será modificado haciendo uso de la librería mysql.h
Agregar funciones para tener acceso con el lector NFC
33
Conclusiones
Al finalizar el proyecto, se logró obtener un conocimiento más amplio de lo que es la
tecnología NFC. Resaltando el hecho que utiliza lectores y tarjetas es posible realizar
diferentes aplicaciones ya que existe la ventaja de la movilidad y más aún el hecho de
incrustar este tipo de tecnología en los teléfonos móviles para así lograr obtener un mayor
beneficio de ellos.
En la elaboración de este proyecto se aplicó la tecnología NFC para hacer de un museo algo
más novedoso, y así observar que esta nueva tecnología es posible aplicarla a una gran
gama de aplicaciones.
Se espera que en algunos años los teléfonos móviles se renueven para que la mayoría de
ellos contenga incrustada la tecnología NFC y así promover el uso de ésta y mejorar la
experiencia del usuario.
Ya que NFC es una tecnología inalámbrica es posible que tenga una gran aceptación dentro
de la sociedad. Ya que también es de uso simple para los usuarios y tiene trasferencia de
datos a una buena velocidad.
34
Referencias
1. (NEAR FIELD COMMUNICATION AND MOBILE TECHNOLOGY, consulta
2013) http://www.nfc.cc/technology/nfc/
2. (Sony, ¿Qué es NFC?, consulta 2013)
http://www.sonymobile.com/es/support/faq/xperia-p/wireless-networks/what-is-nfc-
2/
3. (Xataka, NFC: qué es y para qué sirve, consulta 2013)
http://www.xataka.com/moviles/nfc-que-es-y-para-que-sirve
4. (INTECO, Guía sobre seguridad y privacidad de la tecnología RFID, consulta 2013)
https://www.agpd.es/portalwebAGPD/canaldocumentacion/publicaciones/common/
Guias/Guia_RFID.pdf
5. (NFC Forum, Our Mission & Goals ,consulta 2013) http://nfc-forum.org/about-
us/the-nfc-forum/
6. (ISO, Identifications cards – Contactless integrated circuit(s) cards – Proximity
cards, consulta 2013)
http://jpkc.szpt.edu.cn/2007/sznk/UploadFile/biaozhun/iso14443/14443-4.pdf
7. (ISO, Identifications cards – Contactless integrated circuit(s) cards – Vicinity cards,
consulta 2013) http://www.waazaa.org/download/fcd-15693-3.pdf
8. (ISO, Information technology – Telecommunications and information exchange
between systems – Near field communication – Interface and protocol, consulta
2013) http://www.iso.org/iso/catalogue_detail.htm?csnumber=38578
9. (ISO, Information technology – Telecommunications and information exchange
between systems – Near field communication – Interface and protocol - 2, consulta
2013) http://www.iso.org/iso/catalogue_detail.htm?csnumber=40261
10. (Slideshare, Codificación de línea y canal, consulta 2013)
http://www.slideshare.net/sarochishernandez/codificacion-de-linea
11. (Microsoft, Differences among different NFC tags, consulta 2013)
http://developer.nokia.com/Community/Wiki/Differences_among_different_NFC_t
ags
35
Anexo A
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TAM 15
typedef struct obra OBRA; //se crea la estructura con los campos
requeridos para representar la BD.
struct obra
{
char *titulo;
char *artista;
char *descripcion;
float fecha;
};
void llama_menu(); //prototipo de la funcion de llama_menu, no
requiere ningun paso de parametros.
void agregar_registro(OBRA reg[], int *, int *); //prototipo de la
funcion agregar_registro
void muestra_regsitros(OBRA reg[], int, int, int); //protitipo de la
funcion muestra_registros.
int main() //programa principal unicamente se encarga de llamar a la
funcion llama_menu.
{
llama_menu();
return 0;
} //fin del programa principal.
/*
Funcion llama_menu, esta funcion se encarga de mostrar el MENU en
pantalla, asi como de llamar a otras
funciones, cuando el usuario decida salir (opcion 3) se mostrara en
pantalla la BD.
*/
void llama_menu()
{ //declaracion de variables
int opcion; //esta variable se encarga de guardar el valor que
elija el usuario del MENU
int busca; //esta variable nos sirve para buscar una numero de
obra en especifico.
int bandera=0; //esta variable nos sirve para indicar si existe por
lo menos un registro en la BD
36
int i=0; //esta variable nos sirve para saber cuantos
registros ha ingresado el usuario y para
// poder recorrer el arreglo al momento de guardar
los datos que el usuario capture.
OBRA reg[TAM]; //arreglo de resgistros de tipo OBRA
do //Se muestran las opciones del MENU para que el usuario pueda
seleccionar una a la vez.
{
printf("Elige una opcion del MENU\n");
printf("1- Agregar un registro (llenar la informacion de una
obra)\n");
printf("2- Buscar una obra por su numero\n");
printf("3- Salir\n");
scanf("%d", &opcion); //se lee del teclado la opcion que el
usuario halla seleccionado.
switch (opcion)
{
case 1:
agregar_registro(reg, &i, &bandera); //Se llama a
la funcion agregar_registro.
break;
case 2:
/*printf("Hasta el momento ha ingresado la
informacion de %d obra(s)\n", (i));
printf("Ingrese el numero de la obra para ver su
informacion\n");
scanf("%d",&busca);//se lee el numero de registro
para mostrar su informacion
while(busca<1 || busca>i)//validamos que se teclee
una opcion en el rango establecido.
{
printf("ERROR el numero a elegir debe estar entre
1 y %d\n",i);
printf("Ingrese el numero de la obra para ver su
informacion\n");
scanf("%d", &busca);//en caso de error se vuelve
a pedir un valor
fflush(stdin);//se limpia el buffer para no tener
problemas con la siguiente lectura del teclado.
}*/
muestra_regsitros(reg, i, bandera, busca); //
llamado a la funcion muestra_registros.
break;
default:
if(opcion>3 || opcion<=0)//en caso de seleccionar una
opcion que no este en el MENU se
printf("Opcion no valida. Elija una opcion del
MENU\n\n");//muestra la sig leyenda.
}
}while(opcion!=3);//al seleccionar la opcion 3 el programa termina.
}
37
void agregar_registro(OBRA reg[], int *i, int *bandera)
{
int opc; //varibale para guardar la opcion de llenar o no un
registro.
float num; //variable para guardar el año de una obra.
char nom[100]; //cadena para almacenar temporalmente el nombre del
artista, titulo de la obra y la descripcion.
do
{
printf("Para agregar un nuevo registro presione 1, presione 0
para regresar al MENU\n");
scanf("%d", &opc); //se lee del teclado la opcion que el usuario
elija.
fflush(stdin);
while(opc<0 || opc>1) //en caso de seleccionar otra opcion se
muestra un mensaje de error.
{
printf("ERROR debe elegir 1 o 0\n");
printf("Para agregar un nuevo registro presione 1, presione 0
para regresar al MENU\n");
scanf("%d", &opc); //se hace la lectura nuevamente del
teclado
fflush(stdin);//se limpia el buffer para no tener problemas
con la siguiente lectura del teclado.
}
if(opc==1) //al elegir uno se comienza a llenar los campos del
registro.
{
if(*i<TAM) // restriccion para no sobrepasar el limite al que
esta definido TAM.
{
printf("Ingresa el titulo de la obra\n");
gets(nom); //se lee del teclado una cadena de caracteres
reg[*i].titulo=(char*)malloc(sizeof(char)*strlen(nom)+1);
//se pide memoria
//para poder guardar
el nombre de la obra.
strcpy(reg[*i].titulo,nom); //copia la cadena nom (origen
)a reg[*i].titulo (destino).
fflush(stdin);//se limpia el buffer para no tener
problemas con la siguiente lectura del teclado.
printf("Ingresa el nombre del artista\n");
gets(nom);//se lee del teclado una cadena de caracteres.
reg[*i].artista=(char*)malloc(sizeof(char)*strlen(nom)+1);//se pide
memoria
strcpy(reg[*i].artista,nom);//copia la cadena nom (origen
)a reg[*i].artista (destino).
fflush(stdin);//se limpia el buffer para no tener
problemas con la siguiente lectura del teclado.
printf("Ingresa una descripcion de la obra\n");
38
gets(nom);//se lee del teclado una cadena de caracteres.
reg[*i].descripcion=(char*)malloc(sizeof(char)*strlen(nom)+1);//se pide
memoria .
strcpy(reg[*i].descripcion,nom);//copia la cadena nom
(origen )a reg[*i].descripcion (destino).
fflush(stdin);//se limpia el buffer para no tener
problemas con la siguiente lectura del teclado.
printf("Dame el año de creacion de la obra\n");
scanf("%f", &num);//se lee del teclado un numero que
representa el año.
reg[*i].fecha=num; //actualizamos registro en el campo
indicado para el precio del zapato.
*bandera=1;
//cuando badera cambia a 1 sabemos que al menos se ha
llenado un registro en el inventario.
*i=*i+1;//incrementamos el contador para poder acceder al
siguiente registro.
}
else // en caso de haber llegado al limite de TAM se
muestra el siguiente mensaje.
{
printf("NO se puede ingresar mas datos. La B.D ha llegado
a su LIMITE\n\n");
break;
}
}
}while(opc!=0); //finaliza el modulo cuando el usuario ingresa un 0 y
regresa al MENU.
}
void muestra_regsitros(OBRA reg[], int i, int bandera, int busca)
{
int opc;
if(bandera==0) //si bandera es 0 indica que no se ha ingresado
informacion a la B.D
{
printf("No ha ingresado informacion a la B.D. Elija la opcion 1
del MENU\n");
printf("para llenar la informacion de al menos un
registro.\n\n");
}
else // cuando bandera es 1 se muestra el numero de registros que
ha llenado el usuario.
{
do
{
printf("Hasta el momento ha ingresado la informacion de %d
obra(s)\n", (i));
printf("Ingrese el numero de la obra para ver su
informacion\n");
scanf("%d",&busca);//se lee el numero de registro para
mostrar su informacion
39
while(busca<1 || busca>i)//validamos que se teclee una opcion
en el rango establecido.
{
printf("ERROR el numero a elegir debe estar entre 1 y
%d\n",i);
printf("Ingrese el numero de la obra para ver su
informacion\n");
scanf("%d", &busca);//en caso de error se vuelve a pedir
un valor
fflush(stdin);//se limpia el buffer para no tener
problemas con la siguiente lectura del teclado.
}
//Se muestra en pantalla la informacion del registro
seleccionado.
printf(" La informacion de la OBRA %d es:\n",busca);
printf("El titulo de la obra es: %s\n", reg[busca-1].titulo);
printf("El autor de la obra es: %s\n", reg[busca-1].artista);
printf("Descripcion: %s\n", reg[busca-1].descripcion);
printf("Año de creacion: %.0f\n\n", reg[busca-1].fecha);
printf("Para ver el el contenido de otra obra presione 1,
presione 0 para terminar\n");
scanf("%d",&opc);//el usuario teclea 1 si quiere ver la
informacion de otro registro
while(opc<0 || opc>1)//se valida que la opcion del teclado
sea 1 o 0.
{
printf("ERROR debe elegir 1 o 0\n");
printf("Para ver el el contenido de otro registro
presione 1, presione 0 para terminar\n");
scanf("%d", &opc);//en caso de error se vuelve a leer del
teclado
fflush(stdin);//se limpia el buffer para no tener
problemas con la siguiente lectura del teclado.
}
}while(opc!=0);//regresa al MENU si se ingresa un 0.
}
}