Guía Paso a Paso para Desplegar una Pasarela LoRa RAK 831 en Raspberry Pi 3
Este proyecto te lleva a través de todos los pasos necesarios para poner en marcha tu módulo RAK 831 LoRa Gateway con WiFi como backhaul.
Historia
Introducción
Esta guía paso a paso está dirigida a desarrolladores que quieren desarrollar su propia pasarela LoRa usando el impresionante módulo frontal de radio LoRa RAK831 de RAK Wireless. La guía asume conocimientos básicos del ecosistema Raspberry Pi, el hardware y el SO Debian asociado. También asume conocimientos básicos de GPIO y periféricos presentes en la Raspberry Pi. ¡EMPECEMOS:
¿Qué es LoRa?
LoRa Alliance™ Technology. LoRaWAN™ es una especificación de Red de Área Amplia de Baja Potencia (LPWAN) destinada a Things inalámbricos operados por batería en una red regional, nacional o global. LoRaWAN apunta a requisitos clave del Internet de las Cosas como comunicación bidireccional segura, movilidad y servicios de localización.
El diagrama anterior muestra las diversas partes de la arquitectura inalámbrica LoRa. Algunas de las partes importantes se explican brevemente a continuación:
Características Clave de la Tecnología LoRa y el Protocolo LoRaWAN
- GEOLOCALIZACIÓN: Permite aplicaciones de seguimiento de baja potencia sin GPS
- BAJO COSTE: Reduce costes de tres formas: inversión en infraestructura, gastos operativos y sensores de nodo final
- ESTANDARIZADO: Mejor interoperabilidad global acelera la adopción y despliegue de redes y aplicaciones IoT basadas en LoRaWAN
- BAJO CONSUMO: Protocolo diseñado específicamente para bajo consumo extendiendo vida de batería hasta 20 años
- LARGO ALCANCE: Una sola estación base proporciona penetración profunda en zonas urbanas densas/interiores, además de conectar zonas rurales hasta 30 millas
- SEGURO: Cifrado AES128 extremo a extremo embebido
- ALTA CAPACIDAD: Soporta millones de mensajes por estación base, ideal para operadores de red pública sirviendo muchos clientes
El RAK 831 es un frontal de radio LoRa; es decir, actúa como receptor de paquetes de datos LoRa entrantes y los reenvía a un software/hardware host de gestión agregadora. También puede transmitir paquetes de datos LoRa basándose en la petición de la placa host. En nuestro caso, una Raspberry Pi 3 es la placa host controlando el frontal RAK 831.
Elegir el Backhaul
¿Qué es un backhaul? El backhaul se refiere a cómo la Raspberry Pi se conectará a Internet. Esta guía se centra en usar WiFi como backhaul, pero también podrías usar Ethernet o 3G/4G. Si tienes Ethernet disponible cerca de la pasarela, prefiérelo sobre WiFi o 3G/4G. Esto es porque tener una señal de radio adicional dentro del recinto causará ruido. El software puede manejar el entorno ruidoso, así que no es un gran problema, pero menos ruido, mejor. Puedes combinar esta opción con Power-over-Ethernet para minimizar el cableado hasta la pasarela.
Por otro lado, si eliges WiFi en lugar de Ethernet, intenta usar un dongle con antena externa y mueve la antena fuera del recinto para tener menos ruido dentro de la caja.
Configurar el Hardware:
Antes de conectar nada y encender, hagamos las siguientes configuraciones en la Raspberry Pi y el módulo RAK 831:
RASPBERRY PI
1) Consigue la placa Raspberry Pi 3 y ten lista una tarjeta micro SD de 8GB con el software Raspbian. Incluso puedes comprar una tarjeta SD NOOBS con el software pre-cargado. Sobre cómo flashear el SO en la tarjeta SD, sigue las instrucciones aquí: https://www.raspberrypi.org/learning/hardware-guide/
2) Conecta la Raspberry Pi a una fuente de alimentación 5V 2 amperios. ESTO ES MUY IMPORTANTE. El módulo LoRa puede consumir 700 mA pico durante transacciones inalámbricas activas, así que ten un buen adaptador de alimentación para la Raspberry Pi.
RAK 831:
1) Antes de encender la placa, consigue las antenas que venían en tu kit y conéctalas al terminal de tornillo de antena. ESTO ES ESENCIAL.
Detalles de Conexión:
Aquí hay una tabla mostrando cómo conectar el módulo rak831 con la Raspberry Pi:
Para entender la distribución de pines de la Raspberry Pi ve a: https://www.raspberrypi.org/documentation/usage/gpio/ para detalles
Notas:
- El pin de reset puede conectarse a cualquier GPIO de la Raspberry Pi 3.
- Es esencial asegurar que conectas los pines de alimentación correctamente para evitar daño a la placa RAK 831.
Habilitar SPI:
El periférico SPI no está activado por defecto. Para habilitarlo, haz lo siguiente.
- Ejecuta sudo raspi-config.
- Usa la flecha abajo para seleccionar 9 Advanced Options
- Flecha abajo a A6 SPI.
- Selecciona yes cuando pregunte habilitar SPI,
- También selecciona yes cuando pregunte sobre cargar automáticamente el módulo del kernel.
- Usa la flecha derecha para seleccionar el botón <Finish>.
- Selecciona yes cuando pregunte reiniciar.
El sistema reiniciará. Cuando vuelva, inicia sesión y ejecuta el siguiente comando:
>ls /dev/*spi*
La Pi debería responder con:
/dev/spidev0.0 /dev/spidev0.1
Estos representan dispositivos SPI en los pines chip enable 0 y 1, respectivamente. Estos pines están cableados internamente en la Pi. Ordinariamente, esto significa que la interfaz soporta como máximo dos periféricos, pero hay casos donde múltiples dispositivos pueden encadenarse en cascada, compartiendo una sola señal chip enable.
Alimentar la Placa:
Como con cualquier proyecto inalámbrico, tienden a requerir más potencia de la que la placa host puede proporcionar vía los pines de alimentación. Los dos esquemas a continuación enumeran cómo puedes alimentar el RAK 831 y la Raspberry Pi 3.
1) Alimentar el rail de 5V desde la Raspberry Pi
2) Alimentar el rail de 5V en la Raspberry Pi y RAK831 por separado
Instalación de Software:
En la Raspberry Pi hagamos los siguientes pasos para instalar el software esencial:
- Habilitar SPI:
Usa la utilidad raspi-config para habilitar SPI ([5] Interfacing options -> P4 SPI) y también expandir el sistema de archivos ([7] Advanced options -> A1 Expand filesystem):
$ sudo raspi-config
- Asegurar que git está instalado
Sudo apt-get update Sudo apt-get upgrade Sudo apt-get install git
- Gestionar tu conexión WiFi en la Raspberry Pi
- Configurar las credenciales WiFi (ver aquí para detalles adicionales)
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Y añade el siguiente bloque al final del archivo, reemplazando SSID y contraseña para que coincidan con tu red:
network={
ssid="El_SSID_de_tu_wifi"
psk="Tu_contraseña_wifi"
}
- Clona el instalador e inicia la instalación
$ git clone -b spi https://github.com/ttn-zh/ic880a-gateway.git ~/ic880a-gateway $cd ~/ic880a-gateway $ sudo ./install.sh spi
- El paso de instalación te preguntará si quieres habilitar configuración remota. Escribe 'y' o 'yes' y continúa con la instalación. Al inicio de la instalación en línea de comandos, el script te mostrará el gateway EUI que es importante para los siguientes pasos. ¡ANÓTALO!
- Si quieres usar la opción de configuración remota, asegúrate de haber creado un archivo JSON nombrado como tu gateway EUI (ej. B827EBFFFE7B80CD.json) en el repositorio Gateway Remote Config aquí: https://github.com/ttn-zh/gateway-remote-config. Haz fork del repo, añade tu archivo
.json con la configuración adecuada y haz commit del repo forked. Una vez hecho, envía un pull request al repo master y el archivo debería aparecer en el repo al día siguiente. Un JSON de ejemplo se muestra abajo:
{
"gateway_conf": {
"gateway_ID": "el id que anotaste en la salida de consola de install.sh",
"servers": [{
"server_address": "el router al que quieres conectar",
"serv_port_up": 1700,
"serv_port_down": 1700,
"serv_enabled": true
}],
"ref_latitude": la lat de la pasarela rak 831,
"ref_longitude": la long de la pasarela rak 831,
"ref_altitude": 40,
"contact_email": "email de contacto del propietario de la pasarela",
"description": "una breve descripción"
}
}
Nota:
Para una lista de routers válidos ver el enlace aquí:https://www.thethingsnetwork.org/wiki/Backend/Connect/Gateway
- Por defecto, el instalador cambia el hostname de tu Raspberry Pi a ttn-gateway (para evitar colisiones con otras Raspberry Pis en tu red). Puedes sobrescribir esto en modo de configuración no remota.
- ¡HURRA tu pasarela debería funcionar ahora. Asegúrate de reiniciar la pasarela al día siguiente para que tu archivo json se descargue correctamente en la RPi3.
- Ten en cuenta que el global_config.json necesita ajustarse según:
https://github.com/TheThingsNetwork/gateway-conf/blob/master/US-global_conf.json
Para quienes buscan usar mp_pkt_fwd en lugar del viejo poly packet forwarder, ve aquí e instala con las instrucciones proporcionadas:
https://github.com/kersing/packet_forwarder/tree/master/mp_pkt_fwd. De nuevo puedes ver el archivo global_conf..json en la raíz del proyecto, solo asegúrate de editar el archivo (secciones importantes descritas abajo) y copiarlo a la carpeta bin después de la compilación.Entidades Configurables en global_conf.json:
El archivo global_conf.json se encuentra en ./bin/global_conf.json desde la base de tu directorio de proyecto tras ejecutar el script de instalación. Aquí hay una lista de algunas entidades que podrías querer editar en el archivo global_conf.json para tu configuración particular de pasarela:
1) Configuración "radio_0" o "radio_1", especialmente el parámetro Frecuencia y los parámetros min y max frequency sweep.
2) Sección "gateway_conf". Especialmente el gateway ID o el EUI de tu pasarela.
3) Puerto server up y down en el mismo objeto gateway_conf junto con tu dirección de servidor TTN o la dirección de tu propio servidor de aplicación si está disponible.
Reiniciar la Placa:
Cada vez que iniciamos la Raspberry Pi, es buena práctica reiniciar el módulo LoRa RAK831 adjunto. Hay dos formas de hacerlo:
- Vía Script Shell:
Un pequeño script shell puede escribirse para reiniciar el RAK831 antes de que el driver LoRa pueda acceder al hardware. El contenido del script shell puede verse como el siguiente ejemplo (asumiendo que el GPIO 17 (pin 11) de la Raspberry Pi está conectado al pin de reset del RAK831):
#!/bin/bash echo "17" > /sys/class/gpio/export echo "out" > /sys/class/gpio/gpio17/direction echo "1" > /sys/class/gpio/gpio17/value sleep 5 echo "0" > /sys/class/gpio/gpio17/value sleep 1 echo "0" > /sys/class/gpio/gpio17/value
Estas líneas pueden guardarse en un archivo llamado "rak831_reset.sh". El usuario debe llamar a este script una vez después de cada arranque para poner el IC concentrador en un estado limpio.
- Vía Wiring Pi:
Si el sistema host es una Raspberry Pi, el usuario puede escribir una pequeña herramienta en C para reiniciar el RAK831. Para acceder a los pines GPIO de la Raspberry Pi hay una librería llamada "wiringPi" que se encarga de los detalles de bajo nivel. La librería puede descargarse de https://wiringpi.com. Consulta este sitio para instrucciones de instalación y uso. El contenido del archivo RAK831_reset.c puede verse como el siguiente:
#include#include #define GPIO_RESET_PIN 0 // ver mapeo wiringPi! int main() { wiringPiSetup(); pinMode(GPIO_RESET_PIN, OUTPUT); digitalWrite(GPIO_RESET_PIN, HIGH); sleep(5); digitalWrite(GPIO_RESET_PIN, LOW); return; }
El usuario debe llamar a esta herramienta una vez después de cada arranque para poner el IC concentrador en un estado limpio.
gcc -Wall -o blink blink.c -lwiringPi sudo ./blink
Registrar la Pasarela en la Red TTN:
Para que tus nodos envíen datos a la nube, TheThingsNetwork proporciona un servicio cloud para analizar y almacenar los datos enviados por nodos LoRa vía una pasarela LoRa.
Leer Más Detalle: Primeros pasos con la Pasarela LoRa RAK 831 y RPi3
Proceso de manufactura
- Monitorizar eficientemente temperaturas de salas con Raspberry Pi y Nagios
- Centro de Energía Doméstica: Monitorización de paneles solares fotovoltaicos, térmicos y temperaturas con Raspberry Pi y Moteino
- Integración de datos de sensores en Raspberry Pi: Guía práctica
- Construya un Controlador Domótico 433 MHz con Sensorflare y Raspberry Pi
- Seguimiento Facial Pan/Tilt en Tiempo Real en Raspberry Pi – Guía Práctica
- Construye un sistema aeropónico automatizado con Raspberry Pi y sensor de humedad
- Integrar radar pulsado Acconeer A111 con Raspberry Pi: guía práctica
- Primeros Pasos con TJBot: Construye, Configura y Controla por Voz tu Robot IA
- NanoPi K1 Plus por $35: SBC tipo Raspberry Pi con 2 GB RAM, CPU Allwinner H5, HDMI, Gigabit Ethernet
- Construye una Pasarela LoRa de Canal Único de Bajo Coste con Raspberry Pi
- Construye una puerta de enlace LoRa con el módulo RAK831 en Raspberry Pi 3 – Guía paso a paso