Небольшой эскиз для запуска узла Mapper TTN на радио -радио Adafruit Feather M0 с радиомодулем Lora с Oled Featherwing.


См. Https://ttnmapper.org/ для получения дополнительной информации о проекте TTN Mapper.
Чтобы разоблачить RFM95 DIO1 на M0, припаяйте мост от IO1 до цифрового #11 (или любой другой бесплатный порт).
Самый простой - припаять этот мост на перьев.
Помимо поддержки Adafruit Samd, вам понадобятся следующие библиотеки:
Скопируйте ttn_secrets_template.h в ttn_secrets.h и установите ключ приложения и приложение EUI.
Вам также необходимо определить уникальное устройство EUI - поскольку перо adafruit не имеет последовательного номера, возьмите одно, сгенерированное автоматически в консоли TTN.
По умолчанию узел отправляет сообщение с * в качестве полезной нагрузки каждую минуту.
send_packet_interval в ttn_mapper.cpp (соответствующий цикл!)* , нерешенное #define CAYENNE_LPP в ttn_mapper.cppСкомпилируйте, загрузите, и вы должны быть хороши, чтобы пойти!
Чтобы непосредственно отправить местоположение трекера в интеграцию TTN Mapper , вы можете добавить модуль GPS и использовать скрипт ttn-mapper-gps .
Вам понадобится:
И следующие библиотеки:
Добавьте интеграцию TTN Mapper в ваше приложение в консоли TTN и настройте декодер полезной нагрузки с помощью:
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 ;
}