Esboço pequeno para executar um nó de mapeador TTN em um rádio Adafruit Feather M0 com módulo de rádio Lora com um OLED Weatherwing.


Consulte https://ttnmapper.org/ para obter mais informações sobre o projeto TTN Mapper.
Para expor o RFM95 DIO1 ao M0, solde uma ponte do IO1 para o digital 11 (ou qualquer outra porta gratuita).
O mais fácil é soldar esta ponte no Weatherwing.
Além do suporte Adafruit SAMD, você precisará das seguintes bibliotecas:
Copie ttn_secrets_template.h para ttn_secrets.h e defina sua chave de aplicativo e aplicativo eui.
Você também precisa definir um dispositivo EUI exclusivo - como o Adafruit Feather não possui um número de série, pegue o gerado automaticamente no console TTN.
Por padrão, o nó envia uma mensagem com * como carga útil a cada minuto.
send_packet_interval em ttn_mapper.cpp (Respeito do ciclo de trabalho!)* , Uncomment #define CAYENNE_LPP em ttn_mapper.cppCompile, faça o upload e você deve estar pronto!
Para enviar diretamente o local do rastreador para a integração do TTN Mapper, você pode adicionar um módulo GPS e usar o script ttn-mapper-gps .
Você precisará:
E as seguintes bibliotecas:
Adicione a integração do Mapper TTN ao seu aplicativo no console TTN e configure o decodificador da carga útil com:
function Decoder ( bytes , port ) {
// Decode an uplink message from a buffer
// (array) of bytes to an object of fields.
var decoded = { } ;
if ( port === 2 ) {
// The port should match the port configured in `ttn_mapper.cpp`
var i = 0 ;
decoded . latitude = ( bytes [ i ++ ] << 24 ) + ( bytes [ i ++ ] << 16 ) + ( bytes [ i ++ ] << 8 ) + bytes [ i ++ ] ;
decoded . latitude = ( decoded . latitude / 1e7 ) - 90 ;
decoded . longitude = ( bytes [ i ++ ] << 24 ) + ( bytes [ i ++ ] << 16 ) + ( bytes [ i ++ ] << 8 ) + bytes [ i ++ ] ;
decoded . longitude = ( decoded . longitude / 1e7 ) - 180 ;
decoded . altitude = ( bytes [ i ++ ] << 8 ) + bytes [ i ++ ] ;
decoded . altitude = decoded . altitude - 0x7fff ;
decoded . hdop = ( bytes [ i ++ ] << 8 ) + bytes [ i ++ ] ;
decoded . hdop = decoded . hdop / 10.0 ;
if ( bytes . length >= 14 ) {
decoded . voltage = ( ( bytes [ i ++ ] << 8 ) >>> 0 ) + bytes [ i ++ ] ;
decoded . voltage /= 100.0 ;
}
}
return decoded ;
}