Herramientas de usuario

Herramientas del sitio


guias:lora_ttn

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
Próxima revisiónAmbos lados, revisión siguiente
guias:lora_ttn [2018/04/21 10:51] Alejandro Taracidoguias:lora_ttn [2018/04/21 16:52] Alejandro Taracido
Línea 1: Línea 1:
-====== LoRa + TTN: comunicando cosas con internet ======+====== LoRa + TTN: comunicando cosas con Internet ======
  
 WORK IN PROGRESS WORK IN PROGRESS
Línea 15: Línea 15:
 LoRa es una tecnología de transmisión inalámbrica, desarrollada entre 2008 y 2013 en Francia y adquirida y patentada por la compañía Semtech, que permite comunicar datos a muy larga distancia y con bajo consumo de energía (~100mW). LoRa es una tecnología de transmisión inalámbrica, desarrollada entre 2008 y 2013 en Francia y adquirida y patentada por la compañía Semtech, que permite comunicar datos a muy larga distancia y con bajo consumo de energía (~100mW).
  
-Se alcanzan fácilmente 2km en área urbana y más de 10 km en área rural. ¡Actualmente el récord tierra-tierra es de 210 km con una shield de arduino de 16$! (febrero 2017) y globo-tierra 702 km (agosto 2017).+Se alcanzan fácilmente 2km en área urbana y más de 10 km en área rural. ¡Actualmente el récord tierra-tierra es de 210 km con una shield de Arduino de 16$! (febrero 2017) y globo-tierra 702 km (agosto 2017).
  
 ==== Las frecuencias de LoRa ==== ==== Las frecuencias de LoRa ====
  
-Esta tecnología de radio utiliza bandas ISM, Industrial Scientific & Medical. Estas bandas son de uso libre sin licencia pero limitadas en potencia.+Esta tecnología de radio utiliza bandas ISM, Industrial Scientific & Medical. Estas bandas son de uso libre sin licencia pero limitadas en potencia y tiempo de transmisión.
  
 LoRa utiliza tres frecuencias principalmente: LoRa utiliza tres frecuencias principalmente:
Línea 25: Línea 25:
   * 433 MHz en Asia   * 433 MHz en Asia
   * 915 MHz en América   * 915 MHz en América
-  * __**868 MHz en Europa**__+  * **868 MHz en Europa**
 Esto es muy importante! Si vas a comprar un dispositivo con LoRa, fíjate muy bien que tenga la frecuencia adecuada. Si no lo haces puedes acabar con un módulo que no pueda hablar con otros dispositivos LoRa y que incluso puede estar infringiendo las regulaciones de radio. En las webs chinas encontrarás que los módulos con banda 433 MHz son los más baratos :-( Esto es muy importante! Si vas a comprar un dispositivo con LoRa, fíjate muy bien que tenga la frecuencia adecuada. Si no lo haces puedes acabar con un módulo que no pueda hablar con otros dispositivos LoRa y que incluso puede estar infringiendo las regulaciones de radio. En las webs chinas encontrarás que los módulos con banda 433 MHz son los más baratos :-(
 +
 +==== Los canales de LoRa ====
 +
 +Dentro de las bandas del anterior apartado, se definen canales de frecuencias concretas. Es complicado recordar las frecuencias de todos los canales, pero normalmente las librerías que utilizaremos ya se encargan de facilitarnos esta tarea. Quédate con que **para la banda de 868 MHz hay 10 canales**  y para la de 915 MHz hasta 64.
 +
 +==== El spreading factor (SF) de LoRa ====
 +
 +Esto seguro que es nuevo para ti. El spreading factor, se podría traducir como factor de esparcimiento. Para entenderlo imagina que estás en un concierto y quieres hablar con un acompañante pero no te oye por el ruido aunque grites todo lo que puedas (potencia de transmisión). Una opción para que te escuche es hablar mucho mas despacio. Pues es lo que define este factor, cuanto te "esparces" en el tiempo. Los SF parten del 7, mínimo esparcimiento, al 12, máximo.
 +
 +Lo genial de esto es que puedes llegar mucho más lejos con tu transmisor LoRa, pero tardarás mucho más en transmitir tus envíos y podrás enviar menos mensajes por la regla del 1%.
 +
 +==== La regla del 1% ====
 +
 +Otra característica nueva. En europa la banda 868 MHz tiene un par de limitaciones. La primera es la potencia de emisión: 25 mW, que no nos preocupa mucho ya que los módulos que utilizaremos no llegan a tanta. Pero la segunda si que es importante y debemos estar al loro para no violar la regulación.
 +
 +Esta regla simplificadamente lo que dice es que no podemos transmitir más que el 1% del tiempo. Es decir si por ejemplo enviar un paquete nos lleva 100 ms, tendremos que mantenernos calladitos por 900 ms.
 +
 +Como norma general, no envíes más de una vez cada 3 minutos y cumplirás la reglamentación. Si quieres enviar más a menudo, existen [[https://docs.google.com/spreadsheets/d/1voGAtQAjC1qBmaVuP1ApNKs1ekgUjavHuVQIXyYSvNc/edit#gid=0|calculadoras]] para obtener los tiempos entre envío mínimos. Para LoRaWAN (explicado más adelante), revisa la [[https://www.thethingsnetwork.org/forum/t/limitations-data-rate-packet-size-30-seconds-uplink-and-10-messages-downlink-per-day-fair-access-policy/1300|Fair access policy]].
  
 ---- ----
Línea 52: Línea 70:
   * Shields Arduino Uno: La más fácil de utilizar, pero al necesitar un Arduino Uno, consume demasiado para proyectos IOT.   * Shields Arduino Uno: La más fácil de utilizar, pero al necesitar un Arduino Uno, consume demasiado para proyectos IOT.
   * Shields para Wemos ESP8266: Muy pocas y difíciles de conseguir, pinchables en ESP8266 que tiene WiFi, busca "Aprilbeacon ESPea shield" o "[[https://github.com/hallard/WeMos-Lora|Hallard WeMos Lora RFM9x Gateway Shield]]". A mi entender la mejor solución para crear nodos con muy bajo consumo.   * Shields para Wemos ESP8266: Muy pocas y difíciles de conseguir, pinchables en ESP8266 que tiene WiFi, busca "Aprilbeacon ESPea shield" o "[[https://github.com/hallard/WeMos-Lora|Hallard WeMos Lora RFM9x Gateway Shield]]". A mi entender la mejor solución para crear nodos con muy bajo consumo.
-  * [[https://github.com/jfmateos/thethingnetwork_madrid_taller_gateway_nodo_single_channel/tree/master/Nodo|Shield para arduino pro mini]]: Diseñada por la gente de la comunidad TTN de Madrid. Muy interesante también al conseguir bajos consumos y bajo coste.+  * [[https://github.com/jfmateos/thethingnetwork_madrid_taller_gateway_nodo_single_channel/tree/master/Nodo|Shield para Arduino pro mini]]: Diseñada por la gente de la comunidad TTN de Madrid. Muy interesante también al conseguir bajos consumos y bajo coste.
  
 Ten en cuenta que si quieres hacerte un mini gateway para hacer pruebas, necesitas una tarjeta con LoRa que pueda conectarse a Internet ;-) Ten en cuenta que si quieres hacerte un mini gateway para hacer pruebas, necesitas una tarjeta con LoRa que pueda conectarse a Internet ;-)
Línea 66: Línea 84:
 ===== ¡Agarra tu LoRa que empezamos! Comunicación LoRa punto a punto ===== ===== ¡Agarra tu LoRa que empezamos! Comunicación LoRa punto a punto =====
  
-Si ya tienes tu tarjeta **TTGO LoRa32 V2.0 868 MHz**  … ahora te diré que necesitas otra más m(  Como primera prueba vamos a utilizar LoRa (SÓLO LoRa!) para comunicar dos dispositivos entre sí.+Si ya tienes tu tarjeta **TTGO LoRa32 V2.0 868 MHz**  … ahora te diré que necesitas otra más m( Como primera prueba vamos a utilizar LoRa (SÓLO LoRa!) para comunicar dos dispositivos entre sí.
  
 Primero debemos configurar el entorno de desarrollo. Utilizaré como ejemplo Arduino, pero te recomiendo que pruebes Platformio. Primero debemos configurar el entorno de desarrollo. Utilizaré como ejemplo Arduino, pero te recomiendo que pruebes Platformio.
Línea 87: Línea 105:
 </code> </code>
  
-  * Vete al gestor de librerías de arduino, busca "LoRa" e instala la librería de Sandeep Mistry. Yo he utilizado la v0.3.0 [[https://github.com/sandeepmistry/arduino-LoRa|https://github.com/sandeepmistry/arduino-LoRa]] Esta librería es la que permite enviar y recibir datos con LoRa entre dos cacharros que tengan los mismos parámetros. +  * Vete al gestor de librerías de Arduino, busca "LoRa" e instala la librería de Sandeep Mistry. Yo he utilizado la v0.3.0 [[https://github.com/sandeepmistry/arduino-LoRa|https://github.com/sandeepmistry/arduino-LoRa]] Esta librería es la que permite enviar y recibir datos con LoRa entre dos cacharros que tengan los mismos parámetros. 
-  * Vete al gestor de librerías de arduino, busca "ESP32 SSD1306" e instala la librería "ESP8266 and ESP32 Oled Driver for SSD1306 display" Yo he utilizado la v3.2.7 [[https://github.com/ThingPulse/esp8266-oled-ssd1306|https://github.com/ThingPulse/esp8266-oled-ssd1306]] Esta librería permite hacer funcionar la pantallita Oled de nuestra placa. Que bonita que es {{https://bricolabs.cc/wiki/lib/plugins/ckgedit/ckeditor/plugins/smiley/images/heart.png?nolink&23x23|heart}}+  * Vete al gestor de librerías de Arduino, busca "ESP32 SSD1306" e instala la librería "ESP8266 and ESP32 Oled Driver for SSD1306 display" Yo he utilizado la v3.2.7 [[https://github.com/ThingPulse/esp8266-oled-ssd1306|https://github.com/ThingPulse/esp8266-oled-ssd1306]] Esta librería permite hacer funcionar la pantallita Oled de nuestra placa. Que bonita que es {{https://bricolabs.cc/wiki/lib/plugins/ckgedit/ckeditor/plugins/smiley/images/heart.png?nolink&23x23|heart}}
  
 Bien, si has llegado aquí y no has muerto en el proceso, ¡enhorabuena, ya queda menos! Sólo queda bajarte [[https://github.com/TCRobotics/TTGO_LoRa32_V2.0_P2P|el código del ejemplo de mi Github]] Bien, si has llegado aquí y no has muerto en el proceso, ¡enhorabuena, ya queda menos! Sólo queda bajarte [[https://github.com/TCRobotics/TTGO_LoRa32_V2.0_P2P|el código del ejemplo de mi Github]]
Línea 163: Línea 181:
 Aquí hay que agarrarse que vienen curvas, ya que como todo el sistema es muy seguro y tenemos que interconectar muchos sistemas tenemos muchos sitios donde meter la pata. Y si algo lo hacemos mal, no va a funcionar :-( Aquí hay que agarrarse que vienen curvas, ya que como todo el sistema es muy seguro y tenemos que interconectar muchos sistemas tenemos muchos sitios donde meter la pata. Y si algo lo hacemos mal, no va a funcionar :-(
  
-Cuando empecé con LoRa, un par de semanas antes de escribir esta guia, me costó mucho hacer funcionar todo. Principalmente porque no tenía nada funcionando y probado, no había ningún gateway en Coruña (ni en Galicia! 8-o  ), la tarjeta TTGO era relativamente nueva y no había ninguna guía que recogiera todo el proceso. Leyendo mucho, haciendo muchas pruebas y gracias a un par de pistas que encontré en unas diapositivas [[https://github.com/jfmateos/thethingnetwork_madrid_taller_gateway_nodo_single_channel|de una charla de la comunidad TTN Madrid]] (Gracias [[https://twitter.com/juanfelixmateos|Juan Félix]]!!), conseguí encontrar la combinación correcta :-P+Cuando empecé con LoRa, un par de semanas antes de escribir esta guia, me costó mucho hacer funcionar todo. Principalmente porque no tenía nada funcionando y probado, no había ningún gateway en Coruña (ni en Galicia! 8-o ), la tarjeta TTGO era relativamente nueva y no había ninguna guía que recogiera todo el proceso. Leyendo mucho, haciendo muchas pruebas y gracias a un par de pistas que encontré en unas diapositivas [[https://github.com/jfmateos/thethingnetwork_madrid_taller_gateway_nodo_single_channel|de una charla de la comunidad TTN Madrid]] (Gracias [[https://twitter.com/juanfelixmateos|Juan Félix]]!!), conseguí encontrar la combinación correcta :-P
  
 Por lo que después de asustarte te voy a tranquilizar, en esta guía te acompañaré en todo el proceso y te señalaré para que no cometas ninguno de mis errores. ¡Además tendrás disponible un código que funciona! Por lo que después de asustarte te voy a tranquilizar, en esta guía te acompañaré en todo el proceso y te señalaré para que no cometas ninguno de mis errores. ¡Además tendrás disponible un código que funciona!
Línea 196: Línea 214:
 Empezaremos con una modificación hardware. Pon a calentar el soldador. Empezaremos con una modificación hardware. Pon a calentar el soldador.
  
-En el pinado que te mostraba anteriormente ya encontrábamos un misterioso pin DI0 o DIO0 del transceiver LoRa. Pues resulta que hay dos más, el DIO1 y el DIO2. Estos pines se utilizan como pines de interrupción y son necesarios para la librería LMIC, desarrollada por IBM que vamos a utilizar. La mala noticia es que los amigos de TTGO, aunque conectaron el DIO0, se han olvidado de conectar estos pines a los del ESP32 de nuestra tarjeta. m(  Nada que un par de cables y un soldador no puedan arreglar. <font inherit/inherit;;#c0392b;;inherit>**Conecta directamente el pin DIO1 al pin 33 y el DIO2 al 32**</font>siguiendo como guía el siguiente pineado del amigo [[https://www.thethingsnetwork.org/forum/u/bluejedi|bluejedi]] (Thanks!) de los foros de TTN, que por cierto está corregido ya que el de los vendedores estaba incorrecto.m(  Guárdatelo!+En el pinado que te mostraba anteriormente ya encontrábamos un misterioso pin DI0 o DIO0 del transceiver LoRa. Pues resulta que hay dos más, el DIO1 y el DIO2. Estos pines se utilizan como pines de interrupción y son necesarios para la librería LMIC, desarrollada por IBM que vamos a utilizar. La mala noticia es que los amigos de TTGO, aunque conectaron el DIO0, se han olvidado de conectar estos pines a los del ESP32 de nuestra tarjeta. m( Nada que un par de cables y un soldador no puedan arreglar. <font inherit/inherit;;#c0392b;;inherit>**Conecta directamente el pin DIO1 al pin 33 y el DIO2 al **</font><font inherit/inherit;;#c0392b;;inherit>**32**</font>siguiendo como guía el siguiente pineado del amigo [[https://www.thethingsnetwork.org/forum/u/bluejedi|bluejedi]] (Thanks!) de los foros de TTN, que por cierto está corregido ya que el de los vendedores estaba incorrecto.m(  Guárdatelo! 
 + 
 +Si vas a conectar como nodo otra tarjeta **TTGO LoRa32 V2.0 868 MHz **puedes aprovechar que tienes el soldador caliente para repetir la operación, ya que para el nodo también lo necesitamos.
  
 {{:guias:ttgolora32v20pinout.jpg?nolink&800x530|ttgolora32v20pinout.jpg}} {{:guias:ttgolora32v20pinout.jpg?nolink&800x530|ttgolora32v20pinout.jpg}}
Línea 215: Línea 235:
 Es importante no modificar el primer par de llaves, ya que debe quedar vacío, y como verás puedes meter dos o más wifis, si no quieres poner dos, deja el tercer par de llaves como estaba. Es importante no modificar el primer par de llaves, ya que debe quedar vacío, y como verás puedes meter dos o más wifis, si no quieres poner dos, deja el tercer par de llaves como estaba.
  
-Selecciona como placa "ESP32 Dev Module" y prueba a compilarlo. Debería compilar sin problemas, Si algo falla, alguna librería está mal instalada, interpreta los errores que te da el arduino o búscalos por Internet, ¡gajes del oficio maker!+Selecciona como placa "ESP32 Dev Module" y prueba a compilarlo. Debería compilar sin problemas, Si algo falla, alguna librería está mal instalada, interpreta los errores que te da el Arduino o búscalos por Internet, ¡gajes del oficio maker!
  
 Una vez hemos comprobado que todo compila, **<font inherit/inherit;;#c0392b;;inherit>vamos a hacer un par de modificaciones que nos hacen falta en el mismo archivo "ESP32-sc-gway.h"</font>**: Una vez hemos comprobado que todo compila, **<font inherit/inherit;;#c0392b;;inherit>vamos a hacer un par de modificaciones que nos hacen falta en el mismo archivo "ESP32-sc-gway.h"</font>**:
Línea 261: Línea 281:
 </code> </code>
  
-Ahora compila de nuevo, y si no hay ningún error, sube el programa. Una vez subido, abre el monitor serie de arduino a 115200, deberías ver algo similar a:+Por el pineado no nos tenemos que preocupar, ya que **la configuración de pines de esta versión del programa coincide con nuestra tarjeta**8-) 
 + 
 +Ahora compila de nuevo, y si no hay ningún error, sube el programa. Una vez subido, abre el monitor serie de Arduino a 115200, deberías ver algo similar a:
  
 {{https://bricolabs.cc//wiki/lib/plugins/ckgedit/fckeditor/userfiles/image/serialgateway.jpg?nolink&578x300|serialgateway.jpg}} {{https://bricolabs.cc//wiki/lib/plugins/ckgedit/fckeditor/userfiles/image/serialgateway.jpg?nolink&578x300|serialgateway.jpg}}
Línea 291: Línea 313:
 YEEEEEY!!! ¡Ya tienes tu gateway correctamente configurado y conectado! ¡Corre a mirar el mapa de gateways de la [[https://www.thethingsnetwork.org/|página principal de TTN]] puede que ya aparezca! ¡Enhorabuena! YEEEEEY!!! ¡Ya tienes tu gateway correctamente configurado y conectado! ¡Corre a mirar el mapa de gateways de la [[https://www.thethingsnetwork.org/|página principal de TTN]] puede que ya aparezca! ¡Enhorabuena!
  
-+==== Montaje nodo ==== 
 + 
 +Ahora vamos a preparar nuestro primer nodo (espero que el primero de muchos:-P ), empezando por el hardware. 
 + 
 +¿Le has hecho los puentes de DIO1 y DIO2 a tu **TTGO Lora32 V2.0**  alma de cántaro? Si no, te toca encender de nuevo el soldador. ¡La vagancia paga doble!LOL 
 + 
 +Continuará...
  
  
guias/lora_ttn.txt · Última modificación: 2021/05/07 19:14 por Alejandro Taracido