agradecimientos148.206.53.84/tesiuami/uami16725.pdf · ii.4.3 creación de la base de datos en...

39

Upload: tranque

Post on 05-Oct-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

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.

}

}