Trabajar con varios módulos simultaneamente. Error TTX

Buenas, estoy trabajando con diversos módulos arduinos(uno gsm y uno bluetooth), pero ambos trasmiten la señal por TTX, y me interesa trabajar simultáneamente con ambos. Por ello me preguntaba si habría algún tipo de multiplexor que me permitisiese elegir la señal que entra en la placa. Otra opción que se me ocurre es apagar un dispositivo cuando el otro deba transmitir, el problema es que uno de ellos no podrá estar apagado nunca.

Gracias.

Existe la libreria newsoftserial que permite crearte un puerto serie en otros pines.

Puede que te haga el apaño...

Te dejo el enlace:
http://arduiniana.org/libraries/newsoftserial/

Y un ejemplo de codigo para que le heches vistazo rapido, veras que conecta hasta 3 dispositivos serie, un GPS, un LCD y un Termometro:

#include <NewSoftSerial.h>

// Un GPS conectado a los pines 3 y 4
NewSoftSerial gps(4,3);

// Un termometro serie a los pines 5 y 6
NewSoftSerial therm(6,5);

// Un LCD serie a los pines 7 y 8
NewSoftSerial LCD(8,7); // serial LCD

void loop()
{
  ...
  // recoger datos del GPS durante unos segundos
  read_gps_data();  // usa GPS como dispositivo activo
  // lee temperatura del termometro
  read_thermometer_data(); // ahora usa el termometro
  // LCD como dispositovo activo
  LCD.print("Data gathered...");
  ...
}

Un saludo

Pues me vienen genial, creo que me puede solucionar todo. Voy a investigar y te comento, muchas gracias Heke.

La verdad que después de mucho investigar tu opción, me resulta muy interesante, y de momento a falta de otras es la que va en cabeza. Digo a falta de otra ya que con tu idea, aún deberia obligar a alguno de los shield a usar alguno de los otros pines, lo que llevaría cableado como mínimo. Por eso me gustaría saber si existe algo como un multiplexor de señales o alguna alternativa similar, para evitar engorros.

Saludos.

Si efectivamente los tres dispositivos son serie asíncrona, no veo nada sencillo que puedan compartir el mismo bus, pues a diferencia de SPI o I2C, el protocolo para UART creo que no observa la existencia de más de un receptor/transmisor (en teoría sería físicamente factible supongo, si se diseñara y cumpliera un protocolo específico para todos los dispositivos participantes).
Así que creo que la mejor opción sería la que te ha propuesto Heke, aunque también (creo que no has indicado qué arduino usas) puedes usar otros puertos hardware (por ejemplo el mega tiene 4 puertos UART en total).

Aunque sea asíncrona, ¿no es posible almacenar la señal en algún sitio hasta que se tramite la otra?, por eso pensé en el mux. He visto algunos mux que se pueden implementar con señales analógicas con arduino, pero no termina de serme útil. Disculpad, uso Arduino Uno.

El problema es que el protocolo de transmisión no tiene estandarizado nada para indicar a qué dispositivo en concreto va una comunicación, así que o conmutas las líneas de comunicaciónes o utilizas un puerto para cada dispositivo, porque si no se van a "pisar" unos a otros. Creo que lo más sencillo es esto último. En tu caso, supongo que tendrás que crear puertos software, como te indicó Heke. Con una buena programación creo que podrás "conversar" con los tres dispositivos simultáneamente.

Claro, pero ¿cómo podría conmutar las 2 lineas de comunicación?, de ahí viene mi insistencia sobre el multiplexor, si conoces alguna forma de conmutación válida en arduinos te agradecería que me orientaras.

Saludos.

Pues no te sabría decir, lo siento, ya que no estoy muy puesto en dispositivos hardware y no sé si existirá algún chip específico para esa tarea; si dispones de suficientes pines creo que la mejor solución sigue siendo la de establecer tres puertos separados. De todas formas, de existir dicho multiplexor, el cableado adicional no te lo quitaría nadie.

Ok, muchas gracias por tu ayuda.