lunes, 22 de octubre de 2012

Tarea 8

Sistemas concurrentes / Redes Petri

Hola a todos, el tema de esta actividad son los sistemas concurrentes y su modelación con una red Petri. Empecemos con comentar lo que es un sistema concurrente.

Un sistema o un programa concurrente es la simultaneidad en la ejecución de múltiples tareas interactivas. Las tareas estas de las que comento pueden ser un conjunto de procesos o hilos de ejecución creados por un único programa. Las tareas se pueden ejecutar en una sola unidad central de proceso , en varios procesadores o en una red de computadoras distribuidas. La programación concurrente está relacionada con la programación paralela, pero enfatiza más la interacción entre tareas. Así, la correcta secuencia de interacciones o comunicaciones entre los procesos y el acceso coordinado de recursos que se comparten por todos los procesos o tareas son las claves de esta disciplina.

Y la red Petri la defino de la siguiente manera: Una Red de Petri es una representación matemática o gráfica de un sistema es decir, en esta actividad, es una representación gráfica que cuenta con lugares, trancisiones y arcos dirigidos. Para una definición un tanto más "formal" y completa pueden visitar este enlace: http://es.wikipedia.org/wiki/Red_de_Petri

Bien, entendida la teoría vayamos a la actividad en concreto, lo encargado fue: Inventar un pequeño(esto me lo tomé muy enserio hehe) sistema concurrente y modelarlo con una red Petri.

Bueno el sistema concurrente que inventé fue uno que representara la solicitud de direcciones IP(por elementos de red: PC, dispositivos multimedia, refrigeradores, cámaras fotográficas, ipod, etc) a un router. Es en concreto un sistema de "address request", un protocolo DHCP.

Y el funcionamiento se basa en que un cliente solicita una dirección IP, y el router tiene una variable llamada "Contador", de manera que apartir de aquí se abren 2 trancisiones en las cuales si el contador es menor a 50(casi siempre son más, en telmex si creo que son 50), entrará a un estado de "IPEnviada". En caso contrario(cuando el contador es igual a 50), el sistema pasa a un estado llamado "SolicitudCancelada". Obviamente sabemos que el protocolo DHCP es más complejo y la cantidad límite de host que permite un router(wireless) es configurable(el límite es prácticamente la máscara de red), pero esto es solo una representación para ejemplificar los sistemas recurrentes

El diagrama, al igual que mis compañeros lo realicé en python con la ayuda de las librerías python-snakes (era requisito de la actividad).

El código para realizar el diagrama es el siguiente:





La imagen del diagrama es la siguiente:




Cualquier duda o aclaración pueden dejarla en comentarios.

Bibliografía


Saludos a todos!


domingo, 2 de septiembre de 2012

BDD

Diagramas Binarios de Decisión


Hola, la tarea para la siguiente semana consiste en:

1 - Inventar una expresión Booleana, usando por mínimo 3 variables y 4 conectivos básicos.
2 - Construir y dibujar su BDD.
3 - Reducir el BDD resultante a un ROBDD y dibujarlo.

Primeramente definiré el concepto de "Diagramas Binarios de Decisión".

Un diagrama de decisión binario es un concepto usado en el campo de las ciencias de la computación y es una estructura de datos utilizada para representar una función booleana.

Luego, mediante el diagrama binario de decisión se puede obtener la ecuación o expresión lógica de la proposición, y viceversa.

1- Para realizar la expresión booleana lo hice al azar, y la tabla de verdad obtenida con los conectores básicos que empleé salió así:


((A˅B)˄C)  ˅  (¬(B˅C))


2- Dibujar y construir BDD.





3 - Reducir el BDD resultante a un ROBDD y dibujarlo.


Removiendo terminales duplicadas...




Uniendo los nodos duplicados...




Removiendo nodos redundantes (final)...


Esto es todo para la tarea número 3. Gracias.
Cualquier duda o aclaración pueden dejarla en comentarios.

Saludos!



jueves, 24 de mayo de 2012

Proyecto Arduino

Proyecto Arduino - Casa Inteligente (Iluminación)





Como ya la mayoría sabe, mi proyecto de Arduino trata sobre un módulo de la casa inteligente, en específico, la iluminación.

A principio de semestre yo tenía la idea de controlar la iluminación por medio de distintos medios, por ejemplo, se me había ocurrido controlar las luces por medio de aplausos, o también por medio de la voz. Pero al final, para combinar el proyecto de Cómputo Integrado con el de Dispositivos Móviles decidí en controlar la iluminación desde un móvil con Android, además esa idea ya la tenía junto con mis compañeros de equipo del semestre pasado, de hecho el trabajo de móviles (la aplicación), es decir, la parte del control de este proyecto la realizamos entre todos los elementos del equipo del semestre pasado.


Bueno, como ya había comentado en posts anteriores, mi proyecto básicamente se compone de 2 circuitos fundamentales, el circuito de control (Arduino) y el circuito de potencia (el que controla las altas tensiones de 110v).



Herramientas utilizadas



  • Simulador de Android
  • Eclipse
  • IDE de Arduino
  • CIRCAD (Software para diseño de PCB's)
  • Java (Comunicación por medio de sockets con la aplicación móvil)
  • Arduino UNO
  • Tablet con Android para las pruebas en dispositivo


Simulador de Android 




Antes de pasar la aplicación y probarla en un dispositivo móvil, iba realizando las pruebas en el simulador.


 
IDE de Arduino UNO


Esta es la primera parte del código que está almacenado en el microcontrolador de Arduino, lo que hicé fue declarar los pines 12 y 13 como salidas, para simular focos en el 1er 2do piso de una casa, aunque los ffocos los puse uno seguido de otro :p. Pero esa es la idea.

También establezco la velocidad de transferencia de los datos a 9600 baudios





En la siguiente imagen lo que hago es leer los datos que envía la PC (a la PC le llegan del móvil), luego comparar para obtener la salida deseada






CIRCAD

El siguiente es el diseño que realicé del circuito de potencia, en el extremo izquierdo se encuentran las entradas del circuito (donde se conectan los pines de salida de Arduino). En el extremo derecho se encuentran pads para meter un molex, en el molex podremos conectar las salidas para los focos (voltaje de 110), es por eso que puse esas líneas más gruesas, ya que por ahí cruzará alta tensión





Java

Utilicé una sola función para envíar mensajes. Toda esta comunicación entre Arduino y Java (PC) la pude realizar gracias a la librería Rxtx de Java, la instalación un código los he explicado en un post pasado que trata sobre la librería Rxtx.





Después ya cuando llegan los Strings desde la aplicación móvil, los comparo en java y dependiendo de lo recibido yo decido que parametro pasarle a Arduino mediante mi función sendMessage, como pueden ver en las imágenes de arriba, programé el arduino para que cuando reciba un "1" la luz se encienda, haciendo lo contrario para el parámetro "2" (ver la imagen siguiente).
  








Arduino UNO



 



Arduino UNO facilitó mucho la comunicación entre el microcontrolador y Java (PC), ya que si no lo hubiera usado, la programación se extendería demasiado, también hubiera sido más complejo aunque importara librerías.
 
 
A continuación les dejo con unas imágenes que tomé del proyecto finalizado:

















En un futuro subiré los códigos realizados, el archivo de PCB creado en CIRCAD y un video del proyecto en acción :)



Saludos!



miércoles, 23 de mayo de 2012

Módulos de Arduino

Shields de Arduino



Los shields son placas que se colocan encima de la placa Arduino y que amplían una nueva función para que sea controlada desde Arduino, para controlar diferentes aparatos, adquirir datos para después procesarlos por la PC, etc.

Algunos compañeros de clase usaron algunos shields, la mayoría usaron el shield de Xbee. 

En esta entrada haré mención de algunos shields que se pueden montar a una placa Arduino.
.


Xbee Shield

 

Introducción

 

La Xbee shield permite a una placa Arduino comunicarse de forma inalámbrica usando Zigbee. Está basada en el módulo Xbee de MaxStream. El módulo puede comunicarse hasta 100ft (30 metros) en interior o 300ft (90 metros) al aire libre (en visión directa). Puede ser usado como reemplazo del puerto serie/usb o puedes ponerlo en modo de comandos y configurarlo para una variedad de opciones de redes broadcast o malladas. La shield tiene pistas desde cada pin del Xbee hasta un orificio de soldar. También provee conectores hembra para usar los pines digitales desde 2 hasta 7 y las entradas analógicas, las cuales están cubiertas por la shield (los pines digitales de 8 a 13 no están cubiertos por la placa, así que puedes usar los conectores de la placa directamente).
La Xbee shiel fue creada en colaboración con Libelium, quienes la desarrollaron para usarlo en sus SquidBee motes (usados para crear redes de sensores).

 

Configuración de los jumpers



La Xbee shield tiene dos jumpers (las pequeñas fundas de plásticos que están sobre los tres pines etiquetados como Xbee/USB). Estos determinan como se conecta la comunicación serie del Xbee entre el microcontrolador (Atmega8 o ATmega168) y el chip serie FTDI de la placa Arduino.
Con los jumpers en la posición Xbee (e.g. en los dos pines más cercanos al interior de la placa), el pin DOUT de el módulo Xbee está conectado al pin RX del microcontrolador; y el pin DIN está conectado a TX. Notar que los pines RX y TX del microcontrolador están todavía conectados a los pines TX y RX (respectivamente) del chip FTDI - los datos enviados desde el microcontrolador serán transmitidos al ordenador vía USB y a la vez enviados de forma inalámbrica por el módulo Xbee. El microcontrolador, sin embargo, solo será capaz de recibir datos desde el módulo Xbee, no desde el USB del ordenador.
Con los jumpers en la posición USB (e.g. en los dos pines más cercanos al borde de la placa), el pin DOUT del módulo Xbee está conectado al pin RX del pin del chip FTDI, y el DIN del módulo Xbee está conectado al pin TX del el chip FTDI. Esto significa que el módulo Xbee puede comunicarse directamente con el ordenador - sin embargo, esto solo funciona si el microcontrolador ha sido quitado de la placa Arduino. Si el microcontrolador se deja en la placa Arduino, solo será capaz de comunicarse con el ordenador vía USB, pero ni el ordenador ni el microcontrolador podrán comunicarse con el módulo Xbee.



Redes



La Arduino XBee shield puede ser usada con diferentes módulos XBee. Las instrucciones a continuación son para los módulos XBee 802.15.4.



Direccionamiento



Hay múltiples parámetros que necesitan ser configurados correctamente para que dos módulos puedan comunicarse entre ellos (de todos modos con la configuración por defecto, todos los módulos deberían ser capaces de hablar unos con otros). Necesitan estar en la misma red, definida por el parámetro ID (ver "Configuración" a continuación para más detalles sobre los parámetros). Los módulos necesitan estar en el mismo canal, definido por el parámetro CH. Finalmente, la dirección de destino de un módulo (parámetros DH y DL) determina que módulo en esa red y canal recibirá los datos transmitidos. Esto puede suceder de las siguientes formas:
  • Si el DH de un módulo es 0 y su DL es menor de 0xFFF (e.g. 16 bits), los datos transmitidos por ese módulo serán recibidos por cualquier módulo cuyos 16 bits de dirección del parámetro MY sea igual al DL.
  • Si el DH es 0 y el DL es igual a 0xFFFF, las transmisiones del módulo serán recibidas por todos los módulos.
  • Si el DH no es cero o el DL es mayor de 0xFFFF, la transmisión solo será recibida por el módulo cuyo número de serie sea igual a la dirección de destino del módulo transmisor (e.g. cuyos SH es igual al DH del módulo transmisor y cuyo SL sea igual a su DL).
De nuevo, esta correspondencia de direcciones solo sucederá entre módulos en la misma red y canal. Si dos módulos están en diferentes redes o canales, no podrán comunicarse sea cual sea sus direcciones. 


Estos son unos cuantos comandos útiles para configurar el módulo Xbee (necesitarás anteponer AT). 


Comando       Descripción
RE      Restaura los valores por defecto (notar      que como el parámetro cambia, esto no es permanente a no ser que esté seguido por el comando WR).
WR Escribe un nuevo valor para un parámetro configurado a la memoria no volátil (larga-duración). De otro modo, solo durarían hasta que el módulo sea desconectado de la corriente.
CN Sale del modo de comandos. (Si no mandas ningún comando a él módulo durante unos pocos segundos, el modo de comandos saldrá tras un tiempo incluso sin el comando CN).



Arduino Ethernet Shield

 

 
 
 



Este shield también fue usado por algunos compañeros de clase de Cómputo Integrado y Dispositivos Móviles.

La Arduino Ethernet Shield permite a una placa Arduino conectarse a internet. Está basada en el chip ethernet Wiznet W5100. El Wiznet W5100 provee de una pila de red IP capaz de TCP y UDP. Soporta hasta cuatro conexiones de sockets simultáneas. Usa la librería Ethernet para escribir programas que se conecten a internet usando la shield.



La ethernet shield dispone de unos conectores que permiten conectar a su vez otras placas encima y apilarlas sobre la placa Arduino.
Arduino usa los pines digitales 10, 11, 12, y 13 (SPI) para comunicarse con el W5100 en la ethernet shield. Estos pines no pueden ser usados para e/s genéricas.
La shield provee un conectore ethernet estándar RJ45
El botón de reset en la shield resetea ambos, el W5100 y la placa Arduino.
La shield contiene un número de LEDs para información: 

  • PWR: indica que la placa y la shield están alimentadas

  • LINK: indica la presencia de un enlace de red y parpadea cuando la shield envía o recibe datos

  • FULLD: indica que la conexión de red es full duplex

  • 100M: indica la presencia de una conexión de red de 100 Mb/s (de forma opuesta a una de 10Mb/s)

  • RX: parpadea cuando la shield recibe datos

  • TX: parpadea cuando la shield envía datos

  • COLL: parpadea cuando se detectan colisiones en la red

El jumper soldado marcado como "INT" puede ser conectado para permitir a la placa Arduino recibir notificaciones de eventos por interrupción desde el W5100, pero esto no está soportado por la librería Ethernet. El jumper conecta el pin INT del W5100 al pin digital 2 de Arduino.


Bueno, como ya algunos saben, yo estuve trabajando en mi proyecto de la casa inteligente (módulo de ilumincación), así que intenté hacer mi propio módulo para Arduino :p.

Puse a mi tarjeta electrónica pines para poder ensamblarla sobre el Arduino, pero debido a las características de mi tarjeta no quise montarla para evitar cortos circuitos o que la alta tensión de mi tarjeta (110v) pase al Arduino y se dañe.


Les adjunto algunas imágenes de mi módulo, contiene el circuito de potencia para activar los focos que son alimentados con un voltaje de 110v (127v en realidad).

 





El espació donde están conectados los cables que salen del plástico gris es un puente de conexiones similar al de Arduino, terminé poniendo ese puente debido a las características de mi proyecto que comenté anteriormente, si ponía una hilera de pines para ensamblarlo al Arduino corría el riesgo de unir la parte del circuito de potencia con el circuito de control y el alto voltaje dañaría la placa Arduino.







En esta última foto se puede ver la modificación que hice en mi tarjeta para poder comunicarme con Arduino, esos cables verdes (con blanco) y naranjas llevan los estados de switcheo de los focos y también la polarización del circuito de potencia (respectivamente).

Me hubiera gustado ensamblar mi tarjeta sobre Arduino pero corría mucho riesgo debido a las características de mi proyecto antes mencionadas.


 





Saludos!




 

jueves, 17 de mayo de 2012

Comunicación PIC - DB9

Comunicación PIC - DB9 (RS232)


Existen un montón de aplicaciones de los microcontroladores donde es necesario comunicarse con una PC, por nombrar alguna aplicación, podemos decir que existen sistemas de monitoreo donde el microcontrolador está "escuchando" lo que pasa a su alrededor mediante sensores conectados a sus entradas, por ejemplo podría estar tomando como entradas sonidos del exterior o temperaturas, etc, datos que luego se desea que sean procesados por una PC, luego que la PC tome alguna decisión dependiendo de lo que haya reportando el microcontrolados.




Puerto Serie RS232 



 


La forma más común y sencilla de comunicar cualquier dispositivo con un ordenador es a través de su puerto serie que es compatible con el denominado estándar RS232. En una computadora hay puertos serie (en la mayoría de las actuales ya no viene, pero bien se podría usar un USB-Serie) que comúmente se denominan COM1, COM2, COM3, etc.

Los puertos serie son accesibles mediante conectores. La norma RS232 establece 2 tipos de conectores llamados DB25 (25 pines) y DB9 (9 pines) machos y hembras. La norma RS232 se estableció para conectar una PC con um módem, por lo que aparecen muchos pines en los conectores DB25 que en otro tipo de aplicaciones no se utilizan  y en las que es más común utilizar el conector DB9.


Cada uno de los pines del conector RS232 tiene una función específica por la norma. Hay unos terminales por los que se transmiten y reciben datos y otros que controlan el establecimiento, flujo y cierre de la comunicación.



La siguiente imagen muestra el pinout del conector DB9, vean las funciones de cada PIN (clickear sobre la imagen para ampliarla)


 






 
Se puede observar en la pasada imagen que cada pin desempeña una función pero para la comunicación con un microcontrolador es suficiente con 3 líneas. 


  • Linea de transmisión (TxD), pin 3, transmisión de datos

  • Línea de recepción (RxD), pin 2, recepción de datos

  • Pin de masa (SG), pin 5, pin a tierra

Las especificaciones del puerto serie están contenidas en la norma RS232, entre las que se pueden destacar están las siguientes:




El baudio



Un dato importante a tener en cuenta en cualquier comuniación es la velocidad de transmisión, que es la cantidad de información enviada por la línea de transmisión en la unidad de tiempo.


Hay distintas unidades para expresar esta medida, la más utilizada es el Baudio, que es proporcional a los Bits/segundo (bps), definidos como el número de bits de información enviados por un segundo.

La velocidad a la que pueden trabajar los puertos COM de una PC está normalizada a 75, 150, 300, 600, 1200, 2400, 4800, 9600 Baudios. Estos valores son demasiado pequeños para los estándares de hoy en día, pero suficientemente rápidos para bastantes aplicaciones.



Niveles lógicos RS232




Existen requisitos en cuanto a niveles lógicos que debe cumplir una transmisión serie según la norma RS232, en la siguiente imagen se ilustran estos requisitos (gráfica roja):






Lo destacable o más importante en cuanto a requisitos que debe cumplir una transmisión serie según la norma RS232 es:  


  • Los datos se transmiten con lógica negativa, es decir, un voltaje positivo en la conexión representa un 0, mientras que un voltaje negativo representa un 1.

  • Para garantizar un 0 lógico una línea debe mantener un voltaje entre +3 y +15 volts.

  • Del mismo modo para un 1 lógico garantizado debe estar entre los -3 y -15 volts.

  • Los voltajes más usados son +12 volts para el 0 y -12 volts para el 1.

  • Es importante resaltar que cuando un puerto serie no está transmitiendo, mantiene el terminal de transmisión a 1 lógico, a -12 volts normalmente.

  • La banda muerta entre los +3 y -3 volts se conoce como la región de transición donde los niveles lógicos no están definidos. Esto significa que cualquier valor entre los +3 y -3 volts puede interpretarse ambiguamente como 0 ó 1


Si se aumenta la velocidad de transmisión  las señales de datos se vuelven susceptibles a pérdidas de voltaje causadas por la capacidad, resistencia e inductancia del cable. Estas pérdidas son conocidas como efectos de alta frecuencia y aumentan con la longitud del cable.


Estos valores de tensión proporcionan un amplio margen de seguridad que es de gran utilidad  cuando los cables deben pasar por zonas cercanas a elementos que generan interferencia eléctrias: motores, transformadores, equipos de comunicación, etc. Estos elementos unidos a la longitud del cable pueden hacer disminuir la señal hasta en varios voltios, sin que afecte al nivell lógico de la entrada.


 
 
MAX232




Bueno, como ya mencioné anteriormente los niveles lógicos de la transmisión por la norma RS232 son muy distintos a los niveles lógicos del PIC (señal digital convencional).


Aquí surge la pregunta: ¿Cómo vamos a establecer la comunicación entre el PIC y la PC si las salidas de nuestro PIC no cumplen con los niveles lógicos de transmisión de la norma RS232?

Pues la respuesta está en el chip MAX232, este integrado nos permitirá convertir de las señales digitales convencionales del PIC a señales que puedan cumplir con la norma RS232 para una correcta comunicación.







El MAX232 (Maxim) es un circuito integrado utilizado para adaptar los niveles requeridos en una conexión donde interviene un dispositivo que maneja niveles de tensión TTL (nuestro microcontrolador, por ejemplo) y otro capaz de trabajar bajo los parámetros de la norma EIA/TIA 232-E y las V.28/V.24. Expresado en lenguaje de tensiones, los niveles TTL operan entre los 0 y 5Volts y la otra norma, conocida en el mundo técnico como RS-232 (Recommended Standard 232), utiliza tensiones que van desde los -12Volts a los +12Volts. Este circuito integrado el MAX232) está especialmente diseñado para trabajar en equipos que utilicen bajos niveles de tensión (5Volts) y requiere de muy pocos componentes externos para lograr un funcionamiento óptimo.



Conexión Puerto RS232 y PIC





Como ya mencioné con anterioridad para realizar la comunicación con un microcontrolador tan solo se necesitan 3 pines del conector DB9, estas son:


  • Pin de transmisión (TxD)
  • Pin de recepción (RxD)
  • Pin de masa (SG)

La siguiente imagen es un esquema de la conexión para la comunicación entre la PC y el microcontrolador, como mencione anteriormente, las señales digitales del PIC  primero deben ir al MAX232 para convertirlas en señales que cumplan con la norma RS232 luego ya saliendo del MAX232 pueden ir hacia la PC, de igual manera la PC no se comunica directamente con el PIC porque no se "entenderían", es por eso que debe pasar primero la señal por el MAX232, luego de ahí al microcontrolador.







Se pueden encontrar bastantes librerías en la web sobre la comunicación serial PIC-PC para programar el PIC y realizar las pruebas. Es difícil realizar un programa relacionado a este tema desde 0 ya que se trata con temas complejos y de estándares de comunicación, es por eso que estas librerías de comunicación facilitan mucho el trabajo y solo es cuestion de llamar a las subrutinas de esas librerías para que se encargen de todo ese trabajo "sucio", obviamente es necesario incluir esas librerias de comunicación dentro del programa que estamos desarrollando.


Luego de construir el software y el circuito se puede probar la comunicación mediante un programa que levante sesiones seriales. Yo he usado programas como Hyperterminal (en Windows XP) o Secure CRT (en Windows 7) pero si estas trabajando en Ubuntu puedes instalar el programa PuTTY SSH Client, es muy sencillo de manejar y si me ha servido.



Para levantar una sesión serial en Putty SSH Client tan solo tienes que seleccionar la opción Serial de la pantalla de inicio del programa, y elegir las demás opciones como velocidad de transmisión de los datos (9600 baudios). Esta es una captura de pantalla que saqué de mi PC.







Es muy importante que tengas conectado el puerto DB9 a la PC y al MAX232, osea todo listo y conectado a la hora de abrir la sesión serial en Putty SSH Client para evitar problemas de que no encuentra el puerto.


Para los que usan Hyperterminal o Secure CRT el procedimiento es muy similar.
 

Esto es todo!

Saludos!





miércoles, 16 de mayo de 2012

Arquitecturas

Arquitecturas de Microcontroladores



Existen 2 tipos de arquitecturas con las cuales trabajan algunos microcontroladores, es obvio que no se puede manipular, editar o escoger con cual tipo de arquitectura queremos contar en nuestro microcontrolador, este tipo de cosas viene de fábrica y no es posible cambiarla.


Arquitectura Von Neumann





 

Dispone de una sola memoria principal donde se almacenan datos e instrucciones de forma indistinta. A dicha memoria se accede a través de un sistema de buses único (direcciones, datos y control). 






Arquitectura Harvard 





Dispone de dos memorias independientes, una que contiene sólo instrucciones, y otra que contiene sólo datos. Ambas disponen de sus respectivos sistemas de buses de acceso y es posible realizar operaciones de acceso (lectura o escritura) simultáneamente en ambas memorias, ésta es la estructura para los PIC's.


 
Tradicionalmente los microprocesadores se basan en la estructura de Von Neumann, como la de la figura siguiente, que se caracteriza por disponer de una única memoria principal en la que se almacenan los datos y las instrucciones. A esta memoria se accede a través de un sistema de buses único:

  • Bus de datos
  • Bus de direcciones
  • Bus de control 

 
 
 
 
 
 
 
El modelo Harvard , representado en la figura siguiente, dispone de dos memorias:

  • Memoria de datos
  • Memoria de Programa


Además cada memoria dispone de su respectivo bus, lo que permite, que la CPU pueda acceder de forma independiente y simultánea a la memoria de datos y a la de instrucciones. Como los buses son independientes éstos pueden tener distintos contenidos en la misma dirección.




 
 
 
 
 
 
 
Saludos!