El código apropiado (Arduino) de Xbee

2

¿Puede decirme 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 enviarlos a través de Xbee y Arduino). Xbee está conectado al escudo a Arduino UNO en el primer lado, en el otro lado, Xbee está conectado a otro escudo a Arduino Mega.

Ya configuré Xbees y traté de enviar comandos desde PC (Xbee) a Arduino (Xbee) y funcionó.

Alguien me ayudaría proporcionándome un ejemplo de envío de variables (x, y) de UNO a MEGA (uso el programa Arduino que contiene C / C ++), o me explica cómo hacerlo.

    
pregunta peace 11

1 respuesta

4

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

Nombremos XBees XBee_uno y XBee_mega para los siguientes pasos. Probablemente ya hayas completado los tres primeros, pero los estoy escribiendo por completo 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 la Serie 1 XBees creo que solo necesita la configuración de un parámetro)

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

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

Ahora configúralos para que se envíen unos a otros. Esto completa la configuración de "Serial Wire".

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

  • Para XBee_uno, configure DH y DL al valor de SH y SL respectivamente desde XBee_mega

  • Para XBee_mega, establezca DH y DL al valor de SH y SL respectivamente desde XBee_uno

  • Guarda la configuración en 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 XBees más antiguos, puedes leer la dirección MY de cada XBee y luego configurarla de la siguiente manera:

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

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

Shameless plug: Si desea utilizar otras funciones avanzadas de XBees, como transmitir o usar más de dos XBees, deberá usar el modo API en lugar de AT. Tuve que luchar un poco con él, así que reuní las herramientas, los artículos y los consejos que me resultaron útiles: enlace

    
respondido por el Erion

Lea otras preguntas en las etiquetas