Pages: [1]   Go Down
Author Topic: Trabajar con varios módulos simultaneamente. Error TTX  (Read 930 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Spain
Offline Offline
God Member
*****
Karma: 25
Posts: 956
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
 
Code:
#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
« Last Edit: April 02, 2013, 06:23:00 am by Heke » Logged

CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Palencia, Spain
Offline Offline
Sr. Member
****
Karma: 19
Posts: 391
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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).
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Palencia, Spain
Offline Offline
Sr. Member
****
Karma: 19
Posts: 391
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Palencia, Spain
Offline Offline
Sr. Member
****
Karma: 19
Posts: 391
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, muchas gracias por tu ayuda.
Logged

Pages: [1]   Go Up
Jump to: