Introducción

Messenger… ¿que recuerdos eh? ese chat… esos zumbidos… que tiempos aquellos! Mediante la comunicación por puerto serie vimos en este taller si era posible crear un chat entre varios Arduinos y así crear nuestro propio messenger, y quien sabe, quizá hasta con los famosos zumbidos!!!

Entramos en conceptos más avanzados de puerto serie como el Software serial y creamos un «router» con la idea de usarlo para crear un centro de comunicaciones.

Puerto Serie

Era necesario para este taller retomar los conceptos de puerto serie anteriormente vistos, pero a groso modo, un puerto es el nombre genérico con que denominamos a los interfaces, físicos o virtuales, que permiten la comunicación entre dos ordenadores o dispositivos.

Un puerto serie envía la información mediante una secuencia de bits. Para ello se necesitan al menos dos conexiones para realizar la comunicación de datos, uno RX (recepción) y otro TX (transmisión).

Software serial

Tras una recapitulación rápida, entramos en nueva materia con el Software serial para poder responder a la pregunta que surge al querer montar un chat entre Arduinos: ¿Y si necesitas más puertos serie que el disponible en Arduino? Cada microcontrolador tiene un número de puertos serie hardware (UART), pero se ha desarrollado la librería «Software Serial» para permitir la comunicación serie sobre otros pines digitales de Arduino, usando software para replicar las funcionalidades de la comunicación serie. Es posible tener varios puertos software serial velocidades de hasta 11520 bps.

Aunque pinte muy idílico, tiene sus limitaciones:

  • Si se usa con  puertos serie de programas múltiples, sólo uno puede recibir datos a la vez.
  • No todos los pines en las placas Mega y Mega 2560 soportan interrupciones de cambio de nivel, por lo que solamente los siguientes se pueden utilizar para RX: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 ( 63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).
  • No todos los pines de las placas Leonardo y Micro soportan interrupciones de cambio de nivel, así que solamente los siguientes se pueden utilizar para RX: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).
  • En Arduino o Genuino 101 la velocidad máxima actual de RX es de 57600bps
  • En Arduino o Genuino 101 RX no funciona en el pin 13
  • Si su proyecto requiere flujos de datos simultáneos, consulte la biblioteca AltSoftSerial de Pablo Stoffregen. AltSoftSerial supera una serie de problemas con el núcleo SoftwareSerial, pero tiene sus propias limitaciones. Consulte el sitio AltSoftSerial para más información.

Para comenzar nuestros chats creamos un código sencillo mediante el cual dos arduinos pudiesen comunicarse entre si, simplemente debemos subir el mismo código a dos arduinos, conectar los pines que hemos declarado de RX Y TX entre cada arduino pero de forma cruzada, conectando el TX al RX y el RX al TX del otro. Una vez el código y la conexión estén listas, solo resta abrir el monitor serie y chatear!

Recursos: Presentación Meetup 123