El código apropiado (Arduino) de Xbee

¿Me puede decir cuál es el código apropiado para enviar dos variables (x, y) de un Xbee a otro Xbee (serie 1). Los configuré y no puedo escribir un código (porque no sé cómo recibir información y enviarla a través de Xbee y Arduino). Xbee está conectado al escudo de Arduino UNO en el primer lado, en el otro lado, Xbee está conectado a otro escudo de Arduino Mega.

Ya configuré Xbees e intenté enviar comandos desde la PC (Xbee) a Arduino (Xbee) y funcionó.

¿Alguien podría ayudarme brindándome un ejemplo de envío de variables (x, y) de UNO a MEGA (uso el programa Arduino que contiene C / C ++), o explicar cómo hacerlo?

Respuestas (1)

Le aconsejo que comience configurando los XBees en el modo AT "Serial Wire". Esto convierte a los XBees en una simple conexión en serie entre los Arduinos. A partir de ese momento, usa Serial.print()/Serial.write() y Serial.read() como si los Arduinos estuvieran conectados directamente entre sí por cables.

Llamemos a los XBees XBee_uno y XBee_mega para los siguientes pasos. Probablemente ya haya completado los primeros tres, pero los estoy escribiendo en su totalidad para ayudar a otros que puedan tener esta pregunta.

  • Use X-CTU para configurar ambos XBees en modo AT (esto puede requerir un nuevo firmware o conjunto de funciones, aunque los XBees de la Serie 1 creo que solo necesitan la configuración de un parámetro)

  • Configure ambos XBees para usar el mismo PAN ID; configure uno para que sea coordinador y el otro para que sea un enrutador/dispositivo final. Nuevamente, es posible que necesite una actualización de firmware/conjunto de funciones para esto. No importa cuál sea el coordinador, siempre que uno sea el coordinador y el otro sea un enrutador/dispositivo final.

  • Establezca la velocidad de serie de ambos XBees en un valor conocido, por ejemplo, 9600 bps, sin paridad, 8 datos 1 bits de parada

Ahora configúrelos para que se envíen entre sí. Esto completa la configuración de "Cable en serie".

  • Desde X-CTU, lea el SH y el SL de cada uno (es decir, el número de serie alto/número de serie bajo)

  • Para XBee_uno, establezca DH y DL en el valor de SH y SL respectivamente de XBee_mega

  • Para XBee_mega, establezca DH y DL en el valor de SH y SL respectivamente de XBee_uno

  • Guarde la configuración en los XBees.

En este punto, los XBees están configurados para funcionar como un par de cables virtuales entre los puertos serie de los Arduinos.

Código de muestra:

//on the sender side
void setup() {
  Serial.begin(9600);//this has to match the serial speed you configured for the respective XBee
}
void loop() {
  Serial.write(20); //or the value you want to send   
}

//on the receiver side
int received;
void setup() {
  Serial.begin(9600);//this has to match the serial speed you configured for the respective XBee
}
void loop() {
  if (Serial.available()) {
    received=Serial.read();
  }
}

Como alternativa para los XBee más antiguos, puede leer la dirección MY de cada XBee y luego configurarla de la siguiente manera:

  • Para XBee_uno: establece DH=0, DL = MY de XBee_mega
  • Para XBee_mega: establece DH=0, DL = MY de XBee_uno

Esto funciona con XBees Serie 1 y Serie 2, pero tiene la desventaja de que las direcciones MY pueden cambiar al apagar y encender los XBees. El método anterior usa los números de serie únicos de XBees (SH/SL), por lo que no se ve afectado.

Complemento desvergonzado: si desea utilizar otras funciones avanzadas de XBees, como la transmisión o el uso de más de dos XBees, deberá usar el modo API en lugar de AT. Tuve que luchar un poco con eso, así que recopilé las herramientas, artículos y consejos que encontré útiles: http://erion.elmasllari.com/2012/06/in-the-trenches-with-xbee-resources- y-consejos/