Gps трекер arduino своими руками

Делаем GPS-трекер на основе Arduino MKRFOX1200

Нам понравилась последнее время плата Arduino MKRFOX1200, так что мы даже опубликовали большой материал про саму плату и урок «Умный физический почтовый ящик, который отправляет e-mail».

Сегодня мы сделаем GPS Tracker на основе Arduino MKR FOX 1200, который отправляет точный GPS-данные через сеть Sigfox.

Это становится еще актуальней для многих стран в связи усилением контроля за любыми ввозимыми техническими устройствами, а особенно связанными с GPS.

Шаг 1. Что нам пригодится

Набор деталей для этого урока не велик:

  • Arduino MKR Fox 1200 × 1
  • Модуль GPS (на выбор, но мы использовали реплику ublox NEO6m (ATGM332D) × 1
  • Транзистор общего назначения NPN (мы использовали BC548) × 1
  • Резистор 1 кОм × 1

Шаг 2. Информация о проекте

Трекер использует GPS-модуль ATGM332, чтобы получить GPS-положение с большей точностью, чем услуги определения местоположения, предоставляемые Sigfox. Затем данные позиции отправляются как «строка» через сеть Sigfox и, наконец, доставляются по электронной почте.

Arduino 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 мА на пине ввода/вывода.

Подойдет транзистор BC548 NPN. Когда нулевой сигнал подается на базу транзистора, он выключается, действуя как открытый выключатель, и ток коллектора не течет. При положительном сигнале, подаваемом на базу транзистора, он становится «включенным», действующим как замкнутый переключатель, и максимальный ток цепи протекает через устройство.

Шаг 3. Схема соединения

Единственным источником питания являются две 1,5-вольтовых батареи AA, которые питают Arduino MKR FOX 1200. Модуль GPS получает питание от платы Arduino.

Arduino MKR FOX 1200 взаимодействует с модулем GPS, используя второй последовательный порт через контакты 13 и 14, называемые Serial1 в коде. Выход TX-данных модуля GPS подключается к последовательному входу данных (контакт 13) платы Arduino.

Кроме того, плата Arduino использует PIN2 для включения и выключения модуля GPS, как объясняется выше.

Шаг 4. Код проекта

Код нашего проекта вы можете скачать или скопировать ниже:

Шаг 5. Отправка информации GPS через Sigfox

Мы хотел отправить информацию GPS с использованием данных типа float, но когда мы попытались, то всегда получали нулевые значения.

Поиск в Интернете привел на этот проект на GitHub — https://github.com/nicolsc/SmartEverything_SigFox_GPS от Николя Лискони. Он использует AT-команды для отправки любого типа данных и конвертирует ‘float’ в ‘hex’. Тем не менее у Arduino MKR FOX 1200 нет режима AT, и мы не смогли заставить её работать.

Было сделано несколько десятков тестов и, изменив код Николя, был найден способ отправить «строку», которая была проанализирована платформой Sigfox «float: 32», и ее можно было бы использовать напрямую без какого-либо преобразования.

Данные Sigfox ограничены 12 байтами. Данные, которые отправляются в сеть SigFox:

  • Широта, float: 32 типа (float:32type), 4 байта.
  • Долгота, float: 32 типа (float:32type), 4 байта.
  • Высота, float: 32 типа (float:32type), 4 байта.

Шаг 6. Конфигурация обратного вызова Sigfox

Конфигурация пользовательского обратного вызова Sigfox:

Вы получите электронное письмо:

Читайте также:  Как изготовить оконную раму своими руками

Чтобы легко видеть позицию, мы включили URL-адрес в Карты Google, используя полученную информацию:

И, наконец, результат работы нашего Arduino GPS-трекера:

Источник

Самодельный GPS трекер на базе SIM808 и Arduino nano

В данном видео я постарался описать примерный принцип работы прототипа системы самодельного GPS трекера на базе многофункционального модуля SIM808.

Этот модуль содержит в себе сразу три устройства — GSM, GPS и Bluetooth. Что позволяет использовать его в самых различных назначениях.
В моем примере запуск определения координат и отправка на сервер происходит по нажатию кнопки, подключенной к порту A1. Думаю, ни для кого даже из начинающих не составит труда изменить этот код таким образом, чтобы данные отправлялись регулярно через определенный промежуток времени или по внешнему воздействию(например при появлении сигнала на одном из входов платы Ардуино).
Что потребуется:
Модуль — SIM808
Плата Arduino nano — переходники(5шт.)
Можно использовать вот такой вариант антенны GSM
Керамическая антенна GPS

Схема подключения крайне проста, нужно лишь подобрать источник питания напряжением 6-12В и током не менее 2-х Ампер.

В видео подробный обзор работы скетча и программ для загрузки на сервер:

Ниже привожу скетч из видео и файлы для загрузки на сервер:

Источник

GPS-трекер для авто с отправкой данных на сервер с использованием GSM/GPRS шилда

Создаем GPS-трекер для авто. Необходимый функционал:

  1. отправка GPS-данных по GSM/GPRS на интернет-сайт с сохранением в базе данных;
  2. просмотр маршрута авто за определенный интервал времени на web-странице с использованием Яндекс.Карт;
  3. просмотр в реальном времени текущего положения авто на web-странице с использованием Яндекс.Карт.

2) SIM900 GSM/GPRS шилд для Arduino (бесплатно предоставлен сервисом ЖелеZona). Стоит около 20$

Начнем с описания модуля SIM900 GSM/GPRS.

Arduino GPRS/GSM Shield предоставляет вам возможность использовать сеть мобильной GSM связи для удаленного приема и передачи данных для Arduino-проектов. GPRS/GSM shield позволяет добиться этого с помощью одного из трех способов:

Рfссмотрим один из вариантов данного шилда – SIM900 Quad-Band GPRS shield (см. рис. 9.1) на основе чипа SIM900.

Основные характеристики GSM модуля SIM900:

  • четыре диапазона GSM 850/ 900/ 1800/ 1900 МГц;
  • класс передачи данных GPRS multi-slot class 10/8;
  • соответствие стандарту GSM фазы 2/2+;
  • класс мощности 4 (2 Вт в диапазонах 850/ 900 МГц) ;
  • класс мощности 1 (1 Вт в диапазонах 1800/1900 MГц) ;
  • управление AT командами (GSM 07.07 ,07.05 и фирменные AT команды SIMCom) ;
  • аудиокодеки HR, FR, EFR, AMR, подавление эха;
  • CSD до 14.4кбит/с;
  • PPP-стек;
  • встроенный стек TCP/IP, UDP/IP;
  • протоколы HTTP и FTP;
  • протокол защищенных сокетов SSL;
  • декодирование DTMF-тонов;
  • eMail — формирование и отправка электронных писем посредством АТ-команд;
  • SMS Autorun — исполнение АТ-команд, полученных по SMS от определенного абонента;
  • 2.5Mb user memory — встроенная память для пользовательских данных;
  • MMS — формирование, дополнение пользовательскими файлами и отправка с помощью АТ-команд;
  • AMR play — воспроизведение аудиофайлов в динамик или в сторону удаленного абонента;
  • Jamming Detection — функция обнаружения глушения сигнала;
  • FOTA — обновление прошивки модуля по беспроводному каналу;
  • Easy Scan — получение информации об окружающих базовых станциях без подключения SIM-карты;
  • PING — проверка доступности адреса в Internet посредством обмена ICMP пакетами;

Особенности данного шилда:

  • совместимость с Arduino Mega;
  • слот для карт SD ( включение/отключены при помощи перемычки);
  • программное и аппаратное обеспечение последовательного порта: может общаться с Arduino через последовательный порт программного обеспечения (D7 / D8) или последовательный порт (D0 / D1);
  • интерфейс FTDI;
  • слот батарейки для RTC.
  • 10 цифровых входов/выходов GPIO;
  • 2 ШИМ выхода;
  • I2C интерфейс

Данный шилд имеет два способа включения – аппаратный (кратковременное нажатие кнопки PWRKEY) и прграммный (используется выход D9 Arduino).

Получение GPS-данных

Модуль GPS V.KEL 16 один из самых дешевых и простых. Тем не менее имеет батарейку для сохранения данных о спутниках. По даташиту, холодный старт должен занимать 39 секунд, у меня это заняло примерно 20 минут. Следующий старт примерно 2 минуты. Назначение выводов

Основное, что можно делать с этим приемником — читать данные по протоколу NMEA с TX пина. Уровни — 5V,скорость — 9600 бод. Для подключения к Arduino используем программный UART на пинах 2 и 3. Для чтения данных используем библиотеку TinyGPS.

Отправка данных на сервер (GSM/GPRS shield)

Подключаемся к Arduino к контактам 7 и 8.

Для получения страницы по определенному URL нужно послать следующие команды:
AT+SAPBR=1,1 //Открыть несущую (Carrier)
AT+SAPBR=3,1,»CONTYPE»,»GPRS» //тип подключения — GPRS
AT+SAPBR=3,1,»APN»,»internet.beeline.ru» //APN, для Билайна — internet
AT+HTTPINIT //Инициализировать HTTP
AT+HTTPPARA=»CID»,1 //Carrier ID для использования.
AT+HTTPPARA=»URL»,»http:/. ru/gps_tracker/gps_tracker1.php?id_avto=?N&lat=XXXXXlon=YYYYY» //Собственно URL, после sprintf с координатами
AT+HTTPACTION=0 //Запросить данные методом GET
AT+HTTPREAD //дождаться ответа
AT+HTTPTERM //остановить HTTP

Предусмотрим еще один момент — при написании серверной части и web-интерфейса предусмотрим получение и вывод результатов для нескольких модулей (id_avto=N), поставим переключатель на 3 позиции, что позволит получать информацию от 8 транспортных средств.

Читайте также:  Защита инвертора от осциллятора своими руками

Вид GPS-трекера в сборе. + добавлена батарея LiPo для перестановки, например на велосипед

Написание скетча на Arduino

Чтобы не отправлять данные во время стоянки транспортного средства, отправлять будем данные, только если GPS дынные будут изменяться на значение, указанное в константе MINCANGE.

Интервал отправки данных — константа INTERVALSEND мсек. Наличие двух активных программных последовательных портов приводит к ошибкам получения/отправки данных, поэтому приходится переключать состояние программных последовательных портов для работы с каждым шилдом.

В процедуре setup() — выбор номера модуля для отправки данных на сервер (id_avto=) — считывается их трехпереключателей

Отправка данных на сервер — обработчик скрипт gps_tracer1.php. Скрипт обрабатывает GET-данные и записывает их в базу данных.

WEB-интерфейс

Web-интерфейс -отображение на Яндекс.Картах текущего (последнего переданного) положения либо маршрута за выбранный период.

Текущее положение — метка , на балуне время для данной метки.

При построении маршрута по меткам строится полигон, на балуне для каждой метки отображается время. Для быстрого построения страницы предусмотрена константа максимального количества меток, следующие метки подгружаются кнопками > и 18.10.2015 0 1

Источник

GPS трекер на основе Arduino и технологии Lora

Знание местоположения определенных вещей/объектов в настоящее время является достаточно актуальной задачей. Наиболее часто для решения этой задачи используется технология GPS, которая широко используется для отслеживания местоположения автомобилей, судов, людей, животных и т.п. Для любого подобного отслеживающего местоположение устройства (трекера, в англ. Tracker) одними из наиболее важных характеристик является диапазон работы устройства и время его непрерывной работы от батареи. С этой точки зрения наилучшим решением для применения в трекерах местоположения является технология LoRa – устройства на ее основе отличаются крайне низким энергопотреблением и способностью работать на достаточно большие расстояния.

В данной статье мы рассмотрим GPS трекер на основе платы Arduino и Lora модулей. Данный трекер (отслеживающее местоположение устройство) будет состоять из передатчика, который будет считывать информацию о местоположении с помощью GPS модуля NEO-6M и передавать ее с помощью модуля Lora, и приемника, который будет принимать эту информацию и отображать ее на ЖК дисплее 16×2. Если вы не знакомы с технологией LoRa и протоколом LoRaWAN, то перед прочтением данной статьи рекомендуем изучить статью о подключении модуля Lora к плате Arduino. Также в более кратком варианте суть этой технологии освещена в статье про связь плат Arduino на расстоянии 3 км с помощью модулей Lora.

Для уменьшения сложности и стоимости изготовления нашего проекта мы не будем использовать шлюз LoRa. Вместо этого мы будем использовать связь точка-точка (peer to peer communication) между передатчиком и приемником. Но если вам нужен глобальный радиус действия вашего устройства (то есть по всему земному шару) вы можете использовать вместо приемника шлюз (Gateway) LoRa.

Статья переведена с иностранного сайта и этот проект разработали энтузиасты из Индии – в их стране разрешенным рабочим диапазоном для работы модулей LoRa является диапазон 433 МГц, поэтому в данном проекте использованы модули LoRa этого диапазона. Если же вы живете в России, то в нашей стране разрешенным рабочим диапазоном для работы модулей LoRa является диапазон 866 МГц, поэтому если вы планируете использовать данный проект трекера в России, то вам необходимо будет заменить в нем используемые модули LoRa на модули частотного диапазона 866 МГц. Если же вы не из Индии, и не из России, то вам перед сборкой данного проекта рекомендуется уточнить в сети Интернет разрешенный диапазон для работы устройств на основе технологии LoRa в вашей стране.

Необходимые компоненты

  1. Плата Arduino Uno – 2 шт. (купить на AliExpress).
  2. Шилд (плата расширения) Lora для Arduino (Arduino Lora Shield) – 2 шт. Печатная плата для данного шилда приведена далее в статье.
  3. SX1278 433MHz LoRa Module – 2 шт. (купить на AliExpress).
  4. GPS модуль NEO-6M (купить на AliExpress).
  5. ЖК дисплей 16×2 (купить на AliExpress).
  6. Соединительные провода.

Схема шилда LoRa для Arduino

Чтобы упростить взаимодействие платы Arduino с модулем LoRa мы для данного проекта разработали специальный шилд (плату расширения) LoRa (LoRa Arduino Shield). Он состоит из модуля LoRa SX1278 433MHz и регулятора напряжения 3.3V на основе микросхемы LM317. Но вы можете реализовать данный проект без изготовления данного шилда, используя непосредственные соединения между компонентами данного шилда и платой Arduino. Но использование данного шилда LoRa будет особенно удобным если вы, к примеру, захотите развернуть Mesh сеть (самоорганизующаяся радиосеть с автоматической ретрансляцией/маршрутизацией между ее узлами) на основе технологии LoRa. Схема шилда LoRa для платы Arduino представлена на следующем рисунке.

Шилд с помощью разъема DC jack подключается к питающему напряжению 12V, затем это напряжение с помощью регулятора напряжения на основе микросхемы LM317 понижается до стабилизированного напряжения 3.3V. Его также можно использовать для питания платы Arduino через ее контакт Vin, а затем стабилизированное напряжение 5V с Arduino использовать для питания ЖК дисплея на плате шилда. Значение выходного напряжения с выхода регулятора LM317 устанавливается с помощью подбора номиналов резисторов R1 и R2, в сети интернет есть даже соответствующие калькуляторы расчета сопротивлений этих резисторов.

Читайте также:  Выпрямитель для трансформатора 12 вольт своими руками

Внешний вид изготовленной конструкции шилда LoRa для Arduino показан на следующем рисунке.

Поскольку модуль LoRa потребляет очень мало энергии его можно запитать непосредственно с контакта 3.3V платы Arduino, но мы в данном проекте решили использовать внешний регулятор напряжения на основе микросхемы LM317 поскольку он более надежный чем встроенный в плату Arduino регулятор. Шилд также содержит потенциометр для регулировки яркости ЖК дисплея. Соединения модуля LoRa с платой Arduino точно такие же, которые мы использовали в предыдущей статье на данную тематику.

Изготовление печатной платы шилда LoRa

В редакторе для проектирования печатной платы у нас получился следующий ее чертеж, показанный на следующем рисунке.

Gerber файлы для этой печатной платы вы можете скачать по следующей ссылке:

Для заказа изготовления печатной платы выполните следующую последовательность шагов.

Шаг 1. Перейдите на сайт https://www.pcbgogo.com/?code=t, зарегистрируйтесь на нем если вы там еще не зарегистрированы. Затем на вкладке PCB Prototype введите размеры своей печатной платы, число ее слоев и число требуемых вам экземпляров печатной платы. Введенные нами параметры показаны на следующем рисунке.

Шаг 2. После заполнения всех этих полей нажмите на кнопку Quote Now. Далее вам предстоит ввести еще несколько параметров требуемой вам печатной платы, но в большинстве случаев вы можете оставить их такими, какими их предлагает сервис по умолчанию. Обратите только внимание на цену и время изготовления. В нашем случае сервис выдал время изготовления 2-3 дня и стоимость $5. Можно выбрать предпочтительный способ доставки вам печатной платы.

Шаг 3. Теперь заключительным шагом загрузите Gerber файлы в сервис и оплатите стоимость заказа. Перед изготовлением платы сервис PCBGOGO проверяет вашу печатную плату на корректность – это делает взаимодействие с сервисом исключительно дружественным.

Разумеется, вы можете использовать любой другой удобный вам сервис изготовления печатных плат, с которым вы привыкли работать.

Сборка конструкции проекта

После получения посылки с печатной платой мы приступили к сборке проекта. После припаивания всех необходимых компонентов у нас получилась конструкция следующего вида:

Вместе передатчик и приемник для нашего проекта выглядят следующим образом:

Как вы можете видеть из представленного рисунка, только шилд для приемника (он слева на рисунке) имеет контакты для подключения ЖК дисплея, передатчик состоит, в основном, из модуля LoRa. К передатчику мы будем подключать GPS модуль.

Подключение GPS модуля к передатчику LoRa

В нашем проекте мы использовали GPS модуль NEO-6M. Данный модуль отличается низким энергопотреблением и малые размеры, что делает его удобным для применения в переносных устройствах. Все проекты на нашем сайте с использованием GPS модулей вы можете посмотреть по этой ссылке.

GPS модуль NEO-6M работает с напряжением 5V и взаимодействует с платой Arduino в нашем проекте по последовательному каналу связи со скоростью 9600 бод. Его контакт питания мы подключаем к контакту +5V платы Arduino, а контакты Rx и Tx подключаем к контактам D4 и D3 платы Arduino соответственно.

Контакты D4 и D3 в программе будут сконфигурированы как контакты последовательного порта связи. При подаче питания GPS модуль NEO-6M сразу выполняет поиск доступных спутников и после этого начинает передавать на свой выход информацию в формате NMEA. Более подробно об этом формате и о принципах работы с GPS модулем можно прочитать в этой статье – GPS часы на Arduino Uno. Но в этом проекте мы упростим себе взаимодействие с GPS модулем с помощью использования библиотеки TinyGPS++. Также необходимо скачать и добавить в Arduino IDE и библиотеку для работы с модулем LoRa (если у вас ее еще нет). Обе эти библиотеки можно скачать по следующим ссылкам:

По приведенным ссылкам вы скачаете библиотеки в виде ZIP файл, их можно добавить в Arduino IDE с помощью команды Sketch -> Include Library -> Add.ZIP library.

Объяснение программ для Arduino

В нашем проекте нам необходимы две программы: для передатчика и для приемника. Полные тексты этих программ приведены в конце статьи, здесь же мы кратко обсудим их основные фрагменты.

Объяснение программы для передатчика

Как мы знаем, модуль LoRa является приемопередающим устройством, то есть он может и передавать, и принимать информацию. В нашем проекте один из этих модулей используется только в качестве передатчика, а другой – в качестве приемника.

Первым делом в программе нам необходимо подключить используемые библиотеки: библиотеку для работы с протоколом SPI, библиотеку для работы с модулем LoRa, библиотеку TinyGPS++ и библиотеку последовательной связи (SoftwareSerial). GPS модуль подключен к контактам 3 и 4 платы Arduino, поэтому объявим переменные для работы с ними.

Источник

Оцените статью