spgpstrack - mapeamento de GPS de Lorawan
Este programa é um rastreador de GPS de Lorawan para fins de mapeamento que é desenvolvido para o Arduino Uno com escudo Dragino Lora/GPS e para o feixe TTGO do ESP32 (testado com T22_V07)
- Configurado como ABP para que você possa ligar o dispositivo em locais onde você não tem cobertura
- transmitirá o local todos os x metros
- Você pode escolher o formato de carga útil entre Cayennelpp e uma função manual do decodificador da carga útil
- O software suporta Uplink confirmado e o Arduino apitando
- Você pode ler o GPS sobre serial ou serial de software de hardware, por isso é mais fácil para o desenvolvimento se você ver o que está acontecendo durante a operação real
- Em caso de uso em série de hardware, você pode ativar uma série de software para depuração
Pendência
- A transmissão cronometrada, que também é executada quando o rastreador não está se movendo. Por exemplo, a cada hora, para ver se o rastreador ainda está vivo.
- opção de baixa potência
SUPORTE ESP32 [Estado: no trabalho, consulte o ramo Desenvolvimento. A configuração SPI produz backtraces] Hardware: ESP32 UNO, marcado como Wemos Esp32 já implementou o TTGO T-feixe- Posição Wi -Fi alternativa para ESP32
Início rápido
- No console TTN, crie um aplicativo, registre um novo dispositivo (como ABP)
- Copie as informações e as chaves do dispositivo Lorawan no esboço
- Empilhe as placas e carregue o esboço para embarcar. Para fazer upload do esboço, você precisa manter o botão de redefinição no dragino pressionado. (Se você pode fazer upload sem pressionar esse botão, isso pode ser um sinal de que você tem algo errado nos saltadores de dragino ou nas configurações de série do seu esboço)
- Quando você vê o tráfego no console do TTN, pode prosseguir na configuração da função Decodificador da carga útil.
- (Se você não vê tráfego no console TTN, embora tenha certeza de que está à distância de um gateway, verifique o balcão de quadros e os saltadores de dragino)
- Configure a integração do TTNMAPPER, especifique um nome de experimento para o tempo dos primeiros tentativas (ou você divulgará sua casa com uma nuvem de pontos bem-sucedidos de conexão)
- Você deve encontrar seu novo experimento no final desta lista.
Esp32
Para a configuração de pino SPI T22_07 ainda não implementada no LMIC! -> Matthijskooijman/Arduino-lmic#164
-> Altere os pinos SPI diretamente na biblioteca
Atenção!!! Não se esqueça de redefinir isso, se você estiver usando também outro hardware com LMIC
HAL.CPP LINE 79
static void hal_spi_init () {
//SPI.begin();
SPI . begin ( 5 , 19 , 27 );
}Dependências
- Arduino LMIC
- Tinygps ++
- Cayennelpp (Opcional) Instale no Arduino Library Manager
Configuração:
- Txdist - define, a distância [em metros], após o que a posição é enviada
- SF - Defina o fator de propagação de Lorawan (DR_SF7 - DR_SF12) 7 e 8
- Single_channel - use apenas o canal Lorawan 0 para gateways de canal único
- Confirmado - Ativa Uplinks confirmados, apenas ative, se você conectar uma campainha para Pin D5! Caso contrário, esse recurso é inútil
- Soft_serial - Uncomment para usar serial de hardware, caso contrário, o software será usado. Nesse caso, conecte o módulo GPS a rxpin e txpin
- Debug - Se você usar a série de hardware, pode ativar a depuração, para obter a saída de depuração em uma série de software. Deixe desabilitar para não usar o Software Serial
- Cayennelpp - Se você quiser usar o CayenNELPP como formato de carga útil, de outra forma, use após a função de carga útil do decodificador
Função 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 ;
}