Краткое описание GPS трекера Arduino. Подключение GPS-трекера к Arduino Arduino gps трекер для машины

Windows XP

Краткое описание GPS трекера Arduino. Подключение GPS-трекера к Arduino Arduino gps трекер для машины

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

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

Шаг 1: Модуль автотрекера




Показать еще 3 изображения



Модуль дисплея состоит из нескольких основных компонентов, которые можно заказать на Ибэе:

  • GPS модуль NEO6M от компании Ublox (на фото)
  • Магнитометр LSM303DLHC (на фото)
  • Графический дисплей LCD5110 (на фото)
  • Кастомная печатная плата Arduino
  • Литиевый аккумулятор (на фото)

Для питания я использовал 3,7 В литий-ионный аккумулятор. Такие обычно используют для некоторых смартфонов и планшетов, они бывают разных размеров и емкости. Я припаял разъем JST2.0 для подключения аккумулятора, но какой использовать пока не решил.

Вы можете также использовать аккумуляторы типоразмера 18650.
Я купил зарядное устройство на 1А для литий-ионных аккумуляторов с USB разъемом. К нему я прикрепил коннектор JST2.0 для заряда этих аккумуляторов.

Внимание! Стандартный USB порт на компьютере выдает только 0,5 А, поэтому процесс заряда от компьютера будет идти дольше. Заряд займет меньше времени, если использовать источник питания на 1 или 2А, например, USB-адаптер переменного тока.

Схема платы Arduino приложена. Питание регулируется 3,3 В регулятором. S1 – кнопка выключателя.
Buz1,2 – контакты для зуммера, не используются.
Коннектор, помеченный nrf24L01, также не используется.
Коннектор USB-BUB, используется для загрузки скетчей на Arduino.
На фото с дисплеем показана «стрелка», показывающая на предмет и расстояние до него.

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

Шаг 2: Скетчи Arduino

Скетч для автотрекера: файл ArduinoCarTracker.zip

У меня установлен «стандартный» штыревой контакт USB-BUB, поэтому нужен USB-BUB адаптер или аналог (PL2303)
GPS: TinyGPS++ библиотека ссылка
LSM303DLHC: файл Compass.zip

CALIBRATE (Калибровка): эта программа аналогична программе Serial Calibrate в Примерах, но вместо отображения последних считанных данных, она отображает на LCD5110 дисплее максимальные и минимальные считанные данные с каждой оси магнитометра. Эти значения можно использовать для калибровки указания курса и примера маршрута, проведя акселерометр LSM303 через все возможные координаты.

Я изменил программу так, чтобы максимумы и минимумы выводились на дисплей. Запустите программу на модуле трекера. Запустите программу, и медленно и аккуратно поворачивайте и наклоняйте модуль во всех направлениях. Запишите максимумы и минимумы, отображенные на дисплее, и вставьте их в программу, заменяя значения в следующих строках:
compass.m_min = (LSM303::vector){-433, -600, -546};
compass.m_max = (LSM303::vector){+570, +488, +579};
это должно повысить точность компаса.

Когда я качал обновления для Arduino, мне пришлось обновить также библиотеки Adafruit_GFX и Adafruit_PCD8544. Вот ссылки:
Adafruit_GFX
Adafruit_PCD8544
Резюме скетча автотрекера:

Кроме функций setup и loop, я прописал шесть функций:

void setSetPoint(); // установка SetPoint, сохранение координат широты и долготы в EEPROM
void getGPS(); // получение текущих данных GPS
void calculate(); // вычисление дистанции и направления
int getHeading(); // получение данных направления с компаса
byte getPostion(int); // вычисление позиции с помощью направления
void displayDirection(); // выводит данные на дисплей
Блок команд setup() — считывание в EEPROM заданных координат, запуск GPS, компаса, запуск дисплея.
Блок цикличных команд loop() – получение текущих координат с GPS, высчитывание расстояния и направления до заданной точки, вывод на дисплей значения расстояния и стрелки, показывающей направление.
Другие программы для Arduino:
Compass: простой компас, указывающий на север и показывающий направление на дисплее.
GPStoLCD: вывод GPS координат на дисплей.

Время работы аккумулятора: время работы можно увеличить, если убрать диод с модуля GPS.
Заключение: трекер работает нормально. Я редко использую его, потому что он достаточно объемистый и я забываю нажать кнопку выходя из машины.

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

Система глобального позиционирования GPS уже плотно вошла в нашу жизнь. Сегодня сложно представить мобильный телефон без встроенного GPS-модуля. Эта спутниковая система навигации позволяет отслеживать любые объекты, определять их координаты и скорость перемещения. Теперь GPS доступна не только компаниям, разрабатывающим соответствующее оборудование, но и простым радиолюбителям, которые во всю уже используют популярные платы Arduino. В данном материале будет рассмотрено подключение миниатюрного GPS-трекера к плате Arduino Pro Mini. В качестве подопытного используется трекер PG03 MiniGPS.

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

Сначала трекер нужно разобрать. Ниже показаны изображения разобранного GPS-трекера.

Сердцем трекера является GPS-чип Venus638FLP. Его 44-ый вывод является выходом интерфейса UART (TxD). Можно припаять провод непосредственно к этому выводу, а можно найти на плате контакт для тестирования, к которому также подключен данный вывод. Ниже показаны изображения расположения выводов микросхемы и способ подключения к нужному выводу.

Теперь возьмем компактную плату Arduino Pro Mini и модуль для SD-карт, чтобы записывать данные протокола NMEA. Схема соединений Arduino Pro Mini и модуля для SD-карт выглядит следующим образом:

Подключение выводов модуля для SD-карт:

GND к GND
VCC к 3.3 В
MISO к выводу 12
MOSI к выводу 11
SCK к выводу 13
CS к выводу 10

Подключение выводов GPS-трекера:

GND к GND
Вывод 2 (Arduino) к выводу 44 (GPS)

Питание лучше взять с GPS-трекера (3.7 В). Поскольку его аккумулятор имеет малую энергоемкость, то предпочтительно подключить внешний аккумулятор, например, от мобильного телефона на 1400 мАч, как показано на одном из рисунков выше.

Теперь нужно скачать библиотеку TinyGPS , также потребуется библиотека для работы с SD-картами и библиотека SoftwareSerial, которую можно найти в Arduinolibraries.

В нижеприведенном куске кода можно выбирать, какие данные записывать:

void gpsdump(TinyGPS &gps)
{
float flat, flon; // Lat, Long
float fkmph = gps.f_speed_kmph(); // Speed in km/hr
float falt = gps.f_altitude(); // +/- altitude in meters (seem to be elevation, in fact)
float fc = gps.f_course(); // Course in degrees
unsigned long age;
gps.f_get_position(&flat, &flon, &age);
Serial.print(” lat “);
Serial.print(flat, 4);
Serial.print(” lon “);
Serial.print(flon, 4);
Serial.print(” kms “);
Serial.print(fkmph);
Serial.print(” course “);
Serial.print(fc);
Serial.print(” elevation “);
Serial.println(falt);
/////////////////////////////////////////////////////////////////////////////////////////////

Загрузите скетч в Arduino, вставьте SD-карту, отформатированную в соответствии с FAT32 и имеющую в корне файл log.txt. Запустите последовательный монитор, и вы увидите данные, которые будут записываться на SD-карту.

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

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

U-Center

Программа u-center используется для работы с GNSS-проемниками от фирмы U-Blox. С помощью этого программного обеспечения можно тестировать точность позиционирования, изменять конфигурацию ресивера и проводить общую диагностику, обрабатывать полученные данные и отображать их в режиме реального времени. Координаты приемник получает с помощью GPS, ГЛОНАСС. Полученную информацию можно экспортировать и показывать в картах Google Maps, Google Earth. Программа позволяет создавать двухмерные диаграммы, гистограммы и другие виды графиков. u-center можно использовать при работе с несколькими приемниками.

Возможности программного обеспечения U-Center:

  • Работа с Windows;
  • Чтение NMEA , SiRF данных, UBX;
  • Вывод полученных данных в виде текста и графиков;
  • Запись данных, и воспроизведение;
  • Полное управление модулем GPS;
  • Возможность изменения конфигурации GPS-модуля;
  • Запись новой конфигурации в модуль;
  • Запись конфигурации в файл формата.txt;
  • Обновление прошивки модуля;
  • Возможность холодного, теплого и горячего старта модуля.

Программа позволяет оценивать работоспособность приемника, анализировать его быстродействие и устанавливать его настройки. Помимо U-Center могут использоваться и другие программы, например, Visual GPS, Time Tools GPS Clock и другие.

Visual GPS

Эта программа используется для отображения GPS данных по протоколу NMEA 0183 в графическом виде. Программа позволяет записывать лог GPS данных в файл. Существует два режима работы в программе – в первом Visual GPS связывается с приемником GPS, а во втором Visual GPS считывает показания NMEA из файла. Программа имеет 4 основных окна – Signal Quality (качество сигнала), Navigation (навигация), Survey (исследование), Azimuth and Elevation (азимут и высота).

Time Tools GPS Clock

Эта программа работает на Windows и любых рабочих станциях, она проверяет время со стандартного приемника времени NMEA GPS, который подключен к компьютеру, и позволяет синхронизировать время на ПК. Отображается информация о времени, дате, состоянии GPS, полученная от приемника. Недостатком программы является невозможность высокоточного определения времени, так как GPS-устройства не имеют секундного импульса для последовательного порта компьютера.

GPS TrimbleStudio

Программное обеспечение используется для работы с приемником Copernicus в Windows. Программа отображает принимаемые навигационные данные. Полученные координаты можно отобрать на картах Google Maps, Microsoft Visual Earth. Все установленные настройки приемника можно сохранить в конфигурационном файле

Fugawi

Программа используется для планирования маршрута, GPS навигации в реальном времени. Программа позволяет записывать и сохранять маршруты и путевые точки на картах. Навигация производится как на суше, так и на воде и в воздухе. В программе используются различные виды цифровых карт – топографические карты, стандарты NOAA RNC, отсканированные копии бумажных карт, Fugawi Street Maps.

3D World Map

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

Обзор GPS-модулей для Ардуино

Для работы с Ардуино существует большое количество различных GPS-модулей. С их помощью можно определять точное местоположение (географические координаты, высота над уровнем моря), скорость перемещения, дату, время.

Модуль EM-411. Устройство создано на базе высокопроизводительного чипа SiRF Star III, который обладает низким потреблением энергии. Модуль имеет большой объем памяти для сохранения данных альманаха, поддерживает стандартный протокол NMEA 0183. Время холодного старта составляет около 45 секунд.

VK2828U7G5LF. Этот модуль построен на базе чипа Ublox UBX-G7020-KT. С его помощью можно получать координаты по GPS и ГЛОНАСС. В приемнике имеется встроенная память, в которую можно сохранять настройки. Модуль оснащен встроенной керамической антенной, работает по протоколу NMEA 0183. Напряжение питания модуля 3,3-5В.

SKM53 GPS. Один из самых дешевых модулей, обладающий низким потреблением тока. Время холодного запуска примерно 36 секунд, горячего – 1 секунда. Для позиционирования используются 66 каналов, для слежения 22 канала. В модуле имеется встроенная GPS антенна, устройство обеспечивает высокую производительность навигации при различных условиях видимости.

Neo-6M GPS. Приемник производится компанией u-blox. В этом модуле используются новейшие технологии для получения точной информации о местоположении. Напряжение питания модуля 3-5В. Линейка устройств представлена типами G, Q, M, P, V и T со своими уникальными характеристиками. Время холодного старта около 27 секунд.

locosys 1513. Этот модуль поддерживает работу с GPS, ГЛОНАСС, Galileo, QZSS, SBAS. Базируется на чипе MediaTek MT333, который обладает низким энергопотреблением, высокой чувствительностью и стабильной работой в различных условиях. В приемнике имеется поддержка текстового протокола управления. Время холодного старта примерно 38 секунд.

Arduino GPS модуль GY-NEO6MV2

Модуль использует стандартный протокол NMEA 0183 для связи с GPS приемниками. Приемник представляет собой плату, на которой располагаются модуль NEO-6M-0-001, стабилизатор напряжения, энергонезависимая память, светодиод и аккумулятор.

Технические характеристики модуля:

  • Напряжение питания 3,3-5В;
  • Интерфейс UART 9600 8N1 3.3V;
  • Протокол NMEA;
  • Вес модуля 18 гр.;
  • Наличие EEPROM для сохранения настроек;
  • Наличие встроенной батареи;
  • Возможность подключения антенны к разъему U-FL;
  • Время холодного старта примерно 27 секунд, время горячего старта – 1 секунда;
  • Наличие более 50 каналов позиционирования;
  • Частота обновления 5 Гц;
  • Рабочие температуры от -40С до 85С.

Модуль широко используется для коптеров, определения текущего положения малоподвижных объектов и транспортных средств. Полученные координаты можно загрузить в карты Google Maps, Google Earth и другие.

После холодного старта модуля начинается скачивание альманаха. Время загрузки – не более 15 минут, в зависимости от условий и количество спутников в зоне видимости.

Распиновка: GND (земля), RX (вход для данных UART), TX (выход для данных UART), Vcc – питание от 3,3В до 5 В.

Для подключения потребуются модуль GY-NEO6MV2, плата Ардуино, провода, антенна GPS. Соединение контактов: VCC к 5V, GND к GND, RX к 9 пину на Ардуино, TX к 10 пину. Затем Ардуино нужно подключить к компьютеру через USB.

Для работы потребуется подключить несколько библиотек. SoftwareSerial – требуется для расширения аппаратных функций устройства и обработки задачи последовательной связи. Библиотека TinyGPS используется для преобразования сообщений NMEA в удобный для чтения формат.

Проверка работы через программу U-Center

Как упоминалось выше, модуль производится компанией u-blox, поэтому для настройки приемника используется программа U-Center.

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

Чтобы настроить модуль, нужно подключить его через USB-UART(COM-UART) преобразователь. Настроить подключение можно с помощью меню Receiver-Port . Как только будет установлено соединение, загорится зеленый индикатор. Приемник начнет устанавливать соединения со спутниками, после чего на экране появятся текущие координаты, время и другая информация. Все сообщения появляются в окне Messages. В меню View – Messages можно выбрать сообщения, которые будут передаваться к микроконтроллеру. В зависимости от поставленной задачи, можно уменьшить количество отправляемых сообщений, что увеличит скорость обработки данных и облегчит алгоритм разбора сообщений контроллером.

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

Посмотреть передающиеся данные можно через меню View.

Все сообщения начинаются символом $, следующие за ним символы – идентификаторы сообщения. GP- это глобальная система, следующие 3 буквы показывают, какая информация содержится.

RMC – наименьшая навигационная информация (время, дата, координаты, скорость, направление).

GGA – зафиксированная информация позиционирования. Записаны время, координаты, высота, статус определения местоположения, количество спутников.

Проверка работы через Arduino IDE

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

Скетч для вывода данных о местоположении.

#include
#include //подключение необходимых для работы библиотек
TinyGPS gps;
SoftwareSerial gpsSerial(8, 9); //номера пинов, к которым подключен модуль (RX, TX)
bool newdata = false;
unsigned long start;
long lat, lon;
unsigned long time, date;
void setup(){
gpsSerial.begin(9600); // установка скорости обмена с приемником
Serial.begin(9600);
Serial.println(“Waiting data of GPS…”);
}
void loop(){
if (millis() – start > 1000) //установка задержки в одну секунду между обновлением данных
{
newdata = readgps();
if (newdata)
{
start = millis();
gps.get_position(&lat, &lon);
gps.get_datetime(&date, &time);
Serial.print(“Lat: “); Serial.print(lat);
Serial.print(” Long: “); Serial.print(lon);
Serial.print(” Date: “); Serial.print(date);
Serial.print(” Time: “); Serial.println(time);
}}
}
// проверка наличия данных
bool readgps()
{
while (gpsSerial.available())
{
int b = gpsSerial.read();
//в библиотеке TinyGPS имеется ошибка: не обрабатываются данные с r и n
if(“r” != b)
{
if (gps.encode(b))
return true;
}
}
return false;
}

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

В мониторе порта появятся данные широты и долготы. Также будет получено значение текущей даты и времени по Гринвичу. Установить свой часовой пояс можно вручную – это делается в строке Serial.print(static_cast(hour+8));

Заключение

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

Сегодня мы сделаем 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. Код проекта

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

#include
#include
#include //incluimos TinyGPS
#define WAITING_TIME 15
#define GPS_PIN 2
#define GPS_INFO_BUFFER_SIZE 128
bool debug = false;
TinyGPS gps;//GPS Object
//GPS data variables
int year;
byte month, day, hour, minute, second, hundredths;
unsigned long chars;
unsigned short sentences, failed_checksum;
char GPS_info_char;
char GPS_info_buffer;
unsigned int received_char;
bool message_started = false;
int i = 0;
// GPS coordinate structure, 12 bytes size on 32 bits platforms
struct gpscoord {
float a_latitude; // 4 bytes
float a_longitude; // 4 bytes
float a_altitude; // 4 bytes
};
float latitude = 0.0f;
float longitude = 0.0f;
float altitud = 0;
//////////////// Waiting function //////////////////
void Wait(int m, bool s) {
//m minutes to wait
//s slow led pulses
if (debug) {
Serial.print(“Waiting: “); Serial.print(m); Serial.println(” min.”);
}
digitalWrite(LED_BUILTIN, LOW);
if (s) {
int seg = m * 30;
for (int i = 0; i 12) {
Serial.println(“Message too long, only first 12 bytes will be sent”);
}
}
// Remove EOL
//data.trim();
// Start the module
SigFox.begin();
// Wait at least 30mS after first configuration (100mS before)
delay(100);
// Clears all pending interrupts
SigFox.status();
delay(1);
if (debug) SigFox.debug();
delay(100);
SigFox.beginPacket();
SigFox.print(data);
if (debug) {
int ret = SigFox.endPacket(true); // send buffer to SIGFOX network and wait for a response
if (ret > 0) {
Serial.println(“No transmission”);
} else {
Serial.println(“Transmission ok”);
}
Serial.println(SigFox.status(SIGFOX));
Serial.println(SigFox.status(ATMEL));
if (SigFox.parsePacket()) {
Serial.println(“Response from server:”);
while (SigFox.available()) {
Serial.print(“0x”);
Serial.println(SigFox.read(), HEX);
}
} else {
Serial.println(“Could not get any response from the server”);
Serial.println(“Check the SigFox coverage in your area”);
Serial.println(“If you are indoor, check the 20dB coverage or move near a window”);
}
Serial.println();
} else {
SigFox.endPacket();
}
SigFox.end();
}
////////////////// Convert GPS function //////////////////
/* Converts GPS float data to Char data */
String ConvertGPSdata(const void* data, uint8_t len) {
uint8_t* bytes = (uint8_t*)data;
String cadena ;
if (debug) {
Serial.print(“Length: “); Serial.println(len);
}
for (uint8_t i = len – 1; i Шаг 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:

Lat::float:32lng::float:32 alt::float:32

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

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

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

На этом всё, желаю вам отличных проектов!

В этом проекте мы покажем вам как связать Arduino Uno с GPS модулем, а получаемые данные по долготе и широте отобразим на ЖК-дисплее.

Основные комплектующие

Нам для проекта нужны:

  • Arduino Uno
  • Модуль GPS NEO-6m
  • ЖК-дисплей
  • 10K резистор

Информация о GPS

Что такое GPS?

Глобальная система позиционирования (GPS) – это спутниковая навигационная система, состоящая по меньшей мере из 24 спутников. GPS работает в любых погодных условиях в любой точке мира 24 часа в сутки без абонентской платы или платы за установку.

Как работает GPS?

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

Чтобы вычислить ваше двумерное положение (широта и долгота) и направление движения, GPS-приемник должен быть зафиксирован на сигнал от не менее 3 спутников. При наличии 4 или более спутников приемник может определить ваше трехмерное положение (широта, долгота и высота). Как правило, приемник GPS будет отслеживать 8 или более спутников, но это зависит от времени суток и того, где вы находитесь на земле.

Как только ваша позиция будет определена, модуль GPS может рассчитать и другую информацию, такую ​​как:

  • скорость;
  • азимут, пеленг;
  • направление;
  • расстояние до отключения;
  • расстояние до пункта назначения.

Какой сигнал?

Спутники GPS передают по меньшей мере 2 маломощных радиосигнала. Сигналы движутся по прямой видимости, то есть они будут проходить сквозь облака, стекло и пластик, но не будут проходить через большинство твердых объектов, таких как здания и горы. Однако современные приемники более чувствительны и обычно могут отслеживать и сквозь дома.

Сигнал GPS содержит 3 различных типа информации:

  • Псевдослучайный код – это I.D. код, который идентифицирует, какой спутник передает информацию. Вы можете видеть, с какого спутника вы получаете сигналы на странице информации о спутниках на вашем устройстве.
  • Данные эфемерид необходимы для определения местоположения спутника и дают важную информацию о состоянии спутника, текущую дату и время.
  • Данные альманаха сообщают GPS-приемнику, где каждый спутник GPS должен быть в любое время в течение дня и отображать информацию о орбите для этого спутника и каждого другого спутника в системе.

GPS модуль NEO-6M и Arduino UNO

Внешне GPS модуль выглядит так:

Плата Ардуино Уно вам, скорее всего, уже знакома:

Подключение модуля GPS и Arduino UNO

Подключите четыре контакта к Arduino следующим образом:

GND → GND
TX → Цифровой вывод (D3)
RX → цифровой вывод (D4)
Vcc → 5Vdc

Предлагаем использовать внешний источник питания для питания модуля GPS, потому что минимальная потребляемая мощность для работы модуля Arduino GPS составляет 3,3 В, а Arduino не способен обеспечить такое напряжение. Для обеспечения напряжения используйте USB TTL:

Еще одна вещь, которая была обнаружена при работе с антенной GPS – модуль не принимает сигнал внутри дома, поэтому нужно использовать антенну.

Подключение Arduino UNO и ЖК-дисплея JHD162a

Теперь нам необходимо соединить Ардуино и ЖК-дисплей, мы взяли LHD162a:

Перечень соединений ниже, это LCD → Arduino
:

VSS → GND
VCC → 5V
VEE → 10K резистор
RS → A0 (аналоговый пин)
R/W → GND
E → A1
D4 → A2
D5 → A3
D6 → A4
D7 → A5
LED+ → VCC
LED- → GND

Скетч и библиотеки

Дополнительно нам понадобятся некоторые библиотеки:

Больше различных библиотек вы можете найти на нашем сайте в разделе .

Скетч для Arduino GPS вы можете скачать или скопировать ниже:

#include #include
#include
float lat = 28.5458,lon = 77.1703; // создать переменную для объекта широты и долготы
SoftwareSerial gpsSerial(3,4);//rx,tx
LiquidCrystal lcd(A0,A1,A2,A3,A4,A5);
TinyGPS gps; // создать gps объект
void setup(){
Serial.begin(9600); // соединяем serial
//Serial.println(“Полученный сигнал GPS:”);
gpsSerial.begin(9600); // подключаем gps датчик
lcd.begin(16,2);
}
void loop(){
while(gpsSerial.available()){ // проверка gps данных
if(gps.encode(gpsSerial.read()))// шифровать gps данные
{
gps.f_get_position(&lat,&lon); // получить широту и долготу
// отобразить позицию
lcd.clear();
lcd.setCursor(1,0);
lcd.print(“GPS Signal”);
//Serial.print(“Position: “);
//Serial.print(“Latitude:”);
//Serial.print(lat,6);
//Serial.print(“;”);
//Serial.print(“Longitude:”);
//Serial.println(lon,6);
lcd.setCursor(1,0);
lcd.print(“LAT:”);
lcd.setCursor(5,0);
lcd.print(lat);
//Serial.print(lat);
//Serial.print(” “);
lcd.setCursor(0,1);
lcd.print(“,LON:”);
lcd.setCursor(5,1);
lcd.print(lon);
}
}
String latitude = String(lat,6);
String longitude = String(lon,6);
Serial.println(latitude+”;”+longitude);
delay(1000);
}

В Visual Studio мы создали приложение в котором можно найти текущее местоположение GPS. Оно работает только тогда, когда подключено последовательно к ПК или ноутбуку:

Если вы хотите внести некоторые изменения в приложение, вы можете сделать это открыв sln-файл в Visual Studio (2012 и выше), или вы можете напрямую установить и использовать его.

На этом пока всё. Хороших вам проектов.

Оцените статью
Добавить комментарий

19 + восемь =