Petit croquis pour exécuter un nœud de mappeur TTN sur une radio Adafruit Feather M0 avec module de radio LORA avec un wing en plume OLED.


Voir https://ttnmapper.org/ Pour plus d'informations sur le projet TTN Mappel.
Pour exposer le RFM95 Dio1 au M0, soudez un pont de l' IO1 au numérique # 11 (ou tout autre port libre).
Le plus facile est de souder ce pont sur le wing.
En dehors du support Adafruit SAMD, vous aurez besoin des bibliothèques suivantes:
Copiez ttn_secrets_template.h à ttn_secrets.h et définissez votre clé d'application et votre application EUI.
Vous devez également définir un dispositif unique EUI - comme la plume Adafruit n'a pas de numéro de série, prenez celui généré automatiquement dans la console TTN.
Par défaut, le nœud envoie un message avec * en charge utile chaque minute.
send_packet_interval dans ttn_mapper.cpp (Respect Duty Cycle!)* , non-comment #define CAYENNE_LPP dans ttn_mapper.cppCompilez, téléchargez et vous devriez être prêt à partir!
Pour envoyer directement l'emplacement du tracker à l'intégration TTN Mapper, vous pouvez ajouter un module GPS et utiliser le script ttn-mapper-gps .
Vous aurez besoin:
Et les bibliothèques suivantes:
Ajoutez l'intégration TTN Mapper à votre application dans la console TTN et configurez le décodeur de charge utile avec:
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 ;
}