All Projects → McOrts → LoRa_gateway

McOrts / LoRa_gateway

Licence: GPL-3.0 license
Compendio de manuales e instrucciones a modo de diario de mi aportación desarrollo de la red LoRa TTN en Mallorca. Comunicaciones gratuitas para IoT

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to LoRa gateway

arduino-lmic
LoraWAN-MAC-in-C library, adapted to run under the Arduino environment
Stars: ✭ 486 (+1635.71%)
Mutual labels:  lorawan, thethingsnetwork
POST S76G
Power-on Self Test for TTGO T-Motion LoRaWAN GNSS tracker and T-Impulse wristband
Stars: ✭ 16 (-42.86%)
Mutual labels:  lorawan, ttgo
TTGO LoRa32
Some sample code for the TTGO ESP32 Oled Lora board.
Stars: ✭ 99 (+253.57%)
Mutual labels:  lorawan, ttgo
arduino-mkr-wan-1300
Getting started with the Arduino MKR WAN 1300
Stars: ✭ 38 (+35.71%)
Mutual labels:  lorawan, thethingsnetwork
GY-85
Arduino implementation for GY-85 (ADXL345 accelerometer, ITG3200 gyroscope and HMC5883L magnetometer)
Stars: ✭ 63 (+125%)
Mutual labels:  adxl345
Asr650x Arduino
Heltec CubeCell Series (based on ASR6501, ASR6502 chip) Arduino support.
Stars: ✭ 110 (+292.86%)
Mutual labels:  lorawan
Ttgo T Beam Car Tracker
TTGO-T-Beam Arduino Car Tracker - ESP32 + LoRa + GPS + GSM (optional)
Stars: ✭ 106 (+278.57%)
Mutual labels:  lorawan
Loramac Node
Reference implementation and documentation of a LoRa network node.
Stars: ✭ 1,342 (+4692.86%)
Mutual labels:  lorawan
Catena-Sketches
Top-level Arduino sketches for the MCCI Catena family of IoT LPWA Devices
Stars: ✭ 12 (-57.14%)
Mutual labels:  lorawan
nrf52-lora
LoRa node on nRF52
Stars: ✭ 24 (-14.29%)
Mutual labels:  lorawan
Arduino Device Lib
Arduino Library for TTN Devices
Stars: ✭ 155 (+453.57%)
Mutual labels:  lorawan
Laf
This project intends to provide a series of tools to craft, parse, send, analyze and crack a set of LoRaWAN packets in order to audit or pentest the security of a LoraWAN infrastructure.
Stars: ✭ 119 (+325%)
Mutual labels:  lorawan
CaravanPi
System for measuring and displaying various values in caravans and motor homes, including climate values, filling levels and levelling data. MagicMirror (https://magicmirror.builders/) is used for presentation. A circuit board design is available now
Stars: ✭ 14 (-50%)
Mutual labels:  adxl345
Iotedge Lorawan Starterkit
Experimental sample implementation of LoRaWAN components to connect LoRaWAN antenna gateway running IoT Edge directly with Azure IoT.
Stars: ✭ 108 (+285.71%)
Mutual labels:  lorawan
WisBlock
Quickstart, tutorials and examples for the RAKwireless WisBlock product line.
Stars: ✭ 95 (+239.29%)
Mutual labels:  lorawan
Mainflux
Industrial IoT Messaging and Device Management Platform
Stars: ✭ 1,341 (+4689.29%)
Mutual labels:  lorawan
Arduino Lorawan
User-friendly library for using arduino-lmic with The Things Network and other LoRaWAN™ networks
Stars: ✭ 140 (+400%)
Mutual labels:  lorawan
adxl345
ADXL345 full function driver for general MCU and Linux.
Stars: ✭ 170 (+507.14%)
Mutual labels:  adxl345
Arduino
Arduino electronics hacking
Stars: ✭ 137 (+389.29%)
Mutual labels:  lorawan
Ttn Esp32
The Things Network device library for ESP32 (ESP-IDF) and SX127x based devices
Stars: ✭ 156 (+457.14%)
Mutual labels:  lorawan

El primer gateway libre para IoT de Baleares

Este será el diario del desarrollo del primer LoRa gateway TTN de Baleares. Una plataforma gratuita de conectividad a internet de dispositivos IOT adscrita a la red TTN: The Things Network Primer gateway TTN de Baleares

¿Por qué LoRa?

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

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

¿Por qué TTN?

The Things Network

La vuelta de tuerca a esta solución de interconectividad de dispositivos la ha dado la red The Things Network. Que ha formado una comunidad abierta de gateways y nodos que permite la conectividad de dispositivos IoT sin 3G ni WiFi y sin coste. En realidad solo vamos a pagar el copywrite del chip LoRa de los dispositivos que compremos.

Teoría de la señal

Estas comunicaciones utilizan las bandas ISM (Industrial Scientific & Medical) 868 MHz para Europa. Son de uso libre sin licencia pero limitadas a la potencia de 25 mW (p.r.a.) y tiempo de transmisión del 1% (Orden IET/787/2013 del cuadro nacional de atribución de frecuencias). 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 calculadoras para obtener los tiempos entre envío mínimos. Para LoRaWAN, revisa la Fair access policy.

) Spreading Factor es un importante cuando utilizamos un único canal de comunicación. El SF especifica la potencia de transmisión, la subfrecuencia y el tiempo de aire (Time on Air). En otras palabras, hace lo mismo que cuando conversamos en un entorno ruidoso, hablamos más despacio alargando las palabras. De esta manera un SF alto, 12 por ejemplo. Permite un mayor alcance pero menos capacidad de transmisión:

La seguridad. ABP: Activation By Personalisation

En ABP un dispositivo no necesita los identificadores de DevEUI, ApEUI y AppKey. En cambio las claves de sesión, NwkSKey y AppSKey si, y las tiene preprogramadas el dispositivo, el cual ya estaría preregistrado en la red. Cuando el dispositivo se quiere comunicar, lo hace usando esas claves de sesión sin tener que usar ningún procedimiento de unión a la red.

PRIMERA ITERACIÓN

Un gateway SCGs ¡Mallorca ya está conectada a TTN!

SCG, ¨Single-channel gateways¨ no es la solución óptima para un gateway de la red TTN pero permite realizar de forma rápida y barata una prueba de concepto que, de primeras, ya puede cubrir gran parte de una ciudad.

He utilizado la placa TTGO LoRa32 V2.0 868 MHz. Basada en el microprocesador ESP32, con WiFi y BlueTooth. Además integra una pantallita Oled muy lograda y puede alimentarse con una LiPo y cargarla por USB, perfecta para desarrollar y hacer pruebas. !Y tan solo por 19€! Para poner en marcha este gateway gracias a @TCRobotics tenemos este manual https://bricolabs.cc/wiki/guias/lora_ttn que con unos conocimientos del IDE de Arduino, es fácil de seguir.

) El resultado a sido un sencillo dispositivo en el identificado eui-d8a01dffff402024 que he conectado a la antena WiFi de mi mástil de comunicaciones. En el que tengo una antena de 868,600 MHz pero que por alguna razón, tiene un corto con la masa. El Spreading Factor que he configurado es de 7 pendiente de hacer pruebas de alcance. Se puede consultar el estado y localización en: https://www.thethingsnetwork.org/u/mcorts

En una de las Raspberry Pi de mi domótica he dejado arrrancada la consola de tráfico del *gateway*. Y sorpresa: !tengo conexiones de dispositivos! Pero si yo no he montado todavia mi nodo y en Mallorca no hay ningún *gateway* de TTN. Espero resolver algún día este misterio.

TTN Consola

Y ahora el nodo. Un microcontrolador con sensor de movimiento

TTN Consola

Aprovechando el otro TTGO LoRa32 V2.0 868 MHz le conecté el sensor ADXL345. Y con una profunda reprogramación basada en estas librerías he podido hacerlo vivir:

ESP32 conectividad con ADXL345

El ADXL345 es un sensor muy versátil y preciso. No solo nos dice su posición respecto a las tres coordenadas del espacio. Si no que nos determina la aceleración en m/s2. ADXL345

Par la parte de configurar el nodo en TTN, Akirasan ha puesto en su web un buen tutoral http://akirasan.net/nodo-lorawan-con-esp32/.

SEGUNDA ITERACIÓN

gateway multicanal con Resin

El dispositivo lo compré en AliExpres. Hay varias opciones en torno al hat RAK831 que usa el chipset SX1301. La distribución que he montado se desarrolló en un workshop del Things Network Conference 2018 utilizando una Raspberry Pi 3. En el aplicativo hay algunos aspectos en los que está verdes, pero uno de los autores, Jac Kersing está muy activo en los foros de TTN y me ha ayudado con algunos problemas. Y es el autor de la guía que he seguido para su montaje: https://www.thethingsnetwork.org/docs/*gateway*s/rak831/

las caracteristicas del equipo son: Características del RAK831

El dispositivo lo forma una placa LoRa, un placa GPS, un adaptador y una Raspberry Pi 3. La interconexión entre los módulos se puede seguir en este diagrama: RAK831 Diagrama de bloques

La aplicación es compleja. Corre en un tipo de contenedor facilitado por la plataforma resin.io basado el código Python que debes descargar de un repositorio Git. Arquitectura resin.io

La operativa no se lleva desde una conexión directa a la Raspberry Pi, sino a una consola de resin: Consola resin.io

TERCERA ITERACIÓN

gateway externo con el instalador Lorank8

La configuración anterior del *gateway* RAK831 basado en Raspberry Pi 3 presentaba problemas de estabilidad con errores recurrentes que me obligaban a reiniciar la aplicación Resin. Pero el mayor problema era la poca cobertura a pesar de utilizar la antena de onda completa de RAK de 5.8dbi ya que tenía que estar en interior. La caja original no tiene ninguna estanqueidad.

La solución

Me he provisto de una de exterior con certificación IP67, la Nebra de aluminio. Así como de los prensa estopas necesarios para que los cables pasen al interior de la caja sin poner en peligro su estanqueidad. Es muy importante utilizar un cable de antena lo más corto posible. Por lo que lo más fácil es poner ambas en el mismo mástil. La antena de GPS queda en el interior con una cobertura reducida. Lo que no es un problema ya que la localización del gateway se configura manualmente.

Para instalar el software de gateway he seguido este documento utilizado en el taller de gateways de TTN Madrid de @AngeLinuX99. Este software de host, en esencia es un reenviador de paquetes UDP. No incluye un alto nivel de seguridad pero es fácil de instalar: The Things Network: iC880a-based gateway

El problema de la temperatura. Monitorización

Me preocupa que la falta de refrigeración activa lleve a la CPU de la Raspberry Pi a quemarse. Lo que no sabré si pasa hasta que lleguen los calores del verano. Preventivamente he reducido consumos innecesarios como la WiFi o el BlueTooth. Lo que se puede hacer fácilmente añadiendo al fichero de configuración /boot/config.txt los parámetros:

dtoverlay=disable-wifi
dtoverlay=disable-bt

Y para conocer saber la temperatura he hecho un pequeño programa en Pyhton que basado en el comando vcgencmd lee el sensor del a CPU:

root@raspberrypi:~# vcgencmd measure_temp
temp=42.8'C

El programa puedes encontrarlo en la carpeta de /source con el nombre system_info_rak831.py. Pero antes de ejecutarlo necesitarás añadir unas librerias a tu Raspberry Pi:

  • Cliente MySQL:
sudo apt-get install python-mysqldb
  • Librerias para la conexión con MQTT
pip install paho-mqtt

El programa transmite la medidas a un Topic de MQTT y graba el valor en una tabla de una base de datos MySQL. He completado el programa con medidas de almacenamiento, carga de la CPU y memoria. De manera que tengo una información completa del estado de la Raspberry Pi que puedo mostrar en una aplicación Node-RED con el siguiente flujo: nodered-flow Finalmente tengo accesible el estado y evolución de estos indicadores en un dashboard de Node-RED que también me enviará alertas por mail y Twitter cuando la aplicación deje de enviar mensajes al topic o la temperatura supere un umbral. Para ejecutar el programa he preferido hacerlo a través de una entrada en el cron del Raspbian:

# m h  dom mon dow   command
*/15 * * * * /usr/bin/python /home/pi/system_info_RAK831.py

Monitorizando el tráfico

Para completar la monitorización del Gateway se hace necesario incluir en el dashboard de Node-red, datos y gráficas respecto al tráfico que recibe de los nodos a su alcance.

Por una parte he utilizado la api no oficial de TTN para consultar los up y downlinks, que nos devuelve un .json con la información que identifica el gateway y los totales del tráfico. [](http://noc.thethingsnetwork.org:8085/api/v2/gateways/{gateway ID})

{
"timestamp": "2020-06-09T21:07:52.321042509Z",
"uplink": "46667",
"downlink": "27488",
"location": {
"latitude": 39.565,
"longitude": 2.656001,
"altitude": 30
},
"frequency_plan": "EU_863_870",
"gps": {
"latitude": 39.565,
"longitude": 2.656001,
"altitude": 30
},
"time": "1591736872321042509",
"rx_ok": 46667,
"tx_in": 27488
}

Para optener una cifra en función del tiempo. Se puede utilizar la captura de las tramas de red utilizando tcpdump que deberemos instalar previamente con:

sudo apt install tcpdump

Ahora podremos lanzar una tarea a segundo plano que capturará todas las tramas y las enviará a otra Raspberry Pi que tiene un flujo de Node-red donde se filtrarán los paquetes para solo aquello que contienen "rxpk" y los contará por hora.

sudo tcpdump port 1700 -s 500 -U -n -t -w - -i eth0 | nc 192.168.1.114 5659 &

nodered-flow-traffic

El resultado

El esfuerzo a dado buenos resultados. De momento he mapeado las zonas de costa con un nodo dado de alta en TTN Mapper con un alcance que ha superado los 10Km

Migración a TTN V3

A primeros de diciembre de 2021 The Things Networks V2 desapareció pasando a ofrecer un nuevo backend para las comunicadades. Es lo que ahora se llama The Things Stack Community Edition. Esto implicaba una necesaria migracion de mi gateway. Gracias al video de Biblioman la actualización ha sido muy sencilla:

  • En primer lugar habrá que crear un nuevo gateway desde la consola. Básicamente tenemos que copiar el Gateway ID, elegir la misma banda en el Frequency Plan y darle un nuevo nombre.

  • Seguidamente tendremos que acceder por SSH a nuestra Raspberry Pi y editar el siguiente archivo:
pi@mcorts-rak831-pmi1:~ $ cd /opt/ttn-gateway/bin
pi@mcorts-rak831-pmi1:/opt/ttn-gateway/bin $ sudo nano local_conf.json
  • El único cambio necesario será sustituir el "server_address" por el que se nos asignó al crear el gateway en el punto anterior
{
        "gateway_conf": {
                "gateway_ID": "B827EBFFFEB62098",
                "servers": [ { "server_address": "eu1.cloud.thethings.network", "serv_port_up": 1700, "serv_port_down": 1700, "serv_enabled": true } ],
                "ref_latitude": 39.536,
                "ref_longitude": 2.718,
                "ref_altitude": 30,
                "contact_email": "***************",
                "description": "McOrts multichannel gateway RAK831",
                "gps_tty_path": "/dev/ttyS0",
                "fake_gps": false
        }
}
  • Finalmente reuniciamos la Raspberry Pi (sudo reboot now) y en un minuto ya tendremos recibiendo menssajes.

------- CONTINURÁ -------

Agradecimientos y referencias

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].