|
GPS-трекер с Arduino MKR FOX 1200
В трекере используется GPS-модуль ATGM332 для определения местоположения по GPS с большей точностью, чем в службах определения местоположения, предоставляемых Sigfox. Затем данные о местоположении отправляются в виде «строки» через сеть Sigfox и, наконец, доставляются по электронной почте.
Ардуино MKR FOX 1200
Плата похожа на Arduino Zero, основанную на SAM D21, и включает в себя модуль ATA8520 Sigfox. Это плата с низким энергопотреблением, которая поставляется с годовой бесплатной подпиской на сеть Sigfox с платой (до 140 сообщений в день), а также бесплатным доступом к службе геолокации Spot'it.
Модуль GPS ATGM332
Этот недорогой модуль GPS с низким энергопотреблением очень хорошо сочетается с Arduino MKR FOX 1200, поскольку он работает только от 2,7 В (номинальное напряжение 3,3 В). Изначально я купил модуль NEO6m2 с режимом ожидания, но в результате получился поддельный модуль NEO6. На самом деле это был модуль ATGM332. В результате у него отсутствует режим ожидания, поэтому мне нужно было использовать транзистор, чтобы включить модуль GPS, когда это необходимо, и выключить его, чтобы сэкономить заряд батареи. Моя цель - получать информацию о местоположении с низкой скоростью, то есть 4 сообщения в час, поскольку Sigfox позволяет отправлять только 140 сообщений в день. Я использую библиотеку TinyGPS ( https://github.com/mikalhart/TinyGPS ) для декодирования кадров GPS. Мне нужно было включать и выключать GPS при необходимости. Я думал, что релейные модули были слишком громоздкими и мощными, если бы мне нужно было переключать только нагрузку 3 В и несколько миллиампер. Кроме того, большинству релейных модулей требуется 5 В. Итак, транзистор был бы лучшим решением. Кроме того, MKR FOX 1200 обеспечивает только 7 мА на вывод ввода / вывода. Я использую NPN-транзистор BC548 для переключения между областями насыщения и отсечки. Когда нулевой сигнал подается на базу транзистора, он выключается, действуя как разомкнутый переключатель, и ток коллектора не течет. При подаче положительного сигнала на базу транзистора он включается, действуя как замкнутый переключатель, и через устройство протекает максимальный ток цепи.
Подключения
Единственный источник питания - это два батарейных блока AA 1,5 В, которые питают Arduino MKR FOX 1200. Модуль GPS получает питание от платы Arduino. Arduino MKR FOX 1200 обменивается данными с модулем GPS, используя второй последовательный порт через контакты 13 и 14, которые в коде называются Serial1. (См. Https://www.arduino.cc/en/Tutorial/SamdSercom). Выход данных TX модуля GPS подключен к входу последовательных данных (контакт 13) платы Arduino. Кроме того, плата Arduino использует PIN2 для включения и выключения модуля GPS, как это объясняется.
Отправка информации GPS через Sigfox Я хотел отправить информацию GPS, используя данные типа float, но когда я пытался, я всегда получал нулевые значения. Поискав в сети, я наткнулся на этот проект https://github.com/nicolsc/SmartEverything_SigFox_GPS Николаса Лесконнека. Он использует AT-команды для отправки любого типа данных и преобразования «с плавающей точкой» в «шестнадцатеричный». Однако я думаю, что у Arduino MKR FOX 1200 нет режима AT, и я не мог заставить его работать. Итак, я провел десятки тестов и, изменив код Николаса, я нашел способ отправить «строку», которая была проанализирована как «float: 32» платформой Sigfox, и ее можно было использовать напрямую без какого-либо преобразования с помощью последний приемник.
Данные Sigfox ограничены 12 байтами. Данные, которые я отправляю в сеть SigFox:
Широта, число с плавающей запятой: 32тип, 4 байта.
Долгота, число с плавающей запятой: 32тип, 4 байта.
Высота, float: 32type, 4 байта.
Конфигурация обратного вызова Sigfox
Конфигурация пользовательского обратного вызова Sigfox:
lat::floa
t:32lng::floa
t:32
alt::floa
t:32
Вы получите электронное письмо следующего содержания:
Чтобы легко увидеть позицию, я включил URL-адрес Google Maps, используя полученную информацию: https://maps.google.com/maps/?q={customData#lat}, {customData # lng}
И, наконец, вот результат: