Pequeño bosquejo para ejecutar un nodo TTN Mapper en una radio Feather M0 de Adafruit con módulo de radio Lora con un aliento de plumas OLED.


Consulte https://ttnmapper.org/ para obtener más información sobre el proyecto TTN Mapper.
Para exponer el RFM95 DIO1 al M0, suelte un puente del IO1 a Digital #11 (o cualquier otro puerto libre).
Lo más fácil es soldar este puente en el aliento de plumas.
Aparte del soporte de AdaFruit SAMD, necesitará las siguientes bibliotecas:
Copie ttn_secrets_template.h a ttn_secrets.h y configure su clave de aplicación y aplicación eui.
También debe definir un dispositivo EUI único, ya que la pluma Adafruit no tiene un número de serie, tome el que se genera automáticamente en la consola TTN.
Por defecto, el nodo envía un mensaje con * como carga útil cada minuto.
send_packet_interval en ttn_mapper.cpp (¡el ciclo de trabajo de respeto!)* , Uncomment #define CAYENNE_LPP en ttn_mapper.cpp¡Compile, sube y debería estar listo para comenzar!
Para enviar directamente la ubicación del rastreador a la integración de TTN Mapper , puede agregar un módulo GPS y usar el script ttn-mapper-gps .
Necesitarás:
Y las siguientes bibliotecas:
Agregue la integración de TTN Mapper a su aplicación en la consola TTN y configure el decodificador de carga útil con:
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 ;
}