{"id":224,"date":"2025-11-28T14:25:44","date_gmt":"2025-11-28T14:25:44","guid":{"rendered":"https:\/\/www.artinteractivo.com\/?page_id=224"},"modified":"2025-11-28T14:27:09","modified_gmt":"2025-11-28T14:27:09","slug":"xbee-and-arduino","status":"publish","type":"page","link":"https:\/\/www.artinteractivo.com\/fr\/xbee-and-arduino\/","title":{"rendered":"Xbee and Arduino"},"content":{"rendered":"<figure class=\"wp-block-image\"><a class=\"logo-img\" href=\"https:\/\/www.arduineando.com\/\"><img decoding=\"async\" src=\"https:\/\/www.arduineando.com\/wp-content\/uploads\/2018\/02\/logo2.png\" alt=\"arduineando\"\/><\/a><\/figure>\n\n\n\n<ul id=\"menu-tutoriales_arduino\" class=\"wp-block-list\"><\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">Xbee y Arduino<\/h1>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/1x-XBee-S1-300x300.jpg\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/1x-XBee-S1-300x300.jpg\" alt=\"1x-XBee-S1-300x300\" class=\"wp-image-439\"\/><\/a><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Introducci\u00f3n<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">L\u00f3s m\u00f3dulos XBee utilizan el protocolo IEEE 802.15.4 mejor conocido como ZigBee.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zigbee es un protocolo de comunicaciones inal\u00e1mbrico basado en el est\u00e1ndar de comunicaciones para redes inal\u00e1mbricas IEEE_802.15.4. Creado por Zigbee Alliance, una organizaci\u00f3n, te\u00f3ricamente sin \u00e1nimo de lucro, de m\u00e1s de 200 grandes empresas (destacan Mitsubishi, Honeywell, Philips, ODEM do, Invensys, entre otras), muchas de ellas fabricantes de semiconductores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zigbee permite que dispositivos electr\u00f3nicos de bajo consumo puedan realizar sus comunicaciones inal\u00e1mbricas. Es especialmente \u00fatil para redes de sensores en entornos industriales, m\u00e9dicos y, sobre todo, dom\u00f3ticos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Aplicaciones<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cada m\u00f3dulo Zigbee, al igual que ocurre con las direcciones MAC de los dispositivos ethernet, tiene una direcci\u00f3n \u00fanica. En el caso de los m\u00f3dulos Zigbee cada uno de ellos tiene una direcci\u00f3n \u00fanica de 64bits que viene grabada de f\u00e1brica. Por otro lado, la red Zigbee, utiliza parasus algoritmos de ruteo direcciones de 16 bits. Cada vez que un dispositivo se asocia a una redZigbee, el Coordinador al cual se asocia le asigna una direcci\u00f3n \u00fanica en toda la red de 16bits. Por eso el n\u00famero m\u00e1ximo te\u00f3rico de elementos que puede haber en una red Zigbee es de 2^16 =65535, que es el n\u00ba m\u00e1ximo de direcciones de red que se pueden asignar. Estos m\u00f3dulos Xbee, pueden ser ajustados para usarse en redes de configuraci\u00f3n punto-a-punto, punto-a-multipunto o peer-to-peer.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/xbee.png\"><\/a><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Conexi\u00f3n de pines entre Xbee y Arduino<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/PIN-CONECTIONS.png\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/PIN-CONECTIONS-300x79.png\" alt=\"PIN CONECTIONS\" class=\"wp-image-479\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/BREAK-OUT.png\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/BREAK-OUT-300x278.png\" alt=\"BREAK OUT\" class=\"wp-image-480\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Equivalente en USB Explorer<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/EXPLORER-USB.png\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/EXPLORER-USB-300x293.png\" alt=\"EXPLORER USB\" class=\"wp-image-481\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Descripci\u00f3n de &nbsp;pines:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/descripcion-pines.png\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/descripcion-pines-300x275.png\" alt=\"descripcion pines\" class=\"wp-image-477\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Los m\u00f3dulos Xbee<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Los m\u00f3dulos Xbee proveen 2 formas amigables de comunicaci\u00f3n:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Transmisi\u00f3n serial transparente (modo AT) y el modo API que provee muchas ventajas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Modo AT<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esta el modo de transmisi\u00f3n serial transparente (Modo AT), en el cual la comunicaci\u00f3n se asemeja a lo que seria una transmisi\u00f3n a trav\u00e9s de un puerto serial, ya que el dispositivo se encarga de crear la trama y el dato que llegue al pin Tx sera enviado de forma inal\u00e1mbrica, por lo cual se considera como el modo mas sencillo para utilizar estos nodos, su principal desventaja es que para enviar informaci\u00f3n a distintos nodos es necesario entrar constantemente al modo configuraci\u00f3n para cambiar la direcci\u00f3n de destino.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Modo API<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El otro modo de comunicaci\u00f3n se conoce como Modo API, en este caso un microcontrolador externo se debe encargar de crear una trama especifica al tipo de informaci\u00f3n que se va a enviar, este modo es recomendado para redes muy grandes donde no se puede perder tiempo entrando y saliendo del modo configuraci\u00f3n de los dispositivos. Para redes con topolog\u00eda en Malla este es el modo a utilizar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Software para configurar<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los m\u00f3dulos Xbee pueden ser configurados desde el PC utilizando los programas X-CTU, Moltosenso o Cool Terms adem\u00e1s de otros. Moltosenso y Cool Terms nos permiten trabajar en m\u00faltiples plataformas, mientras que X-CTU solo trabaja en Windows.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"http:\/\/www.moltosenso.com\/client\/fe\/browser.php?pc=\/client\/fe\/download.php\" target=\"_blank\" rel=\"noreferrer noopener\">Descargar Moltosenso<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los Xbee pueden comunicarse en arquitecturas punto a punto, punto a multi punto o en una red mesh. La elecci\u00f3n del m\u00f3dulo XBee correcto pasa por escoger el tipo de antena (chip, alambre o conector SMA) y la potencia de transmisi\u00f3n (2mW para 300 pies o 60mW para hasta 1 milla).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El m\u00f3dulo requiere una alimentaci\u00f3n desde 2.8 a 3.4 V, la conexi\u00f3n a tierra y las l\u00edneas de transmisi\u00f3n de datos por medio del UART (TXD y RXD) para comunicarse con un microcontrolador, o directamente a un puerto serial utilizando alg\u00fan conversor adecuado para los niveles de voltaje.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Caracter\u00edsticas:<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">-Buen Alcance: hasta 300ft (100 mts) en l\u00ednea vista para los m\u00f3dulos Xbee y hasta 1 milla (1.6 Km) para los m\u00f3dulos Xbee Pro.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-9 entradas\/salidas con entradas anal\u00f3gicas y digitales.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Bajo consumo &lt;50mA cuando est\u00e1n en funcionamiento y &lt;10uA cuando est\u00e1n en modo sleep.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Interfaz serial.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-65,000 direcciones para cada uno de los 16 canales disponibles. Se pueden tener muchos de estos dispositivos en una misma red.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-F\u00e1ciles de integrar.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Series<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Existen 2 series de estos m\u00f3dulos. La serie 1 y la serie 2 o tambi\u00e9n conocida como 2.5. Los m\u00f3dulos de la Serie 1 y la Serie 2 tienen el mismo pin-out, sin embargo, NO son compatibles entre s\u00ed ya que utilizan distintos chipset y trabajan con protocolos diferentes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La serie 1 est\u00e1 basada en el chipset Freescale y est\u00e1 pensado para ser utilizado en redes punto a punto y punto a multipunto. Los m\u00f3dulos de la serie 2 est\u00e1n basados en el chipset de Ember y est\u00e1n dise\u00f1ados para ser utilizados en aplicaciones que requieren repetidores o una red mesh. Ambos m\u00f3dulos pueden ser utilizados en los modos AT y API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>XBee 1mW \u2013 Serie 1<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/150x150xxbee_s1.png.pagespeed.ic_.b-AWfeD0Rz.png\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/150x150xxbee_s1.png.pagespeed.ic_.b-AWfeD0Rz.png\" alt=\"150x150xxbee_s1.png.pagespeed.ic.b-AWfeD0Rz\" class=\"wp-image-453\"\/><\/a><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li><\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"http:\/\/www.tiendaderobotica.com\/tienda\/Comunicaciones\/XBee\/XBeeAntenaChip1mW\" target=\"_blank\" rel=\"noreferrer noopener\">\u2013 M\u00e1s informaci\u00f3n<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>XBee 2mW \u2013 Serie 2<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/150x150xxbee_s2.jpg.pagespeed.ic_.6vIIg-GsLQ.jpg\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/150x150xxbee_s2.jpg.pagespeed.ic_.6vIIg-GsLQ.jpg\" alt=\"150x150xxbee_s2.jpg.pagespeed.ic.6vIIg-GsLQ\" class=\"wp-image-454\"\/><\/a><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li><\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"http:\/\/www.tiendaderobotica.com\/tienda\/Comunicaciones\/XBee\/XBee2mWCableAntenaSeries2\" target=\"_blank\" rel=\"noreferrer noopener\">M\u00e1s informaci\u00f3n<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/serie1vsserie2.png\"><\/a><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">Comunicaci\u00f3n Xbee<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Las comunicaciones Zigbee se realizan en la banda libre de 2.4GHz. A diferencia de bluetooth no utiliza FHSS (Frequency hooping), sino que realiza las comunicaciones a trav\u00e9s de una \u00fanica frecuencia, es decir, de un canal. Normalmente puede escogerse un canal de entre 16 posibles. El alcance depende de la potencia de emisi\u00f3n del dispositivo as\u00ed como el tipo de antenas utilizadas (cer\u00e1micas, dipolos, \u2026) El alcance normal con antena dipolo en visi\u00f3n directa suele ser aproximadamente (tomando como ejemplo el caso de MaxStream, en la versi\u00f3n de 1mW de potencia) de 100m y en interiores de unos 30m. La velocidad de transmisi\u00f3n de datos de una red Zigbee es de hasta 256kbps. Por \u00faltimo decir que una red Zigbee la pueden formar, te\u00f3ricamente, hasta 65535 equipos, es decir, el protocolo est\u00e1 preparado para poder controlar en la misma red esta cantidad enorme de dispositivos. La realidad es menor, siendo, de todas formas, de miles de equipos.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>Arquitectura B\u00e1sica de una Red XBee.<\/strong><\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Una red Zigbee la forman b\u00e1sicamente 3 tipos de elementos. Un \u00fanico dispositivo Coordinador, dispositivos Routers y dispositivos finales (end points).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los m\u00f3dulos XBee son vers\u00e1tiles a la hora de establecer diversas topolog\u00edas de red, dependiendo la serie de XBee que escojamos pueden crearse redes:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>El Coordinador:<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Es el nodo de la red que tiene la \u00fanica funci\u00f3n de formar una red. Es el responsable de establecer el canal de comunicaciones (como habl\u00e1bamos antes) y del PAN ID (identificador de red) para toda la red. Una vez establecidos estos par\u00e1metros, el Coordinador puede formar una red, permitiendo unirse a \u00e9l a dispositivos Routers y End Points. Una vez formada la red, el Coordinador hace las funciones de Router, esto es, participar en el enrutado de paquetes y ser origen y\/o destinatario de informaci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Los Routers:<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Es un nodo que crea y mantiene informaci\u00f3n sobre la red para determinar la mejor ruta para enrutar un paquete de informaci\u00f3n. L\u00f3gicamente un router debe unirse a una red Zigbee antes de poder actuar como Router retransmitiendo paquetes de otros routers o de End points.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>End Device:<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Los dispositivos finales no tienen capacidad de enrutar paquetes. Deben interactuar siempre a trav\u00e9s de su nodo padre, ya sea este un Coordinador o un Router, es decir, no puede enviar informaci\u00f3n directamente a otro end device. Normalmente estos equipos van alimentados a bater\u00edas. El consumo es menor al no tener que realizar funciones de enrutamiento.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/images.jpg\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/images.jpg\" alt=\"images\" class=\"wp-image-451\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Los m\u00f3dulos XBee son vers\u00e1tiles a la hora de establecer diversas topolog\u00edas de red, dependiendo la serie de XBee que escojas puedes crear redes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Punto a punto<\/li>\n\n\n\n<li>Estrella<\/li>\n\n\n\n<li>Malla<\/li>\n\n\n\n<li>\u00c1rbol<\/li>\n\n\n\n<li>Mixtas<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>Modos RECIBIR\/TRANSMITIR.<\/strong><\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Se encuentra en estos modos cuando al m\u00f3dulo le llega alg\u00fan paquete RF a trav\u00e9s de la antena(modo Receive) o cuando se manda informaci\u00f3n serial al buffer del pin 3 (UART Data in) que luego ser\u00e1 transmitida (modo Transmit).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La informaci\u00f3n transmitida puede ser Directa o Indirecta. En el modo directo la informaci\u00f3n se env\u00eda inmediatamente a la direcci\u00f3n de destino. En el modo Indirecto la informaci\u00f3n es retenida durante un per\u00edodo de tiempo y es enviada s\u00f3lo cuando la direcci\u00f3n de destino la solicita.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adem\u00e1s es posible enviar informaci\u00f3n por dos modos. Unicast y Broadcast. Por el primero, la comunicaci\u00f3n es desde un punto a otro, y es el \u00fanico modo que permite respuesta de quien recibe el paquete RF, es decir, quien recibe debe enviar un ACK (paquete llamado as\u00ed, y que indica que recibi\u00f3 el paquete, el usuario no puede verlo, es interno de los m\u00f3dulos) a la direcci\u00f3n de origen. Quien envi\u00f3 el paquete, espera recibir un ACK, en caso de que no le llegue, reenviar\u00e1 el paquete hasta 3 veces o hasta que reciba el ACK. En el modo Broadcast la comunicaci\u00f3n es entre un nodo y a todos los nodos de la red. En este modo, no hay confirmaci\u00f3n por ACK.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Modo de Bajo Consumo (Sleep Mode).<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El modo de sue\u00f1o hace posible que el m\u00f3dulo RF entre en un modo de bajo consumo de energ\u00eda cuando no se encuentra en uso.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Modo de Comando.<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Este modo permite ingresar comandos AT al m\u00f3dulo Xbee, para configurar, ajustar o modificar par\u00e1metros. Permite ajustar par\u00e1metros como la direcci\u00f3n propia o la de destino, as\u00ed como su modo de operaci\u00f3n entre otras cosas. Para poder ingresar los comandos AT es necesario utilizar un Hyperterminal como el programa CoolTerms.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Idle<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando el m\u00f3dulo no se est\u00e1 en ninguno de los otros modos, se encuentra en \u00e9ste. Es decir, si no est\u00e1 ni transmitiendo ni recibiendo, ni ahorrando energ\u00eda ni en el modo de comandos, entonces se dice que se encuentra en un estado al que se le llama IDLE.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Xbee Shield<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">El&nbsp;XBee&nbsp;shield para Arduino permite comunicar tu Arduino de forma inal\u00e1mbrica usando&nbsp;ZigBee.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Configuraci\u00f3n de los jumpers<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La Xbee shield tiene dos jumpers (las peque\u00f1as fundas de pl\u00e1sticos que est\u00e1n sobre los tres pines etiquetados como Xbee\/USB). Estos determinan como se conecta la comunicaci\u00f3n serie del Xbee entre el microcontrolador ATmega328 y el chip serie FTDI de la placa Arduino.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con los jumpers en la posici\u00f3n Xbee ( los dos pines m\u00e1s cercanos al interior de la placa), el pin DOUT de el m\u00f3dulo Xbee est\u00e1 conectado al pin RX del microcontrolador; y el pin DIN est\u00e1 conectado a TX. Notar que los pines RX y TX del microcontrolador est\u00e1n todav\u00eda conectados a los pines TX y RX (respectivamente) del chip FTDI \u2013 los datos enviados desde el microcontrolador ser\u00e1n transmitidos al ordenador v\u00eda USB y a la vez enviados de forma inal\u00e1mbrica por el m\u00f3dulo Xbee. El microcontrolador, sin embargo, solo ser\u00e1 capaz de recibir datos desde el m\u00f3dulo Xbee, no desde el USB del ordenador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con los jumpers en la posici\u00f3n USB ( los dos pines m\u00e1s cercanos al borde de la placa), el pin DOUT del m\u00f3dulo Xbee est\u00e1 conectado al pin RX del pin del chip FTDI, y el DIN del m\u00f3dulo Xbee est\u00e1 conectado al pin TX del el chip FTDI. Esto significa que el m\u00f3dulo Xbee puede comunicarse directamente con el ordenador \u2013 sin embargo, esto solo funciona si el microcontrolador ha sido quitado de la placa Arduino. Si el microcontrolador se deja en la placa Arduino, solo ser\u00e1 capaz de comunicarse con el ordenador v\u00eda USB, pero ni el ordenador ni el microcontrolador podr\u00e1n comunicarse con el m\u00f3dulo Xbee.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Pr\u00e1ctica 1:<\/h1>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>Comunicaci\u00f3n entre 2 Arduinos v\u00eda&nbsp;<\/strong><strong>XBee&nbsp;802.15.4.<\/strong><\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Deber\u00edas tener dos placas Arduino con&nbsp;XBee&nbsp;shield comunic\u00e1ndose una con la otra sin configurar nada, usando s\u00f3lo los comandos estandard de Arduino.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para cargar un programa a la placa Arduino con&nbsp;XBee&nbsp;shield, necesitar\u00e1s poner los dos jumpers del shield en la posici\u00f3n USB (coloca los dos jumpers en la parte cercana al borde de la placa) o qu\u00edtalos completamente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Luego, ya puedes cargar un programa con normalidad desde el Arduino IDE. En este caso, carga el programa&nbsp;<strong>Communication | Physical Pixel<\/strong>&nbsp;a una de las placas. Este programa manda a la placa encender el LED conectado al pin 13 cuando recibe \u2018H\u2019 por el puerto serie y lo apaga cuando recibe \u2018L\u2019.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes probarlo conectando la placa con el monitor de puerto serie de Arduino (asegurate de configurarlo a 9600 baudios), escribiendo H y INTRO (o pinchando en \u201csend\u201d) el LED deber\u00eda encenderse. Env\u00eda L y el LED deber\u00eda apagarse.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez que has cargado el programa Physical Pixel y comprobado que funciona, desconecta el primer Arduino del ordenador. Conecta los jumpers en la posicion&nbsp;XBee&nbsp;(en la posici\u00f3n m\u00e1s alejada del borde de la placa). Ahora, necesitas cargar otro programa a la otra placa. Aseg\u00farate de que sus jumpers estan en la posici\u00f3n USB. Luego carga el siguiente programa a la placa:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">&nbsp;Sketch XBee:<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">void setup(){&nbsp;&nbsp; \nSerial.begin(9600); \n} \nvoid loop(){&nbsp;&nbsp; \nSerial.print('H');&nbsp; \ndelay(1000);&nbsp; \nSerial.print('L');&nbsp; \ndelay(1000);\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando se haya cargado el programa, puedes comprobar que funciona con el monitor de puerto serie de Arduino. Deber\u00edas ver H\u2019s y L\u2019s llegando cada segundo. Apaga el monitor de puerto serie y desconecta la placa. Cambia los jumpers a la posici\u00f3n&nbsp;XBee. Ahora conecta las dos placas al ordenador, despu\u00e9s de unos segundos, deber\u00edas ver el LED de la primera placa encenderse y apagarse cada segundo (el LED de la placa Arduino, no el LED de la placa&nbsp;XBee&nbsp;shield, que proporciona informaci\u00f3n sobre el estado del m\u00f3dulo&nbsp;XBee).<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Pr\u00e1ctica 2:<\/h1>\n\n\n\n<h1 class=\"wp-block-heading\">Timbre inal\u00e1mbrico con Arduino y Xbee<\/h1>\n\n\n\n<figure class=\"wp-block-embed is-provider-youtube wp-block-embed-youtube\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Timbre inal\u00e1mbrico Arduino y xbee\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/Qpb3d5pqIsY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora vamos amos a hacer uso de dos estaciones cada una con Arduino Uno, Shield XBee, m\u00f3dulo XBee Serie 1. En la estaci\u00f3n de Emisi\u00f3n (E) tenemos un pulsador para poder activar v\u00eda inal\u00e1mbrica el buzzer y el LED ubicados en la estaci\u00f3n de Recepci\u00f3n (R).<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/Xbee_timbre.jpg\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/Xbee_timbre-300x185.jpg\" alt=\"Xbee_timbre\" class=\"wp-image-456\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>&nbsp;Scketch Emisor:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/*\n ----------------------------------------------- \n Timbre inal\u00e1mbrico - Estaci\u00f3n Emisi\u00f3n (E)\n -----------------------------------------------\n\n Consiste en escribir por la pantalla del computador (consola serial) \n una letra predeterminada, en este caso la letra 'D', cada\n vez que se presione el pulsador se va a enviar la letra, como\n el Arduino tiene conectado un m\u00f3dulo XBee esta letra se \n enviar de manera inal\u00e1mbrica.\n\n*\/\n\n\/\/--------------------------------------------------\n\/\/Declara puertos de entradas y salidas y variables\n\/\/--------------------------------------------------\nint boton = 2; \/\/Pin donde se encuentra el pulsador, entrada\n\n\/\/------------------------------------\n\/\/Funcion principal\n\/\/------------------------------------\nvoid setup() \/\/ Se ejecuta cada vez que el Arduino se inicia\n{\n Serial.begin(9600); \/\/Inicia comunicaci\u00f3n serial\n pinMode(boton,INPUT); \/\/Configura el pulsador como una entrada\n}\n\n\/\/------------------------------------\n\/\/Funcion ciclicla\n\/\/------------------------------------\nvoid loop() \/\/ Esta funcion se mantiene ejecutando\n{ \/\/ cuando este energizado el Arduino \n\n \/\/Pregunta si el pulsador esta oprimido\n if(digitalRead(boton)==HIGH){\n Serial.print('D'); \/\/Imprime v\u00eda serial la letra 'D'\n delay(10); \/\/Retardo para no congestionar la escritura serial\n }\n\n}<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>&nbsp;<\/strong><\/h1>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Scketch Receptor:<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">\/*\n ----------------------------------------------- \n Timbre inal\u00e1mbrico - Estaci\u00f3n Recepci\u00f3n (R)\n -----------------------------------------------\n\n Este programa se mantiene recibiendo datos por el puerto serie, \n si recibe la letra esperada en este caso la 'D', el programa\n activa el buzzer (alarma sonora) y activa el LED (alarma visual)\n\n*\/\n\n\/\/--------------------------------------------------\n\/\/Declara puertos de entradas y salidas y variables\n\/\/--------------------------------------------------\nint buzzer=5; \/\/Pin donde se encuentra el buzzer, salida\nint led=13; \/\/Pin donde se encuentra el led, salida\n\n\/\/------------------------------------\n\/\/Funcion principal\n\/\/------------------------------------\nvoid setup() \/\/ Se ejecuta cada vez que el Arduino se inicia\n{\n Serial.begin(9600); \/\/Inicia comunicaci\u00f3n serial\n pinMode(buzzer,OUTPUT); \/\/Configura el buzzer como una salida\n pinMode(led,OUTPUT); \/\/Configura el led como una salida\n\n}\n\n\/\/------------------------------------\n\/\/Funcion ciclicla\n\/\/------------------------------------\nvoid loop() \/\/ Esta funcion se mantiene ejecutando\n{ \/\/ cuando este energizado el Arduino\n\n \/\/ Pregunta si hay alg\u00fan dato en el puerto serial\n if(Serial.available()&gt;0){\n\n \/\/ Pregunta si el dato recibido es la letra 'D'\n if(Serial.read() == 'D'){ \n\n digitalWrite(buzzer,HIGH); \/\/Activa buzzer\n delay(10); \/\/Retardo\n digitalWrite(buzzer,LOW); \/\/Apaga buzzer\n\n digitalWrite(led,HIGH); \/\/Activa led\n delay(10); \/\/Retardo\n digitalWrite(led,LOW); \/\/Apaga led\n\n } \/\/Corchete If lectura letra 'D'\n\n } \/\/Corchete If lectura puerto serie\n\n}<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\"><\/h1>\n\n\n\n<h1 class=\"wp-block-heading\">Pr\u00e1ctica 3:<\/h1>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>Comunicaci\u00f3n entre dos Ordenadores mediante dos m\u00f3dulos XBee 802.15.4 (serie 1)<\/strong><\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">En esta aplicaci\u00f3n vamos a realizar la conexi\u00f3n v\u00eda radio entre dos m\u00f3dulos conectados a dos PC. Se trata de enviar y recibir textos que se enviaran desde uno u otro PC a modo de un chat (bidireccional). Para ello utilizaremos los siguientes dispositivos:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2&nbsp;Arduino XBee 802.15.4 OnChip (Series 1)&nbsp;<a href=\"http:\/\/www.cooking-hacks.com\/index.php\/arduino-xbee-802-15-4.html\" target=\"_blank\" rel=\"noreferrer noopener\">Comprar<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/xbee2.jpg\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/xbee2.jpg\" alt=\"xbee2\" class=\"wp-image-440\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">2 Arduino UNO Rev.3&nbsp;<a href=\"\/fr\/Arduino UNO Rev.3\/\" target=\"_blank\" rel=\"noreferrer noopener\">Comprar<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/arduino-uno.jpg\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/arduino-uno.jpg\" alt=\"arduino-uno\" class=\"wp-image-441\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">2 Ordenadores corriendo en cada uno de ellos un programa de Comunicaci\u00f3n con el puerto serie.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/XBeeSimpleChatDiagram1.jpg\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/XBeeSimpleChatDiagram1.jpg\" alt=\"XBeeSimpleChatDiagram\" class=\"wp-image-450\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Existen varios&nbsp;programas de Comunicaci\u00f3n con el puerto serie para realizar la programaci\u00f3n del modulo. En este caso vamos a usar el&nbsp;<strong>CoolTerm<\/strong>&nbsp;ya que trabaja con todos los sistemas operativos Windows, Mac, and Linux y adem\u00e1s es libre.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"http:\/\/freeware.the-meiers.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Descargar CoolTerm<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>&nbsp;Nota: En el caso en que usemos un Xbee explorer en vez del Arduino uno debemos instalar los drivers FTDI necesarios para que el ordenador reconozca el m\u00f3dulo XBee Explorer.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"http:\/\/www.ftdichip.com\/FTDrivers.htm\" target=\"_blank\" rel=\"noreferrer noopener\">Descargar drivers FTDI<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Preparaci\u00f3n de Arduino Uno<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para configurar nuestras Xbee vamos a usar Arduino Uno sin el microcontrolador. Es posible retirarlo del Arduino, pero yo preferiria no intentarlo ya que podriamos estropearlo. Afortunadamente existe una forma para que el Arduino se salte al microcontrolador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para esto conectamos con un cable entre si RESET y GND de Arduino.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/reset-gnd.jpg\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/reset-gnd.jpg\" alt=\"reset gnd\" class=\"wp-image-444\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Preparaci\u00f3n de Arduino Shield<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En \u00e9ste ejemplo ponemos los jumpers en la posici\u00f3n USB ( los dos pines m\u00e1s cercanos al borde de la placa).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>START<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora ya podemos conectarlos:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Marcamos el primer modulo XBee con el que vamos a trabajar con la letra \u201cA.\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Insertamos el m\u00f3dulo XBee sobre el XBee shield y \u00e9ste al Arduino UNO.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora conectamos el Arduino al Ordenador mediante el cable USB.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/aruino-xbee1.jpg\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/aruino-xbee1-300x225.jpg\" alt=\"aruino xbee\" class=\"wp-image-448\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Configurar el software CoolTerm.<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Abrimos el software CoolTerm y seleccionamos&nbsp;<strong>\u201cOptions\u201d<\/strong>&nbsp;Seleccionamos el puerto serie por el que se ha conectado el m\u00f3dulo XBee.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Debemos asegurarnos de que la velocidad de transmisi\u00f3n se establece en 9600. El numero de bits de los datos es de 8. Se ajusta paridad a \u201cninguno\u201d. Se ajusta el n\u00famero de bits de parada en 1.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/cool1.jpg\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/cool1.jpg\" alt=\"cool1\" class=\"wp-image-445\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora en la lista de la parte izquierda de la ventana de opciones, haga clic en&nbsp;<strong>\u201cTerminal\u201d<\/strong>. Aseg\u00farese de que esta activo&nbsp;<strong>\u201cEco local\u201d<\/strong>. Esto le permitir\u00e1 ver lo que est\u00e1s escribiendo en el terminal.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/LocalEcho1.jpg\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/LocalEcho1.jpg\" alt=\"LocalEcho\" class=\"wp-image-452\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Hacemos Click en OK para grabar la configuraci\u00f3n y cerramos la ventana de Opciones. Hacemos Click en&nbsp;<strong>\u201cConnect\u201d<\/strong>&nbsp;en la barra de menus. Debemos ver el estado \u201cConnected\u201d en la barra de estado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Escribimos&nbsp;<strong>\u201c+++\u201d<\/strong>&nbsp;para entrar en el modo Comando. El sistema nos devuelva<strong>&nbsp;\u201cOK\u201d.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em><strong>Nota:<\/strong>&nbsp;Por defecto el modulo XBee se desconecta si deja de recibir comandos en 10 segundos.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Comandos para configuraci\u00f3n del m\u00f3dulo<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Escribir cada comando seguido de sus par\u00e1metros y pulsar ENTER.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PAN ID:&nbsp;<\/strong>PAN es el n\u00famero de la Red de \u00c1rea Personal. Se trata de un identificador \u00fanico para la red. Solo los XBees asignados a un PAN ID pueden comunicarse entre s\u00ed. Esto permite configurar redes separadas en el mismo lugar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>MY Address:<\/strong>&nbsp;Esta es la direcci\u00f3n de origen de un XBee, es una direcci\u00f3n \u00fanica para cada unidad en particular.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Direcci\u00f3n de destino (parte alta):<\/strong>&nbsp;Representa la primera mitad de la direcci\u00f3n que queremos habilitar. En los m\u00f3dulos XBee puede tener una direcci\u00f3n de 64 bits, por lo que esta es la parte m\u00e1s alta de 32-bit de ese n\u00famero de direcciones. Puesto que no necesitamos tantas direcciones, vamos a ponerlo a 0 y a s\u00f3lo usar la parte alta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Direcci\u00f3n de destino (parte baja):<\/strong>&nbsp;Esta es la direcci\u00f3n que usaremos para localizar el XBee Aseg\u00farese de que coincida con el ajuste de la&nbsp;<strong>ATMY<\/strong>&nbsp;XBee con el que quiere hablar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los ajustes no se guardan hasta que no escriba el comando&nbsp;<strong>ATWR<\/strong>&nbsp;para guardar la configuraci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>As\u00ed es como se ver\u00e1 la sesi\u00f3n en el terminal, a partir de la&nbsp;<\/strong><strong>\u201c+ + +\u201d<\/strong><strong>&nbsp;entraremos en modo comando.<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">+++\nOK\nATID 3001\nOK\nATMY 1\nOK\nATDH 0\nOK\nATDL 2\nOK\nATID\n3001\nATMY\n1\nATDH\n0\nATDL\n2\nATWR\nOK<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><em>Nota:<\/em><\/strong><em>&nbsp;Debemos obtener una respuesta OK despu\u00e9s de emitir cada comando para establecer los par\u00e1metros, y otra respuesta OK al escribir los cambios en el firmware. Si usted no recibe una respuesta OK, lo m\u00e1s probable es que tom\u00f3 m\u00e1s de diez segundos para el comando y el m\u00f3dulo dejo de estar en moco comando. El otro error com\u00fan es no escribir el comando ATWR para guardar los cambios, si no lo hace su configuraci\u00f3n se pierde al desconectar el m\u00f3dulo.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Haga clic en desconectar CoolTerm y quite el m\u00f3dulo XBee<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Configuraci\u00f3n de la segunda unidad de Radio<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Marcar la segunda unidad XBee con una \u201cB.\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Insertamos el m\u00f3dulo XBee sobre el XBee shield y \u00e9ste al Arduino UNO.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora conectamos el Arduino al Ordenador mediante el cable USB y hacemos click en \u201cConnect\u201d en el programa CoolTerm. A continuaci\u00f3n seguir los mismos pasos que anteriormente hemos realizado con el modulo \u201cA\u201d. En este caso hacer&nbsp;<strong>ATMY 2<\/strong>&nbsp;y el valor de<strong>&nbsp;ATDL 1.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Recordar que hay que escribir&nbsp;<strong>ATWR<\/strong>&nbsp;y presionar enter para salvar la configuraci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A continuaci\u00f3n se muestran los c\u00f3digos tal como se deben escribir y aparece en el terminal:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">+++\nOK\nATID 3001\nOK\nATMY 2\nOK\nATDH 0\nOK\nATDL 1\nOK\nATID\n3001\nATMY\n2\nATDH\n0\nATDL\n1\nATWR\nOK<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Funcionamiento<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para probar que funcionan la aplicaci\u00f3n procederemos de la siguiente manera:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Conectamos el XBee \u201cA\u201d&nbsp; a otro XBee shield con otro arduino y conectamos a distintos PC en la misma habitaci\u00f3n las dos Arduino.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cargamos el programa CoolTerm y conectamos este siguiendo los pasos que ya comentamos anteriormente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Si usted todav\u00eda est\u00e1 en el modo de comandos en cada m\u00f3dulo, puede escribir&nbsp;<strong>ATCN<\/strong>&nbsp;para salir del modo de comando sin tener que cuidarse de los 10 segundos de tiempo que tiene para escribir en el terminal sin que se desconecte el m\u00f3dulo.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estamos en condiciones de realiza las pruebas de comunicaci\u00f3n de mensajes entre ambos m\u00f3dulos de radio XBee. Si todo est\u00e1 configurado correctamente, el texto que se escribe en el programa del terminal serie en el primer equipo ser\u00e1 transmitida al segundo ordenador y aparecer\u00e1 en su pantalla de la terminal de serie tambi\u00e9n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>M\u00e1s funciones<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El protocolo 802.15.4 no s\u00f3lo permite la comunicaci\u00f3n punto a punto, tambi\u00e9n permite comunicarse punto-a-multipunto. Si tiene m\u00e1s de dos XBees y los puso a todos a la misma PAN ID (con ATID) y luego ponga la direcci\u00f3n de destino bajo de la emisora a FFFF (con ATDL FFFF). Ahora, al escribir en el terminal del XBee emisor, debemos ver el texto en todas las otras estaciones terminales.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>+++<\/td><td><em>Enter command mode.<\/em><\/td><\/tr><tr><td>ATRE<\/td><td><em>Reset to factory defaults.<\/em><\/td><\/tr><tr><td>ATID<\/td><td><em>Get\/set the radio\u2019s PAN (Personal Area Network) ID.&nbsp; Radios working together must be in the same PAN.<\/em><\/td><\/tr><tr><td>ATBD<\/td><td><em>Get\/set baud rate for the radio.<\/em><\/td><\/tr><tr><td>ATCH<\/td><td><em>Get\/set the channel the radio will use to transmit\/receive.<\/em><\/td><\/tr><tr><td>ATMY<\/td><td><em>Get\/set a radio\u2019s unique receive address.<\/em><\/td><\/tr><tr><td>ATDL<\/td><td><em>Get\/set a radio\u2019s transmission destination address.<\/em><\/td><\/tr><tr><td>ATWR<\/td><td><em>Write changes to the radio\u2019s non-volatile memory.<\/em><\/td><\/tr><tr><td>ATCN<\/td><td><em>Exit command mode.<\/em><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Comandos ATBD:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>1 = 2400bps<\/li>\n\n\n\n<li>2 = 4800bps<\/li>\n\n\n\n<li>3 = 9600bps<\/li>\n\n\n\n<li>4 = 19200bps<\/li>\n\n\n\n<li>5 = 38400bps<\/li>\n\n\n\n<li>6 = 57600 bps<\/li>\n\n\n\n<li>7 = 115200 bps<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Si queremos configurar el Badurate a 9600bps, ponemos ATBD 3.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ATRE: restaura los valores predeterminados de fabrica antes de realizar cualquier&nbsp;modificaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ATAP*: configuraci\u00f3n de la API de XBee. Colocar el n\u00famero que tiene la API de XBee, en&nbsp;nuestro caso 2, por lo que el comando ser\u00eda ATAP2.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ATCE1: configuraci\u00f3n del m\u00f3dulo XBee en modo Coordinador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ATMY*: direcci\u00f3n del m\u00f3dulo XBee en modo Coordinador. El valor de * en nuestro caso&nbsp;ser\u00e1 1234. (ATMY1234)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ATID*: ID de la conexi\u00f3n que vamos a crear entre nuestros m\u00f3dulos XBee. El valor de * en&nbsp;nuestro caso es 1111. (ATID1111)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ATCH*: Canal por el cual los m\u00f3dulos XBee se van a conectar. El valor de * en nuestro caso&nbsp;ser\u00e1 0C. (ATCH0C)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ATWR: escribe una nueva configuraci\u00f3n en la memoria no vol\u00e1til. Si no se escribiese este&nbsp;comando, las modificaciones realizadas solo durar\u00eda hasta que el m\u00f3dulo se quede&nbsp;sin bater\u00eda.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ATFR: reinicia el m\u00f3dulo XBee.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para mas informaci\u00f3n mira la&nbsp;T<a href=\"http:\/\/examples.digi.com\/wp-content\/uploads\/2012\/07\/XBee_802.15.4_AT_Commands.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">abla de Comandos<\/a>&nbsp;AT<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Modulos xBee 2<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora veremos la configuraci\u00f3n basica para poder transmitir de un xBee serie2 a otro.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En este caso se usaron 2 modulos xBee 2 con antena de chip conectado al ordenador a trav\u00e9s de Arduino.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Primero necesitamos descargar los drivers y programas necesarios de las siguientes paginas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Software de configuracion&nbsp;&nbsp;<a href=\"http:\/\/blog.make-a-tronik.com\/?kTj9WMTx\" target=\"_blank\" rel=\"noreferrer noopener\">XCTU ver. 5.1.4.1 installer<\/a>&nbsp;installer (solo disponible para windows)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Driver de Arduino. Normalmente estos drivers vienen con el Software de Arduino. Lo puedes descargar en la siguiente p\u00e1gina:&nbsp;<a href=\"http:\/\/arduino.cc\/es\/Main\/Software\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/arduino.cc\/es\/Main\/Software<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si usas el xBee explorer descarga los drivers&nbsp;<a href=\"http:\/\/blog.make-a-tronik.com\/?X6p0ihQ1\" target=\"_blank\" rel=\"noreferrer noopener\">FTDI VCP 2.06.02<\/a>&nbsp;(multiplataforma).<br>Descarga el software XCTU en la siguiente p\u00e1gina:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"http:\/\/www.digi.com\/support\/productdetail?pid=3352&amp;osvid=57&amp;type=utilities\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/www.digi.com\/support\/productdetail?pid=3352&amp;osvid=57&amp;type=utilities<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Instalalo siguiendo los pasos del instalador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Conecta con el cable usb los dos modulos, cuando pregunte por el driver indicale que busque en la carpeta descargada anteriormente, una ves correctamente instalado el driver, en el administrador de dispositivos de windows deben de salir 2 puertos com. Si no te reconoce los puertos USB, debes actualizarlos.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/317__320x240_adminDisp.png\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/317__320x240_adminDisp-300x217.png\" alt=\"317__320x240_adminDisp\" class=\"wp-image-460\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora inicia 2 ventanas de &nbsp;XCTU (una para cada modulo) y seleccionas el puerto com que se usara en cada uno, por default los modulos vienen configurados a 9600.&nbsp;El numero de bits de los datos es de 8. La paridad a \u201cninguno\u201d. Y el n\u00famero de bits de parada en 1. Deja estos valores as\u00ed, si est\u00e1n distintos config\u00faralos de este modo.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/319__320x240_portConf.png\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/319__320x240_portConf-300x194.png\" alt=\"319__320x240_portConf\" class=\"wp-image-461\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Para probar que este correctamente conectado damos click en el boton test\/query, si todo sale bien tendremos la siguiente ventana, y tambien nos dira el tipo de modem que estamos utilizando y el firmware que lleva cargado.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/321__320x240_testQuery.png\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/321__320x240_testQuery-300x158.png\" alt=\"321__320x240_testQuery\" class=\"wp-image-462\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora nos vamos a la pesta\u00f1a de Modem configuration.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/Upxbee7.jpg\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/Upxbee7-256x300.jpg\" alt=\"Upxbee7\" class=\"wp-image-466\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Hacemos click en Read para ver la version actual del firmware en tu Xbee.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/Upxbee81.jpg\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/Upxbee81-256x300.jpg\" alt=\"Upxbee8\" class=\"wp-image-468\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Para Restaurar las Xbee a su configuraci\u00f3n inicial, le damos a \u201c<strong>Clear Screen\u201d<\/strong>&nbsp;y despu\u00e9s a \u201c<strong>Restore\u201d<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Posteriormente le damos a<strong>&nbsp;\u201cRead\u201d<\/strong>. Ahora tenemos nuestras Xbee listas para configurar.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"watch-headline-title\">Configuraci\u00f3n Xbee punto a multipunto<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Si queremos hacer una conexi\u00f3n punto a multipunto, podr\u00edamos tener 1 Coordinator y varios Routers. De modo que configuramos todos los Routers de la siguiente forma.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos a configurar una como&nbsp;<strong>COORDINATOR<\/strong>&nbsp;y otra o otras como&nbsp;<strong>ROUTER.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En modem elegimos el tipo de modem que desplego la ventana de test\/query, en&nbsp;<em><strong>function set<\/strong><\/em>&nbsp;elegimos en el primer modem como&nbsp;<strong>COORDINATOR AT<\/strong>&nbsp;y en el segundo&nbsp;<strong>ROUTER\/END DEVICE AT.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los configuramos de la siguiente manera:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/excel.png\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/excel-300x142.png\" alt=\"excel\" class=\"wp-image-470\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Observamos que el<strong>&nbsp;PAN ID<\/strong>, puede ser cualquier numero entre 0 y 65535 pero debe ser el mismo en todas las Xbee.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El<strong>&nbsp;COORDINATOR<\/strong>, Pone en DL: FFFF:&nbsp;Para enviar a todos los dispositivos de la misma red.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/320__320x240_selectRole.png\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/320__320x240_selectRole-300x192.png\" alt=\"320__320x240_selectRole\" class=\"wp-image-463\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Damos click a&nbsp;<strong>Write<\/strong>&nbsp;para que suba la nueva&nbsp;configuraci\u00f3n&nbsp;al modulo. Cuando termine de programar ya&nbsp;estar\u00e1n&nbsp;listos para transmitir y recibir datos el uno al otro, para probar usamos la pesta\u00f1a de Terminal, escribe algo y veras lo que pasa.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/318__320x240_dataTransmit.png\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/318__320x240_dataTransmit-300x192.png\" alt=\"318__320x240_dataTransmit\" class=\"wp-image-465\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez configurados los modulos estar\u00e1n listos para nuestras aplicaciones electr\u00f3nicas, para usar con el puerto serial de un microcontrolador y comunicarte con una pc u otro microcontrolador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si vamos a Terminal y damos:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>+++OK<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>ATND<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nos salen los modulos a los cuales est\u00e1 conectada nuestra Xbee.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/ATND.png\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/ATND-300x243.png\" alt=\"ATND\" class=\"wp-image-469\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">El orden de estos datos es el siguiente:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">62FF= MY (direcci\u00f3n de red de 16 bits)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">0013A200= SH (Numero de serie alto)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">409BB861= SL (Numero de bajo)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Robot5= NI (Identificador de Nodos)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">FFFE= Canales escaneados<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">01= Determina si es Router o Coordinator.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"watch-headline-title\">Comunicaciones Punto a Punto en Xbee 2<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Para hacer una configuraci\u00f3n punto a punto debemos configurar el direccionamiento, en ambos modulos debemos tener el mismo&nbsp;<strong>PAN ID.<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/316__320x240_addressConf.png\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/316__320x240_addressConf-300x193.png\" alt=\"316__320x240_addressConf\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">En el COORDINATOR configuramos DH y DL (Destination Address) con SH y SL (Serial Number) del ROUTER, y en el ROUTER configuramos DH y DL con SH y SL del COORDINATOR.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/excel2.png\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/excel2-300x150.png\" alt=\"excel2\" class=\"wp-image-471\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">El PAN ID debe ser el mismo numero en ambos XBee<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El Destination Address High (DH), debe ser la direcci\u00f3n Alta (SH) del otro XBee, normalmente 13A200<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El Destination Address Low (DL), debe ser la direcci\u00f3n Baja (SL) del otro XBee.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Nota: Tanto SH como SL se encuentran impresas en la etiqueta bajo el XBee, por lo tanto puedes escribirlo con&nbsp;anticipaci\u00f3n o con el comando&nbsp;<strong>ATND&nbsp;<\/strong>pedemos ver las caracteriasticas de los modulos a los que estamos conectados.<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/adresse.png\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/adresse-300x220.png\" alt=\"adresse\" class=\"wp-image-478\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Comunicaci\u00f3n entre Xbee y Arduino por el puerto serial<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En el caso en que no tengamos un Arduino Shield y usemos un Xbee Explorer, la conexi\u00f3n entre Arduino y Xbee es la siguiente:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Arduino GND -> XBee GND<\/li>\n\n\n\n<li>Arduino TX -> XBee RX<\/li>\n\n\n\n<li>Arduino RX -> XBee TX<\/li>\n\n\n\n<li>Arduino VIN -> XBee VIN<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Si tenemos una Xbee Shield, recordemos que tenemos que retirar el link entre&nbsp;<strong>Reset<\/strong>&nbsp;y&nbsp;<strong>GND<\/strong>&nbsp;para poder cargar al microcontrolador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora vamos a hacer una prueba. Carguemos el siguiente sketch en el&nbsp;<strong>COORDINATOR.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Sketch Xbee Hello Network:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">void setup()\n{\n  Serial.begin(9600);\n}\n\nvoid loop()\n{\n  Serial.println(\"Hello XBee Network!\");\n  delay(1000);\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando ya hayamos cargado el Sketch, conectamos la Xbee Shield a Arduino pero esta vez con los<strong>&nbsp;jumpers<\/strong>&nbsp;en posici\u00f3n&nbsp;<strong>Xbee<\/strong>&nbsp;(hacia el centro de la placa).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si abrimos el Monitor Serial, vemos lo siguiente:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/xbee-pp-tut1-8.png\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/xbee-pp-tut1-8-300x260.png\" alt=\"xbee-pp-tut1-8\" class=\"wp-image-472\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Si conectamos nuestro&nbsp;<strong>Xbee ROUTER<\/strong>&nbsp;a un ordenador y abrimos el&nbsp;<strong>Terminal<\/strong>&nbsp;de &nbsp;<strong>XCTU&nbsp;<\/strong>vemos que estaria recibiendo esto:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/xbee-pp-tut1-9.png\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/xbee-pp-tut1-9-232x300.png\" alt=\"xbee-pp-tut1-9\" class=\"wp-image-473\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">De esta forma podemos ver que las 2 Xbee se est\u00e1n comunicando y una de ellas se comunica con Arduino.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>Comunicaci\u00f3n inal\u00e1mbrica entre 2 placas Arduino con Xbee<\/strong><\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Controlando un Motor Servo con un potenci\u00f3metro de forma inal\u00e1mbrica con Arduino y Xbee<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/www.youtube.com\/embed\/lpZsJ_CrOrM<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora podemos probar la comunicaci\u00f3n inal\u00e1mbrica entre 2 placas Arduino. Vamos a controlar un Motor Servo con un potenci\u00f3metro de forma inal\u00e1mbrica.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Sketch Emisor:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">int sensorValue1 = 0; \/\/ Almaceno el valor analogico\nint myAngle1; \/\/ Divido el valor entre 6 para ajustar el angulo\nconst int analogInPin1 = A0; \/\/ Pin analogico conectado al potenci\u00f3metro\n\nvoid setup(){\nSerial.begin(9600); \n}\nvoid loop () {\nsensorValue1 = analogRead(analogInPin1); \/\/ Leo el valor del potenci\u00f3metro\n\nmyAngle1=sensorValue1 \/ 6 ; \nSerial.write(byte (myAngle1));\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Sketch Receptor:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#include &lt;Servo.h&gt; \/\/ Libreria de servos\nServo myservo1; \/\/ variable servo\nbyte recepcion=0; \/\/ almacena el valor enviado desde el emisor \nint myAngle1; \/\/ utilizada para pasar el valor a grados \nvoid setup(){\nSerial.begin(9600); \nmyservo1.attach(9); \/\/ se define el pin al que esta conectado el servo\n}\nvoid loop () {\nif (Serial.available() &gt; 0) { \/\/ si hay algun dato entrado por el serial empezamos\nrecepcion=Serial.read(); \/\/ se lee el dato se almacena \nmyAngle1=recepcion; \/\/ Volcado del dato recibido del emsior \nmyservo1.write(myAngle1); \/\/ se llama a la libreria con el valor del potenci\u00f3metro convertido en grados.\nSerial.println(recepcion);\/\/ Imprime el valor que recibe\n}\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Nota: Esto funciona para Xbee Serie 1 y Xbee Serie 2. Pero no entre ellas. Debes configurar antes las Xbee para que se comuniquen entre ellas. No olvides programar con los Jumpers en modo USB y despu\u00e9s ponerlos en modo Xbee para que se comunique entre ellas y con los Arduinos.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Con un Fotoresistor LDR<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si conservamos la misma configuraci\u00f3n, pero en vez del potenci\u00f3mentro ponemos un LDR podemos controlar el motor con la intensidad de luz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La conexion seria un divisor de voltaje con 2 resistencias, 1 de 1kohm y la otra una resistencia variable LDR. En medio de las dos el divisor de voltaje que va al pin an\u00e1logo 0.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/Foto-del-d\u00eda-29-06-2013-a-las-1306.jpg\"><img decoding=\"async\" src=\"https:\/\/www.andresduarte.com\/wp-content\/uploads\/2013\/06\/Foto-del-d\u00eda-29-06-2013-a-las-1306-300x225.jpg\" alt=\"Foto del d\u00eda 29-06-2013 a la(s) 13:06\" class=\"wp-image-482\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Controlando un Motor Servo con un Acelerometro ADXL 335 de forma inal\u00e1mbrica con Xbee<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/www.youtube.com\/embed\/UEt6MPlJ2q8<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Escribimos el siguiente sketch en el Arduino que env\u00eda y el que recibe continua con el mismo sketch del ejemplo anterior.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Sketch xbee adxl send<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/*\n ADXL 335<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">Lee el ADXL 335, acelerometro de tres ejes.<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">El circuito:\n * Salida X del acelerometro al pin analogico 3 \n * Salida Y del acelerometro al pin analogico 2\n * +V del acelerometro a +3,3V\n * GND del acelerometro a ground<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">*\/\nconst int xPin = 3; \/\/ eje x del acelerometro\nconst int yPin = 2; \/\/ eje y del acelerometro\nint valox = 0; \/\/ variable para almacenar el valor x capturado desde el sensor\nint valoy = 1; \/\/ variable para almacenar el valor y capturado desde el sensor\nint adxl;\nvoid setup()\n{\n \/\/ incializa comunicacion:\n Serial.begin(9600);<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">}<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">void loop() {<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">valox = analogRead(xPin); \/\/ lee el valor x sensor\nvaloy = analogRead(yPin); \/\/ lee el valor y sensor<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">int sensorValueX = analogRead(3);\n int sensorValueY = analogRead(2);<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/imprime los valores:\n adxl=sensorValueX \/ 6 ; \n Serial.write(byte (sensorValueX));\n\n \/\/Serial.print(\"X\");\n \/\/Serial.println(sensorValueX);\n \/\/Serial.print(\"Y\");\n \/\/Serial.println(sensorValueY);<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">delay(50);\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Controlando un Motor Servo con un Sensor de Ultrasonido Ping de forma inal\u00e1mbrica con Xbee<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/www.youtube.com\/embed\/iIMKGNPz5v8<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Escribimos el siguiente sketch en el Arduino que env\u00eda y el que recibe continua con el mismo sketch de los ejemplos anteriores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Sketch Ultrasonido xbee send<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ Ping pd theremin.<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ constante pin 7\nconst int pingPin = 7;\nint xbee;<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">void setup() {\n \/\/ inicializa la comunicacion serial:\n Serial.begin(9600);\n}<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">void loop()\n{\n \/\/establece unas variables para la duracion del ping,\n \/\/ y el resultado lo expresa en cm:\n long duration, cm;<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ PING es activado con un pulso HIGH de 2 o mas microsegundos.\n \/\/ Entrega un pulso LOW antes para asegurar que el pulso HIGH sea limpio:\n pinMode(pingPin, OUTPUT);\n digitalWrite(pingPin, LOW);\n delayMicroseconds(2);\n digitalWrite(pingPin, HIGH);\n delayMicroseconds(5);\n digitalWrite(pingPin, LOW);<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ El mismo pin es usado para leer la se\u00f1al del Ping: El pulso HIGH\n \/\/ Su tiempo de duracion se expresa en microsegundos y es el tiempo que pasa\n \/\/ ente la se\u00f1al enviada por el Ping y la recepcion de su eco reflectado en un objeto.\n pinMode(pingPin, INPUT);\n duration = pulseIn(pingPin, HIGH);<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ convierte el tiempo en distancia<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">cm = microsecondsToCentimeters(duration);<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/imprime los valores:\n xbee=cm; \n Serial.write(byte (cm));\n\n \/\/Serial.print(cm);\n \/\/Serial.println();<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">delay(100);\n}<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">long microsecondsToCentimeters(long microseconds)\n{\n \/\/ La velocidad del sonido es de 340 m\/s o 29 microsegundos por centimetro.\n \/\/ El sonido viaja de ida y vuelta, entonces para obtener la distancia del\n \/\/ objeto tomamos la mitad de la distancia recorrida.\n return microseconds \/ 29 \/ 2;\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Controlando Motored DC y Dimmerizado de LEDS<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ya hemos experimentado con diversos sensores para controlar un Motor Servo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora veamos como controlar el Dimmerizado de un LED o la velocidad de un motor DC.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En el Arduino de la Xbee Receptora escribimos el siguiente sketch:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Sketch Dimmer LED con LDR<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/Dimmer LED con LDR<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">const int ledPin = 9; \/\/ El pin al que el LED est\u00e1 conectado<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">void setup()\n{\n \/\/ Inicializamos puerto serie a 9600 bps:\n Serial.begin(9600);\n \/\/ inicializamos el ledPin como salida:\n pinMode(ledPin, OUTPUT);\n}<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">void loop() {\n byte brightness;<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ chequeamos que los datos hayan sido enviados por el ordenador:\n if (Serial.available()) {\n \/\/ Lee el byte mas reciente (debe ser entre 0 y 255):\n brightness = Serial.read();\n \/\/ Determina la luminocidad del LED:\n analogWrite(ledPin, brightness);\n }\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora conectamos nuestro led al pin 9. Recordemos usar siempre una resistencia de 220ohm en serie con el led para proteger la placa arduino y el led.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Red MESH<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La figura anterior muestra un ejemplo de una red MESH. Se observa que se deseaacceder al punto B a partir del punto A. Suponiendo que la distancia entre A y B es demasiadopara que alcance la se\u00f1al, se utiliza la red MESH para poder alcanzarla, as\u00ed cada nodo ubicado enmedio del camino mostrado en celeste, funciona como m\u00f3dulo transparente, donde todo lo que lellega es retransmitido hacia el punto A. Esto funciona para cada un de los m\u00f3dulos de la red.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Xbee PRO<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n existen los llamados m\u00f3dulos Xbee PRO de la Serie 1 que se diferencian en lacapacidad de alcance, permitiendo en algunos casos doblar la distancia de transmisi\u00f3n, ya queposeen una mayor potencia en la se\u00f1al. Con los m\u00f3dulos Xbee PRO de la Serie 2, es posiblecrear redes m\u00e1s complejas, como las llamadas MESH. Estas permiten acceder a un punto remoto,utilizando m\u00f3dulos intermedios para llegar como routers. Adem\u00e1s los m\u00f3dulos autom\u00e1ticamentegeneraran la red entre ellos, sin intervenci\u00f3n humana alguna, permitiendo la reparaci\u00f3n de la reden caso de que alg\u00fan nodo falle. Al mismo tiempo la red por s\u00ed sola resuelve la mejor ruta paraun determinado paquete.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Modo \u201cSleep\u201d<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un punto importante a la hora de comunicar 2 nodos es tener en cuenta la\u00a0configuraci\u00f3n\u00a0del modo \u201cSleep\u201d (Dormido) del nodo transmisor, un consejo para enviar datos con nodos que tienen periodos\u00a0c\u00edclicos\u00a0de sue\u00f1o, es habilitar el pin \u201cWake up\u201d (Despertar), de tal manera que cuando se\u00a0env\u00eden\u00a0datos a\u00a0trav\u00e9s\u00a0del puerto serial para enviarlos de forma\u00a0inal\u00e1mbrica, se deba activar este pin para asegurar que el nodo Tx reciba la\u00a0informaci\u00f3n\u00a0y la\u00a0env\u00ede\u00a0por la interfaz de aire, para ello se debe configurar las 2 opciones para dormir del dispositivo, las cuales ser\u00edan: Por el pin \u201cWake up\u201d y periodos\u00a0c\u00edclicos\u00a0de sue\u00f1o. Para el caso de la\u00a0recepci\u00f3n\u00a0no es necesario \u201cdespertar \u201d el nodo Rx a\u00a0trav\u00e9s\u00a0del pin \u201cWake up\u201d, ya que este nodo una vez que se despierta (Por los periodos\u00a0c\u00edclicos)\u00a0env\u00eda\u00a0una trama preguntando si existen mensajes para el, y el nodo Tx mantiene el mensaje en el buffer de salida hasta que recibe esta trama de solicitud del mensaje.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><em>Was this post helpfull?<\/em><\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Make a donation!<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.facebook.com\/vjduart\/\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/twitter.com\/vjduart\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/plus.google.com\/u\/0\/108367070333887505084\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/channel\/UCY-uJBxlkrThhX2R6a5PVkQ\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.linkedin.com\/in\/andres-felipe-duarte-marin-aa2a272b?trk=nav_responsive_tab_profile\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/app.ventafun.com\/Andres-Felipe-Duarte-M\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"#\">\u2191<\/a><\/p>\n\n\n\n<ul id=\"sidr-id-menu-tutoriales_arduino\" class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.arduineando.com\/\">Tutoriales<\/a>\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.arduineando.com\/tutoriales_arduino\/\">Tutoriales-Arduino<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.arduineando.com\/xbee-y-arduino\/\">Xbee y Arduino<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.arduineando.com\/arduino-ethernet\/\">Arduino Ethernet<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.arduineando.com\/arduino-pro-mini-2\/\">Arduino Pro mini<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.arduineando.com\/instalar-arduino-en-windows\/\">Instalar Arduino en Windows<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.arduineando.com\/spark-core-y-ubidots\/\">Spark Core y Ubidots<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.arduineando.com\/sensor-interruptor-magnetico-groove\/\">Sensor Interruptor magnetico \u2013 Groove<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.arduineando.com\/spark-core-arduino-wifi\/\">Spark Core (Arduino + Wifi)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.arduineando.com\/sparkcore-temperatura-y-humedad\/\">Sparkcore temperatura y Humedad<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.arduineando.com\/maxmsp-jitter\/\">Max\/MSP Jitter<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.arduineando.com\/raspberry-pi\/\">Raspberry Pi<\/a><\/li>\n\n\n\n<li><a href=\"http:\/\/manualdetecnicafotografica.com\/?hop=vjduart\">Fotogr\u00e1fia<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.arduineando.com\/bitbloq-arduino\/\">Bitbloq-Espa\u00f1ol<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.arduineando.com\/bitbloq-english\/\">Bitbloq-English<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.arduineando.com\/scratch-arduino\/\">Scratch-Arduino<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.arduineando.com\/impresion-3d\/\">Impresi\u00f3n 3D<\/a><\/li>\n\n\n\n<li><a href=\"http:\/\/www.artinteractivo.com\/fr\/\">Mas Tutoriales<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"https:\/\/www.arduineando.com\">Proyectos<\/a>\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.arduineando.com\/kinect-piano-virtual\/\">Kinect Piano virtual<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.arduineando.com\/kinect-mapping-sobre-cuarpo\/\">Kinect Mapping sobre cuerpo<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.arduineando.com\/bateria-piezos-arduino-y-ableton\/\">Bateria Piezos, Arduino y Ableton<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.arduineando.com\/ledstrip-controled-with-matrix\/\">Ledstrip controled with Matrix<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"https:\/\/www.artinteractivo.com\/fr\/\">Art interactivo<\/a><\/li>\n\n\n\n<li><a href=\"http:\/\/www.andresduarte.com\/\">Contacto<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Xbee y Arduino Introducci\u00f3n L\u00f3s m\u00f3dulos XBee utilizan el protocolo IEEE 802.15.4 mejor conocido como ZigBee. Zigbee es un protocolo de comunicaciones inal\u00e1mbrico basado en el est\u00e1ndar de comunicaciones para redes inal\u00e1mbricas IEEE_802.15.4. Creado por Zigbee Alliance, una organizaci\u00f3n, te\u00f3ricamente sin \u00e1nimo de lucro, de m\u00e1s de 200 grandes empresas (destacan Mitsubishi, Honeywell, Philips, ODEM [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-with-title","meta":{"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"class_list":["post-224","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.artinteractivo.com\/fr\/wp-json\/wp\/v2\/pages\/224","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.artinteractivo.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.artinteractivo.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.artinteractivo.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.artinteractivo.com\/fr\/wp-json\/wp\/v2\/comments?post=224"}],"version-history":[{"count":2,"href":"https:\/\/www.artinteractivo.com\/fr\/wp-json\/wp\/v2\/pages\/224\/revisions"}],"predecessor-version":[{"id":227,"href":"https:\/\/www.artinteractivo.com\/fr\/wp-json\/wp\/v2\/pages\/224\/revisions\/227"}],"wp:attachment":[{"href":"https:\/\/www.artinteractivo.com\/fr\/wp-json\/wp\/v2\/media?parent=224"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}