Guia Passo a Passo para Implantar Gateway LoRa RAK 831 no Raspberry Pi 3
Este projeto o leva por todos os passos necessários para colocar seu módulo RAK 831 LoRa Gateway em funcionamento com Wi-Fi como backhaul.
História
Introdução
Este guia passo a passo visa desenvolvedores que querem desenvolver seu próprio gateway LoRa usando o incrível módulo front-end de rádio RAK831 da RAK Wireless. O guia assume conhecimento básico do ecossistema Raspberry Pi, hardware e SO Debian associado. Também assume conhecimento básico de GPIO e periféricos presentes no Raspberry Pi. Vamos começar:
O que é LoRa?
LoRa Alliance™ Technology. LoRaWAN™ é uma especificação de Rede de Área Ampla de Baixa Potência (LPWAN) destinada a Things sem fio operados por bateria em rede regional, nacional ou global. LoRaWAN visa requisitos-chave da Internet das Coisas como comunicação bidirecional segura, mobilidade e serviços de localização.
O diagrama acima mostra as várias partes da arquitetura sem fio LoRa. Algumas partes importantes são explicadas brevemente abaixo:
Principais Características da Tecnologia LoRa e Protocolo LoRaWAN
· GEOLOCALIZAÇÃO: Permite rastreamento de baixa potência sem GPS
· BAIXO CUSTO: Reduz custos de três formas: investimento em infraestrutura, despesas operacionais e sensores de nó final
· PADRONIZADO: Interoperabilidade global aprimorada acelera adoção e implantação de redes e aplicações IoT baseadas em LoRaWAN
· BAIXA POTÊNCIA: Protocolo projetado especificamente para baixo consumo, estendendo vida útil da bateria até 20 anos
· LONGO ALCANCE: Estação base única fornece penetração profunda em áreas urbanas/indoor densas, além de conectar áreas rurais até 30 milhas
· SEGURO: Criptografia AES128 ponta a ponta embutida
· ALTA CAPACIDADE: Suporta milhões de mensagens por estação base, ideal para operadores de rede pública atendendo muitos clientes
O RAK 831 é um frontend de rádio LoRa; ou seja, atua como receptor de pacotes de dados LoRa recebidos e os encaminha para um software/hardware host de gerenciamento agregador. Também pode transmitir pacotes LoRa com base na solicitação da placa host. No nosso caso, um Raspberry Pi 3 é a placa host controlando o frontend RAK 831.
Escolhendo o Backhaul
O que é backhaul? Backhaul refere-se a como o Raspberry Pi será conectado à Internet. Este guia foca no uso de Wi-Fi como backhaul, mas você também pode usar Ethernet ou 3G/4G. Se você tem Ethernet disponível perto do gateway, prefira-a sobre Wi-Fi ou 3G/4G. Isso porque ter um sinal de rádio adicional dentro do gabinete causará ruído. O software pode lidar com ambiente ruidoso, então não é um grande problema, mas quanto menos ruído, melhor. Você pode combinar esta escolha com Power-over-Ethernet para minimizar cabeamento até o gateway.
Por outro lado, se escolher Wi-Fi em vez de Ethernet, tente usar um dongle com antena externa e mova a antena para fora do gabinete para ter menos ruído dentro da caixa.
Configurar o Hardware:
Antes de conectar qualquer coisa e ligar, vamos fazer as seguintes configurações no Raspberry Pi e no módulo RAK 831:
RASPBERRY PI
1) Obtenha a placa Raspberry Pi 3 e prepare um cartão micro SD de 8GB com software Raspbian. Você pode até comprar um cartão SD NOOBS com software pré-carregado. Sobre como gravar o SO no cartão SD, siga as instruções aqui: https://www.raspberrypi.org/learning/hardware-guide/
2) Conecte o Raspberry Pi a fonte de alimentação 5V 2amps. ISTO É MUITO IMPORTANTE. O módulo LoRa pode consumir 700 mA de pico durante transações wireless ativas e, portanto, tenha uma boa fonte para alimentar o Raspberry Pi.
RAK 831:
1) Antes mesmo de ligar a placa, pegue as antenas que vieram no seu kit e conecte-as ao terminal de parafuso da antena. ISTO É ESSENCIAL.
Detalhes de Conexão:
Aqui está uma tabela mostrando como conectar o módulo rak831 com o Raspberry Pi:
Para entender o layout de pinos do Raspberry Pi, acesse: https://www.raspberrypi.org/documentation/usage/gpio/ para detalhes.
Notas:
- O pino de reset pode ser conectado a qualquer GPIO do Raspberry Pi 3.
- É essencial garantir que você conecte os pinos de alimentação corretamente para evitar danos à placa RAK 831.
Habilitar SPI:
O periférico SPI não é ligado por padrão. Para habilitá-lo, faça o seguinte.
- Execute sudo raspi-config.
- Use seta para baixo para selecionar 9 Opções Avançadas
- Seta para baixo até A6 SPI.
- Selecione sim quando perguntar para habilitar SPI,
- Também selecione sim quando perguntar sobre carregar automaticamente o módulo do kernel.
- Use seta para direita para selecionar botão
. - Selecione sim quando perguntar para reiniciar.
O sistema reiniciará. Quando voltar, faça login e digite o seguinte comando
>ls /dev/*spi*
O Pi deve responder com
/dev/spidev0.0 /dev/spidev0.1
Estes representam dispositivos SPI nos pinos de chip enable 0 e 1, respectivamente. Estes pinos são hardwired dentro do Pi. Ordinariamente, isso significa que a interface suporta no máximo dois periféricos, mas existem casos onde múltiplos dispositivos podem ser encadeados em margarida, compartilhando um único sinal de chip enable.
Fornecer Energia à Placa:
Como em qualquer projeto wireless, eles tendem a exigir mais energia do que a placa host pode fornecer via pinos de alimentação. Os dois esquemas abaixo enumeram como você pode alimentar o RAK 831 e Raspberry Pi 3.
1) Alimentar trilho 5v do Raspberry Pi
2) Alimentar trilho 5v no Raspberry Pi e RAK831 separadamente
Instalação de Software:
No Raspberry Pi, vamos fazer os seguintes passos para obter o software essencial instalado:
- Habilitar SPI:
Use utilitário raspi-config para habilitar SPI ([5] Opções de interface -> P4 SPI) e também expandir sistema de arquivos ([7] Opções avançadas -> A1 Expandir sistema de arquivos):
$ sudo raspi-config
- Certifique-se que git está instalado
Sudo apt-get update
Sudo apt-get upgrade
Sudo apt-get install git
- Gerencie sua conexão Wi-Fi no Raspberry Pi
- Configure as credenciais Wi-Fi (verifique aqui para detalhes adicionais)
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
E adicione o seguinte bloco no final do arquivo, substituindo SSID e senha para corresponder à sua rede:
network={
ssid="The_SSID_of_your_wifi"
psk="Your_wifi_password"
}
- Clone o instalador e inicie a instalação
$ git clone -b spi https://github.com/ttn-zh/ic880a-gateway.git ~/ic880a-gateway
$cd ~/ic880a-gateway
$ sudo ./install.sh spi
- A etapa de instalação perguntará se você deseja habilitar configuração remota. Digite 'y' ou 'yes' e continue com a instalação. No início da instalação na linha de comando, o script mostrará o gateway EUI que é importante para os próximos passos. ANOTE-O!
- Se você quiser usar a opção de configuração remota, certifique-se de ter criado um arquivo JSON nomeado como seu gateway EUI (ex.: B827EBFFFE7B80CD.json) no repositório Gateway Remote Config aqui: https://github.com/ttn-zh/gateway-remote-config. Faça fork do repo, adicione seu arquivo
.json com configuração adequada e faça commit do repo forked. Uma vez feito, envie pull request para o repo master e o arquivo deve aparecer no repo no dia seguinte. Um JSON de exemplo é mostrado abaixo:
{
"gateway_conf": {
"gateway_ID": "o id que você anotou na saída do console install.sh",
"servers": [
{
"server_address": "o router ao qual você quer conectar",
"serv_port_up": 1700,
"serv_port_down": 1700,
"serv_enabled": true
}
],
"ref_latitude": a lat do gateway rak 831,
"ref_longitude": o long do gateway rak 831,
"ref_altitude": 40,
"contact_email": "email de contato do proprietário do gateway",
"description": "uma breve descrição"
}
}
Nota:
Para lista de routers válidos, verifique o link aqui:https://www.thethingsnetwork.org/wiki/Backend/Connect/Gateway
- Por padrão, o instalador altera o hostname do seu Raspberry Pi para ttn-gateway (para evitar colisões com outros Raspberry Pis na sua rede). Você pode sobrescrever isso em modo de configuração não remota.
- HURRAY seu gateway deve funcionar agora. Certifique-se de reiniciar o gateway no dia seguinte para seu arquivo json ser baixado corretamente para o RPi3.
- Observe que o global_config.json precisa ser ajustado conforme:
https://github.com/TheThingsNetwork/gateway-conf/blob/master/US-global_conf.json
para aqueles que querem usar o mp_pkt_fwd em vez do antigo poly packet forwarder, ouça aqui e instale o mesmo com as instruções fornecidas:
https://github.com/kersing/packet_forwarder/tree/master/mp_pkt_fwd. Novamente você pode ver o arquivo global_conf..json na raiz do projeto, apenas certifique-se de editar o arquivo (seções importantes descritas abaixo) e copiar o mesmo para a pasta bin após compilação.
Algumas Entidades Configuráveis no global_conf.json:
O arquivo global_conf.json pode ser encontrado em ./bin/global_conf.json a partir da base do seu diretório de projeto após o script de instalação ter rodado. Aqui está uma lista de algumas entidades que você pode querer editar no arquivo global_conf.json para sua configuração particular de gateway:
1) Configuração "radio_0" ou "radio_1", especialmente o parâmetro Frequência e os parâmetros min e max frequency sweep.
2) Seção "gateway_conf". Especialmente o gateway ID ou EUI do seu gateway.
3) Porta server up e down no mesmo objeto gateway_conf junto com endereço do servidor TTN ou endereço do seu próprio servidor de aplicação se disponível.
Resetando a Placa:
Sempre que iniciamos o Raspberry Pi, é boa prática resetar o módulo LoRa RAK831 anexado. Existem duas maneiras de fazer isso:
- Via Script Shell:
Um pequeno script shell pode ser escrito para resetar o RAK831 antes que o driver LoRa possa acessar o hardware. O conteúdo do script shell pode parecer com o seguinte exemplo (assumindo que GPIO 17 (pino 11) do Raspberry Pi está conectado ao pino de reset do 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 linhas podem ser armazenadas em um arquivo chamado "rak831_reset.sh". O usuário deve chamar este script uma vez após cada boot para obter o IC concentrador em estado limpo.
- Via Wiring Pi:
Se o sistema host é um Raspberry Pi, o usuário pode escrever uma pequena ferramenta C para resetar o RAK831. Para acessar os pinos GPIO do Raspberry Pi, existe uma biblioteca chamada "wiringPi" que cuida dos detalhes de baixo nível. A biblioteca pode ser baixada de https://wiringpi.com. Consulte este site para instruções de instalação e uso. O conteúdo do arquivo RAK831_reset.c pode parecer com o seguinte:
#include
#include
#define GPIO_RESET_PIN 0 // veja mapeamento wiringPi!
int main() {
wiringPiSetup();
pinMode(GPIO_RESET_PIN, OUTPUT);
digitalWrite(GPIO_RESET_PIN, HIGH);
sleep(5);
digitalWrite(GPIO_RESET_PIN, LOW);
return;
}
O usuário deve chamar esta ferramenta uma vez após cada boot para obter o IC concentrador em estado limpo.
gcc -Wall -o blink blink.c -lwiringPi
sudo ./blink
Registrar o Gateway na Rede TTN:
Para que seus nós enviem dados para a nuvem, TheThingsNetwork fornece um serviço de nuvem para analisar e armazenar os dados enviados por nós LoRa via um gateway LoRa.
Leia Mais Detalhes: Getting started with the RAK 831 Lora Gateway and RPi3
Processo de manufatura
- Monitoramento Eficiente de Temperatura de Salas com Raspberry Pi e Nagios
- Home Energy Centre: Monitoramento Solar PV, Painéis Térmicos e Temperaturas de Ambientes com Raspberry Pi e Moteino
- Integração de Dados de Sensores no Raspberry Pi: Guia Prático
- Construa um Controlador Doméstico Inteligente 433 MHz com Sensorflare e Raspberry Pi
- Rastreamento Facial Pan/Tilt em Tempo Real no Raspberry Pi – Guia Prático
- Construa um Sistema Aeropônico Automatizado com Raspberry Pi e Sensor de Umidade
- Integrando Radar Pulsado Acconeer A111 com Raspberry Pi: Guia Prático
- Primeiros Passos com TJBot: Construa, Configure e Controle por Voz seu Próprio Robô de IA
- NanoPi K1 Plus por $35: SBC Estilo Raspberry Pi com 2 GB RAM, CPU Allwinner H5, HDMI, Gigabit Ethernet — Ideal para Quiosques, Media Centers e Projetos DIY
- Construa um Gateway LoRa de Canal Único de Baixo Custo com Raspberry Pi