SPGPStrack - картирование Lorawan GPS
Эта программа является GPS-трекером Lorawan для картирования, она разработана для Arduino Uno с щитом Dragino Lora/GPS и для ESP32 TTGO T-Beam (протестировано с помощью T22_V07).
- Настройка как ABP, чтобы вы могли включить устройство в местах, где у вас нет покрытия
- передаст местоположение все x метров
- Вы можете выбрать формат полезной нагрузки между Cayennelpp и функцией декодера ручной нагрузки
- Программное обеспечение подтверждено Uplink, и Arduino будет звучать
- Вы можете прочитать GPS по серийному серийному или программному обеспечению для оборудования, поэтому для разработки легче, если вы видите, что происходит во время реальной работы
- В случае использования аппаратного серийного использования вы можете включить сериал программного обеспечения для отладки
Делать
- Временная передача, которая также выполняется, когда трекер не движется. Например, каждый час, чтобы увидеть, жив ли трекер.
- Низкий вариант мощности
ESP32 Поддержка [Состояние: В работе см. Развитие филиала. Конфигурация SPI производит BackTraces] Аппаратное обеспечение: ESP32 UNO, фирменный как wemos ESP32 уже реализован FOT TTGO T-BEAM- Альтернативная позиция Wi -Fi для ESP32
Быстрый старт
- В консоли TTN создайте приложение, зарегистрируйте новое устройство (как ABP)
- Скопируйте информацию о устройстве Lorawan и ключи в эскиз
- Сложите доски и загрузите эскиз на борт. Чтобы загрузить эскиз, вам необходимо сохранить кнопку сброса на нажатой Dragino. (Если вы можете загрузить, не нажимая эту кнопку, то это может быть признаком того, что у вас что -то не так в прыгунах Dragino или последовательные настройки вашего эскиза)
- Когда вы видите трафик в консоли TTN, вы можете продолжить настройку функции декодера полезной нагрузки.
- (Если вы не видите трафик в консоли TTN, хотя вы уверены, что находитесь на хорошем расстоянии до шлюза, проверьте счетчик рамки и прыгуны Dragino)
- Настройте TTNMAPPER-Integration, укажите имя эксперимента для времени первых попыток (или вы раскроете свое местоположение с облаком успешных точек подключения)
- Вы должны найти свой новый эксперимент в конце этого списка.
ESP32
Для T22_07 SIN -штифта SPI еще не реализована в LMIC! -> Matthijskooijman/arduino-lmic#164
-> Измените штифты SPI непосредственно в библиотеке
Внимание!!! Не забудьте сбросить это, если вы используете также другое оборудование с LMIC
HAL.CPP LINE 79
static void hal_spi_init () {
//SPI.begin();
SPI . begin ( 5 , 19 , 27 );
}Зависимости
- Arduino LMIC
- Tinygps ++
- CAYENNELPP (необязательно) Установка из Arduino Library Manager
Конфигурация:
- Txdist - определяет, расстояние [в метрах], после чего отправляется положение
- SF - Определите коэффициент распространения Лоравана (DR_SF7 - DR_SF12) 7 и 8 Рекомендуется для картирования
- Single_channel - Используйте только канал Lorawan 0 для одноканальных шлюзов
- Подтверждено - включает подтвержденные восходящие линии, включите, только если вы подключите зуммер, чтобы выкончить D5! В противном случае эта функция бесполезна
- Soft_serial - некоммерте использовать аппаратный сериал, в противном случае используется программное обеспечение. В этом случае подключите модуль GPS к Rxpin и Txpin
- Отладка - если вы используете аппаратный сериал, вы можете включить отладку, чтобы получить вывод отладки в сериале программного обеспечения. Оставьте отключение, чтобы вообще не использовать программное обеспечение
- Cayennelpp - Если вы хотите использовать Cayennelpp в качестве формата полезной нагрузки, иначе используйте следующую функцию полезной нагрузки декодера
Функция полезной нагрузки
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 ;
}