comunicacion serial xbee y pantalla del IDE

Hola a toda la comunidad Arduino. Estoy realizando una comunicación inalámbrica xbee pero me estoy encontrando con un problema, resulta que el Serial (Rx0 y Tx1) lo estoy utilizando para comunicación y control de ordenes por medio de xbee. Pero tengo muchos problemas cuando en el puerto Serial imprimo Serial.print para obtener información en pantalla monitor para ver si hago las cosas bien o no, esto es mandado también como código de xbee serial. Por lo tanto he pensado en crear en Arduino Uno otro puerto Serial con el softwareSerial.h.
Lo que quiero realizar es emplear un Serial para solo envió de datos por medio de Xbee y otro Serial2 para el envió de información en pantalla monitor para así no entrar en conflicto. Que me recomendais. La opción de utilizar softwareSerial.h es una opción válida o hay otras maneras de poder realizarlo.

Gracias.

Me interesa tu proyecto y yo tengo algunos problemas similares al usar la comunicación serial entre 2 arduinos que montan un xbee cada uno (Es como que no sea bidireccional, o el buffer se llene) Los 2 xbee los tienes a 9600 baudios? Y en qué configuración los tienes? ¿Qué clase de errores te dan? Podrías pegar el código?? Un saludo

Saludos
La informacion que suministras no es suficiente. Coloca tu codigo y asi podremos ver como hacer una pequeña modificación para que funcione.

Pasate por las normas para que sepas que y como colocarlo.

Hola el código que estoy realizando de momento está incompleto estoy en proceso y algunas cosas están a medio hacer. Para que no haya confusión con mi problema y meter mucho código que puede llagar a liar. He realizado un pequeño sketch donde se visualiza mi problema. De todas formas puedo colgar el código completo si hace falta pero está incompleto y con algunos fallos. Cuando lo tenga mas decente me gustaria colgarlo y que le echarais un vistazo.

Lo que he realizado es la comunicación inalámbrica entre dos puntos con posibilidad de ampliar a mas.
Mis herramientas empleadas son:

Un movil con el que mandare unos caracteres que serán códigos para realizar ciertas tareas como parada marcha de un motor, regulación…

CENTRAL. Equipada con un Arduino Mega 2560 con dos Shield montados. El primer Shield montado es Wireless Proto para el xbee y el segunda Shield GSM (siguiendo los pasos aportado en la pagina pude realizar las modificaciones para que funcionara esta Shield en una placa Arduino Mega). El xbee que empleo es de la serie 2 XB24-BSIT-004 RevE.

ZONA. Equipada con un Arduino Uno y Shield Wireless proto. El xbee que empleo es idéntico al anterior de de serie 2 XB24-BSIT-004 RevE. (Esto es muy importante si queremos comunicar xbee tienen que ser de la misma serie, no podremos comunicar nunca una de la Serie 1 con la Serie 2).

Ahora paso a explicar lo que hace este código:

Desde el móvil mando una serie de caracteres que serán ordenes y controles. Si mando:
#1M (Me Encenderá un led en la Zona 1). # me indica que mando un codigo, 1 es la zona M la orden de encender led. Ojo respetar la mayúscula.
#1P (Me Apagará el led en la Zona 1). # me indica que mando un codigo, 1 es la zona y P la orden de apagado del led.

Estos caracteres serán recibidos por la Central que mandará por comunicación serial mediante los xbee a su zona la correspondiente orden. Aquí mi problema. Utilizo Serial.print para mandar ese carácter y para información también y el problema lo veis en la foto que mando adjunta. sí por ejemplo :
M
P
Recibe la Zona la orden y la realiza
M (Enciende led)
P (Apaga led)
Respondo como que se ha ejecutado la acción por puerto serie mediante los xbee a la Central:
M
P
Al recibir la centrar el carácter responderá con un SMS al movil.
si recibe una M Responderá con “ok pozo marcha”
si recibe una P respondrá con “ok pozo parado”

Mi problemas es como utilizo el Serial para comunicación inalambrica de los xbee que sea diferente a la información. ejemplo:

serial.print(‘M’); //Esto es codigo de orden de xbee. comunicación.
serial.println(“POZO MARCHA”); //texto de ayuda para comprender que es esa orden. Si pongo esta línea se me imprime también en la Central y al contener una P mayúscula me lo detecta también como orden. Alguien me dirá muy fácil utilízala en mayúsculas las ordenes y en minúsculas la información de texto. Pero claro en vistosidad en pantalla monitor serial queda como en la foto que os mando.

Lo que intento realizar es emplear un Serial para Xbee comunicación entre ellos y otro serial para información en pantalla quisiera saber si la utilización de la libreria softwareSerial.h es válida y como emplearla o si hay alguna otra manera de realizarla.
Código Central:

//BIBLIOTECAS
#include <GSM.h>

#define PINNUMBER "1010"  //PIN tarjeta de ESTACIÓN CENTRAL GSM.

// Inicializar las clases de la biblioteca
GSM gsmAccess; // Incluye un parámetro "verdadero" para habilitar depuración.
GSM_SMS sms;  //Recepción y envio de SMS. 

//VARIABLES.
char ECodigoOrden;//llevará a cabo el caracter entrante de los SMS.
char RContestacion;  //recepción contestación de la ESTACION POZO por Serial (zigbee).
char numeroRemoto[20]; //numero que manda SMS y que luego mandaremos información.
//Información via SMS mandada al Smartphone.
char pozoParo[20]="ok pozo paro";
char pozoMarcha[20]="ok pozo marcha";


//////CONFIGURACIÓN.///////
void setup() 
{
  Serial.begin(9600); //Inicializamos la comunbicación Serial
  Serial.println("mensajes sms receptor");
  boolean notConnected = true; //Estado de la conexión
  // Inicio Shield GSM.
  // Si la tarjeta SIM tiene PIN, pasarlo como un parámetro de begin().
  while(notConnected) //Instrucción que se repite mientras la condición cierta.
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("no conectado");
      delay(1000);
    }
  }

  Serial.println("gsm inicializado");
  Serial.println("esperando a los mensajes");
}

//////EMPIEZA MI PROGRAMA.//////
void loop() 
{

  ////*******ESPERO RECIBIR CODIGO ORDENES DEL SMARTPHONE.******////
  if (sms.available()>0) //testeo caracter entrante via SMS.
  {
    sms.remoteNumber(numeroRemoto, 20);  //guardo numero movil del sms recibido
    Serial.println(numeroRemoto);  //Lo imprimo via Serial
    if(sms.peek()!='#')  //Para desechar los SMS que no empiecen por #.
    {
      Serial.println("sms desechado");  
      sms.flush();
    }
    
    ECodigoOrden=sms.read();  //guardo caracter entrante en inchar.  
    if(ECodigoOrden=='#')  //Primer caracter # indica recepción de código. El segundo
                     //indicará la orden.
    {
      //////////////////////////ZONA 1////////////////////////////////////
      delay(10);
      ECodigoOrden=sms.read();
      if(ECodigoOrden!='1')  //Identifico la zona 1 para si quiero poner mas ///////////////
      {
        delay(10);
        sms.flush();
        Serial.println("no existe zona");
      }   
      delay(10);
      ECodigoOrden=sms.read(); 
      if(ECodigoOrden=='P')
      {
        delay(10);
        Serial.print('P');
      }    
      else if(ECodigoOrden=='M')
      { 
        delay(10);
        Serial.print('M');
      } 
  }  
  else   //Si no coincide ninguna orde lo desechamos y borramos sms.
  {
     delay(10);
     Serial.println("sms desechado no existe la orden");
     sms.flush();
   }   
      delay(10);
      sms.flush(); //Borra la memoria de SMS
      Serial.println("mensaje eliminado");
    }
    
  
  ////ESPERO RECIBIR CONTESTACIONES DE LA ZONA via serial (zigbee).////
  ////ENVIO INFORMACIÓN AL SMARTPHONE.////
  if(Serial.available()>0)
  {
    RContestacion=Serial.read(); //recibo primer contestación via serial guardo en marcaparo.
    Serial.println(RContestacion); 
     if(RContestacion=='P')  //ORDEN PARO
     { 
       Serial.print("N= ");  //imprime numero por serial
       Serial.println(numeroRemoto);
       Serial.println("envia: ");  //imprimo 
       Serial.println(pozoParo);
       //Mando Información al numero que me mando la orden   
       /*sms.beginSMS(numeroRemoto);  //numero que lo mando.
       sms.print(pozoParo);  //información.
       sms.endSMS();  //El SMS esta completado y lo envio.
       Serial.println("\nok");*/   
     }
     else if(RContestacion=='M')  //ORDEN MARCHA iden de orden paro pero con marcha.
     {
       Serial.print("n= ");
       Serial.println(numeroRemoto);
       Serial.println("envia: ");
       Serial.println(pozoMarcha);
       /*sms.beginSMS(numeroRemoto);
       sms.print(pozoMarcha);
       sms.endSMS();
       Serial.println("\nok");*/
     } 
     delay(10); 
     Serial.read(); //limpiamos el buffle de lectura Serial.
  }   
  delay(10);
  //delay(1000); //Tiempo de espera.
}

Código Zona:

//CONFIGURACIÓN DE LOS PINES.
int MPpozo=13;  //Activa el Motor del pozo. Led ON=MARCHA o OFF=PARADO.(ver)

//VARIABLES.
char ROrden;  //Guarda caracter recibido por el puerto Serial. Marcha o paro.

//////CONFIGURACIÓN//////
void setup() 
{ 
  Serial.begin(9600);  //Inicializamos la comunicación Serial.
  //Configuración de pines como entrada o salida.
  pinMode(MPpozo,OUTPUT);//led 
}

//////--------------------------------------EMPIEZA MI PROGRAMA--------//////
void loop() 
{
  ////*******ESPERO RECIBIR CODIGO ORDEN DE LA ESTACIÓN CENTRAL*******////
  if(Serial.available()>0) //Testeo caracter entrada Serial, via Zigbee.
  {
    ROrden=Serial.read();  //Guardo caracter entrante en marchaparo
    if(ROrden=='P')  //PARO led apagado.////////////////////////////////
    {
      digitalWrite(MPpozo,LOW);
      Serial.print('P');
      Serial.print("No quiero como xbee"
    } 
    else if(ROrden=='M')  //MARCHA. led encendido/////////////////////////
    {
       digitalWrite(MPpozo,HIGH);
       Serial.print('M');
    } 
    delay(10);
    Serial.read();//limpia buffle de lectura Serial.
  }
}

Adjunto foto del monitor Serial.

Muchas gracias

Raulitus hola, los xbee los tengo configurados en modo transparente programados de la siguiente manera: COORDINADO ROUTER C R Pan ID 2014 2014 SH 13A200 13A200 SL 40BA79D8 40AFC964 DH 13A200 13A200 DL 40AFC964 40BA79D8 NI COORDINADOR ROUTER

chufi: Raulitus hola, los xbee los tengo configurados en modo transparente programados de la siguiente manera: COORDINADO ROUTER C R Pan ID 2014 2014 SH 13A200 13A200 SL 40BA79D8 40AFC964 DH 13A200 13A200 DL 40AFC964 40BA79D8 NI COORDINADOR ROUTER

Gracias Uso los Serie1 y por defecto ambos me venían con en NI = END DEVICES. Cambiado uno a COORDINATOR y arreglado

Hola Raulitus él NI es solamente el nombre que le ponemos al Modulo. Yo le he puesto COORDINADOR Y ROUTER pero les puedes llamar como quieras (PABLITO Y JUAN) es solo para identificarlos. Lo que no se si llamándolos con el mismo identificador crearía conflictos, lo que sí que crearía seguro es confusión.

¿Para programarlos utilizas X-CTU? si es así en Function Set uno lo tienes que poner como COORDINADOR AT y el otro como ROUTER/END DEVICE AT. Que seguramente es lo que has hecho para que funcionara. :D.

Saludos.