Este projeto fornece um firmware moderno para placas de microcontrolador com um módulo de rádio compatível com RF95 e uma interface serial, como o dispositivo Adafruit Feather M0 Lora ou os módulos Heltec OLED Lora 32. Em várias placas baseadas em ESP32, recursos opcionais, como exibição de status OLED, GPS, BLE ou suporte WiFi, podem ser ativados.
A configuração padrão atual é para dispositivo com 868,1 MHz. Isso pode ser alterado em src/modem.h com a seguinte linha: #define RF95_FREQ 868.1
As seguintes placas são suportadas:
A maneira recomendada de criar e instalar o firmware de rádio é ter uma instalação funcional do Platformio (http://platformio.org/) no seu sistema.
IMPORTANTE EDIT platformio.ini para adicionar sua plataforma de destino e configurar os pinos de rádio nas bandeiras de construção!
Instale no seu dispositivo usando pio run -t upload -e heltec_wifi_lora_32_ble
Opcionalmente Ative Suporte de exibição: pio run -t upload -e heltec_wifi_lora_32_display_ble
Atualmente, qualquer pessoa pode se conectar ao serviço BLE, tudo é um texto simples. Uma característica é publicada para enviar comandos e um está lá para disponibilizar a saída por meio de notificações.
Todos os comandos enviados via BLE devem ser encerrados com um n . O modo de operação padrão está dividindo tudo em 20 bytes, que - de acordo com as especificações BLE - é o tamanho máximo do pacote. No iPhone 8 e 11, também conseguimos enviar e receber pacotes BLE muito maiores (> 100Bytes). Portanto, pode-se ativar o Big Funky Ble-frames Mode via AT+BFB=1 . O comando é reconhecido mesmo sem arrastar n e também torna n . Isso é especialmente útil, pois algum software de depuração BLE, como o LightBlue Explorer, não envia retornos de transporte ou feeds de linha no final de uma operação de gravação.
Se um dos perfis WiFi for instalado em um ESP compatível MCU, o dispositivo poderá atuar como um ponto de acesso. The credentials are configured in platformio.ini and are by default set to: WIFI_SSID="rf95modem" and WIFI_PSK="rf95modemwifi" This access point accepts up to 4 clients according to espressif sdk and by default has the IP 192.168.4.1 .
Existem duas maneiras de se comunicar com o modem:
O RF95Modem responde aos pacotes de transmissão UDP à porta 1666 . Para receber a saída, é fornecido um ouvinte UDP simples ( extras/udp_receiver.py ). Para enviar comandos para o modem, o NetCat é suficiente, por exemplo, echo "at+tx=414141" | ncat -u 192.168.4.255 1666
Basta conectar -se a 192.168.4.1 na porta 1666 usando o TCP e usá -lo como uma conexão serial, por exemplo, ncat 192.168.4.1 1666 .
Apenas uma conexão de cada vez é suportada!
Alguns dispositivos como o feixe TTGOS T também incluem um chip GPS. Isso também pode ser consultado através do firmware moderno através do comando AT+GPS . Obter um bloqueio inicial para sua posição pode levar alguns minutos, dependendo da sua Atena, da posição e do chip GPS no dispositivo. Como isso também aumenta significativamente o consumo de energia (~ 50mA), pode -se desativá -lo temporariamente via AT+GPS=0 .
A velocidade serial padrão é definida como 115200 (linha src/main.cpp 17 ).
Lista de comandos:
AT+HELP Print this usage information.
AT+TX=<hexdata> Send binary data.
AT+RX=<0|1> Turn receiving on (1) or off (2).
AT+BFB=<0|1> Turn send Big Fine BLE-Frames on (1) or off (0).
AT+GPS Print GPS information.
AT+GPS=<0|1> Turn GPS power on (1) or off (0).
AT+FREQ=<freq> Changes the frequency.
AT+INFO Output status information.
AT+MODE=<NUM> Set modem config:
0 - medium range (default)
Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on.
1 - fast+short range
Bw = 500 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on.
2 - slow+long range
Bw = 31.25 kHz, Cr = 4/8, Sf = 512chips/symbol, CRC on.
3 - slow+long range
Bw = 125 kHz, Cr = 4/8, Sf = 4096chips/symbol, CRC on.
4 - slow+long range
Bw = 125 kHz, Cr = 4/5, Sf = 2048chips/symbol, CRC on.
Para obter a configuração atual, pode -se usar AT+INFO
> AT+INFO
+STATUS:
firmware: 0.7.3
features: MCU BLE WIFI GPS
modem config: 0 | medium range
max pkt size: 251
frequency: 868.10
rx listener: 1
BFB: 0
GPS: 1
rx bad: 0
rx good: 0
tx good: 0
+OK
A partir desta saída, você pode ver quais recursos compilados no firmware e qual é a sua versão. Além disso, a configuração atual do modem e a frequência selecionada são exibidas.
Para alterar as frequências, pode usar o comando AT+FREQ .
> AT+FREQ=868.20
+FREQ: 868.20
Cuidado: qualquer número de flutuação pode ser adicionado aqui, o valor é passado diretamente para o transceptor Lora!
Alterar o modo modem pré -configurado é igualmente fácil:
> AT+MODE=2
+OK
AT+TX=414141 envia um pacote com AAA como conteúdo. O tamanho máximo do pacote pode variar dependendo do chip de rádio.
AT+RX=1 Ative o ouvinte de recebimento, o padrão está ligado.
Os dados recebidos são gravados automaticamente na porta serial: +RX 3,414141,-15,8 -Um quadro com "AAA", pois a carga útil foi recebida com RSSI de -15 e SNR de 8.
Se o GPS for ativado ( AT+GPS=1 ) e o firmware estiver em execução em um dispositivo com capacidade GPS, como o feixe T TTGO, pode-se facilmente consultar o local e a hora atuais. Sem um bloqueio GPS propoer, todos os valores retornados são definidos como zero.
> at+gps=1
+OK
> at+gps
Latitude : 0.00000
Longitude : 0.00000
Altitude : 0.00M
Satellites: 0
Time : 00:00:00
Date : 00.00.2000
Timestamp : 943920000
+OK
Existem algumas bibliotecas de programação de terceiros para facilitar a integração do RF95Modem.
Se você usar este código em publicações acadêmicas, cite o seguinte artigo:
@INPROCEEDINGS{baumgaertner2018monitoring,
author={L. {Baumgärtner} and A. {Penning} and P. {Lampe} and B. {Richerzhagen} and R. {Steinmetz} and B. {Freisleben}},
booktitle={2018 IEEE Global Humanitarian Technology Conference (GHTC)},
title={Environmental Monitoring Using Low-Cost Hardware and Infrastructureless Wireless Communication},
year={2018},
pages={1-8},
doi={10.1109/GHTC.2018.8601883},
month={Oct},
}