in

Thug lifeThug life

Conectando un PIC al Puerto Serie (RS232)

Por muy antiguo que esto pueda parecer, en la actualidad nos encontramos a diario con aplicaciones autónomas que poseen un conector DB9 (o DB25) y que se comunican a cualquier ordenador de mesa mediante el protocolo conocido en forma popular como “comunicación por puerto serie”. El propósito de este artículo es ayudarte a construir un dispositivo autónomo con salida RS232 y que éste sea capaz de comunicarse con un ordenador de mesa. Esto nos permitirá, en un futuro, utilizar el nuevo circuito integrado de Microchip: el MCP2200. ¿Para qué se utiliza ese circuito integrado? Muy sencillo: para adaptar una conexión serie a USB. Dicho de otro modo: para reemplazar a todos esos cables RS232 – USB que has comprado y no te han funcionado. Como decimos siempre, antes de correr debemos aprender a caminar, y éste es el comienzo.

¡Sí, por supuesto! ¡Claro que sabemos que el puerto serie ha quedado obsoleto y ya no se encuentra fácilmente en el panel trasero de cualquier ordenador! Además, luego de haber realizado tantas experiencias mediante la comunicación USB – Ordenador en diferentes artículos publicados en NeoTeo, comenzar a hablar y traer a la mesa de trabajo una conexión mediante puerto serie suena como un retroceso tecnológico, como un viaje al pasado, como un montaje “retro”. La explicación de todo está en el sumario de este artículo. Aún restan muchos años para ver aplicaciones que se comuniquen a un ordenador mediante el puerto serie, el clásico puerto COM donde se conectaba el ratón o el receptor de infrarrojos para comandar el Winamp desde la cama. Exacto, ese conector DB9 macho que en más de una oportunidad nos “mataba” la placa madre del ordenador cuando comenzábamos a experimentar con él. Claro, al dejar de funcionar este puerto ya no podíamos utilizar el ratón y debíamos apelar a alguna tarjeta PCI que resolviera nuestras desafortunadas actividades “científicas”.

La mayoría de las aplicaciones realizadas con microcontroladores que traspasan la línea del gadget sencillo, del juguete temporal o de la unidad autónoma de trabajo, apuntan habitualmente al manejo de datos útiles que, de un modo u otro, siempre se intenta llevar a un ordenador para su procesamiento. La inmensa mayoría de microcontroladores que hoy existen en el mercado y que tenemos “a mano” para cacharrear y jugar un rato traen una unidad de comunicación serie en su interior. En estos últimos años, esta característica, que permite comunicar de manera muy eficaz a dos microcontroladores entre sí, ha comenzado a presentar un problema “de hardware y conectividad” al avanzar una creciente desaparición (casi en forma definitiva) de los conectores DB9 en los paneles traseros de los ordenadores. Ahora todo es USB. La conexión serie por naturaleza se ha trasladado al Universal Serial Bus y esto se evidencia más cuando pasamos a hablar de ordenadores portátiles. Entonces ¿qué hacemos con aquellas aplicaciones que teníamos que se conectaban al puerto serie de un ordenador? El mercado (chino, claro) nos trajo una lluvia de soluciones en forma de cables que servirían para resolver el problema de las conexiones: un adaptador DB9 macho a USB, la panacea universal en nuestras manos por unas pocas monedas. ¿Qué más se le podía pedir a la tecnología? ¿Que venga con un LCD de 42” de regalo?

Sin embargo, la realidad fue muy cruel con la mayoría de los incautos compradores de estos cables cuando descubrían que no funcionaban en absoluto, y aquellos cables que lo hacían tenían las funciones muy limitadas y/o erráticas. Cuando apareció en escena el circuito integrado FT232 (de la empresa FTDI) parecía que la luz asomaba en el horizonte y que rápidamente se convertiría en la solución definitiva. De hecho, existen infinitas aplicaciones que lo incorporan como solución de comunicación entre el USART (Universal Synchronous Asynchronous Receiver Transmitter) de un microcontrolador y el bus USB (Arduino es un ejemplo de ello). Sin embargo, su pequeño encapsulado y su compleja configuración ahuyentan a más de un aficionado novel que naufraga en el intento de implementar esta solución. Para muchos es la solución ideal, para otros es un logro muy difícil de alcanzar. No todos los aficionados tienen la misma habilidad manual para construir un dispositivo basado en un encapsulado tan pequeño. Si desarrollar aplicaciones en encapsulado DIP es toda una hazaña para muchos entusiastas, hablar de manipular un encapsulado LQFP se traslada al mundo de la ciencia ficción.

El FT232 ha sido la solución de muchas plataformas para obtener conectividad USB

Cual si fuese un jugador muy astuto, y luego de observar este convulsionado, mal definido, confuso y complejo escenario, Microchip decidió ocupar un espacio dentro del mundo de los protocolos de comunicaciones con el circuito integrado MCP2200: un conversor USART – USB completo. Además, ha provisto al mercado de herramientas para configurar este componente de acuerdo a las necesidades de cada aplicación. Pero no avancemos aún hacia él. Si todavía no hemos iniciado nuestro trabajo con un desarrollo por puerto serie, trabajar ahora con el MCP2200 sería tan ilógico como comenzar a ver una película desde la mitad. Veríamos un final glorioso pero no entenderíamos por qué sucedieron todas esas explosiones y quiénes eran esos muchachitos que lograron escapar justo a tiempo (por supuesto, serían los buenos de la historia; siempre ganan los buenos. Si conoces una película donde ganen los malos, avísame).

De lleno al MAX232
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-232E 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.

Estructura externa e interna del MAX232

En su arquitectura interna, el MAX232 posee los accesorios necesarios para obtener las tensiones que se requieren a ambos lados de los circuitos que enlaza y cuenta con cuatro adaptadores-inversores de tensión: dos son utilizados para la conversión TTL – RS-232 y los otros dos para la operación inversa. En la mayoría de las aplicaciones con microcontroladores se utilizan sólo dos (uno de cada tipo), pero cuando se lo emplea en aplicaciones especiales, como puede ser el caso de redes RS-485, se agrega una conexión extra para controlar la prioridad de uso del bus (RS-485). Es decir, la señal RTS (Request To Send = Petición de envío) que proviene desde el ordenador pasa por una unidad de recepción del MAX 232 y se entrega al controlador de bus RS-485 en niveles de tensión TTL.

Circuito propuesto para una interfaz Microcontrolador / RS-232

En nuestro circuito hemos utilizado todas las unidades que componen el MAX232 y que en alguna ocasión podemos llegar a utilizar. La placa realizada para el montaje coincide en dimensiones y conexión con los zócalos reservados en la entrenadora NeoTeo. Es decir, la placa está realizada con la intención de que pueda ser incrustada en la entrenadora y formar así un bloque único, tal como veremos más adelante en los videos. Vale aclarar que por razones de costos, la construcción de esta placa no ameritaba una construcción sobre un circuito impreso de doble faz. Es por este motivo que debemos alertarte sobre la falta de una vía en el dibujo ofrecido de ejemplo del circuito impreso. La unión de los ánodos de los diodos LEDs (que se encuentran todos unidos) deberá conectarse con el positivo de la alimentación de esta placa. Este puente se notará al ver el segundo video y, para facilitar tu trabajo, los puntos a unir están indicados en el dibujo inferior con color amarillo. Por supuesto, si deseas puedes construir tu propio diseño de circuito impreso mejorando la ubicación de los componentes según tu conveniencia y gusto.

Los colores de los LEDs empleados en el montaje coinciden con los que hemos observado en otras placas utilizadas para este propósito, no porque sepamos que existe algún código de colores que indique esta asignación. Entonces, rojo en recepción (Rx) y verde en transmisión (Tx). Para las otras dos conexiones auxiliares seleccionamos el color amarillo para diferenciar su activación respecto a los indicadores de tráfico de datos. Todos estos indicadores visuales nos ayudarán a apreciar el funcionamiento correcto de la placa. Por último, tal como se observa en las imágenes, la utilización de RTS y CTS se realizará mediante puentes externos hasta la entrenadora, en caso de que la aplicación lo requiera en algún momento.

¿Qué vamos a hacer?
Empleando una sencilla metáfora podríamos decir que haremos un espejo de datos. La explicación es muy simple y fácil de comprender: utilizaremos en el ordenador, al que nos conectaremos en su puerto serie, cualquier programa hábil para enviar y recibir datos mediante esta conexión. Podemos utilizar, por ejemplo, el Hyperterminal (usuarios de Windows). En la mayoría de los casos, los programas utilizados para crear, simular, compilar y depurar (debug) los contenidos que luego volcaremos sobre un PIC traen incorporado un “soft adicional” que permite realizar de manera muy sencilla este trabajo de comunicación serie con un terminal remoto conectado a la salida de un puerto COM (a elección) del ordenador. Nosotros, como verás en los videos, utilizamos el que trae Proton (PIC Basic).

La mecánica de funcionamiento del programa cargado en el PIC se sustenta en nueve puntos fundamentales. Por supuesto, estos mismos conceptos pueden aplicarse a otros lenguajes de programación. Nosotros lo evaluamos y te lo mostramos en función del lenguaje Basic. Estos puntos son:

  1. Indicar PIC y velocidad de reloj.
  2. Indicar al sistema que utilizaremos Bootloader.
  3. Inicializar el LCD y declarar las condiciones de uso de la USART.
  4. Declarar las variables que usaremos en el programa.
  5. Colocar el PIC a la “escucha” (HSERIN).
  6. Si al completarse 1 segundo no se reciben datos, se salta a la leyenda de espera de datos.
  7. Se reciben datos y se muestran en el LCD (PRINT).
  8. Los datos que se reciben se transmiten hacia el ordenador (HSEROUT).
  9. Se reinicia el ciclo.

Observa que en tan sólo nueve procedimientos básicos hemos construido, como te mencionamos antes, un espejo de datos: los datos se reciben, se muestran y se devuelven al origen, tal como haría un espejo con cualquier imagen que se refleja en él. Los puntos enumerados están indicados de manera clara en la siguiente imagen:

Programa ejemplo utilizado y las 9 zonas fundamentales del proceso

La velocidad de transmisión y recepción de datos se realiza a 38400 bps. Ten en cuenta de ingresar al panel de control de tu sistema operativo y controlar que esta velocidad coincida con la que está definida en el puerto serie de tu ordenador. Por defecto, siempre está configurada en 9600 bps. y tú deberás cambiarla. De lo contrario, cuando realices el programa para tu microcontrolador, coloca en la declaración HSERIAL BAUD el valor 9600. El resto de los parámetros deberá coincidir con el software que utilices para enviar los datos a través del puerto serie. En el último video te mostramos que la longitud del texto a enviar es de 16 caracteres y que ocupará sólo el primer renglón del LCD. “Hola Neotenianos” es un texto que ocupa esa cantidad de espacios. El segundo renglón está reservado para el mensaje de espera de datos (punto 6 en el listado del programa). Por último, también vale mencionar la demostración del encendido de los LEDs indicando el tráfico de datos. Esto es de una utilidad enorme a la hora de resolver problemas de conexión. ¿Estará recibiendo los datos? Luego de mostrarlos, ¿los estará enviando o se dispersa hacia otro lugar el programa? Estos son interrogantes que los LEDs te resuelven de manera muy elemental (además de comportarse como un atractivo visual muy “piola”).

Resumiendo
Utilizamos la entrenadora NeoTeo para realizar comunicaciones entre el PIC y un ordenador mediante el uso de su puerto serie. La conexión entre ambos se realiza con un circuito integrado MAX232 que ayuda a adaptar niveles de tensión entre el ordenador y el PIC. Cargamos el firmware del PIC mediante el sistema Bootloader (ya empleado en artículos anteriores), y en el ordenador utilizamos cualquier software de comunicación serial, el que más cómodo nos resulte. Configuramos en el ordenador la misma velocidad de transferencia de datos que en el PIC y comenzamos a experimentar la conectividad por puerto serie. Existen algunos programas dedicados a monitorear de manera profunda la actividad de los puertos del ordenador. Si dispones de alguno de ellos puedes utilizarlo para probar a fondo esta aplicación. Para nuestro propósito, la implementación del MCP2200, podemos considerar que hemos dado el primer paso. Ya estamos caminando. No te pierdas la carrera hacia el USB.

Reportar

¿Qué te pareció?

Escrito por Mario

46 Comments

Leave a Reply
    • Hola cdr !

      No amigo. 🙁
      Vamos a trabajar un poco con el MCP2200 de Microchip el próximo sábado.

      Con respecto al C lamento no poder ayudarte pero si algún amigo puede hacerlo seguramente se contactará contigo.

      Saludos

    • Siempre me han dicho eso.

      Siempre me han sugerido que sea más ágil con el relato en los videos pero intento hacerlo así para que se comprenda bien lo que trato de transmitir. Es cierto que se puede hacer igual con más velocidad y créeme que lo intento. Por ahora me sale así. Espero mejorar.

      Saludos

    • ¿Tú hiciste el manual?, por lo superficial que le he leído, déjame decirte
      que esta muy bueno ¡Felicidades!, lo voy a agarrar para hacer un
      programa parecido a la hiperterminal del XP ya que mi win 7(pirata) no la trae
      y no quiero rebajarme al XP(pirata) otra vez, ¿y Linux? no lo uso mucho por las
      malditas incompatibilidades de software(no me gusta virtualizar).

      ¡Saludos desde México!

      • Si te refeires a mi, si los hice y los seguiré haciendo. Me queda uno que no he hecho pero si el proyecto del software controlarlos por Internet.

    • Hola Meta, tus manuales son muy vistosos, muy lindo, pero en contenido son demasiado pobres, en lugar de poner tantas fotitos deberias escribir en un pdf, por ejemplo, el contenido liquido de lo que queres explicar. Fijate que si fueran realmente buenos no deberias estar promocionandolos en cuanto foro entras, ellos lo harian solo. Chao.

  1. Excelente muchas gracias mario e intentado esto por 4 dias sin resultados hasta que lo pude encontrar aqui y me diste una solucion.

    pero tengo una duda la velocidad de transmision en mi aparato supera los 42000 bps pero los de repecion se limitan a la velocidad que pusiste ( 38400 bps) como es esto posible???

    PD: ya lo e probado varias veces y la velocidad es siempre la misma.

    • Hola master!
      No entiendo muy bien el problema que tienes con las velocidades.

      En el ejemplo yo uso 38400 pero explico que se puede colocar cualquier velocidad admitida siempre y cuando en el PIC y el ordenador coincidan. No puedes poner 38400 en uno y 9600 en otro. ¿Se entiende eso?

      Si me explicas un poco mejor el tema de las velocidades tal vez pueda comprenderte.

      Saudos!

      • gracias por la respuesta tal parece que el error lo tenia yo.

        mis mediciones de velocidad respecto a la recepcion estaban erroneas son 42356 bps tanto de transmision como de recepcion. al parecer introduje mal una que otra cosa en el analizador ( ya que este es una invencion propia no viene pre-programado y hay que introducir una chorrada de datos para que funcione ) por lo menos mi novia se dio cuenta de mi error y me aviso a tiempo.

        gracias mario esperamos con ansias el trabajo con la MCP2200 estoy a mitad de una tesis y me vendria de maravilla algo de informacion sobre esto.

  2. el rs232 no esta tan perdido como cree la mayoria ya que se sigue utilizando por ejemplo para el control del estado de servers en sistemas de telefonia, data hosting, etc…

  3. ¡Excelente articulo!, muy bien explicado, no sabia de la existencia del MCP2200, como tú
    dijiste en el articulo muchos compramos de esas cosas que convierten de usb a RS-232
    que ni sirven(yo fui uno de ellos), el la placa que estoy intentando hacer
    (que aun no termino-falta de tiempo+flojera) le voy a poner el puerto serial con su respectivo max232.
    Muy bueno el ejemplo mostrado aquí, ese yo lo conozco como eco fue una trotura hacerlo (me lo dejaron hacer en ASM con el 877), espero la siguiente parte para ver como funciona el MCP2200.

    1 pregunta muy adelantada el MCP2200 la computadora lo reconoce como un puerto COM o como lo instala, y servira para sitemas de 64 bits????

    ¿Y puerto serial muy antiguo? no lo creo, para las nuevas generaciones, pero aun muy usado en la industria.

    ¡Saludos desde mexico!

    • Mmmm…, disculpe por preguntar por adelantado ya vi la hoja de datos del MCP2200 y sí,
      lo instala como un puerto COM virtual.

      • Hola amigos!

        Coincido con ambos en que el puerto serie se vá a serguir utilizando por mucho tiempo más en muchas aplicaciones. La idea de este artículo es hacer una previa del artículo próximo donde intentaremos ver el MCP2200.
        En la parte industrial, el USB y el Blutooth para transferencia de datos "en campo" hará desaparecer al puerto serie pero con el tiempo …. no ahora, ya. Bastará una netbook o un teléfono móvil para realizar el trabajo.

        Saludos!

  4. Para mi (no se otros) el mayor problema que tengo con la utilización del FT232 es que no lo consigo en un encapsulado DIP que son para nosotros los hobbistas mas fácil de manipular y utilizar en proyectos, de todas manera el MCP2200 según el datasheet no viene tampoco en encapsulado DIP para mi sigue sin ser una solución muy practica. Pero seguiré el articulo igual haber a donde conduce.

  5. Es la primera vez que leo que los cables rs232-usb salian malos. Yo hace años compre 2, me funcionaron bien y en algun sitio deben estar guardados con tantas cosas que ya no se usan. Supongo que tuve suerte.

    Lo otro es que no es dificil encontrar puertos seriales en los ordenadores actuales… es imposible, ya no vienen, por eso dejé de usar los cables hace años. Lástima, pero es la verdad.

    • Hola jam

      Los motherboards (placas madres) traen los pines y conexiones para colocar un conector al exterior. Los fabricantes de ordenadores ya no los colocan en el panel posterior, pero la conexión aún viene. Tenemos que buscarla y hacerlo nosotros.
      En los ordenadores móviles es como tú dices. Allí ya no vienen.

      Saludos!

  6. Hola Mario:

    Que lindo que los profesores en la universidad te explicaran de esta manera tan sencilla como tu lo haces; aprenderiamos mas rapido y tendriamos cada vez mas entusiasmo de hacer cosas nuevas. Te estamos siguiendo paso a paso, y estaremos atentos al proximo articulo.
    Y bueno una pelicula en la que ganen los malos que recuerde, se llama "Swordfish" con Jhon Travolta, Hugh Jackman y Halle Berry, al final ganan los malos llevandose el dinero; me gusto esta peli por lo del hacker.
    Y otra en la que gana los malos es "El plan perfecto" con Denzel Washington, Clive Owen y Jodie Foster.

    Un abrazo mi amigo Mario de parte de un Neoteniano Colombiano.

    • Hola "Neoteniano" Yesbond! :))

      Qué buen dato ese de las películas. A mi sobrina (que es cinéfila) le vá a interesar. 🙂

      Gracias por estar siempre amigo!

      Un abrazo!

  7. Hola:

    Si son antiguos los puertos series (COM) y paralelos (LPT). No te viene en portátiles y cada vez los de sobre mesa ya no los incluyen. Si se puede conseguir en tarjetas PCI. En industrias se usa mucho todavía el COM.

    Me encanta manejar puerto serie y paralelo, por eso hice estos manuales. Estos manuales de abajo, incluye código fuente de Visual Studio .net.

    Puerto paralelo:
    http://electronica-pic.blogspot.com/2010/07/interfaz-puerto-paralelo-lpt.html

    Puerto serie:
    http://electronica-pic.blogspot.com/2008/11/electrnica-pic.html

    Saludo.

  8. En mi trabajo tengo que usar a diario mini notebooks y generalmente me toca la programacion de alguna cosa mediante el puerto serie, aller mismo tuve q programar un switch cisco linksys bussines, y tuve que usar esos mugrosos cables, mañana mismo me pongo manos a la obra gracias!!

  9. buenas mario:

    En su dia estuve interesado en el tema, porque las foneras antiguas (las pequeñas blancas) tenian en su interior un puerto serie (bueno necesitabas una conversion de las salidas ttl hacia un max232).

    Por lo que entiendo, despues del max232 se podria colocar el mcp2200 para tener la salida USB… esta podria ser la solucion a un proyecto que tengo abandonado con la fonera…

    Saludos, esperaremos ansiosos al proximo articulo!!! Muchas gracias por tu tiempo, Mario 🙂

  10. Pregunta, con ese integrado podemos agarrar un programador de lo sencillos para los pic16f84a, adaptarlo y con ello tenemos un programador usb????

  11. Jajaja notese que siempre que quieres conectar un usb lo alineas el conector sin ver para insertarlo y resulta que no entra, te das cuenta que estaría al revés por ende y pues ni hace falta ver porque sería la única posibilidad disponible y si encajaría, pero resulta que no entró! y en realidad la primera vez lo tenías correcto pero no entró. Muy seguido me pasa eso y veo que aquí al MR del video le ha pasado.

  12. hola a todos, tengo una gran duda espero me ayuden, necesito conectar un dispositivo electronico peqeño q toma temperaturas a mi celular sony k550 para ver los rsultados en la pantalla de mi celu(ver las temperaturas en mi celular). la salida de datos del dispositivo dice protocolo bidireccional rs232 5vTTL 8bits 19200 baudios. y la entrada de los pines de celu son(data+,data-,gnd,5v) mi pregunta es si el celu trabaja con un puerto serial emulado o es usb,y si esta targeta MCP2200 me sirve para comunicar mi dispositivo con mi celular para leer los datos y hacer un programa en j2me para q me los muestre en la pantalla de mi cell.
    gracias
    atte. jose antonio

  13. Y si yo quiero resolver el problema de un cable chino usb/rs-232 TTL Y NECESITO LLEVARLO A CMOS. Necesito un circuito interfase entre el puerto serie de la PC y entrada rs232 (ttl) del cable usb.

  14. La interfase USB/RS232 (TTL) NECESITA UNA INTERFASE RS-232 (TTL)/RS-232 PC Standart (QUE ES MUY BUENA LA QUE EL COLEGA pone en este fórum, pero la necesito a componentes discretos (transistores), donde vivo no tengo la posibilidad de adquirir CI. AGRADECERIA AL CACHARRERO QUE LOGRE ENCONTRAR ESTE CIRCUITO.

  15. hola amigo neotenianos, algun amigo q me pueda ayudar a comunicarme con un max 232 a un modulo gsm para poder enviar mensajes de texto…….
    por la atencion prestada me despido…

  16. hola amigo como estas.. te escribia para consultarte poque colocaste una resistencias de 1K en los Led’s.. no es un valor muy alto?? con una alimentacion de 5v no me dan los calculos con ese valor de resistencia.. gracias saludo!!!

  17. su placa del max232 se puede usar para cualquier otra placa diseñada para la comunicacion serial o solo para su tarjeta entrenadora

  18. Acabo de terminar mi Arduino casera. Me falta el Atmel ATMega 168. Está ahí arriba del escritorio. No fue dificil, sólo rompí la mecha al perforar la placa. No consigo el micro, así que ya veré que hago.

  19. Hola!
    esta pagina es genial, apenas estoy empezando con los microcontroladores y aquí he encontrado muchas cosas que me sirvieron.
    bueno se que este post es pasado pero tengo unas dudas, las resistencias que están entre el db9 y el max232 para que sirven?? lo que pasa es que no he encontrado otro diagrama que las tenga, otra duda es que si los leds no afectan en la transmicion de datos??

  20. Hola!
    si quisiera poner led bicolor entonces debería conectar los ánodos en el rx,tx?? y los cátodos a gnd??

    Saludos y Gracias (:

  21. Prgunta:
    Tengo una tarjeta que la unica forma de comunicación es RS232. Por otro lado tengo una que yo diseñe con un PIC16F84A.
    Me han pedido que las comunique entre ellas.
    El cambio del PIC no tiene discusión, simplemente es imposible
    Preguntas:
    Requiero ponerle una interfase con MAX232 o lo puedo comunicar (conectar fisicamente) directo.
    Es posible enviar “cadenas de texto” algo así como un script

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Terrazas de las etnias chinas Yi y Hani

Las mejores webs de eBooks gratuitos (Vol. II)