Herramientas de usuario

Herramientas del sitio


Barra lateral

Traducciones de esta página:

Página principal

Análisis y comparativas

Eventos Guías Herramientas Información de interés Proyectos > Usuarios Varios Wiki Privado

No hay páginas en esta sección.

old admin

No hay páginas en esta sección.

guias:lora_ttn

¡Esta es una revisión vieja del documento!


LoRa + TTN: comunicando cosas con internet

WORK IN PROGRESS

¿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)

Y por otro lado toda la terminología utilizada en esta tecnología. ¡Que no es poca!


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).

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

Esta tecnología de radio utiliza bandas ISM, Industrial Scientific & Medical. Estas bandas son de uso libre sin licencia pero limitadas en potencia.

LoRa utiliza tres frecuencias principalmente:

  • 433 MHz en Asia
  • 915 MHz en América
  • 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 :-(


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.

Vaya lío no? Aunque veas dos marcas, HopeRF monta chips de Semtech, aunque renombrados, por lo que al final es el mismo bicho con distinto pelaje (o nombre) y sirven las mismas librerías sin hacer ningún cambio. Se comunican y configuran utilizando SPI.

No te líes intentando saber cual es el que necesitas ya que hay versiones de integrado que sirven para varias frecuencias y se configuran por software. Lo que realmente define la frecuencia para la que sirven son los componentes externos al chip. Busca la frecuencia en la descripción, si no la encuentras o no lo dejan muy claro, mejor no comprar ese artículo. Para el caso de Europa en todos los sitios recomiendan el RFM95W 868 MHz.

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.

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.

  • 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 para Wemos ESP8266: Muy pocas y difíciles de conseguir, pinchables en ESP8266 que tiene WiFi, busca “Aprilbeacon ESPea shield” o “Hallard WeMos Lora RFM9x Gateway Shield” pero a mi entender la mejor solución para crear nodos con muy bajo consumo.
  • 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 ;-)

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.


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í.

Primero debemos configurar el entorno de desarrollo. Utilizaré como ejemplo Arduino, pero te recomiendo que pruebes Platformio.

  • Instala la última versión de Arduino (es recomendable tener siempre la más actualizada)
  • Instala el 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
int led = 22;
void setup() {
  pinMode(led, OUTPUT);
}
void loop() {
  digitalWrite(led, HIGH);
  delay(1000);
  digitalWrite(led, LOW);
  delay(1000);
}
  • 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 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 “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 Esta librería permite hacer funcionar la pantallita Oled de nuestra placa. Que bonita que es heart

Bien, si has llegado aquí y no has muerto en el proceso, ¡enhorabuena, ya queda menos! Solo queda bajarte 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.

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;-)

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(

#define SX1278_SCK  5    // GPIO5  -- SX1278's SCK
#define SX1278_MISO 19   // GPIO19 -- SX1278's MISO
#define SX1278_MOSI 27   // GPIO27 -- SX1278's MOSI
#define SX1278_CS   18   // GPIO18 -- SX1278's CS
#define SX1278_RST  14   // GPIO14 -- SX1278's RESET
#define SX1278_DI0  26   // GPIO26 -- SX1278's IRQ(Interrupt Request)

#define OLED_SDA    21    // GPIO21  -- OLED'S SDA
#define OLED_SCL    22    // GPIO22  -- OLED's SCL Shared with onboard LED! :(
#define OLED_RST    16    // GPIO16  -- OLED's VCC?

#define OLED_ADDR   0x3c  // OLED's ADDRESS

LoRaWAN

Mientras que LoRa es la tecnología de transmisión, LoRaWan es una especificación para redes de bajo consumo y área amplia LPWAN (Low Power Wide Area Network). Por lo que cuando oigas LoRaWan, no se trata de una simple comunicación entre dos dispositivos LoRa, que también se puede hacer, sino de una conexión entre dispositivos LoRa y gateways e Internet.

Gateway

Un gateway LoRa es simplemente un dispositivo que tiene un módulo de transmisión LoRa y que redirige la información entre Internet y los nodos que se comuniquen con él y viceversa. ¡En el caso de TTN un Gateway puede dar servicio a unos 1000 nodos!

Nodo

Un nodo se entiende como un dispositivo que envía o recibe información con un gateway.

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.

En su github tienen publicado su Manifiesto que resumidamente se centra en tres ideas:

  • Tus datos son tus datos, los datos son cifrados punto a punto
  • Neutralidad de la red, todos los datos se tratan con igualdad
  • 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.

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.

Muy bonito todo, pero ¿Porque 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.

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!
  • 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.
  • La seguridad y cifrado de las comunicaciones es muy buena, no como punto a punto que la tienes que implementar tu.
  • 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
  • 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.

Vale, me has convencido, ¿que 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 :-(

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

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!

¡A arremangarse que empezamos! Estos son los pasos necesarios:

  1. Hazte un usuario en TTN
  2. Busca si hay cobertura de un gateway TTN o haztelo y conectalo a TTN
  3. Crea un nodo
  4. Configura y programa el nodo
  5. Configura la aplicación en TTN
  6. Accede a tus datos

Hazte un usuario en TTN

Un paso facilito para empezar a calentar, entra aquí y créate un usuario.

Busca si hay cobertura de un gateway TTN o haztelo y conectalo a TTN

Si tienes suerte, alguien cerca de tí ya habrá instalado un gateway TTN. En la página principal de TTN tienes un mapa actualizado.

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.

guias/lora_ttn.1523901773.txt.gz · Última modificación: 2021/04/16 20:38 (editor externo)