Arduino gps трекер: GPS Tracker на ардуино своими руками / Хабр

Содержание

GPS Tracker на ардуино своими руками / Хабр

После нескольких экспериментов с ардуиной решил сделать простенький и не очень дорогой GPS-tracker с отправкой координат по GPRS на сервер.

Используется Arduino Mega 2560 (Arduino Uno), SIM900 — GSM/GPRS модуль (для отправки информации на сервер), GPS приёмник SKM53 GPS.


Всё закуплено на ebay.com, в сумме около 1500 р (примерно 500р ардуина, немного меньше — GSM модуль, немного больше — GPS).

GPS приемник

Для начала нужно разобраться с работой с GPS. Выбранный модуль — один из самых дешевых и простых. Тем не менее, производитель обещает наличие батарейки для сохранения данных о спутниках. По даташиту, холодный старт должен занимать 36 секунд, однако, в моих условиях (10 этаж с подоконника, вплотную зданий нет) это заняло аж 20 минут. Следующий старт, однако, уже 2 минуты.

Важный параметр устройств, подключаемых к ардуине — энергопотребление. Если перегрузить преобразователь ардуины, она может сгореть. Для используемого приемника максимальное энергопотребление — 45mA @ 3.3v. Зачем в спецификации указывать силу тока на напряжении, отличном от требуемого (5V), для меня загадка. Тем не менее, 45 mA преобразователь ардуины выдержит.

Подключение

GPS не управляемый, хотя и имеет RX пин. Для чего — неизвестно. Основное, что можно делать с этим приемником — читать данные по протоколу NMEA с TX пина. Уровни — 5V, как раз для ардуины, скорость — 9600 бод. Подключаю VIN в VCC ардуины, GND в GND, TX в RX соответствующего serial. Читаю данные сначала вручную, затем с использованием библиотеки TinyGPS. На удивление, всё читается. После перехода на Uno пришлось использовать SoftwareSerial, и тут начались проблемы — теряется часть символов сообщения. Это не очень критично, так как TinyGPS отсекает невалидные сообщения, но довольно неприятно: о частоте в 1Гц можно забыть.

Небольшое замечание относительно SoftwareSerial: на Uno нет хардверных портов (кроме соединённого с USB Serial), поэтому приходится использовать программный. Так вот, он может принимать данные только на пине, на котором плата поддерживает прерывания. В случае Uno это 2 и 3. Мало того, данные одновременно может получать только один такой порт.

Вот так выглядит «тестовый стенд».

GSM приемник/передатчик

Теперь начинается более интересная часть. GSM модуль — SIM900. Он поддерживает GSM и GPRS. Ни EDGE, ни уж тем более 3G, не поддерживаются. Для передачи данных о координатах это, вероятно, хорошо — не будет задержек и проблем при переключении между режимами, плюс GPRS сейчас есть почти везде. Однако, для каких-то более сложных приложений этого уже может не хватить.

Подключение

Модуль управляется также по последовательному порту, с тем же уровнем — 5V. И здесь нам уже понадобятся и RX, и TX. Модуль — shield, то есть, он устанавливается на ардуину. Причем совместим как с mega, так и с uno. Скорость по умолчанию — 115200.

Собираем на Mega, и тут нас ждет первый неприятный сюрприз: TX пин модуля попадает на 7й пин меги. На 7м пину меги недоступны прерывания, а значит, придется соединить 7й пин, скажем, с 6м, на котором прерывания возможны. Таким образом, потратим один пин ардуины впустую. Ну, для меги это не очень страшно — всё-таки пинов хватает. А вот для Uno это уже сложнее (напоминаю, там всего 2 пина, поддерживающих прерывания — 2 и 3). В качестве решения этой проблемы можно предложить не устанавливать модуль на ардуину, а соединить его проводами. Тогда можно использовать Serial1.

После подключения пытаемся «поговорить» с модулем (не забываем его включить). Выбираем скорость порта — 115200, при этом хорошо, если все встроенные последовательные порты (4 на меге, 1 на uno) и все программные работают на одной скорости. Так можно добиться более устойчивой передачи данных. Почему — не знаю, хотя и догадываюсь.

Итак, пишем примитивный код для проброса данных между последовательными портами, отправляем atz, в ответ тишина. Что такое? А, case sensitive. ATZ, получаем OK. Ура, модуль нас слышит. А не позвонить ли нам ради интереса? ATD +7499… Звонит городской телефон, из ардуины идет дымок, ноутбук вырубается. Сгорел преобразователь Arduino. Было плохой идеей кормить его 19 вольтами, хотя и написано, что он может работать от 6 до 20V, рекомендуют 7-12V. В даташите на GSM модуль нигде не сказано о потребляемой мощности под нагрузкой. Ну что ж, Mega отправляется в склад запчастей. С замиранием сердца включаю ноутбук, получивший +19V по +5V линии от USB. Работает, и даже USB не выгорели. Спасибо Lenovo за защиту.

После выгорания преобразователя я поискал потребляемый ток. Так вот, пиковый — 2А, типичный — 0.5А. Такое явно не под силу преобразователю ардуины. Нужно отдельное питание.

Программирование

Модуль предоставляет широкие возможности передачи данных. Начиная от голосовых вызовов и SMS и заканчивая, собственно, GPRS. Причем для последнего есть возможность выполнить HTTP запрос при помощи AT команд. Придется отправить несколько, но это того стоит: формировать запрос вручную не очень-то хочется. Есть пара нюансов с открытием канала передачи данных по GPRS — помните классические AT+CGDCONT=1,«IP»,«apn»? Так вот, тут то же самое нужно, но слегка хитрее.

Для получения страницы по определенному URL нужно послать следующие команды:

AT+SAPBR=1,1 //Открыть несущую (Carrier)
AT+SAPBR=3,1,"CONTYPE","GPRS" //тип подключения - GPRS
AT+SAPBR=3,1,"APN","internet" //APN, для Мегафона - internet
AT+HTTPINIT //Инициализировать HTTP 
AT+HTTPPARA="CID",1 //Carrier ID для использования.
AT+HTTPPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" //Собственно URL, после sprintf с координатами
AT+HTTPACTION=0 //Запросить данные методом GET
//дождаться ответа
AT+HTTPTERM //остановить HTTP

В результате, при наличии соединения, получим ответ от сервера. То есть, фактически, мы уже умеем отправлять данные о координатах, если сервер принимает их по GET.

Питание

Поскольку питать GSM модуль от преобразователя Arduino, как я выяснил, плохая идея, было решено купить преобразователь 12v->5v, 3A, на том же ebay. Однако, модулю не нравится питание в 5V. Идем на хак: подключаем 5V в пин, с которого приходит 5V от ардуины. Тогда встроенный преобразователь модуля (существенно мощнее преобразователя ардуины, MIC 29302WU) сделает из 5V то, что нужно модулю.

Сервер

Сервер написал примитивный — хранение координат и рисование на Яндекс.картах. В дальнейшем возможно добавление разных фич, включая поддержку многих пользователей, статус «на охране/не на охране», состояние систем автомобиля (зажигание, фары и пр.), возможно даже управление системами автомобиля. Конечно, с соответствующей поддержкой трекера, плавно превращающегося в полновесную сигнализацию.

Полевые испытания

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

После установки преобразователя питания и укладывания в корпус от дохлого DSL модема система выглядит так:

Припаивал провода, вынул несколько контактов из колодок ардуины. Выглядят так:

Подключил 12V в машине, проехался по Москве, получил трек:

Точки трека достаточно далеко друг от друга. Причина в том, что отправка данных по GPRS занимает относительно много времени, и в это время координаты не считываются. Это явная ошибка программирования. Лечится во-первых, отправкой сразу пачки координат со временем, во-вторых, асинхронной работой с GPRS модулем.

Время поиска спутников на пассажирском сидении автомобиля — пара минут.

Выводы

Создание GPS трекера на ардуино своими руками возможно, хотя и не является тривиальной задачей. Главный вопрос сейчас — как спрятать устройство в машине так, чтобы оно не подвергалось воздействиям вредных факторов (вода, температура), не было закрыто металлом (GPS и GPRS будут экранироваться) и не было особенно заметно. Пока просто лежит в салоне и подключается к гнезду прикуривателя.

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

Использованные устройства

  • Arduino Mega 2560 [compatible]
  • Arduino Uno [compatible]
  • GPS SkyLab SKM53
  • SIM900 based GSM/GPRS Shield
  • DC-DC 12v->5v 3A converter
Литература

  1. Оф. сайт Arduino (содержит подробную информацию и о платах, и об их программировании)
  2. TinyGPS (ссылка на скачивание в середине страницы)
  3. GPS SKM53 Datasheet
  4. Описание GSM/GPRS Shield на SIM900
  5. SIM900 AT Commands
  6. Документация по Яндекс.Картам
Код

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

Для компиляции кода для ардуино нужно импортировать библиотеку tinygps.

UPD Код: GDrive
Скетч

GPS-трекер [Амперка / Вики]

Видеоинструкция

Что потребуется

Как собрать

Установите Troyka Slot Shield на Iskra Neo

Переверните приёмник GPS/GLONASS на 180 градусов и вставьте в правый верхний слот.

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

Переверните картридер и вставьте его в нижний средний слот. Не забудьте отформатировать microSD карту в FAT32.

Импорт данных

Скопируйте файл dataGPS.csv с microSD на свой компьютер.

Зайдите на сервис Google My Maps и нажмите кнопку + создать новую карту в верхнем левом углу экрана.

Откроется карта со слоем, на который можно нанести собственные метки.

Нажмите кнопку импорт и выберите сохранённый файл dataGPS.csv

Укажите колонку таблицы с координатами — это столбец с названием Coordinates. Трекер пишет сначала широту, затем долготу.

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

Трек готов. Расшарьте свою карту и поделитесь маршрутами путешествий с друзьями.

Скетч

Прошейте контроллер скетчем через Arduino IDE.

gps-tracker.ino
// библиотека для работы с устройствами по SPI
#include <SPI.h>
// библиотека для работы с SD-картой
#include <SD.h>
// библиотека для работы с GPS устройством
#include <TroykaGPS.h>
// создаём объект класса GPS и передаём в него объект Serial1 
GPS gps(Serial1);
// пин светодиода
#define LED_PIN           A0
// пин кнопки
#define BUTTON_PIN        13
// пин CS micro-sd карты
#define CHIP_SELECT_PIN   9
// интервал времени записи данных на карту
#define INTERVAL          5000
// задаём размер массива для времени, даты, широты и долготы
#define MAX_SIZE_MASS 16
// массив для хранения текущего времени
char time[MAX_SIZE_MASS];
// состояние записи
bool stateRec = false;
// запоминает текущее время
long startMillis = millis();
 
void setup()
{
  // открываем последовательный порт для мониторинга действий в программе
  Serial.begin(115200);
  // ждём, пока не откроется монитор последовательного порта
  // для того, чтобы отследить все события в программе
//  while (!Serial) {
//  }
  Serial.print("Serial init OK\r\n");
  // открываем Serial-соединение с GPS-модулем
  Serial1.begin(115200);
  // устанавливаем светодиод в режим выхода
  pinMode(LED_PIN, OUTPUT);
  // устанавливаем кнопку в режим входа
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  // выводим информацию об инициализации в Serial-порт
  Serial.println("Initializing SD card...");
  // инициализируем SD-карту
  while (!SD.begin(CHIP_SELECT_PIN)) {
    Serial.println("Card failed, or not present");
    delay(1000);
  }
  // выводим информацию в Serial-порт
  Serial.println("Card initialized");
  // создаём объект dataFile класса File для работы с файлами
  File dataFile = SD.open("dataGPS.csv", FILE_WRITE);
  // если файл существует
  if (dataFile) {
    // записываем название будущих данных на карту памяти
    dataFile.println("Time, Coordinates, Speed");
    // закрываем файл
    dataFile.close();
    Serial.println("Save OK");
  } else {
    Serial.println("Error opening test.csv");
  }
}
 
void loop()
{
  // Фиксируем нажатие кнопки
  if (!digitalRead(BUTTON_PIN)) {
    // меняем состояние «запись» / «не запись» на карту памяти 
    stateRec = !stateRec;
    // меняем состояние светодиода индикации
    digitalWrite(LED_PIN, stateRec);
  }
  // если пришли данные с gps-модуля
  if (gps.available()) {
    // считываем данные и парсим
    gps.readParsing();
    // проверяем состояние GPS-модуля
    switch(gps.getState()) {
      // всё OK
      case GPS_OK:
        Serial.println("GPS is OK");
        // если прошёл заданный интервал времени
        if (millis() - startMillis > INTERVAL && stateRec) {
          // сохраняем данные на карту памяти
          saveSD();
          // запоминаем текущее время
          startMillis = millis();
        }
        break;
      // ошибка данных
      case GPS_ERROR_DATA:
        Serial.println("GPS error data");
        break;
      // нет соединение со спутниками
      case GPS_ERROR_SAT:
        Serial.println("GPS no connect to satellites");
        break;
    }
  }
}
 
// функция сохарение данных на карту памяти
void saveSD() {
  File dataFile = SD.open("dataGPS.csv", FILE_WRITE);
  // если файл существует и открылся
  if (dataFile) {
    // считывает текущее время
    gps.getTime(time, MAX_SIZE_MASS);
    // записываем время на карту памяти
    dataFile.print("\"");
    dataFile.print(time);
    dataFile.print("\"");
    dataFile.print(",");
    dataFile.print("\"");
    // считываем и записывае координаты широты и долготы на карту памяти
    dataFile.print(gps.getLatitudeBase10(), 6);
    dataFile.print(",");
    dataFile.print(gps.getLongitudeBase10(), 6);
    dataFile.print("\"");
    dataFile.print(",");
    dataFile.print(gps.getSpeedKm());
    dataFile.println("km/h");
    dataFile.close();
    Serial.println("Save OK");
  } else {
    Serial.println("Error opening test.csv");
  }
}

Что дальше?

В машине трекер работает от встроеной USB-розетки. Если хотите сделать его более автономным, используйте Power Shield или аккумулятор «крона».

Хотите собрать другой девайс? Выберите будущее устройство из списка проектов на Slot Shield.

Где скачать необходимые библиотеки и как их установить?

Разработка системы GPS мониторинга транспорта в малых и средних городах

Введение

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

Принцип работы системы GPS мониторинга

Система мониторинга состоит из четырех элементов: спутник, GPS трекер, сервер и смартфон.

GPS трекер получает сигнал со спутника, высчитывает свои собственные геоданные. Данные передаются системе управления на микроконтроллере, где они расшифровываются. Затем эти данные передаются в GSM модем, который с помощью GPRS соединения отправляет эти данные на  сервер. Данные о местоположении, скорости  и времени отправляются на сервер. По запросу клиента с сервера данные считываются и выводятся на экран мобильного устройства.

GPS трекер

GPS трекер — это небольшое устройство для спутникового слежения за транспортными средствами, животными и другими объектами. С помощью него можно отслеживать местоположения объектов онлайн, а также увидеть  историю передвижений объекта на электронной карте. Технически GPS трекер сочетает в себе GPS приемник, GSM модем и управляющий микроконтроллер. С помощью GPS приемника устройство вычисляет скорость движения, координаты, высоту над уровнем моря и время. “Общение” GPS приемника с микроконтроллером осуществляется по последовательному интерфейсу связи UART на скорости 9600 бод. Микроконтроллер получает данные от GPS приемника в формате протокола NMEA [1] с периодом 1 секунда. Микроконтроллер обрабатывает полученные данные и посылает их по UART на модем. GSM модем отправляет на сервер необходимую информацию, по каналам сотовой связи.

GPS приемник представляет собой плату, на которой расположены микросхема NEO-6M, EEPROM память, стабилизатор напряжения на 3.3 вольта и антенна. Напряжение питания  приемника 5 вольт.

NEO-6M — это автономный GPS модуль Швейцарской фирмы u-blox,  размером 16×12,2×2,4 мм. Приемник является 50 канальным (может работать с 50 спутниками одновременно), точность нахождения координат до 2х метров, время обновления координат один раз в секунду. Напряжение питания чипа составляет от 2.7 до 3.6 вольт. Модуль может работать в диапазоне температур от  -40°C до 85°C.

В качестве управляющего микроконтроллера (МК) был выбран ATmega328p на отладочной плате Arduino Uno R3. Отладочная плата была выбрана по нескольким причинам: присутствием обвязки микроконтроллера Atmega328p, наличием аппаратного UART интерфейса, возможностью реализации программного UART интерфейса, бесплатно распространяемой  средой разработки, необходимым объемом FLASH (32кб) памяти, достаточным количеством цифровых выводов (более 5ти), низким энергопотреблением (менее 1мВт), ненадобностью сторонних программаторов.

GSM модем представляет собой плату, на которой расположены: модуль NEOWAY M590E, слот под сим карту и другие необходимые элементы. “Общение” с GSM модемом осуществляется с помощью интерфейса USART. Управляется модем специальными АТ командами [2], которые изложены в нескольких стандартах связи, среди которых GSM 03.40 и GSM 07.07. NEOWAY M590E — это беспроводной модуль GSM/GPRS связи, размером 28х22х2.6мм. Напряжение питания модуля составляет 3.3-4.5 вольт, рабочий ток 210мА, ток в режиме сна 2.5мА. Модуль может потреблять пиковый ток до 2х ампер при поиске сотовой сети и передачи данных. NEOWAY M590E поддерживает такие стандарты связи как GSM, GPRS class 10, а так же протоколы TCP/IP/FTP/UDP, что позволяет ему работать в сетях сотовой связи.  Модуль работает на европейских частотах 900/1800Мгц и в диапазоне температур от -40°C до 85°C.

Принципиальная схема GPS трекера приведена на рисунке 3. Для преобразования напряжения питания из 12-15 вольт в 5 используется стабилизатор напряжения КР142ЕН5В.

Алгоритм работы GPS трекера

При подаче питания на устройство, GPS приемник включается автоматически, а GSM модем включается микроконтроллером (МК). Затем МК проверяет работоспособность модема и соединение с интернетом. После чего проверяется, получены ли данные с GPS приемника, и если данные получены, то они обрабатываются. Завершающим шагом является подключение к серверу, отправка геоданных и отключение от него. После чего весь цикл начинается с проверки работоспособности GSM модема.

Код управляющей программы, написанный на языке C  в среде разработки Arduino IDE. Для работы с протоколом NMEA используется библиотека «TinyGPS++», а так же на рисунке 4 приведен пример подключения к FTP серверу и отправки геоданных на него с применением АТ команд.

Android приложение

Для создания пользовательского приложения на базе ОС Android используется бесплатная среда разработки Android Studio. Используемый язык программирования Java. Приложение подключается к серверу, считывает данные с него и обрабатывает их. После чего происходит вывод этих данных на экран смартфона в качестве объекта на карте. Для работы с картами используется Яндекс библиотека MapKit [3].

Работа приложения осуществляется в 3х потоках: Графический поток, поток “Сервер”, поток “Таймер”. Графический поток отвечает за обновление графического интерфейса программы, на котором отражается карта и объекты на ней. Поток сервер необходим для подключения к серверу, получения  и обработки данных от него. Поток таймер отвечает за интервал между обновлениями геоданных на карте, которые получены от сервера.

Заключение

Разработана система GPS мониторинга транспорта. Главными плюсами разрабатываемого устройства является его низкая цена по сравнению с аналогами. Низкая цена обусловлена применением наиболее дешёвых и доступных электронных компонентов на сегодняшний день. Данное устройство может быть использовано пассажирскими автотранспортными предприятиями малых и средних городов. С помощью этого устройства пассажиры будут знать, где находится нужный им автобус, а предприниматель отслеживать работу водителей. Так же данное устройство может быть применено транспортными компаниями, для отслеживания работы транспортных средств.

Настройка GPS трекера GT02A

В данном материале будут описаны основные нюансы по настройке и отслеживанию GPS трекера  GT02A и его аналогов.
Компактный GPS трекер GT02A от производителя 
dyegoo всегда поможет Вам узнать где находится Ваш автомобиль или где он ездил на протяжении дня. Простота в установке даст Вам возможность использовать его с любым видом техники, начиная мотоциклом и заканчивая грузовиками, тракторами и другой техникой.


Разновидности трекеров GT02A
В связи с тем что трекер GT02A набрал огромную популярность среди автомобильных маячков его начали производить как минимум на 7 разных заводах, при этом настройки и протоколы работы у всех разные, но на внешний вид все они похожи, наши инженеры попытались собрать те трекеры которые попадались к нам на настройку. Внимательно рассмотрите Вашей плату и сравните ее с фото представленным ниже. Настройка будет приведена на примере сайта gps-trace.com.ua, а смс команды рекомендуем смотреть в родной брошюре-инструкции. 


Порядок настройки GPS трекера GT02A

Отключить ПИН-код на сим карте.

Изменить ПИН-код*
Настроить точку APN
Задать сервер, порт, протокол передачи
Настроить часовой пояс
Поменять дополнительные параметры устройства

* ПИН-код по умолчанию: 666666 либо 000000, обычно 666666


Набор управляющих СМС инструкций GPS трекера GT02A

APN,пароль,APN оператора связи#
SERVER,пароль,0,IP адрес,порт,0#
PASSWORD,старый пароль,новый пароль#
PARAM,пароль#
GMT,пароль,временная зона, код временной зоны#
FACTORY,пароль# – восстановить заводские настройки
TIMER,пароль,,GPS интервал#
WHERE,пароль# – координаты устройства
VERSION,пароль# – версия устройства
RESET,пароль# – перезагрузить GT02A
STATUS,пароль# – статус

Коды ошибок управляющих СМС
100 Проблемы с длинной правила
101 Ошибка данных
102 Плохой формат команды
103 Некорректный формат пароля
104 Ошибка связанная с SOS номером*
105 Отсутствует SOS номер
106 Неправильный SOS номер
107 Отсутствует такая команда
108 Отсутствует заключительный символ #
109 Неверный пароль


Пример настройки GPS трекера GT02A на работу gps-tracker.com.ua

Отправляем с любого мобильного телефона СМС-команды трекеру для его настройки:

Заводской пароль 666666, изредка бывает 000000
1: FACTORY,666666# – сбросить настройки на заводские.
2: PASSWORD,666666,123456# – установить новый ПИН-код (придумайте свой вместо 12435)
3: APN,123456,INTERNET# – задать точку доступа APN, Например для МТС “INTERNET”

4: SERVER,123456,0,46.4.18.67,10113,0# – настраиваем IP адрес и порт сервера GPS мониторинга.
5: PARAM,123456# – получить СМС с уникальным идентификатором (IMEI код) трекера для привязки к онлайн платформе.
6: GMT,123456,E,2# – устанавливаем временную зону  

7: TIMER,123456,,30#      (Две запятые – не ошибка!!!) – указать устройству 30 секундный интервал передачи GPS координат на сервер. По умолчанию 10 секунд.


Пример настройки GPS трекера GT02A

Важно!!! при добавлении устройства укажите модель TK-110 а в качестве ID укажите 11ти-значный ID с крышки трекера и добавьте 0 в начале.

Отправляем с любого мобильного телефона СМС-команды трекеру для его настройки:

Заводской пароль 666666, изредка бывает 000000
1: FACTORY,666666# – сбросить настройки на заводские.
2: PASSWORD,666666,123456# – установить новый ПИН-код (придумайте свой вместо 12435)
3: APN,123456,INTERNET# – задать точку доступа APN, Например для МТС “INTERNET”

4: SERVER,123456,0,193.193.165.166,20488,0# – настраиваем IP адрес и порт сервера GPS мониторинга.
5: GMT,123456,E,2# – устанавливаем временную зону  

6: TIMER,123456,,30#      (Две запятые – не ошибка!!!) – указать устройству 30 секундный интервал передачи GPS координат на сервер. По умолчанию 10 секунд.


D


SMS GPS-трекер из Neoway M590 and ublox NEO-6 часть 1. Собираем детали и тестим

In English

Это продолжение моей серии постов о GSM / GPRS модуле Neoway M590.

Первый пост этой серии касался основных сценариев использования модуля с Arduino, таких как отправка/получение SMS, определение телефонного звонка вместе с номером звонящего и даже использование GPRS. Второй пост — более практичный пример автоматизированного управления обогревом гаража с помощью SMS-сообщений.

В этот раз я продемонстрирую более сложный пример использования этого модуля — создание GPS-трекера, который отправляет свое местоположение владельцу по SMS. Нам придется изучить настройки энергосбережения GSM и GPS модулей, чтобы обеспечить более длительную работу от батареи у готового устройства. Это руководство из двух частей еще и дополнит первый пост серии более подробными инструкциями по сборке и первым шагам с Neoway M590.

  1. Neoway M590 GPRS Tutorial: sending and receiving files from/to SD card
  2. Application of Neoway M590: remote control for garage heater
  3. SMS GPS-трекер из Neoway M590 and ublox NEO-6 часть 2. Сборка и программирование

Ссылки на даташиты по используемому оборудованию:

Требуемое железо

  • Очевидно, нам понадобятся как GSM/GPRS модуль Neoway M590 и GPS модуль ublox NEO-6. Первый, как правило, продается как удобный и дешевый комплект для сборки на Aliexpress и Taobao (например вот такой набор с похожей на мою платой с разъемом на 14 контактов. Тот который купил я уже успел подорожать до 5.5 USD: ссылка на него). GPS модуль можно купить в виде готовой распаянной печатной платы с огромной прямоугольной керамической антенной (ссылка).

  • Для GPS трекера мы используем старую добрую ATMega 328P. На самом деле, я ухитрился купить за небольшую цену набор из самой Меги, DIP-разъема, стабилизатора напряжения 7805, электролитических конденсаторов и 16МГц резонатора с двумя конденсаторами на 22пФ. Не все детали пригодятся, но блин, дешево же! Сейчас не смог найти тот комплект который покупал я, но вот это тоже отлично пойдет (5 штук).
    Чип ATMega328p, который известен как сердце Arduino Uno и просто неплохая надежная старая железка. 8МГц резонатор в металлическом корпусе посередине.

  • 8МГц резонатор. К сожалению, мой комплект ATMega не включал такого, и мне пришлось вырвать его из какой-то несчастной железки.
    Надпись 8.000 сверху — явный знак 8МГц резонатора.

  • Литиевая батарея, которую можно достать из старого мобильного или просто купить + зарядное устройство для литиевых батарей, например вот такое:
    З/У на базе микросхемы TP4056 (даташит). Можно купить дешево и в большом количестве на Aliexpress и подобных магазинах.

  • Ассортимент конденсаторов. В частности, помимо стандартных электролитических и керамических кондеров, нам понадобятся большие конденсаторы большой емкости (>1000мкФ), которые можно найти на любой материнской плате.

  • Опционально — чтобы протестировать каждую часть оборудования перед сборкой устройства, вам понадобятся: Arduino, разные проводки для макетной платы (не знаю, я еще сфотографировал макетную плату, но вообще и она может пригодится для удобства).

  • Пара кривоватых рук😀 (по крайней мере у меня так)
Кажется, все. Ну что, начнем?
Не так уж и много деталей для такого девайса.

Сборка и тест M590

Сборка

Когда Вы распакуете свой пакет из Китая (надеюсь, с защитой от статики, но кто знает…), Вы увидите кучку всяких-разных деталей:
Фото печатной платы отлично демонстрируют, какие контакты M590 выведены на штырьковый разъем (довольно малое число, я бы сказал):
Верх печатной платы
Низ печатной платы

Процесс пайки комплекта довольно прост, хотя даже это простое дело можно зафакапить.Разъемы, резисторы (маленькие черные прямоугольники с цифрами) и керамические конденсаторы (маленькие желтые прямоугольники) — неполярные компоненты, что означает, что их можно припаять как угодно.В моем комплекте не было одного керамического конденсатора, если у Вас так же, то можете припаять на его место любой другой похожий конденсатор.

Танталовый конденсатор и светодиоды должны быть припаяны в определенной ориентации для того чтобы они работали. Полярность таких деталей (то есть то, какой стороной их припаять) можно понять по маркировке на корпусе.

На танталовых конденсаторах есть темная полоса со стороны + :


SMT светодиоды имеют 2 отличительные особенности, которые отзличают анод от катода, а именно рисунок внизу и два зеленых пятна, которые едва видны сверху:
Все остальное собирается проще простого. На посадочном месте модуля GSM есть белая точка, обозначающая первую ногу. Распиновку модуля смотрим в документе Neoway M590 Hardware design manual. По шелкографии на посадочном месте держателя SIM-карт также понятно, как его припаять благодаря треугольному скосу.

Так вот выглядит собранный модуль:

Верх печатной платы
Низ печатной платы

Теперь осталась только одна важная доработка.В мануале на M590 упоминается, что он может брать большие пиковые токи из своего источника питания, поэтому на линии питания надо добавить мощный конденсатор для хранения энергии и сглаживания этих импульсов, чтобы уменьшить требования к источнику питания.В моем комплекте M590 был небольшой конденсатор на 220 мкФ. Такой пойдет для питания модема от источника питания, который может предоставить не менее 0.8А постоянного тока!
Давайте-ка уменьшим эту цифру и припаяем мощный электролит прямо поверх печатной платы к линиям питания:
У меня 4700мкФ

^ ЕСЛИ ЭТО НЕ СДЕЛАТЬ ТО ЕСТЬ ШАНС ЧТО МОДУЛЬ БУДЕТ ПОСТОЯННО СБРАСЫВАТЬСЯ и постоянно выдавать в последовательный порт что-то такое:
MODEM:STARTUP
MODEM:STARTUP
MODEM:STARTUP
MODEM:STARTUP
MODEM:STARTUP
MODEM:STARTUP
MODEM:STARTUP

Теперь проверим, работает ли вообще, потому что дешево — не всегда хорошо…

Тест

Распиновка моего модуля (ряд штыревых разъемов 2×7):
НогаФункция
1GND
2GND
3Vcc
4Vcc
5NC
6NC
7TX (M590 нога 8)
8RX(M590 нога 7)
9NC
10NC
11NC
12RING (M590 нога 10)
13NC
14ON/OFF (M590 нога 19)

Благодаря конденсатору, который мы припаяли, мы можем подключить модуль непосредственно к встроенному регулятору напряжения 3,3 В на Arduino Uno. Просто подключите свой модуль к Arduino следующим образом:
Пин ArduinoПин M590
GNDGND (1 or 2)
3.3VVCC (3 or 4)
D8TX (8)
D9RX (7)


В предыдущих постах я использовал библиотеку SoftwareSerial.h для общения с Neoway M590. Это работало в какой-то степени, но меня постоянно преследовали глюки связанные с искажением символов. Оказывается, эта библиотека слишком медленная и из-за задержек при софтовом распознавании входного потока символов они иногда искажаются.

Теперь я использую библиотеку AltSoftSerial, и предлагаю Вам сделать то же самое (или выбрать другую библиотеку для Arduino, но не SoftwareSerial.h). Просто посмотрите на разницу, это просто какая-то реклама стирального порошка:

SoftwareSerial
AltSoftSerial

Теперь загрузим код, который проверяет, отвечает ли модуль Neoway M590 на AT команды. Для этого используйте немного модифицированный скетч Echo, который поставляется в примерах для AltSoftSerial. Надо поменять скорость altSerial на 115200 бод (см. скриншот выше).

Если светодиод не начнет мигать после подсоединения питания к M590, значит нужно соединить контакты ON/OFF и GND модуля минимум на 0,5 секунды. После того светодиод на модуле начнет мигать, и в мониторе последовательного порта Arduino IDE должно появиться гордое MODEM: STARTUP. Попробуйте ввести строку AT и отправить ее с завершающей последовательностью CRLF в последовательном порте Arduino IDE для проверки связи в обоих направлениях. Модуль должен ответить OK. Если текста не видно, стоит попробовать мой скетч автоматического обнаружения из следующего абзаца. Еще раз проверьте свои соединения. Если он все еще не работает, то можно выкидывать. За такую цену можно купить штук пять таких модулей и попробовать каждый из них.😊

В процессе написания моего предыдущего поста про Neoway M590 я узнал, что хоть скорость порта модуля по умолчанию должна быть 115200, на самом деле на модулях, поставляемых из Китая зачастую видны явные признаки Б/У (уже паяные ноги например) и соотвественно они часто бывают настроены на другую скорость. Чтобы упростить поиск правильной скорости , я написал скетч, который автоматически определяет скорость порта.
Загрузите его и больше не нужно будет вручною пробовать каждую скорость:

Сборка и тест модуля NEO-6

Тут собирать почти нечего. Надо просто вдавить антенну в RF разъем модуля и припаяться к 4 контактам модуля (Vcc, GND, RX, TX). Неплохо бы не быть таким дикарем как я (фото внизу), и припаять штыревой разъем к модулю… Также для тестов я припаял небольшой конденсатор к Vcc и GND для стабильного питания.
Готово

Теперь нужна библиотека для декодирования GPS, например эта -> NeoGPS. Она очень конфигурируемая и может быть настроена на использование библиотек AltSoftSerial, NeoSWSerial или даже SoftwareSerial, и даже аппаратных последовательных портов на Leonardo, Mega и т. д. для подключения к модулю GPS.

Я нашел руководство по установке NeoGPS на GinHub довольно полезным для разворачивания библиотеки. Хотя оно настоятельно не рекомендует использовать SoftwareSerial, для тестирования и она сойдет.

Теперь подключим RX и TX модуля в соответствии с файлом GPSport.h из NeoGPS:


Пин ArduinоПин NEO-6
GNDGND
3.3VVCC
D4TX
D3RX

Теперь запустим Arduino и загрузим слегка модифицированный скетчи NMEA.ino из примеров к библиотеке NeoGPS:
Модулям GPS обычно требуется некоторое время (от 5 до 15 минут в отдаленных районах) для запуска и получения локации со спутников. Как только модуль получит фикс (координаты), он начнет мигать светодиодом два раза в секунду.
Теперь в Мониторе посл. порта Arduino должен появиться поток данных GPS, включая широту и долготу в формате без десятичной точки. Можно попробовать вставить эти координаты в Google Maps и убедиться, что модуль GPS работает:
Вроде бы правильно!

Вот ссылка на ЧАСТЬ 2, где мы продолжим собирать GPS трекер и программировать его.

Разработка ESP32 LoRa GPS Tracker решений с платой TTGO T-Beam


В прошлом году компания TTGO представила небольшую плату ESP32 LoRa с OLED дисплеем, которую до сих пор можно приобрести примерно за $14. Но теперь компания вернулась обратно к аналогичной плате под названием TTGO T-Beam, у которой нет дисплея, но добавлена поддержка GPS и держатель для батареи (18650), поэтому она должна идеально подходить для всех видов приложений Lora GPS трекеров.

Нажмите, чтобы увеличить

Технические характеристики платы TTGO T-Beam:

  • SoC – Espressif ESP32 двухъядерный процессор Xtensa LX6 с WiFi и Bluetooth
  • Память – PSRAM
  • Хранилище – 4 Мб SPI флэш-память
  • Связь
    • 802.11 b / g / n WiFi до 150 Мбит / сек + классический Bluetooth 4.2 и LE с “3D антенной”, которая припаяна к печатной плате
    • LoRa
      • Версии 433, 868 и 915 МГц с антенной SMA
      • Потребляемая мощность – 120 мА @ +20 дБм; 90 мА @ +17 дБм; 29 мА @ +13 дБм
      • Чувствительность приемника
        • -139 дБм с LoRa и 62.5 кГц и SF = 12 и 146 бит / с
        • -136 дБм с LoRa и 125 кГц и SF = 12 и 293 бит / с
        • -118 дБм с LoRa и 125 кГц и SF = 6 и 9380 бит / с
        • -123 дБм с FSK и 5 кГц и 1.2 Кбит / с
  • Местоположение – GPS модуль Ublox NEO-6M с керамической антенной
  • Расширение – 26-контактный разъем с GPIO, ADC, VP / VN, DAC, Touch, SPI, I2C, UART, 2x контакта “LoRa” и питание (5 В / 3.3 В/GND)
  • Отладка / программирование – микро USB порт с чипом CP2104
  • Разное – две кнопки (включение / выключения и GPIO39)
  • Питание – 18650 батарея (не входит в комплект)
Нажмите, чтобы увеличить

Плата может программироваться с помощью Arduino IDE и вы сможете найти образы кода на Github, в которых показано как получить и отправлять данные через LoRa, и получать данные GPS.

TTGO T-Beam можно приобрести на Banggood за $30.89, плата поставляется с антенной LoRa, двумя не припаянными разъемами, как показано ниже на картинке. GPS антенна уже прикреплена к плате, а WiFI / BT антенна припаяна к самой плате, так что вам нужна будет всего лишь батарея 18650 и хорошая идея для ее реализации. Плата также продается на Aliexpress в магазине LilyGO, но цена немного выше, примерно $36.

Опять нет определенной версии для частот, таких как AS923 (Азия), KR920-923 (Корея ) или IN865-867 (Индия), но насколько известно, первые две работают с 915 МГц, а вот последний с 868 МГц и просто нужна конкретная прошивка и сама плата должна быть запрограммирована производителем. Например, в скором времени компания RAK Wireless предоставит для обзора плату RAK811 Lora трекер версии 915 МГц и прошивкой для AS923 (Азия). Но пока не известно, возможно ли такое с платой TTGO T-Beam.

Выражаем свою благодарность источнику с которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

Система слежения за транспортными средствами

на основе GPS и GSM

 #include 
#include 
#include 
ЖК-дисплей LiquidCrystal (13, 12, 11, 10, 9, 8);

статическая константа int RXPin = 4, TXPin = 3;
static const uint32_t GPSBaud = 9600;
// Объект TinyGPS ++
TinyGPSPlus gps;
int temp = 0, я;
// Последовательное соединение с устройством GPS
SoftwareSerial SS (RXPin, TXPin);
Строка stringVal = "";
void setup () {
  Serial.begin (9600);
  ss.begin (GPSBaud);
  lcd.begin (16,2);
  pinMode (13, ВЫХОД);
  digitalWrite (13, LOW);
  ЖКprint («Отслеживание транспортных средств»);
  lcd.setCursor (0,1);
  lcd.print («Система»);
  задержка (2000);
  gsm_init ();
  lcd.clear ();
  Serial.println («AT + CNMI = 2,2,0,0,0»);
  lcd.print («Инициализация GPS»);
  lcd.setCursor (0,1);
  lcd.print ("Нет диапазона GPS");
  задержка (2000);
  lcd.clear ();
  lcd.print («Обнаружен диапазон GPS»);
  lcd.setCursor (0,1);
  lcd.print («GPS готов»);
  задержка (2000);
  lcd.clear ();
  lcd.print («Система готова»);
  темп = 0;
}

пустой цикл ()
{
serialEvent ();

      в то время как (темп)
      {
        в то время как (сс.доступно ()> 0)
        {
          gps.encode (ss.read ());
                если (gps.location.isUpdated ())
                {
                 темп = 0;
                 digitalWrite (13, ВЫСОКИЙ);
                 отслеживание ();
                }
          если (! темп)
          перерыв;
        }
      }
      digitalWrite (13, LOW);
}
void serialEvent ()
{
  пока (Serial.available ()> 0)
  {
    if (Serial.find ("Отслеживание транспортного средства"))
    {
      temp = 1;
      перерыв;
    }
    еще
    {
    темп = 0;
    }
  }
}
void gsm_init ()
{
  ЖКЧисто();
  lcd.print ("Модуль поиска ..");
  логическое at_flag = 1;
  пока (at_flag)
  {
    Serial.println («AT»);
    задержка (1);
    пока (Serial.available ()> 0)
    {
      если (Serial.find ("ОК"))
      at_flag = 0;
    }
    
    задержка (1000);
  }
  lcd.clear ();
  lcd.print («Модуль подключен ..»);
  задержка (1000);
  lcd.clear ();
  lcd.print («Отключение ECHO»);
  логическое echo_flag = 1;
  пока (echo_flag)
  {
    Serial.println ("ATE0");
    пока (Serial.available ()> 0)
    {
      если (Serial.find ("ОК"))
      echo_flag = 0;
    }
    задержка (1000);
  }
  ЖКЧисто();
  lcd.print («Эхо выключено»);
  задержка (1000);
  lcd.clear ();
  lcd.print («Поиск сети ..»);
  логический net_flag = 1;
  пока (net_flag)
  {
    Serial.println («AT + CPIN?»);
    пока (Serial.available ()> 0)
    {
      if (Serial.find ("+ CPIN: READY"))
      net_flag = 0;
    }
    задержка (1000);
  }
  lcd.clear ();
  lcd.print ("Сеть обнаружена ..");
  
  задержка (1000);
  lcd.clear ();
}
void init_sms ()
{
  Serial.println («AT + CMGF = 1»);
  задержка (400);
  Serial.println ("AT + CMGS = \" 8825737586 \ ""); // используйте свой 10-значный номер ячейки.здесь
  задержка (400);
}
void send_data (строковое сообщение)
{
  Serial.print (сообщение);
 задержка (200);
}
void send_sms ()
{
  Serial.write (26);
}
void lcd_status ()
{
  lcd.clear ();
  lcd.print («Сообщение отправлено»);
  задержка (2000);
  lcd.clear ();
  lcd.print («Система готова»);
  возвращение;
}
пустое отслеживание ()
{
    init_sms ();
    send_data ("Предупреждение об отслеживании транспортных средств:");
    Serial.println ("");
    send_data ("Текущее местоположение вашего автомобиля:");
    Serial.println ("");
    Serial.print ("Широта:");
    Серийный принт (gps.location.lat (), 6);
    Serial.print ("\ n Долгота:");
    Serial.println (gps.location.lng (), 6);

   // https://www.google.com/maps/@8.2630696,77.3022699,14z
   Serial.print ("https://www.google.com/maps/@");
   Serial.print (gps.location.lat (), 6);
   Serial.print (',');
   Serial.print (gps.location.lng (), 6);
   Serial.print (", 14z");
    Отправить смс();
    задержка (2000);
    lcd_status ();
}
 

Arduino GPRS / GPRS Tracker Shield

Описание

Arduino GPRS / GPS Tracker Shield основан на модуле Quectel M95 GSM / GPRS с L96 GNSS / GPS.Встроенная уникальная технология QuecFOTA ™ позволяет M95 обновлять прошивку удаленно. Дополнительные функции, такие как интегрированные стеки протоколов TCP / IP, последовательный мультиплексор и расширенные AT-команды, гарантируют быструю и надежную передачу данных и SMS через сеть GSM / GPRS и расширяют функциональность приложения без дополнительных затрат. Сочетание усовершенствованного AGPS, называемого EASY ™ (Embedded Assist System), и проверенной технологии AlwaysLocate ™, L96 полностью соответствует промышленным стандартам и обеспечивает значительное снижение TTFF и сверхнизкое энергопотребление.Технология EASY ™ позволяет L96 автоматически рассчитывать и прогнозировать орбиты с использованием эфемеридных данных (до 3 дней), хранящихся во внутренней флэш-памяти, поэтому модуль может быстро определять положение даже при низких уровнях сигнала и обеспечивать низкое энергопотребление. Благодаря технологии AlwaysLocate ™ L96 может адаптивно регулировать время включения / выключения для достижения баланса между точностью позиционирования и потребляемой мощностью в соответствии с окружающими условиями и условиями движения. Благодаря своим превосходным характеристикам L96 идеально подходит для автомобильных, промышленных и бытовых приложений.Чрезвычайно низкое энергопотребление упрощает применение в чувствительных к мощности устройствах, особенно в портативных устройствах. Мы объединили эти два замечательных модуля на одной плате, чтобы создавать приложения для определения местоположения на Arduino.

  1. Встроенные антенны GSM / GPRS и GNSS, опционально можно подключить внешние антенны. низкое энергопотребление
  2. TTFF (время до первого исправления), холодный старт: в среднем <15 с, теплый старт: в среднем <5 с
  3. Модуль L96 GNSS поддерживает несколько систем позиционирования и навигации, включая GPS, ГЛОНАСС, Galileo, BeiDou, SBAS (включая WAAS , EGNOS, MSAS и GAGAN), QZSS, DGPS и AGPS.
  4. M95 Четырехдиапазонный модуль GPRS поддерживает GSM850MHz, EGSM900MHz, DCS1800MHz и PCS1900MHz.
  5. Модуль L96 имеет встроенную функцию регистратора и обеспечивает возможность регистрации местоположения более 16 часов.
  6. Easy sense 3D FIX, Geo-Fence, статус 1PSS через выход GNSS. штырь, подключенный к Arduino
  7. CR1220 Держатель резервного аккумулятора GPS / GNSS на нижней стороне платы
  8. Разъем внешней активной антенны GNSS (требуется припой)
  9. Потребление менее 100 наноампер при отключении питания Shield с помощью контакта Disable Pin
  10. Поддерживаемая Micro SIM-карта
  11. Контакты управления модулем GNSS: 1PPS, 3D Fix, Force On, Geo-Fence, Reset
  12. Контакты управления модулем GPRS: статус, PowerKey
  13. Светодиоды: 1PPS, 3D FIX, Power, Status, Netlight
  14. Кнопки: Powerkey, User

  1. Управление транспортными средствами
  2. Безопасность и отслеживание активов
  3. Совместное использование велосипедов
  4. Умная парковка

Распиновка

Схема

Описание контактов

_ 3D
Arduino Pin Функция Описание
A0 назначается как выход флага исправления.Вывод будет выводить высокий уровень напряжения, указывающий на успешное позиционирование.
A1 ОТКЛЮЧИТЬ
Переведя этот вывод на ВЫСОКИЙ уровень, можно отключить питание всей платы
A2 СОСТОЯНИЕ Вывод СТАТУС используется для индикации рабочего состояния модуля M95. Он будет выводить LOWlevel, когда модуль включен.
A3 PWRKEY Модуль можно включить, подав на вывод BG96 PWRKEY напряжение ВЫСОКОГО уровня более 500 мс, а затем потянув его вниз.Вы,
, можете применить тот же процесс для отключения питания модуля, если он уже включен.
D9 КНОПКА ПОЛЬЗОВАТЕЛЯ По умолчанию этот штифт вытянут вверх. Когда кнопка нажата, контакт переключается на НИЗКИЙ.
D8 M95 RX Этот вывод выполняет функцию вывода последовательных данных из модуля для связи UART. Программное обеспечение Используется серийный номер.
D7 M95 TX Этот вывод функционирует как ввод последовательных данных для модуля для связи UART.Программное обеспечение Используется серийный номер.
D6 ИНДИКАТОР ПОЛЬЗОВАТЕЛЯ Активен ВЫСОКИЙ, чтобы включить светодиод ПОЛЬЗОВАТЕЛЬ, состояние контакта должно быть ВЫСОКОЕ.
D5 1PPS Импульс в секунду на выходе. Импульс в секунду (PPS) может использоваться для обслуживания времени.
D4 FORCE ON Высокий логический уровень заставит модуль выйти из режима резервного копирования.
D3 GEO-FENCE Может использоваться приложением GEO-FENCE при необходимости.
D2 СБРОС GNSS Модуль L96 можно перезапустить, установив на выводе RESET напряжение ВЫСОКОГО уровня на определенное время, а затем отпустив его.
13 GNSS RX Связь UART, которая подключена к программному последовательному порту Arduino
15 GNSS TX Связь UART, которая подключена к программному последовательному порту Arduino

Размеры

Репозиторий Github

Arduino GPRS / GPS Tracker Shield Репозиторий Github

В комплект входит

    • 1x Sixfab GPRS / GPS Tracker Shield для Arduino

9000 —9 для автомобиля или велосипеда

В этом уроке я собираюсь описать, как сделать GPS-трекер для велосипеда, автомобиля или любого другого транспортного средства.Вы можете отслеживать местоположение вашего автомобиля с помощью смартфона.

Для этого трекера не нужно платить дополнительную плату за обслуживание, только вы должны заплатить плату за передачу данных поставщику услуг сим-карты.
Вы можете использовать любую сим-карту с портативным Wi-Fi роутером 3G / 4G.

Gps трекер от Technoreview85

Вам нужно сделать

  • NEO 6M v2 GPS-модуль
  • Esp 8266 узел MCU (Lolin)
  • LM2596 DC-DC регулируемый понижающий модуль
  • Штыри разъема розетки
  • Пунктирная плата vero
  • Портативный маршрутизатор

Портативный маршрутизатор Wi-Fi, я использую устройство jio-fi
Вы можете использовать любой другой беспроводной маршрутизатор

NEO6M gps-модульESP 8266 Узел MCUDC в понижающий модуль постоянного тока

Как это работает

Модуль GPS отправляет данные о местоположении в узел MCU.
MCU узла подключен к Интернету через Wi-Fi, поэтому он отправляет данные на сервер Blynk. Теперь пользователь получает данные о местоположении через приложение blynk.

приложение Blynk Не только показывает данные о широте и долготе.
, но также показывает положение модуля GPS на карте Google.

Таким образом, пользователь может узнать положение устройства GPS из любой точки мира.

Как сделать

Настройка приложения Blynk

Загрузите приложение blynk из магазина воспроизведения.

Зарегистрируйтесь, используя электронный идентификатор
Войдите в приложение blynk.

Зарегистрируйтесь, используя электронный идентификатор
Войдите в приложение blynk и создайте проект

Сохраните имя проекта GPS, устройство ESP 8266, тип подключения Wi-Fi

После успешного создания проекта blynk отправит вам токен аутентификации по адресу ваш электронный идентификатор.
Это очень важно, нам понадобится этот код для нашего следующего процесса.

Добавить виджет карты и настроить входной контакт как V0

Добавить 3 виджета отображения значений

Назовите эти виджеты как Широта, долгота и скорость

установите эти виджеты — Входной контакт широты = V

Входной контакт долготы = V2 & speed = V3

Настройка нашего приложения Blynk завершена.

Код и библиотеки Arduino

Мы собираемся загрузить код в nodemcu с помощью Arduino IDE, поэтому перед началом загрузки нам потребуется установка поддержки платы esp8266 . Если вы уже использовали esp8266 node mcu, используя свою IDE arduino, ничего не нужно делать.

, вам нужно добавить 2 библиотеки в вашу Arduino IDE

1> Tiny Gps Library

2> Blynk Library

Загрузите код и библиотеки gps-трекера arduino отсюда

Откройте код arduino и установите маршрутизатор » SSID »и пароль

 char auth [] =" ***************************** "; // Ваш ключ аутентификации Blynk Project
char ssid [] = "Ваш SSID"; // Имя вашего сетевого маршрутизатора SSid)
char pass [] = "Ваш пароль"; // Пароль вашего маршрутизатора
 

Введите код аутентификации вашего проекта Blynk.

Теперь перейдите к инструментам — плата и выберите плату — nodemcu 1.0 версии

Выберите свой компорт и загрузите код.

Настройка оборудования и подключения
Схема подключения GPS-трекера

Для тестирования подключите вывод nodemcu D1 к gps RX, вывод D2 к gps TX

Вывод Nodemcu VU к выводу gps vcc и Nodemcu Gnd к gps gnd

Теперь подключите nodemcu с помощью Мобильное зарядное устройство 5в или компьютер.

Маленький светодиодный индикатор smd на модуле GPS будет мигать один раз в секунду, что означает, что модуль GPS NEO 6M подключен к спутнику.Теперь вы можете проверить свою позицию в приложении Blink или на последовательном мониторе Arduino IDE.

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

Имейте в виду: отрегулируйте предустановку и сохраните выходное напряжение понижения по модулю до 5 В. компоненты могут сгореть, если вы используете более 5В на выводе VU nodemcu.

Держите портативный беспроводной маршрутизатор рядом с устройством GPS-трекера, потому что этот трекер работает с Интернетом через маршрутизатор.

Видеоурок для этого проекта

10 лучших GPS-слежения Обзоры Arduino 2021

Заявление об отказе от ответственности: мы используем API-интерфейс партнерской рекламы продуктов Amazon для получения продуктов с Amazon, включая: цену, контент, изображение, логотип, бренд, характеристики продуктов, которые являются товарными знаками Amazon.com. Таким образом, когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию без каких-либо дополнительных затрат для вас .. Подробнее.

Покупка таких товаров, как ноутбуки, у разных дилеров или розничных продавцов может оказаться непростой задачей.Это еще хуже, если вы плохо разбираетесь в Gps Tracking Arduino. Одна из самых важных вещей, которые следует учитывать при покупке Arduino для GPS-слежения, — это характеристики функций.

Почему вы должны купить лучший Gps Tracking Arduino на Amazon

Есть причина, по которой многие люди предпочитают покупать товары на Amazon. Несмотря на то, что Amazon является надежной платформой, у Amazon есть множество ноутбуков, а также она работает напрямую с производителями. Это означает, что вместо того, чтобы покупать ноутбук у продавца, вы получаете его напрямую у компании-производителя.

Amazon выступает в качестве третьей стороны и работает с различными производителями по всему миру. Преимущество Amazon в том, что он предлагает идеальное руководство по каждому типу ноутбуков. Вы увидите четкое описание каждого Gps Tracking Arduino. Это позволяет вам легко принять правильное решение.

Например, в руководстве есть информация о спецификациях Gps Tracking Arduino, которые вы хотите, такие как марка, размер, функции среди других функций. Если вам нужен Gps Tracking Arduino с определенными функциями, у Amazon есть лучшие инструменты для поиска.Все, что вам нужно сделать, это ввести функции, которые вы предпочитаете, и список ноутбуков появится на вашем экране.

Другие преимущества покупки продуктов на Amazon

Покупка Gps Tracking Arduino и других продуктов на Amazon дает множество преимуществ. Вот некоторые из общих преимуществ:

Лучшие цены

Нет сомнений в том, что Amazon предлагает лучшие цены на большинство товаров. Это связано с тем, что платформа работает совместно с множеством производственных компаний и дилеров.В результате отключается множество посредников, что снижает стоимость различных продуктов.

Надежность

Amazon — международная компания, имеющая офисы и магазины по всему миру. Их способность доставки намного выше по сравнению с другими онлайн-платформами. Кроме того, у них есть отличная служба поддержки клиентов, которая работает круглосуточно, чтобы обеспечить удовлетворенность клиентов.

Огромный выбор

У Amazon большое количество продавцов со всего мира. Это означает, что вы можете получать доступ к огромному разнообразию продуктов и услуг каждый день.Это также означает, что у вас есть разные варианты выбора.

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

Надежный

Еще одно преимущество покупки товаров на Amazon — надежность. Компания работает уже много лет и имеет множество положительных отзывов от клиентов со всего мира.

Как выбрать лучшее GPS-слежение Arduino

Как упоминалось ранее, Amazon — одна из лучших платформ для покупки таких продуктов, как Gps Tracking Arduino.Однако иногда бывает сложно получить именно ту Arduino для отслеживания GPS, которую вы хотите, особенно если вы впервые используете платформу.

Вот некоторые из вещей, которые следует учитывать при выборе лучшего Gps Tracking Arduino на Amazon:

Цена

Цена — один из наиболее важных факторов, которые следует учитывать при покупке Arduino Gps Tracking на Amazon. Нет никого, кто не хочет получать качественную продукцию по разумным ценам. С Amazon вы можете сравнить цены на ноутбуки от разных продавцов и выбрать наиболее выгодный.

Марка

Другой важный фактор, который необходимо учитывать при покупке Arduino для GPS-отслеживания на Amazon, — это бренд. Разные продавцы продают разные типы брендов, и важно понимать каждый тип брендов, чтобы принять правильное решение. Качественные и популярные бренды, такие как Apple, обычно стоят дороже, чем менее популярные.

Функция

Вы также должны рассмотреть функциональность Arduino слежения за GPS перед покупкой.Функциональность любого Gps Tracking Arduino обычно зависит от содержащихся в нем спецификаций. Чем сложнее спецификации, тем выше функциональность.

Отзывы старых клиентов

Большинство клиентов оставляют отзывы о своем опыте использования различных Arduino для GPS-отслеживания, которые они купили на Amazon. Отзывы всегда отображаются на той же странице, где находится товар. Просмотр таких обзоров поможет вам понять, хороший или плохой Gps Tracking Arduino вы хотите купить.

Создание GPS-трекера с нуля

У меня возникла идея объединить новый Arduino Nano 33 BLE Sense с SD-картой и модулем GPS для дополнительного проекта, который регистрирует данные GPS и IMU.

Я решил купить Nano 33, MKR Mem Shield и MKR GPS Shield и соединить их все вместе. В то время я не знал, что эти платы несовместимы с посадочными местами, поэтому я объединил их с макетной платой 😐.

Потребовалось некоторое время, чтобы все библиотеки были установлены и все подключено должным образом.Самой большой проблемой был модуль GPS. Это действительно помогает начать отладку кода примера GPS снаружи; при наличии спутникового сигнала 😉.

Код прототипа

Полный эскиз Arduino для вышеупомянутой подключенной системы находится здесь. Но с тем же успехом можно сделать краткий обзор кода. Кидаем импорт и определения ниже:

Затем нам нужно выполнить все настройки GPS и SD-карты. Сложность заключалась в том, чтобы каждый раз при запуске удалять файл DATALOG.csv .

Теперь мы можем записывать все данные на SD-карту. Обратите внимание, что мы можем использовать датчик жестов для остановки и начала записи (в основном цикле).

Так что все в порядке. Концепция прототипа проверена! Пришло время создать собственную печатную плату с той же функциональностью.

Дизайн печатной платы

Дизайн печатной платы определенно был интересным, требующим приличного обучения. Я использовал easyeda для создания своей собственной печатной платы. Моим первым шагом было получение схем от Nano 33, MKR Mem Shield и MKR GPS Shield.Их было достаточно легко найти по техническим ссылкам и через Github. Поскольку это файлы схем Eagle, я загрузил пробную версию Eagle для более глубокого анализа.

Я в основном скопировал всю схему Nano 33 BLE как есть, включая сопоставление имен и номеров компонентов. Затем я добавил модуль GPS (вверху в центре) и подумал о том, как программировать через J-Link (вверху справа):

Надеясь на лучшее, я отправил проект в PCBWay для сборки и сборки. Это был довольно гладкий процесс, с некоторыми вопросами о названии детали и ориентации.

Через пару недель я получил по почте простые печатные платы:

И еще несколько недель спустя (6 недель) я получил обратно полностью собранные печатные платы!

Перепрограммирование загрузчика Arduino

Я купил кабель J-Link EDU Mini, чтобы иметь возможность программировать пользовательскую плату. Я также установил все драйверы J-Link и т. Д. Аналогичное руководство можно найти здесь .

Вы можете найти двоичный файл Arduino bootloader.bin здесь:

  / Users / <имя пользователя> / Library / Arduino15 / packages / arduino / hardware / mbed / 1.1.4 / bootloaders / nano33ble / bootloader.bin  

В итоге я прошил загрузчик через nRF Connect. Скрестив пальцы, все будет работать🤞.

Так оно и было! Когда я подсоединяю USB-кабель, выскакивает Arduino Nano и подключается к моему MacBook.

Оказывается, я сделал несколько ошибок при обратном проектировании , .

  • В схеме Nano 33 есть «Не заполнять» (DNP) для подтягивающего резистора на выводе RESET. Я должен был добавить контрольные точки для этого резистора.В итоге я припаял 4,7К вручную. Это остановило мою плату от автоматического сброса каждую секунду (также можно было настроить UICR, чтобы отключить вывод RESET).
  • На схеме показан резистор 1 МОм, соединяющий экран USB с землей. Но файл Eagle показывает 330 Ом — должно быть 330 Ом. Здесь много споров и компромиссов.
  • Я перепутал провод с датчиком жестов, так что это не сработало. Однако он по-прежнему измерял цвета RGB.

Я решил эти проблемы. Чтобы сделать это устройство портативным, я добавил подключение аккумулятора и зарядку LiPo, а также распределение нагрузки.Я также добавил шину питания 5 В и 3,3 В для питания внешних устройств.

Узнав из дополнительных исследований, я решил добавить больше развязывающих конденсаторов и различных разъемов (включая GPIO).

Я отправил на PCBWay новый дизайн с более компактной компоновкой печатной платы! В настоящее время жду, когда они вернутся 😎.

GPS-трекер с высокой автономностью | Hackaday.io

Общая концепция сборки довольно проста и понятна. Устройство просыпается через определенные промежутки времени с помощью встроенного часов реального времени DS3231, определяет новое положение и возвращается в спящий режим.Для достижения энергоэффективности целью было найти правильный баланс между точностью (подсчет образцов) и энергосбережением. Слишком большая точность, и вы теряете мощность. Слишком большая экономия энергии, и вы теряете точность при движении, а иногда даже можете пропустить целые треки.

Решение заключалось в том, чтобы модулировать время сна между положениями в зависимости от скорости и времени суток. Скорость довольно очевидна: вы можете определять положение примерно каждые несколько минут, сохраняя при этом хорошую точность, когда вы почти не двигаетесь, но не при движении со скоростью 100 км / ч.Время дня не так очевидно, но в моем случае зачем приобретать десятки позиций ночью, когда я знаю, что не буду двигаться?

Чтобы найти этот баланс, потребовалось время и таблица Google 🙂

Еще одна проблема, связанная с энергосбережением, — это модуль SIM808 GPRS. Включение, поиск сети и регистрация в ней потребляют много энергии. Особенно в стране, где покрытие сотовой связи может быть скудным или отсутствовать вовсе. Таким образом, резервное копирование позиций в реальном времени (которое мне все равно не нужно) было продано, а сетевое резервное копирование выполняется только тогда, когда трекер в основном перестает двигаться.И, конечно же, откладывается резервное копирование, если не обнаружено надежного сигнала. Между тем, встроенный 24LC512 может буферизовать колоссальные 4000 позиций. Да, с сожалением вынужден сообщить, что я не использую SD-карту, потому что у меня просто недостаточно места на ATmega328p для хранения всего этого кода 🙁

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

Я использовал трекер во время девятимесячного путешествия по Новой Зеландии. Излишне говорить, что коробка, которую я использую, защищена от непогоды, поэтому трекер все это время был защищен от холода и влажности!

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

Поскольку во время моего путешествия проблема с электричеством не рассматривалась, я обошел эту проблему, реализовав SMS-оповещения, когда либо основная батарея, либо резервная батарея RTC разряжаются.

Координаты GPS также не очень легко читать и понимать без карты, поэтому я быстро добавил базовый веб-интерфейс поверх API, куда я отправлял данные с помощью OpenStreetMap и Leaflet. Этот пользовательский интерфейс далек от совершенства, но он сослужил мне хорошую службу в том, чем я хотел заниматься, и я хотел бы улучшить его в следующие месяцы, когда у меня снова будет неограниченный и надежный доступ к Интернету! \ o /

Система GPS слежения Arduino | element14

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

Электронный блок GPS MatrixTSL EB056 обеспечивает очень гибкий подход к добавлению функций GPS на ваше встраиваемое устройство. Он поставляется с высокочувствительным модулем GPS-приемника UP500, который способен отслеживать местоположение до 30 спутников, регистрировать высоту от –300 до 18000 м, а также скорость до 515 м / с.Модуль даже отлично работает в большинстве помещений, в чем последнее поколение GPS-приемников никогда не было очень хорошо.

Чтобы продемонстрировать функциональность E-блока GPS, мы создали простую программу регистрации, которая сочетает в себе функциональность GPS и хранение E-блока устройства чтения карт SD / MMC. Программа довольно проста и включает в себя выборку координат GPS и их сохранение на карту памяти.Поскольку нам не нужно брать сэмплы очень быстро, в программе используется медленный, но простой метод записи на карточку.

Список деталей

  • Arduino Uno
  • EB093 E-блоки Arduino Shield
  • EB056 Плата GPS
  • EB005 ЖК-плата
  • EB037 SD Board
  • SD Card

a

Сообщение GPS Каждую секунду к микроконтроллеру отправляется строка, содержащая все детали относительно положения, скорости, курса относительно земли и т. д.Компонент GPS использует прерывание приема на основе UART, позволяющее автоматически передавать данные GPS в набор глобальных переменных, к которым можно получить доступ с помощью вызовов макросов компонента GPS. Любые детали, которые не нужны в вашей программе, можно отключить, отредактировав раздел определений компонента с помощью функции настраиваемого кода. Это позволяет вам втиснуть в вашу программу как можно больше функций без использования кода для нежелательных записей GPS.

Совместное использование GPS и карт E-блоков позволяет регистрировать поездки, включая скорость и высоту над уровнем моря.Координаты поездки также могут быть нанесены на график с помощью программного обеспечения, такого как Excel, и объединены с изображением карты, чтобы показать точный маршрут поездки. В примере инициализируется карта, а затем создается файл с именем «log.csv». Если этот файл уже существует на карте, данные будут добавлены в конец файла. Затем на микроконтроллере создается строка, состоящая из значений, переданных от компонента GPS. После создания строка записывается в конец файла на карте. Затем весь этот процесс повторяется каждые десять секунд.Если обнаружена ошибка, программа вернется к началу и попытается снова.

Конечно, схема E-блоков довольно велика, поэтому после того, как система будет запущена и запущена, можно будет использовать таблицы данных E-блоков для сбора схем и создания собственной заказной конденсированной платы. Аппаратное обеспечение Arduino может получать питание через USB-соединение или от батареи 6-12 В через разъем постоянного тока 2,1 мм.

Вот пример вывода программы.

Использование записанных данных GPS для построения на картах Google

Одно приложение для данных, которые вы регистрируете, — это нанесение на карту вашего путешествия на картах Google. У Google есть средство, называемое таблицами слияния, которое вы можете использовать для загрузки файлов .csv в их базу данных, а затем наносить данные на карты Google для удобного просмотра.

Для этого вам потребуется учетная запись Google. Перейдите на сайт Google fusion tables http://tables.googlelabs.com/Home, отсюда вы можете войти в свою учетную запись Google.

Выберите для загрузки новой таблицы слева, сразу под логотипом «Google fusion tables». Перейдите к файлу, расположенному на SD-карте, и выберите его для загрузки. После того, как вы назвали и загрузили файл, вы сможете получить к нему доступ через меню таблиц слияния. Попав в электронную таблицу, вы увидите меню «Правка», к которому вы должны перейти и получить доступ к выбору «Изменить столбцы».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *