SpgpStrack - Mapeo de GPS de Lorawan
Este programa es un rastreador GPS de Lorawan para fines de mapeo Se desarrolla para Arduino Uno con Dragino Lora/GPS Shield y para ESP32 TTGO T-Beam (probado con T22_V07)
- configurado como ABP para que pueda encender el dispositivo en las ubicaciones donde no tiene cobertura
- transmitirá la ubicación todos x metros
- Puede elegir el formato de carga útil entre Cayennelpp y una función de decodificador de carga útil manual
- El software admite un enlace ascendente confirmado y el arduino emitirá un pitido
- Puede leer el GPS sobre la serie de hardware o la serie de software, por lo que es más fácil para el desarrollo si ve lo que está sucediendo durante la operación real
- En caso de uso en serie de hardware, puede habilitar una serie de software para la depuración
Hacer
- Transmisión cronometrada, que también se ejecuta cuando el rastreador no se mueve. Por ejemplo, cada hora, para ver si el rastreador todavía está vivo.
- opción de baja potencia
Soporte ESP32 [Estado: en el trabajo, ver Branch Develop. La configuración de SPI produce rastreos] hardware: ESP32 UNO, marcado como WEMOS ESP32 ya implementado FOT TTGO T-Beam- Posición WiFi alternativa para ESP32
Comienzo rápido
- En la consola TTN, cree una aplicación, registre un nuevo dispositivo (como ABP)
- Copie la información y las claves del dispositivo Lorawan en el boceto
- Apilar los tableros y subir el boceto para abordar. Para cargar el boceto, debe mantener el botón de reinicio en el Dragino presionado. (Si puede cargar sin presionar ese botón, entonces esto podría ser una señal de que tiene algo mal en los saltadores de Dragino o la configuración en serie de su boceto)
- Cuando ve el tráfico en la consola TTN, puede continuar con la configuración de la función del decodificador de carga útil.
- (Si no ve el tráfico en la consola TTN, aunque está seguro de que está en buena distancia a una puerta de enlace, revise el contador de cuadros y los saltadores de Dragino)
- Configure la integración TTNMapper, especifique un nombre de experimento para el momento de la primera prueba (o revelará su ubicación de hogar con una nube de puntos de conexión exitosos)
- Debe encontrar su nuevo experimento al final de esta lista.
ESP32
¡Para la configuración de pin SPI T22_07 aún no se implementa en LMIC! -> Matthijskooijman/Arduino-lmic#164
-> Cambie los pines SPI directamente en la biblioteca
¡¡¡Atención!!! No olvide restablecer esto, si está utilizando también otro hardware con LMIC
hal.cpp línea 79
static void hal_spi_init () {
//SPI.begin();
SPI . begin ( 5 , 19 , 27 );
}Dependencias
- Arduino lmic
- TinyGPS ++
- Instalación de Cayennelpp (opcional) desde Arduino Library Manager
Configuración:
- TXDIST - Define, la distancia [en metros], después de lo cual se envía la posición
- SF - Defina el factor de propagación de Lorawan (DR_SF7 - DR_SF12) 7 y 8 Recomendados para el mapeo
- Single_channel: solo use el canal Lorawan 0 para las puertas de enlace de un solo canal
- Confirmado: habilita los enlaces ascendentes confirmados, solo habilite, si confunde un timbre para pin D5. De lo contrario, esta característica es inútil
- Soft_serial: incomment para usar la serie de hardware; de lo contrario, se utiliza la serie de software. En ese caso, conecte el módulo GPS a RXPIN y TXPIN
- Depurar: si usa Hardware Serial, puede habilitar la depuración, para obtener la salida de depuración en una serie de software. Dejar discapacitado para no usar el software Serial en absoluto
- Cayennelpp: si desea usar Cayennelpp como formato de carga útil, de lo contrario, use la siguiente función de carga útil del decodificador
Función de carga útil
function Decoder ( bytes , port ) {
var decoded = { } ;
// if (port === 1) decoded.led = bytes[0];
decoded . latitude = ( ( bytes [ 0 ] << 16 ) >>> 0 ) + ( ( bytes [ 1 ] << 8 ) >>> 0 ) + bytes [ 2 ] ;
decoded . latitude = ( decoded . latitude / 16777215.0 * 180 ) - 90 ;
decoded . longitude = ( ( bytes [ 3 ] << 16 ) >>> 0 ) + ( ( bytes [ 4 ] << 8 ) >>> 0 ) + bytes [ 5 ] ;
decoded . longitude = ( decoded . longitude / 16777215.0 * 360 ) - 180 ;
var altValue = ( ( bytes [ 6 ] << 8 ) >>> 0 ) + bytes [ 7 ] ;
var sign = bytes [ 6 ] & ( 1 << 7 ) ;
if ( sign )
{
decoded . altitude = 0xFFFF0000 | altValue ;
}
else
{
decoded . altitude = altValue ;
}
decoded . hdop = bytes [ 8 ] / 10.0 ;
return decoded ;
}