{"id":229,"date":"2022-01-02T11:32:01","date_gmt":"2022-01-02T11:32:01","guid":{"rendered":"http:\/\/www.net2plaza.com\/?p=229"},"modified":"2022-01-09T04:23:38","modified_gmt":"2022-01-09T04:23:38","slug":"arduino-lora-leaf-ejemplos-de-aplicacion","status":"publish","type":"post","link":"http:\/\/www.net2plaza.com\/index.php\/2022\/01\/02\/arduino-lora-leaf-ejemplos-de-aplicacion\/","title":{"rendered":"Arduino Lora Leaf, Ejemplos de aplicaci\u00f3n"},"content":{"rendered":"\n<p>A continuaci\u00f3n, tenemos algunos ejemplos de aplicaci\u00f3n para los sistemas de desarrollo m\u00e1s comunes en IoT.<\/p>\n\n\n\n<p>Para facilitar la implementaci\u00f3n de estos ejemplos, es necesario descargar las librer\u00edas apropiadas, las cuales al ser de c\u00f3digo abierto, est\u00e1n disponibles de forma gratuita desde los enlaces que se incluyen m\u00e1s adelante.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong><strong>interconexi\u00f3n<\/strong><\/strong> con <strong>Arduino Uno\/Nano<\/strong><\/h2>\n\n\n\n<p>Una de las librer\u00edas m\u00e1s comunes para Lora en ambiente Arduino, es la creada por Sandeep Mistry, la cual incluye varios ejemplos de aplicaci\u00f3n y puede ser encontrada en el siguiente enlace:<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/sandeepmistry\/arduino-LoRa\">https:\/\/github.com\/sandeepmistry\/arduino-LoRa<\/a><\/p>\n\n\n\n<p>Una de las formas m\u00e1s sencilla de instalarla, es descargar el archivo \u201carduino-LoRa-master.zip\u201d desde el sitio y empleando el \u201cLibrary Manager\u201d, seguir los siguientes pasos:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Elegir Sketch -&gt; \u201cInclude Library\u201d -&gt; Add .Zip Library\u2026<\/li><li>Esto abre una ventana donde debemos ubicar y seleccionar el archivo \u201carduino-LoRa-master.zip\u201d que reci\u00e9n se descargo.<\/li><li>Hacer click en el archivo \u201carduino-LoRa-master.zip\u201d para seleccionar la biblioteca.<\/li><li>Con esto la librer\u00eda debe quedar disponible para su uso.<\/li><\/ul>\n\n\n\n<p>Estas dos variantes de Arduino, son b\u00e1sicamente diferentes versiones del mismo hardware, por lo que en este caso el software es id\u00e9ntico para ambos.<\/p>\n\n\n\n<p>En ambos casos, la interface b\u00e1sica entre Arduino y Omniduino Lora Leaf, se describe en la siguiente tabla (para acceso a funciones m\u00e1s avanzadas, se puede necesitar pines digitales adicionales):<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Arduino Uno\/Nano, digital pin<\/strong><\/td><td><strong>Omniduino Lora Leaf, nombre del pin<\/strong><\/td><\/tr><tr><td>3.3V Output ( * ver nota abajo)<\/td><td>+3.3V Input<\/td><\/tr><tr><td>GND<\/td><td>GND<\/td><\/tr><tr><td>D13<\/td><td>SCK<\/td><\/tr><tr><td>D12<\/td><td>MISO<\/td><\/tr><tr><td>D11<\/td><td>MOSI<\/td><\/tr><tr><td>D10<\/td><td>NSS<\/td><\/tr><tr><td>D9<\/td><td>RST<\/td><\/tr><tr><td><strong>D2<\/strong><\/td><td><strong>DIO0<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>*&nbsp;<\/strong>Uno de los aspectos importantes a tener en cuenta, es respecto al regulador de 3.3Volts incluido en la mayor\u00eda de las tarjetas Arduino, el cual tiene una capacidad limitada de aproximadamente 150mAmps, resultando insuficiente para que el m\u00f3dulo Lora Leaf pueda transmitir, pero que pudiera ser suficiente para recibir datos.<\/p>\n\n\n\n<p>Con el fin de evitar intermitencias en la comunicaci\u00f3n, Se recomienda utilizar un regulador externo de 3.3Volts alimentado desde el pin de 5Volts o desde alguna otra l\u00ednea con capacidad de proveer al menos 300mAmps a 3.3Volts en este tipo de Arduino, tal como se observa en las siguientes im\u00e1genes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"596\" src=\"http:\/\/www.net2plaza.com\/wp-content\/uploads\/2021\/12\/word-image-3-1-1024x596.png\" alt=\"\" class=\"wp-image-175\" srcset=\"http:\/\/www.net2plaza.com\/wp-content\/uploads\/2021\/12\/word-image-3-1-1024x596.png 1024w, http:\/\/www.net2plaza.com\/wp-content\/uploads\/2021\/12\/word-image-3-1-300x175.png 300w, http:\/\/www.net2plaza.com\/wp-content\/uploads\/2021\/12\/word-image-3-1-768x447.png 768w, http:\/\/www.net2plaza.com\/wp-content\/uploads\/2021\/12\/word-image-3-1.png 1255w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Conexi\u00f3n, Arduino Nano a Omniduino Lora Leaf<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"625\" src=\"http:\/\/www.net2plaza.com\/wp-content\/uploads\/2021\/12\/word-image-4-1-1024x625.png\" alt=\"\" class=\"wp-image-177\" srcset=\"http:\/\/www.net2plaza.com\/wp-content\/uploads\/2021\/12\/word-image-4-1-1024x625.png 1024w, http:\/\/www.net2plaza.com\/wp-content\/uploads\/2021\/12\/word-image-4-1-300x183.png 300w, http:\/\/www.net2plaza.com\/wp-content\/uploads\/2021\/12\/word-image-4-1-768x469.png 768w, http:\/\/www.net2plaza.com\/wp-content\/uploads\/2021\/12\/word-image-4-1.png 1229w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Conexi\u00f3n b\u00e1sica, Arduino UNO to Omniduino Lora Leaf<\/figcaption><\/figure>\n\n\n\n<p>Los pines NSS, NRESET y DIO0 en esta aplicaci\u00f3n, pueden ser reprogramados para emplear otras terminales digitales utilizando el comando \u201cLoRa.setPins(ss, reset, dio0).<\/p>\n\n\n\n<p>El pin DIO0 pin es opcional y solo se necesita para utilizar el modo \u201ccallback\u201d cuando se utiliza el\u00a0<strong>Omniduino Lora Leaf<\/strong>\u00a0para aplicaciones del tipo \u201cGateway\u201d.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Transmisi\u00f3n LORA<\/strong> con <strong>Arduino Uno\/Nano<\/strong><\/h2>\n\n\n\n<p>En el sitio de Sandeep Mistry que se menciono anteriormente, pueden encontrarse varios ejemplos, incluyendo comunicaci\u00f3n de datos an\u00e1logos y digitales, as\u00ed como funciones de comunicaciones d\u00faplex, los cuales pueden ser descargados y empleados para utilizar el m\u00f3dulo Omniduino Lora Leaf simult\u00e1neamente como emisor y receptor.<\/p>\n\n\n\n<p>A continuaci\u00f3n, se muestra un c\u00f3digo ejemplo para transmisi\u00f3n de datos, basado en la informaci\u00f3n disponible en dicho sitio.<\/p>\n\n\n\n<p>Como primer paso para quien inicia en proyectos de IoT, resulta muy conveniente programar una pareja de Arduino-Omniduino Lora Leaf, con este c\u00f3digo de ejemplo para transmisi\u00f3n de datos y posteriormente hacer lo mismo con otra pareja de m\u00f3dulos para obtener la parte receptora.<\/p>\n\n\n\n<p>En el caso de este ejemplo para transmisi\u00f3n, al interconectar correctamente ambos m\u00f3dulos, resulta bastante sencillo emplear el monitor serial del Arduino IDE y confirmar que todo funciona correctamente.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>#include &lt;SPI.h><br>#include &lt;LoRa.h> \u00a0\u00a0<br>int contador = 0;<br><br>void setup() <br>{\u00a0<br>    Serial.begin(9600);\u00a0<br>    while (!Serial);<br>    Serial.println(\u201cOmniduino LoRa Leaf_Tx\u201d);\u00a0<br>    if (!LoRa.begin(915E6)) { \/\/frecuencia del transmisor Lora Serial.println(\u201cFalla al iniciar Lora!\u201d);\u00a0<br>    while (1);<br>} <br><br>void loop()\u00a0<br>{\u00a0<br>    Serial.print(\u201cTransmitiendo paquete de datos: \u201c); Serial.println(contador); \/\/ send packet LoRa.beginPacket();           <br>    LoRa.print(\u201cHola \u201c);\u00a0<br>    LoRa.print(contador);\u00a0<br>    LoRa.endPacket();\u00a0<br>    contador++;\u00a0<br>    delay(2500); \/\/retardo de 2.5 segundos entre mensajes\u00a0<br>}<\/td><\/tr><\/tbody><\/table><figcaption>Omniduino Lora Leaf, c\u00f3digo ejemplo TX con Arduino UNO\/Nano<\/figcaption><\/figure>\n\n\n\n<p>Mediante este programa, que funciona para tanto para Arduino UNO, como para Arduino Nano, se transmiten mensajes con un intervalo de 2.5 segundos, mismos que como mencionamos anteriormente, pueden verificarse utilizando el monitor de comunicaci\u00f3n serial del IDE de Arduino, con lo que tendremos una pantalla similar a la que podemos apreciar en la siguiente Imagen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"659\" src=\"http:\/\/www.net2plaza.com\/wp-content\/uploads\/2021\/12\/word-image-5-1024x659.png\" alt=\"\" class=\"wp-image-164\" srcset=\"http:\/\/www.net2plaza.com\/wp-content\/uploads\/2021\/12\/word-image-5-1024x659.png 1024w, http:\/\/www.net2plaza.com\/wp-content\/uploads\/2021\/12\/word-image-5-300x193.png 300w, http:\/\/www.net2plaza.com\/wp-content\/uploads\/2021\/12\/word-image-5-768x494.png 768w, http:\/\/www.net2plaza.com\/wp-content\/uploads\/2021\/12\/word-image-5.png 1201w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Omniduino Lora Leaf, transmitiendo datos cada 2.5 segundos<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong><strong>Recepci\u00f3n LORA<\/strong><\/strong> con <strong>Arduino Uno\/Nano<\/strong><\/h2>\n\n\n\n<p>Como siguiente paso, procedemos a interconectar una segunda pareja de Arduino-Omniduino Lora Leaf, solo que en este caso, empleando el software apropiado para recibir informaci\u00f3n, de manera que podamos recabar los datos enviados por la pareja de m\u00f3dulos del ejemplo anterior.<\/p>\n\n\n\n<p>En la siguiente imagen se muestra un ejemplo de c\u00f3digo para recepci\u00f3n de datos, el cual nos ayudara con este objetivo.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>#include &lt;SPI.h&gt;&nbsp;<br>#include &lt;LoRa.h&gt;&nbsp;<br>void setup()&nbsp;<br>{&nbsp;<br>Serial.begin(9600);&nbsp;<br>while (!Serial);&nbsp;<br>Serial.println(\u201cOmniduino LoRa Leaf_Rx\u201d);&nbsp;<br>if (!LoRa.begin(915E6))&nbsp;<br>{&nbsp;<br>Serial.println(\u201cFalla al iniciar Lora!\u201d);&nbsp;<br>while (1);&nbsp;<br>}&nbsp;<br>} void loop() { \/\/ try to parse packet int packetSize = LoRa.parsePacket();&nbsp;<br>if (packetSize) { \/\/ Paquete de datos recibido Serial.print(\u201cPaquete recibido \u2018\u201d); \/\/ Leer paquete de datos while (LoRa.available()) {&nbsp;<br>Serial.print((char)LoRa.read());&nbsp;<br>} \/\/ Imprime RSSI del pquete&nbsp;<br>Serial.print(\u201c\u2018 Con RSSI \u201c);&nbsp;<br>Serial.println(LoRa.packetRssi());&nbsp;<br>}&nbsp;<br>}<\/td><\/tr><\/tbody><\/table><figcaption>Omniduino Lora Leaf, c\u00f3digo ejemplo RX con Arduino UNO\/Nano<\/figcaption><\/figure>\n\n\n\n<p>Al programar este c\u00f3digo en Arduino, nuevamente podemos emplear el monitor serial del IDE, con lo que ahora podemos observar como nuestra segunda pareja de Arduino-Omniduino Lora Leaf, est\u00e1 preparada para recibir informaci\u00f3n, apreci\u00e1ndose una imagen similar a la que se muestra a continuaci\u00f3n.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"756\" src=\"http:\/\/www.net2plaza.com\/wp-content\/uploads\/2021\/12\/word-image-6-1024x756.png\" alt=\"\" class=\"wp-image-165\" srcset=\"http:\/\/www.net2plaza.com\/wp-content\/uploads\/2021\/12\/word-image-6-1024x756.png 1024w, http:\/\/www.net2plaza.com\/wp-content\/uploads\/2021\/12\/word-image-6-300x222.png 300w, http:\/\/www.net2plaza.com\/wp-content\/uploads\/2021\/12\/word-image-6-768x567.png 768w, http:\/\/www.net2plaza.com\/wp-content\/uploads\/2021\/12\/word-image-6.png 1098w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Omniduino Lora Leaf, listo para comenzar recepci\u00f3n de datos.<\/figcaption><\/figure>\n\n\n\n<p>Como tercer paso, quedar\u00eda alimentar simult\u00e1neamente ambas parejas, tanto los m\u00f3dulos que integran el transmisor, como los que integran el receptor y mediante el monitor serial del Arduino IDE, verificar la salida del Arduino que funciona como receptor, con la finalidad de confirmar que el enlace inal\u00e1mbrico trabaja correctamente.<\/p>\n\n\n\n<p>Posteriormente, bas\u00e1ndonos en el c\u00f3digo de los ejemplos anteriores y la informaci\u00f3n incluida con la librer\u00eda Lora, podemos modificar el software para crear aplicaciones a la medida de nuestras necesidades, incluyendo por ejemplo transmisi\u00f3n-Recepci\u00f3n simultanea, lectura de sensores an\u00e1logos o digitales, o lo que se considere m\u00e1s apropiado para cubrir las necesidades de nuestros proyectos de IoT.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A continuaci\u00f3n, tenemos algunos ejemplos de aplicaci\u00f3n para los sistemas de desarrollo m\u00e1s comunes en IoT. Para facilitar la implementaci\u00f3n de estos ejemplos, es necesario descargar las librer\u00edas apropiadas, las cuales al ser de c\u00f3digo abierto, est\u00e1n disponibles de forma gratuita desde los enlaces que se incluyen m\u00e1s adelante. interconexi\u00f3n con Arduino Uno\/Nano Una de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-229","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/www.net2plaza.com\/index.php\/wp-json\/wp\/v2\/posts\/229","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.net2plaza.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.net2plaza.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.net2plaza.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.net2plaza.com\/index.php\/wp-json\/wp\/v2\/comments?post=229"}],"version-history":[{"count":2,"href":"http:\/\/www.net2plaza.com\/index.php\/wp-json\/wp\/v2\/posts\/229\/revisions"}],"predecessor-version":[{"id":231,"href":"http:\/\/www.net2plaza.com\/index.php\/wp-json\/wp\/v2\/posts\/229\/revisions\/231"}],"wp:attachment":[{"href":"http:\/\/www.net2plaza.com\/index.php\/wp-json\/wp\/v2\/media?parent=229"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.net2plaza.com\/index.php\/wp-json\/wp\/v2\/categories?post=229"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.net2plaza.com\/index.php\/wp-json\/wp\/v2\/tags?post=229"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}