В этом проекте мы покажем вам как связать 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 <LiquidCrystal.h> #include <SoftwareSerial.h> #include <TinyGPS.h> 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 и выше), или вы можете напрямую установить и использовать его.
На этом пока всё. Хороших вам проектов.
6 июля 2020 в 10:04
«минимальная потребляемая мощность для работы модуля Arduino GPS составляет 3,3 В» Мощность не измеряется в Вольтах!