Este proyecto proporciona un firmware de módem para tableros de microcontroladores con un módulo de radio compatible con RF95 y una interfaz serie como el dispositivo Adafruit Feather M0 Lora o los módulos Heltec Oled Lora 32. En varias tablas basadas en ESP32, se pueden habilitar las características opcionales, como la pantalla OLED de estado, el soporte GPS, BLE o WiFi.
La configuración predeterminada actual es para dispositivo con 868.1 MHz. Esto se puede cambiar en src/modem.h con la siguiente línea: #define RF95_FREQ 868.1
Se admiten los siguientes tableros:
La forma recomendada para construir e instalar el firmware de radio es tener una instalación en funcionamiento de Platformio (http://platformio.org/) en su sistema.
Importante Editar platformio.ini para agregar su plataforma de destino y configurar los pines de radio en los indicadores de compilación.
Instale en su dispositivo usando pio run -t upload -e heltec_wifi_lora_32_ble
Opcionalmente, active el soporte de visualización: pio run -t upload -e heltec_wifi_lora_32_display_ble
Actualmente, cualquiera puede conectarse al servicio BLE, todo es un texto sin formato. Se publica una característica para enviar comandos y otra está allí para que la salida esté disponible a través de notificaciones.
Todos los comandos enviados a través de BLE deben finalizarse con un n . El modo de operación predeterminado es dividir todo en fragmentos de 20 bytes, que, según las especificaciones BLE, es el tamaño máximo del paquete. En el iPhone 8 y 11 también pudimos enviar y recibir paquetes BLE mucho más grandes (> 100 bytes). Por lo tanto, se puede activar el modo de marcos BLE Funky Big Funky a través de AT+BFB=1 . El comando se reconoce incluso sin seguir n y también hace que n opcional. Esto es especialmente útil ya que algunos software de depuración de BLE como LightBlue Explorer no envían devoluciones de carro ni alimentos en línea al final de una operación de escritura.
Si uno de los perfiles WiFi está instalado en un ESP MCU compatible, el dispositivo puede actuar como un punto de acceso. Las credenciales se configuran en platformio.ini y se establecen de forma predeterminada en: WIFI_SSID="rf95modem" y WIFI_PSK="rf95modemwifi" Este punto de acceso acepta hasta 4 clientes de acuerdo con ESPRESSIF SDK y de manera predeterminada tiene el IP 192.168.4.1 .
Hay dos formas de comunicarse con el módem:
El RF95Modem responde a los paquetes de transmisión UDP al puerto 1666 . Para recibir la salida se proporciona un oyente UDP simple ( extras/udp_receiver.py ). Para enviar comandos al módem NetCat es suficiente, por ejemplo, echo "at+tx=414141" | ncat -u 192.168.4.255 1666
Simplemente conéctese a 192.168.4.1 en el puerto 1666 usando TCP y úselo como una conexión serie, por ejemplo, ncat 192.168.4.1 1666 .
¡Solo es compatible con una conexión a la vez!
Algunos dispositivos, como la viga T TTGOS, también incluyen un chip GPS. Esto también se puede consultar a través del firmware del módem a través del comando AT+GPS . Obtener un bloqueo inicial para su posición puede tomar varios minutos dependiendo de su Atenna, la posición y el chip GPS en el dispositivo. Ya que esto también aumenta el consumo de energía significativamente (~ 50 mA) se puede deshabilitar temporalmente a través de AT+GPS=0 .
La velocidad de serie predeterminada se establece en 115200 ( src/main.cpp Line 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 obtener la configuración actual se puede 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
Desde esta salida, puede ver qué características se compilan en el firmware y cuál es su versión. También se muestran la configuración del módem actual y la frecuencia seleccionada.
Para cambiar las frecuencias puede usar el comando AT+FREQ .
> AT+FREQ=868.20
+FREQ: 868.20
Cuidado: cualquier número de flotación se puede agregar aquí, ¡el valor se pasa directamente al transceptor Lora!
Cambiar el modo módem preconfigurado es igual de fácil:
> AT+MODE=2
+OK
AT+TX=414141 envía un paquete con AAA como contenido. El tamaño máximo del paquete puede variar según el chip de radio.
AT+RX=1 Activar el oyente Recibir, el valor predeterminado está activado.
Los datos entrantes se escriben automáticamente en el puerto serie: +RX 3,414141,-15,8 -Un marco con "AAA" ya que la carga útil se recibió con RSSI de -15 y SNR de 8.
Si se activa GPS ( AT+GPS=1 ) y el firmware se ejecuta en un dispositivo con capacidad GPS, como el TTGO T-Beam, se puede consultar fácilmente la ubicación y la hora actuales. Sin un bloqueo de GPS propoer, todos los valores devueltos se establecen en cero.
> 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
Hay algunas bibliotecas de programación de terceros para aliviar la integración de RF95Modem.
Si usa este código en publicaciones académicas, cite el siguiente documento:
@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},
}