Herramientas de usuario

Herramientas del sitio


guias:lora_ttn

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
guias:lora_ttn [2018/04/21 08:22] Alejandro Taracidoguias:lora_ttn [2021/05/07 19:14] (actual) – [Montaje gateway de un canal] Fix image link Alejandro Taracido
Línea 1: Línea 1:
-====== LoRa + TTN: comunicando cosas con internet ======+====== LoRa + TTN: comunicando cosas con Internet ======
  
-WORK IN PROGRESS+//by [[:user:tcrobotics|TCRobotics]]//
  
 ===== ¿Qué vas a aprender aquí? ===== ===== ¿Qué vas a aprender aquí? =====
  
-Hacer que un cacharro electrónico sin conectividad wifi, móvil o bluetooth suba información a Internet sin hilos y a kilómetros de la civilización (o no)+Hacer que un cacharro electrónico sin conectividad wifi, móvil o bluetooth suba información a Internet sin hilos y a kilómetros de la civilización (o no).
  
-Y por otro lado toda la terminología utilizada en esta tecnología. ¡Que no es poca!+Y por otro ladotoda la terminología utilizada en esta tecnología. ¡Que no es poca!
  
 ---- ----
Línea 13: Línea 13:
 ===== LoRa (LOng RAnge) ===== ===== LoRa (LOng RAnge) =====
  
-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 largas distancias 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! Fíjate muy bien si vas a comprar un dispositivo con LoRa 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 32: Línea 50:
 ===== Vale, pero ¿qué compro para empezar? ===== ===== Vale, pero ¿qué compro para empezar? =====
  
-Uff, vaya SAV que nos ha entrado! Antes de comprar, para que no te líes te voy a explicar que principalmente hay dos módulos LoRa, también llamados transceivers o modems.+Uff, ¡vaya SAV que nos ha entrado! Antes de comprar, para que no te líes te voy a explicar que principalmente hay dos módulos LoRa, también llamados transceivers o modems.
  
   * [[https://www.semtech.com/uploads/documents/DS_SX1276-7-8-9_W_APP_V5.pdf|Semtech SX1276 (SX1276/SX1277/SX1278/SX1279]])   * [[https://www.semtech.com/uploads/documents/DS_SX1276-7-8-9_W_APP_V5.pdf|Semtech SX1276 (SX1276/SX1277/SX1278/SX1279]])
Línea 43: Línea 61:
 Normalmente los integrados vienen en módulo, una pequeña PCB que se puede soldar en otra, pero en algún caso para ahorrar costes, los fabricantes de tarjetas de desarrollo integran directamente el chip en la placa. Normalmente los integrados vienen en módulo, una pequeña PCB que se puede soldar en otra, pero en algún caso para ahorrar costes, los fabricantes de tarjetas de desarrollo integran directamente el chip en la placa.
  
-Un módulo lo puedes conectar a tu microcontrolador favorito y hacerlo funcionar solo añadiendo una antena.+Un módulo lo puedes conectar a tu microcontrolador favorito y hacerlo funcionar sólo añadiendo una antena.
  
 ==== Uff, paso de módulos, ¿no hay algo mas sencillo? ==== ==== Uff, paso de módulos, ¿no hay algo mas sencillo? ====
  
-Si, no te preocupes. Aunque en el momento de escribir esta guia no hay muchísimas, si que hay varias opciones. Te voy a enumerar las que me parecen mas interesantes.+Si, no te preocupes. Aunque en el momento de escribir esta guía no hay muchísimas, si que hay varias opciones. Te voy a enumerar las que me parecen más interesantes.
  
   * TTGO LoRa32 o Heltec LoRa32: hay varios modelos y versiones, basadas en ESP32, con WiFi integran una pantallita Oled muy maja y pueden alimentarse con una LiPo y cargarla por USB, perfectas para desarrollar y hacer pruebas.   * TTGO LoRa32 o Heltec LoRa32: hay varios modelos y versiones, basadas en ESP32, con WiFi integran una pantallita Oled muy maja y pueden alimentarse con una LiPo y cargarla por USB, perfectas para desarrollar y hacer pruebas.
-  * Shields Arduino Uno: La más fácil de utilizar, pero al necesitar un Arduino Uno, con demasiado consumo 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]]" pero 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 ;-)
  
 Esta guía está centrada en la tarjeta **TTGO LoRa32 V2.0 868 MHz. **Ya que es la que me he comprado para hacer pruebas :-P Puede servir con pequeñas modificaciones si utilizas otra placa basada en ESP32 o como orientación si utilizas otra cualquiera. Esta guía está centrada en la tarjeta **TTGO LoRa32 V2.0 868 MHz. **Ya que es la que me he comprado para hacer pruebas :-P Puede servir con pequeñas modificaciones si utilizas otra placa basada en ESP32 o como orientación si utilizas otra cualquiera.
 +
 +AVISO IMPORTANTÍSIMO: NUNCA ENCIENDAS UN TRANSMISOR DE RADIO SIN SU ANTENA!
 +
 +AL NO TENER POR DONDE EVACUAR LA ENERGÍA, SE DAÑARÁ O DEJARÁ DE FUNCIONAR!
  
 ---- ----
  
-===== 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 otro más m( Como primera prueba vamos a utilizar LoRa (SOLO 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.
  
-  * Instala la última versión de [[https://www.arduino.cc/en/Main/Software|Arduino]] (es recomendable tener siempre la más actualizada)+  * Instala la última versión de [[https://www.arduino.cc/en/Main/Software|Arduino]]. Es recomendable tener siempre la más actualizada.
   * Instala el [[https://github.com/espressif/arduino-esp32|soporte para la plataforma ESP32]]. En ese github tienes las indicaciones. ¡Si no lo tienes claro hay muchos tutoriales y vídeos por Internet!   * Instala el [[https://github.com/espressif/arduino-esp32|soporte para la plataforma ESP32]]. En ese github tienes las indicaciones. ¡Si no lo tienes claro hay muchos tutoriales y vídeos por Internet!
   * Prueba a programar el siguiente código para ver si parpadea el led verde de la placa y así confirmar que puedes programar el ESP32 sin problema   * Prueba a programar el siguiente código para ver si parpadea el led verde de la placa y así confirmar que puedes programar el ESP32 sin problema
Línea 83: 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 libreria 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! Solo 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]]
  
 El código de ejemplo es una modificación de un ejemplo de la librería "LoRa" para Arduino. Envía un mensaje cada 2 o 3 segundos y si recibe algo lo muestra. Además utiliza un byte de dirección, por lo que comprueba si los mensajes LoRa que recibe son para él o no. Si tienes otra tarjeta de desarrollo distinta, puedes modificar el pinado para que funcione para tu montaje. El código de ejemplo es una modificación de un ejemplo de la librería "LoRa" para Arduino. Envía un mensaje cada 2 o 3 segundos y si recibe algo lo muestra. Además utiliza un byte de dirección, por lo que comprueba si los mensajes LoRa que recibe son para él o no. Si tienes otra tarjeta de desarrollo distinta, puedes modificar el pinado para que funcione para tu montaje.
Línea 92: Línea 114:
 Para probarlo, carga el código tal y como está en uno de tus cacharros, y en el otro, comenta la sección CONFIG 1 y descomenta la CONFIG 2. Esto es muy importante ya que así cada uno tiene su dirección propia y cuando envía, lo hace con destino al otro. Por lo que los dos dispositivos van a enviar y recibir entre los dos. Para probarlo, carga el código tal y como está en uno de tus cacharros, y en el otro, comenta la sección CONFIG 1 y descomenta la CONFIG 2. Esto es muy importante ya que así cada uno tiene su dirección propia y cuando envía, lo hace con destino al otro. Por lo que los dos dispositivos van a enviar y recibir entre los dos.
  
-Te recomiendo que eches una buena ojeada al código para entender como funciona y te animo a que lo modifiques para hacer pruebas, ¡o lo mejores! Pero siempre no te olvides de compartir;-)+Te recomiendo que eches una buena ojeada al código para entender como funciona y te animo a que lo modifiques para hacer pruebas, ¡o lo mejores! Pero nunca te olvides de compartir;-)
  
-Algo importante con lo que te tienes que quedar si tienes una tarjeta **TTGO LoRa32 V2.0 **es con el pineado. ¡A mí me costó conseguirlo! ¡Muchos de los pineados que ofrecen los vendedores están mal! Lo necesitaremos para las siguientes pruebas. Si no te has dado cuenta aún, el pin del led que siempre lleva el ESP32 se utiza para la pantalla, por lo que si usas la Oled no puedes utilizar el led y viceversa m(+Algo importante con lo que te tienes que quedar si tienes una tarjeta **TTGO LoRa32 V2.0 **es con el pineado. ¡A mí me costó conseguirlo! ¡Muchos de los pineados que ofrecen los vendedores están mal! Lo necesitaremos para las siguientes pruebas. Si no te has dado cuenta aún, el pin del led que siempre lleva el ESP32 se utiliza para la pantalla, por lo que si usas la Oled no puedes utilizar el led y viceversa m(
  
 <code> <code>
Línea 127: Línea 149:
 ===== TTN (The Things Network) ===== ===== TTN (The Things Network) =====
  
-Esta organización tiene la intención de crear una red distribuida y descentralizada para Internet de las cosas con filosofía open source hardware y software. Con la peculiaridad de que la red la crea la comunidad instalando gateways que dan cobertura y permiten la comunicación de los nodos e Internet. En el momento de escribir esta guia, TTN cuenta con 3507 gateways instalados por todo el mundo y más de 35000 usuarios.+Esta organización tiene la intención de crear una red distribuida y descentralizada para Internet de las cosas con filosofía open source hardware y software. Con la peculiaridad de que la red la crea la comunidad instalando gateways que dan cobertura y permiten la comunicación de los nodos e Internet. En el momento de escribir esta guía, TTN cuenta con 3507 gateways instalados por todo el mundo y más de 35000 usuarios.
  
 En su github tienen publicado su [[https://github.com/TheThingsNetwork/Manifest|Manifiesto]] que resumidamente se centra en tres ideas: En su github tienen publicado su [[https://github.com/TheThingsNetwork/Manifest|Manifiesto]] que resumidamente se centra en tres ideas:
  
-  * Tus datos son tus datos, los datos son cifrados punto a punto +  * Tus datos son tus datos, los datos son cifrados punto a punto. 
-  * Neutralidad de la red, todos los datos se tratan con igualdad +  * Neutralidad de la red, todos los datos se tratan con igualdad. 
-  * Open source, la tecnología desarrollada se hace abierta+  * Open source, la tecnología desarrollada se hace abierta.
  
 Algo importante que reseñar es que la información de los nodos se transmite a los gateways y estos normalmente la pasan a los servidores de TTN, o viceversa . Y es el usuario el que para acceder a sus datos o nodos debe utilizar una serie de protocolos soportados por TTN, como HTTP o MQTT. Algo importante que reseñar es que la información de los nodos se transmite a los gateways y estos normalmente la pasan a los servidores de TTN, o viceversa . Y es el usuario el que para acceder a sus datos o nodos debe utilizar una serie de protocolos soportados por TTN, como HTTP o MQTT.
  
-También hay la opción de implementar de manera privada esta red por lo que si se quiere se puede sacar a TTN de la ecuación y tener el control completo. De todas maneras en todos los casos los datos viajan cifrados y sólo el dueño de los datos puede acceder a ellos.+También hay la opción de implementar de manera privada esta red por lo que si se quiere se puede sacar a TTN de la ecuación y tener el control completo. De todas manerasen todos los casos los datos viajan cifrados y sólo el dueño de los datos puede acceder a ellos.
  
-==== Muy bonito todo, pero ¿Porque utilizar TTN si puedo utilizar LoRa punto a punto? ====+==== Muy bonito todo, pero ¿Porqué utilizar TTN si puedo utilizar LoRa punto a punto? ====
  
-Pues igual no lo necesitas, simplemente quieres comunicarte con un dispositivo y ya. Igual que existen los Walkie Talkies y los móviles, los dos sistemas tienen sus aplicaciones.+Pues igual no lo necesitas, simplemente quieres comunicarte con un dispositivo y ya está. Igual que existen los Walkie Talkies y los móviles, los dos sistemas tienen sus aplicaciones.
  
 Te cuento las ventajas de utilizar TTN: Te cuento las ventajas de utilizar TTN:
  
-  * Si donde quieres utilizar LoRa, ya hay un gateway TTN, ¡no necesitas comprar dos módulos LoRa, solo uno! ¡A mitad de precio oiga! +  * Si donde quieres utilizar LoRa, ya hay un gateway TTN, ¡no necesitas comprar dos módulos LoRa, sólo uno! ¡A mitad de precio oiga! 
-  * En cuanto tus datos están subidos a TTN, puedes acceder desde cualquier sitio (con internet)+  * En cuanto tus datos están subidos a TTN, puedes acceder desde cualquier sitio (con Internet).
   * Si quieres compartir tus datos o unirte a una red existente (por ejemplo de medida de calidad de aire) es muy sencillo.   * Si quieres compartir tus datos o unirte a una red existente (por ejemplo de medida de calidad de aire) es muy sencillo.
-  * La seguridad y cifrado de las comunicaciones es muy buena, no como punto a punto que la tienes que implementar tu+  * La seguridad y cifrado de las comunicaciones es muy buena, no como punto a punto que la tienes que implementar 
-  * Escalar tu sistema añadiendo nodos es muy sencillo y puedes hacerlo hasta que te canses. Con punto a punto debes hacer tu la implementación para gestionar el tráfico+  * Escalar tu sistema añadiendo nodos es muy sencillo y puedes hacerlo hasta que te canses. Con punto a punto debes hacer tú la implementación para gestionar el tráfico.
   * Siempre que haya cobertura de gateways TTN puedes tener un nodo móvil que puede subir datos sin preocuparse de reconfigurar nada.   * Siempre que haya cobertura de gateways TTN puedes tener un nodo móvil que puede subir datos sin preocuparse de reconfigurar nada.
   * Pertenecerás a una comunidad en la que puedes aprender y contribuir. Una comunidad que está empujando los límites y trabajando en el futuro del IoT.   * Pertenecerás a una comunidad en la que puedes aprender y contribuir. Una comunidad que está empujando los límites y trabajando en el futuro del IoT.
Línea 155: Línea 177:
 ---- ----
  
-===== Vale, me has convencido, ¿que tengo que hacer para utilizar TTN? =====+===== Vale, me has convencido, ¿qué tengo que hacer para utilizar TTN? =====
  
 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 en el momento de escribir esta guia, me costó mucho hacer funcionar todo. Principalmente por que 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 guia que recogiera todo el proceso. Leyendo mucho, haciendo muchas pruebas y gracias a un par de pistas que encontré en unas diapositivas de una charla de la comunidad TTN Madrid (Gracias Juan Félix!!), conseguí encontrar la combinación correcta :-P+Cuando empecé con LoRaun 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 166: Línea 188:
  
   - Hazte un usuario en TTN   - Hazte un usuario en TTN
-  - Busca si hay cobertura de un gateway TTN o haztelo conectalo a TTN +  - Busca si hay cobertura de un gateway TTN o haztelo 
-  - Crea un nodo +  - Si has montado tu gateway conectalo a TTN 
-  - Configura programa el nodo+  - Crea un nodo, configúralo prográmalo
   - Configura la aplicación en TTN   - Configura la aplicación en TTN
   - Accede a tus datos   - Accede a tus datos
Línea 176: Línea 198:
 Un paso facilito para empezar a calentar, entra [[https://account.thethingsnetwork.org/register|aquí]] y créate un usuario. Un paso facilito para empezar a calentar, entra [[https://account.thethingsnetwork.org/register|aquí]] y créate un usuario.
  
-==== Busca si hay cobertura de un gateway TTN o haztelo conectalo a TTN ====+==== Busca si hay cobertura de un gateway TTN o háztelo conéctalo a TTN ====
  
-Si tienes suerte, alguien cerca de tí ya habrá instalado un gateway TTN. En la [[https://www.thethingsnetwork.org/|página principal de TTN]] tienes un mapa actualizado.+Si tienes suerte, alguien cerca de ti ya habrá instalado un gateway TTN. En la [[https://www.thethingsnetwork.org/|página principal de TTN]] tienes un mapa actualizado.
  
 {{https://bricolabs.cc//wiki/lib/plugins/ckgedit/fckeditor/userfiles/image/guias/gateways.jpg?nolink&573x250|gateways.jpg}} {{https://bricolabs.cc//wiki/lib/plugins/ckgedit/fckeditor/userfiles/image/guias/gateways.jpg?nolink&573x250|gateways.jpg}}
  
-Si tienes un gateway cerca, ya no necesitas más. Aunque es un buen ejercicio crearse uno, por aprendizaje y para fortalecer la covertura de TTN.+Si tienes un gateway cerca, ya no necesitas más, puedes saltarte al paso de crear el nodo. Aunque es un buen ejercicio crearse un gateway, por aprendizaje y para fortalecer la cobertura de TTN.
  
 ==== Montaje gateway de un canal ==== ==== Montaje gateway de un canal ====
  
-Un gateway debería poder servir a nodos en todos los canales y con todos los spreading factors. Si no tienes un gateway cercano, puedes hacerte uno con una raspberry pi y unas placas llamadas concentradores. El conjunto puede salir entre los 150 y 200€.+Un gateway debería poder servir a nodos en todos los canales y con todos los spreading factors. Si no tienes un gateway cercano, puedes hacerte uno con una Raspberry Pi y unas placas llamadas concentradores. El conjunto puede salir entre los 150 y 200€.
  
 Otra opción es montar un gateway de un solo canal, [[https://www.thethingsnetwork.org/forum/t/the-future-of-single-channel-gateways/6590|no es lo ideal para la red TTN]], pero para hacer las primeras pruebas y empezar a cubrir rápidamente una ciudad, sirve. Y es lo que voy a contaros como hacer a continuación, particularizado para la tarjeta **TTGO LoRa32 V2.0 868 MHz**. Otra opción es montar un gateway de un solo canal, [[https://www.thethingsnetwork.org/forum/t/the-future-of-single-channel-gateways/6590|no es lo ideal para la red TTN]], pero para hacer las primeras pruebas y empezar a cubrir rápidamente una ciudad, sirve. Y es lo que voy a contaros como hacer a continuación, particularizado para la tarjeta **TTGO LoRa32 V2.0 868 MHz**.
Línea 192: 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 encontrabamos 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! {{:guias:ttgolora32v20pinout.jpg?800  |ttgolora32v20pinout.jpg}}+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!
  
-Hardware listo, vamos con el software. Vamos utilizar el proyecto Open Source: [[https://github.com/kersing/ESP-1ch-Gateway-v5.0|ESP-1ch-Gateway-v5.0]] del majete Marteen Westenberg. Es un proyecto basado en ESP8266 pero casi todo funciona en ESP32 gracias a Jac Kersing. Descárgalo y descomprímelo. Este proyecto utiliza [[https://github.com/kersing/ESP-1ch-Gateway-v5.0/tree/master/libraries|unas cuantas librerías]] de Arduino que necesitas tener instaladas. Si ya has hecho el ejemplo de comunicación punto a punto, la del ESP32 y ESP8266_Oled_Driver_for_SSD1306_display ya las tienes instaladas. Para el resto intenta primero instalarlas con el gestor de librerías de Arduino, si no las encuentras, instálalas de manera manual utilizando las de la [[https://github.com/kersing/ESP-1ch-Gateway-v5.0/tree/master/libraries|carpeta del proyecto]]hay muchos tutoriales que explican como instalar librerías en Arduino.;-)+Si vas conectar como nodo otra tarjeta **TTGO LoRa32 V2.0 868 MHz **puedes aprovechar que tienes el soldador caliente para repetir la operaciónya que para el nodo también lo necesitamos.
  
-Después de un rato instalando librerías (que divertido!), cuando las tengas todas, abre el archivo "ESP-sc-gway.ino" con Arduino<font inherit/inherit;;#c0392b;;inherit>**Vamos a hacer una modificación sin la cual no va a compilar**</font>. Entra en el archivo "ESP-sc-gway.h" y en la línea 242 cambia el 0 por 1, y aprovecha a poner el nombre de tu wifi y la contraseña. Debe quedar algo así:+{{:guias:ttgolora32v20pinout.jpg?nolink&800x530|ttgolora32v20pinout.jpg}}
  
 +Hardware listo, vamos con el software. Vamos a utilizar el proyecto Open Source: [[https://github.com/kersing/ESP-1ch-Gateway-v5.0|ESP-1ch-Gateway-v5.0]] del majete Marteen Westenberg. Es un proyecto basado en ESP8266 pero casi todo funciona en ESP32 gracias a Jac Kersing. Descárgalo y descomprímelo. Este proyecto utiliza [[https://github.com/kersing/ESP-1ch-Gateway-v5.0/tree/master/libraries|unas cuantas librerías]] de Arduino que necesitas tener instaladas. Si ya has hecho el ejemplo de comunicación punto a punto, la del ESP32 y ESP8266_Oled_Driver_for_SSD1306_display ya las tienes instaladas. Para el resto intenta primero instalarlas con el gestor de librerías de Arduino, si no las encuentras, instálalas de manera manual utilizando las de la [[https://github.com/kersing/ESP-1ch-Gateway-v5.0/tree/master/libraries|carpeta del proyecto]], hay muchos tutoriales que explican cómo instalar librerías en Arduino.;-)
 +
 +Después de un rato instalando librerías (¡que divertido!), cuando las tengas todas, abre el archivo "ESP-sc-gway.ino" con Arduino. <font inherit/inherit;;#c0392b;;inherit>**Vamos a hacer una modificación sin la cual no va a compilar**</font>. Entra en el archivo "**ESP-sc-gway.h**" y en la **línea 242** cambia el 0 por 1, y aprovecha a poner el nombre de tu wifi y la contraseña. Debe quedar algo así:
 <code> <code>
 +
 #if 1 #if 1
 wpas wpa[] = { wpas wpa[] = {
Línea 205: Línea 231:
     { "nombreWIFI2", "passwordWifi2" },     { "nombreWIFI2", "passwordWifi2" },
 }; };
 +
 </code> </code>
  
-Es importante no modificar el primer par de llaves, ya que debe quedar vacío, y como verás puedes meter dos 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, vamos a hacer un par de modificaciones que nos hacen falta en el mismo archivo "ESP32 Dev Module":+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 60: cambiar a 0, esto hace que solo trabaje con un spreading factor SF7+  * Línea 60: cambiar a 0, esto hace que sólo trabaje con un spreading factor SF7
  
 <code> <code>
 #define _CAD 0 #define _CAD 0
 +
 </code> </code>
  
-  * Línea 112: cambiar a 1, para solo utilizar el primer canal+  * Línea 112: cambiar a 1, para sólo utilizar el primer canal
  
 <code> <code>
 #define _STRICT_1CH    1 #define _STRICT_1CH    1
 +
 </code> </code>
  
Línea 229: Línea 258:
 <code> <code>
 #define AP_PASSWD "MyPw01!" #define AP_PASSWD "MyPw01!"
 +
 </code> </code>
  
-  * Línea 193: pon la descripción de tu gateway (Indica que funciona en 868.1MHz y SF7), correo electrónico, posición gps (la puedes sacar de google maps) y altitud aproximada+  * Línea 193: pon la descripción de tu gateway (Indica que funciona en 868.1MHz y SF7), correo electrónico, posición gps (la puedes sacar de Google Maps) y altitud aproximada
  
 <code> <code>
Línea 240: Línea 270:
 #define _LON 6.557 #define _LON 6.557
 #define _ALT 8 #define _ALT 8
 +
 </code> </code>
  
-  * Línea 201: cambia al servidor de hora de tu [[http://www.pool.ntp.org/es/|país]], y en que zona UTC estás. Para el caso de España (el código no tiene en cuenta el horario de verano!) +  * Línea 201: cambia al servidor de hora de tu [[http://www.pool.ntp.org/es/|país]], y en que zona UTC estás. El código no tiene en cuenta el horario de verano
 <code> <code>
 +
 #define NTP_TIMESERVER "es.pool.ntp.org"    // Country and region specific #define NTP_TIMESERVER "es.pool.ntp.org"    // Country and region specific
 #define NTP_TIMEZONES    1                    // How far is our Timezone from UTC (excl daylight saving/summer time) #define NTP_TIMEZONES    1                    // How far is our Timezone from UTC (excl daylight saving/summer time)
 +
 </code> </code>
  
Línea 253: Línea 285:
 <code> <code>
  #define OLED_SCL 22 #define OLED_SDA 21  #define OLED_SCL 22 #define OLED_SDA 21
 +
 </code> </code>
  
-+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: 
 + 
 +{{:serialgateway.jpg}} 
 + 
 +Si no lo ves, es que te entretuviste viendo como en la pantallita ponia STARTING y te quedaste embobado como yo.^_^  Puedes apretar el botón de reset de tu placa y volverá a salir. 
 + 
 +Fíjate si ha sido capaz de conectarse a tu wifi, si no es así comprueba los datos de tu red en el código o muévete a donde llegue mejor tu wifi. 
 + 
 +Copia el **Gateway ID **que te salió por el puerto serie. Este es tu identificador y lo necesitarás para los siguientes pasos. 
 + 
 +Ahora puedes buscar en tu red la IP de tu nuevo gateway, y si pones en un navegador su dirección… Voilá! 
 + 
 +{{:guias;wifimonitorloragateway.jpg}} 
 + 
 +¡La leche! Una pedazo de web que está generando nuestro ESP32 que nos vendrá genial para monitorizar nuestro gateway y su estado durante pruebas y funcionamiento. No te preocupes si la hora está atrasada o adelantada, no tiene en cuenta los horarios de verano e invierno;-) 
 + 
 +Ok, listo Software!:-P 
 + 
 +**Conectemos ahora nuestro flamante gateway a TTN** 
 + 
 +Entra en TTN y loguéate con tu usuario. En el menú de tu usuario tienes un enlace a la [[https://console.thethingsnetwork.org/|consola]]. Entra en Gateway y registra uno nuevo. Para poder introducir el ID del gateway o EUI, debemos seleccionar "**I´m using the legacy packet forwarder**". Rellena el resto de campos, es útil para los que vean tu gateway que indiques que trabaja en la frecuencia 868.1 MHz y SP7. 
 + 
 +{{:guias:configgateway.jpg}} 
 + 
 +Dale a register y si has hecho todo bien… 
 + 
 +{{:guias:gateway_overview.jpg|}} 
 + 
 +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.1524298936.txt.gz · Última modificación: 2021/04/16 20:38 (editor externo)