Si no desea utilizar la API y desea utilizar estrictamente el modo AT, le sugiero que simplemente coloque una cadena de prefijo de destino al comienzo de cada uno de sus mensajes y luego transmita todos los mensajes a todos los nodos finales. .
En los nodos finales de recepción, escriba algún código para verificar si la cadena de prefijo de destino de un mensaje recibido coincide con la dirección / nombre de ese nodo final en particular (que puede asignar al azar en el código).
No creo que sea una buena idea cambiar ATDL dinámicamente para cada mensaje. No solo puede afectar el tiempo y requerir un nuevo emparejamiento, sino también recordar que ATDL está escrito en la EEPROM de Xbee, que solo permite un número finito de reescrituras.
ACTUALIZACIÓN: Más detalles sobre la implementación (según lo solicitado por OP):
Si ya has configurado Xbees, debería ser extremadamente fácil. Imagina que hay cinco personas en una fiesta ruidosa, y tienes que pedirle a una de ellas que se acerque a ti. ¿Cómo lo haces desde donde estás? Primero grita su nombre, luego diga lo que quiere decir. Entonces, "Juan, ven aquí". (O si dos personas, "Juan y María, vengan aquí").
Todos lo escuchan, pero solo John pensará que le preocupa, por lo que escuchará el resto del mensaje y luego actuará.
Del mismo modo, supongamos que desea enviar un mensaje a cualquiera de los "nodos finales" de su red. Primero, asigne todas las direcciones, digamos 1 a 5. Ahora, desde Xbee central / base, transmite un mensaje (es decir, va a todos), por ejemplo, "01,03 > 76".
- Las direcciones de destino son todo antes de ">" (Podrías usar cualquier símbolo).
- Por lo tanto, 01 y 03 son las direcciones de los destinos Xbee a los que pretende comunicarse.
- Y el contenido real del mensaje es todo después de ">".
- Entonces, "76" o "abc" o el mensaje que quieras enviar a Xbees 01 y 03.
Y de manera similar, en los Xbees DE ESCUCHA (no en el Xbee central / base, sino en los nodos finales), simplemente coloque una condición "si" para verificar si el mensaje recibido es para ese Xbee. Aquí hay un pseudocódigo:
MyAddress = "01" [this will be different for each end-node Xbee]
Read for any Xbee received messages
if (XbeeReceivedMessageString contains MyAddress before ">")
{
read the rest of the message and do whatever you need to do with it.
}
else
{
do nothing/ignore.
}
(Si necesita ayuda para configurar y aprender sobre Xbees, solo busque Google para ello. Una forma fácil de comenzar puede ser buscar "tutoriales de Xbee Arduino".)