Делаем gps-трекер на основе arduino mkrfox1200

Введение

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

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

По сути, приемник по своим часам измеряет TOA (время получения сигнала, time of arrival) четырех спутниковых сигналов. Исходя из TOA и TOT (времени отправки сигнала, time of transmission), приемник вычисляет четыре значения времени «пролета» сигнала (TOF, time of flight), которые отличаются друг от друга в зависимости от расстояния спутник-приемник. Затем, исходя из четырех значений TOF, приемник вычисляет свое положение в трехмерном пространстве и отклонение своих часов.

Самые недорогие GPS приемники обладают точностью около 20 метров для большинства мест на Земле. Теперь посмотрим, как изготовить свои собственные часы GPS с помощью Arduino.

Introducing the NEO-6M GPS Module

The NEO-6M GPS module is shown in the figure below. It comes with an external antenna, and does’t come with header pins. So, you’ll need to get and solder some.

  • This module has an external antenna and built-in EEPROM.
  • Interface: RS232 TTL
  • Power supply: 3V to 5V
  • Default baudrate: 9600 bps
  • Works with standard NMEA sentences

Where to buy?

You can get the NEO-6M GPS module for a price between $5 to $20. We recommend checking the NEO-6M GPS module page on Maker Advisor to compare the price in different stores and find the best one.

Pin Wiring

The NEO-6M GPS module has four pins: VCC, RX, TX, and GND. The module communicates with the Arduino via serial communication using the TX and RX pins, so the wiring couldn’t be simpler:

NEO-6M GPS Module Wiring to Arduino UNO
VCC 5V
RX TX pin defined in the software serial
TX RX pin defined in the software serial
GND GND

Работа схемы

Схема устройства представлена на следующем рисунке.

Схема содержит плату Arduino Uno, GPS модуль и Wi-Fi модуль ESP8266. На ЖК дисплее будут показываться различные статусные сообщения. ЖК дисплей подключен к контактам 14-19 (A0-A5) платы Arduino.

Контакт Tx GPS модуля поключен к цифровому контакту 10 платы Arduino. С использованием Software Serial Library (библиотеки последовательной связи) мы можем задействовать последовательную связь на контактах 10 и 11 Arduino и сделать их соответственно контактами Rx и Tx последовательной связи. Контакт Rx GPS модуля оставим в свободном состоянии. По умолчанию, последовательная связь доступна на контактах 0 и 1 платы Arduino, но с использованием Software Serial Library мы сможем организовать последовательную связь на любых других цифровых контактах Arduino. Адаптер на 12 Вольт будет использоваться для питания GPS модуля. Ряд моментов об использовании GPS модуля совместно с Arduino можно прочитать в статье про считывание GPS данных с помощью персонального компьютера и Arduino Uno.

Контакты Vcc и GND модуля ESP8266 подключены к контактам 3.3V и GND платы Arduino, контакт CH_PD также подсоединен к 3.3V. Контакты Tx и Rx модуля ESP8266 непосредственно подсоединены к контактам 2 и 3 платы Arduino. Библиотека последовательного порта (Software Serial Library) используется чтобы осуществлять последовательную связь на контактах 2 и 3 Arduino. Также об использовании Wi-Fi модуля ESP8266 совместно с Arduino можно прочитать в статье про передачу данных от Arduino Uno на веб-страницу с помощью WiFi.

Внешний вид Wi-Fi модуля ESP8266 показан на следующем рисунке.

Модуль ESP8266 имеет 2 светодиода, один из которых красного цвета (для индикации подачи питания на плату), а второй синего цвета (для индикации процесса передачи данных). Синий светодиод мигает когда модуль ESP8266 передает какие-нибудь данные через свой контакт Tx. Не соединяйте ваш модуль ESP8266 с источником питания +5 Вольт иначе можете повредить модуль. В нашем проекте мы будем использовать скорость 9600 бод/с для последовательной связи.

Наглядно посмотреть процесс обмена данными в последовательном режиме между Wi-Fi модулем ESP8266 и платой Arduino вы можете в мониторе последовательной связи (Serial Monitor). Также более подробно эти процессы показаны в видео в конце статьи.

Скетч

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

gps-speedometr.ino
#include "TroykaButton.h"
// создаём объект для работы с кнопкой
TroykaButton button(A2);
// библиотека для работы с дисплеем
#include <QuadDisplay2.h>
// создаём объект класса QuadDisplay и передаём номер пина CS
QuadDisplay qd(10);
// библиотека для работы с GPS устройством
#include <TroykaGPS.h>
// создаём объект класса GPS и передаём в него объект Serial1 
GPS gps(Serial1);
// задаём размер массива для времени, даты, широты и долготы
#define MAX_SIZE_MASS 16
// макросы
#define SPEED         0
#define DISTANCE      1
// переменые для хранения текущей скорости и пройденного расстояния
float speed;
float distance = ;
// переменные для хранения координат
float latitudeLast;
float longitudeLast;
// режим отображение: текущей скорости / пройденного расстояния 
bool state = SPEED;
// флаг первого считывания данных с GPS-модуля
bool firstStart = true;
 
void setup()
{ 
  // открываем последовательный порт для мониторинга действий в программе
  // для ревизии v1 модуля GPS:
//  Serial.begin(115200); 
  // для ревизии v2 модуля GPS:
  Serial.begin(9600);
//  Serial.print("Serial init OK\r\n");
  // открываем Serial-соединение с GPS-модулем
  // для ревизии v1 модуля GPS: 
//  Serial1.begin(115200); 
  // для ревизии v2 модуля GPS: 
  Serial1.begin(9600);
  // инициализация дисплея
  qd.begin();
  // инициализация кнопки
  button.begin();
}
 
void loop()
{
  // переменные для хранения текущих координат
  float latitude;
  float longitude;
  // считывание данных с кнопки
  button.read();
  // если был клик
  if (button.justPressed()) {
    // меняем отображение скорости на расстояния или наоборот
    state = !state;
    // в зависимости от текущего состояния спидометра
    if (!state) {
      qd.displayDigits(QD_S, QD_P, QD_E, QD_d);
    } else {
      qd.displayDigits(QD_d, QD_I, QD_S, QD_t);
    }
    delay(1000);
  }
    // если пришли данные с GPS-модуля
  if (gps.available()) {
    // считываем данные и парсим
    gps.readParsing();
    // считываем состояние GPS-модуля
    switch(gps.getState()) {
      // всё OK
      case GPS_OK
        // считываем с GPS-модуля текушие координаты и скорость
        speed = gps.getSpeedKm();
        latitude = gps.getLatitudeBase10();
        longitude = gps.getLongitudeBase10();
        // если данные с GPS-модуля пришли впервые
        if (firstStart) {
          // сохраняем текущие значения координат
          latitudeLast = latitude;
          longitudeLast = longitude;
          // первый запуск был совершен
          firstStart = false;
        }
        distance = distance + latlng2distance(latitudeLast, longitudeLast, latitude, longitude);
        // сохраняем текущие значения координат
        latitudeLast = latitude;
        longitudeLast = longitude;
  /*      Serial.print(speed);
        Serial.print("\t");
        Serial.print(latitude, 6);
        Serial.print("\t");
        Serial.print(longitude, 6);
        Serial.print("\t"); 
        Serial.println(distance);*/
        // в зависимости от режима работы спидометра
        if(!state) {
          // выводим текущую скорость
          qd.displayFloat(speed, 1);
        } else {
          // выводим текущее расстояние
          qd.displayFloat(distance, 1);
        }
        break;
      // ошибка данных
      case GPS_ERROR_DATA
        Serial.println("GPS error data");
        break;
      // нет соединение со спутниками
      case GPS_ERROR_SAT
        Serial.println("GPS no connect to satellites");
        qd.displayDigits(QD_E, QD_r, QD_r, QD_NONE);
        break;
    }
  }
}
 
float latlng2distance(float lat1, float long1, float lat2, float long2) {
    //радиус Земли
    unsigned long R = 6372795;
    //перевод коордитат в радианы
    lat1 *= 3.14  180;
    lat2 *= 3.14  180;
    long1 *= 3.14  180;
    long2 *= 3.14  180;
    //вычисление косинусов и синусов широт и разницы долгот
    float cl1 = cos(lat1);
    float cl2 = cos(lat2);
    float sl1 = sin(lat1);
    float sl2 = sin(lat2);
    float delta = long2 - long1;
    float cdelta = cos(delta);
    float sdelta = sin(delta);
    //вычисления длины большого круга
    float y = sqrt(pow(cl2 * sdelta, 2) + pow(cl1 * sl2 - sl1 * cl2 * cdelta, 2));
    float x = sl1 * sl2 + cl1 * cl2 * cdelta;
    float ad = atan2(y, x);
    float dist = ad * R; //расстояние между двумя координатами в метрах
    return dist;
}

Часто задаваемые вопросы

  • Как установить библиотеку

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

Мы уже тестируем версию скетча для старого дисплея и разместим её на этой странице в ближайшие дни.

Подключение и настройка

GPS/GLONASS-модуль общается с управляющей платой по протоколу UART.
В зависимости от управляющей платформы выберите вариант подключения GPS-модуля.

HardwareSerial

На управляющей плате Iskra JS и Arduino платах с микроконтроллером , данные по USB и общение через пины и осуществляется через два раздельных UART. Это даёт возможность подключить GPS-модуль к аппаратному UART на пинах и .

Список поддерживаемых плат:

  • Iskra JS

  • Iskra Neo

  • Arduino Leonardo

При подключении удобно использовать Troyka Shield.

С Troyka Slot Shield можно обойтись без лишних проводов.

SoftwareSerial

Для примера подключим управляющие пины GPS-модуля и — на и контакты управляющей платы.

При подключении удобно использовать Troyka Shield.

С Troyka Slot Shield можно обойтись без лишних проводов.

HardwareSerial Mega

На платах форм-фактора Arduino Mega 2560 аппаратный UART, который отвечает за передачу данных через пины и , отвечает также за передачу по USB. Это означает невозможность использовать одновременно для коммуникации с GPS-модулем и отладки по USB.

Но на платах такого форм-фактора есть ещё дополнительно 3 аппаратных UART:

  • Serial1: пины и ;
  • Serial2: пины и ;
  • Serial3: пины и .

Список поддерживаемых плат:

  • Arduino Mega 2560

  • Arduino ADK

  • Arduino Due

Подключим GPS-модуль к объекту на пины и на примере платы Arduino Mega 2560.

Arduino Code – Reading GPS Data

The best thing about any GPS receiver is that they start spitting out data as soon as you turn them ON.

The best way to test this data is to use Arduino as USB to TTL Converter. Following program does just that.

Upload the program and open up the serial monitor from the Arduino IDE. Remember to select 9600 baud. You should see text like the following:

The data you are getting over a serial interface are actually NMEA sentences.

NMEA is an acronym for the National Marine Electronics Association. This is a standard message format for Nearly all GPS receivers.

The NMEA standard is formatted in lines of data called sentences. Each sentence is comma separated to make it easier to parse by computers and microcontrollers.

These NMEA sentences are sent out at an interval called the update rate.

NEO-6M GPS module updates this information once per second(1Hz frequency) by default. But you can configure it for up to 5 updates per second(5Hz frequency).

Hardware Overview of NEO-6M GPS Module

NEO-6M GPS Chip

At the heart of the module is a NEO-6M GPS chip from u-blox. The chip measures less than the size of a postage stamp but packs a surprising amount of features into its little frame.

It can track up to 22 satellites on 50 channels and achieves the industry’s highest level of sensitivity i.e. -161 dB tracking, while consuming only 45mA supply current.

Unlike other GPS modules, it can do up to 5 location updates a second with 2.5m Horizontal position accuracy. The u-blox 6 positioning engine also boasts a Time-To-First-Fix (TTFF) of under 1 second.

One of the best features the chip provides is Power Save Mode(PSM). It allows a reduction in system power consumption by selectively switching parts of the receiver ON and OFF. This dramatically reduces power consumption of the module to just 11mA making it suitable for power sensitive applications like GPS wristwatch.

The necessary data pins of NEO-6M GPS chip are broken out to a 0.1″ pitch headers. This includes pins required for communication with a microcontroller over UART. The module supports baud rate from 4800bps to 230400bps with default baud of 9600.

Here are complete specifications:

Receiver Type 50 channels, GPS L1(1575.42Mhz)
Horizontal Position Accuracy 2.5m
Navigation Update Rate 1HZ (5Hz maximum)
Capture Time Cool start: 27sHot start: 1s
Navigation Sensitivity -161dBm
Communication Protocol NMEA, UBX Binary, RTCM
Serial Baud Rate 4800-230400 (default 9600)
Operating Temperature -40°C ~ 85°C
Operating Voltage 2.7V ~ 3.6V
Operating Current 45mA
TXD/RXD Impedance 510Ω

Position Fix LED Indicator

There is an LED on the NEO-6M GPS Module which indicates the status of Position Fix. It’ll blink at various rates depending on what state it’s in:

  • No Blinking – It’s searching for satellites.
  • Blink every 1s – Position Fix is found(The module can see enough satellites).

3.3V LDO Regulator

The operating voltage of the NEO-6M chip is from 2.7 to 3.6V. But the good news is that, the module comes with MIC5205 ultra-low dropout 3V3 regulator from MICREL.

The logic pins are also 5-volt tolerant, so we can easily connect it to an Arduino or any 5V logic microcontroller without using any logic level converter.

Battery & EEPROM

The module is equipped with an HK24C32 two wire serial EEPROM. It is 4KB in size and connected to the NEO-6M chip via I2C.

The module also contains a rechargeable button battery which acts as a super-capacitor.

An EEPROM together with battery helps retain the battery backed RAM (BBR). The BBR contains clock data, latest position data(GNSS orbit data) and module configuration. But it’s not meant for permanent data storage.

As the battery retains clock and last position, time to first fix (TTFF) significantly reduces to 1s. This allows much faster position locks.

Without the battery the GPS always cold-start so the initial GPS lock takes more time.

The battery is automatically charged when power is applied and maintains data for up to two weeks without power.

Antenna

An antenna is required to use the module for any kind of communication. So, the module comes with a patch antenna having -161 dBm sensitivity.

You can snap-fit this antenna to small U.FL connector located on the module.

Patch antenna is great for most projects. But if you want to achieve more sensitivity or put your module inside a metal case, you can also snap on any 3V active GPS antenna via the U.FL connector.

TIP

U.FL connectors are small, delicate and are not rated for strain. To prevent damaging the U.FL connection, we recommend threading the U.FL cable through the mounting hole, then attach the U.FL connectors.

NMEA-0183

NMEA — National Marine Electronics Association, а NMEA-0183 (согласно Википедии) — текстовый протокол связи морского (как правило, навигационного) оборудования (или оборудования, используемого в поездах) между собой. Вот строки, приходящие от моего приемника.

Сначала определим похожие части каждой строки. Легко видеть, что все они начинаются одинаково и более-менее одинаково заканчиваются. — информация идет от приемника GPS (ты ведь понимаешь, что на корабле куча других датчиков: если бы у нас был аварийный маяк, то строка начиналась бы с , а если эхолот, то с , ну и так далее). Каждая строка обязательно заканчивается контрольной XOR-суммой всех байтов в строке начиная от и заканчивая — это как раз те два символа в конце строки. И не забываем про символы и после контрольной суммы. Разберем каждую из строк подробнее.

  • — GPS Recommended Minimum Navigation Information sentence C — рекомендуемый минимум навигационной информации, строка типа С.
  • — время по всемирному координированному времени UTC, когда была произведена фиксация положения.
  • — флаг достоверности информации. Если , то информации верить нельзя.
  • — величина широты. Первые две цифры — градусы, вторые две — целое значение количества угловых минут, после точки — дробная часть количества угловых минут (переменной длины).
  • — северная широта. Если , то южная.
  • — величина долготы. Первые две цифры — градусы, вторые две — целое значение количества угловых минут, после точки — дробная часть количества угловых минут (переменной длины).
  • — восточная долгота. Если , то западная.
  • — горизонтальная скорость в узлах (умножить на 1,852 для получения скорости в километрах в час), целая и дробная части имеют переменную длину.
  • — направление скорости (путевой угол, курс) в градусах, целая и дробная части имеют переменную длину.
  • — текущая дата.
  • — отсутствующая у нас величина направления магнитного склонения.
  • — также отсутствующее у нас направление магнитного склонения.
  • — индикатор режима.
  • — контрольная сумма.
  • — GPS Track Made Good and Ground Speed — строка с информацией о курсе и скорости.
  • — курс в градусах.
  • — True, флаг достоверности информации.
  • — направление магнитного склонения (у нас его нет).
  • — Magnetic, да, действительно магнитное.
  • — горизонтальная скорость в узлах (умножить на 1,852 для получения скорости в километрах в час).
  • — kNots, узлы.
  • — горизонтальная скорость в километрах в час (и умножать ничего не надо).
  • — километры в час.
  • — контрольная сумма.
  • — Global Positioning System Fix Data — строка с информацией о текущем местоположении.
  • — время по всемирному координированному времени UTC, когда была произведена фиксация положения.
  • — величина широты.
  • — северная широта. Если , то южная.
  • — величина долготы.
  • — восточная долгота. Если , то западная.
  • — флаг качества сигнала GPS.
  • — количество используемых спутников.
  • — фактор снижения точности (DOP, Dilution of precision).
  • — высота расположения приемника над уровнем моря.
  • — высота дается в метрах.
  • — различие между геоидом (истинной формой нашей планеты) и эллипсоидом по WGS84 (трехмерная система координат для позиционирования).
  • — различие дается в метрах.
  • — номер станции, передающей поправки DGPS.
  • — контрольная сумма.
  • — GPS DOP and Active satellites — строка с информацией о спутниках, использованных для определения местоположения и о факторах снижения точности.
  • — автоматический режим выбора работы в 2D или 3D, — ручной режим, когда жестко выбран, например, 2D.
  • — режим работы приемника: — координаты не определены, — режим 2D, — режим 3D.
  • — номера спутников, используемых для определения местоположения приемника.
  • — PDOP, HDOP, VDOP (факторы снижения точности по положению, в горизонтальной плоскости и в вертикальной плоскости соответственно).
  • — контрольная сумма.
  • — GPS Satellites in View — строка содержит в себе информацию о номере, азимуте, высоте над горизонтом и соотношением сигнал/шум спутника. В строке максимально может быть четыре спутника.
  • — общее количество строк .
  • — номер текущей строки.
  • — номер спутника.
  • — высота над горизонтом в градусах .
  • — азимут спутника в градусах .
  • — соотношение сигнал/шум в дБ .

— на этой строке нет смысла останавливаться подробно, поскольку она содержит в себе координаты и время, а это мы уже имеем в строках и .

Разумеется, производителям GPS-приемников не запрещается добавлять собственные строки. У моего приемника можно при запуске увидеть такие:

Шаг 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. Когда нулевой сигнал подается на базу транзистора, он выключается, действуя как открытый выключатель, и ток коллектора не течет. При положительном сигнале, подаваемом на базу транзистора, он становится «включенным», действующим как замкнутый переключатель, и максимальный ток цепи протекает через устройство.

U-center software

U-center from u-blox is a powerful tool for evaluation, performance analysis and configuration of u-blox GPS receivers including NEO-6M. It’s a free tool but can only be used on Windows platform.

It can display realtime structured and graphical data visualization from any GPS receiver such as

  • Satellite summary view
  • Navigation summary view
  • Compass, speedometer, clock, altimeter
  • Chart view of any two parameters of choice
  • Data recording and playback functionality

The software can be downloaded from U-blox website.

Connecting NEO-6M to U-center

In order to use U-center software, you need to connect your NEO-6M to PC using any USB to TTL converter.

Below image shows NEO-6M connected to PC through PL2303 USB to TTL converter.

Using U-center

After a successful installation, u-center can be started from the Start Menu (All Programs -> u-blox-> u-center -> u-center) and will start up as shown below.

Locate the communication toolbar and click on the arrow beside the icon. This will show a list with all available COM ports. Select the corresponding COM port where the receiver is connected.

The text console button will show you the raw NMEA sentences. This is handy for quickly inspecting the visible ASCII coming from the module over USB.

u-center can display positions on pre-calibrated or Google online (dynamic) maps

For more information about U-center software, please refer this user guide.

Parsing NMEA Sentences

There are many sentences in the NMEA standard, the most common ones are:

  • $GPRMC (Global Positioning Recommended Minimum Coordinates) provides the time, date, latitude, longitude, altitude and estimated velocity.
  • $GPGGA sentence provides essential fix data which provide 3D location and accuracy data.

Let’s take an example of $GPRMC NMEA sentence from a GPS receiver.

$GPRMC, 123519, A, 4807.038, N, 01131.000, E,022.4, 084.4, 230394, 003.1, W*6A

$ Every NMEA sentence starts with $ character.
GPRMC Global Positioning Recommended Minimum Coordinates
123519 Current time in UTC – 12:35:19
A Status A=active or V=Void.
4807.038,N Latitude 48 deg 07.038′ N
01131.000,E Longitude 11 deg 31.000′ E
022.4 Speed over the ground in knots
084.4 Track angle in degrees True
220318 Current Date – 22rd of March 2018
003.1,W Magnetic Variation
*6A The checksum data, always begins with *

Let’s take an example of $GPGGA NMEA sentence.

$GPGGA, 123519, 4807.038, N, 01131.000, E, 1, 08, 0.9, 545.4, M, 46.9, M, , *47

$ Starting of NMEA sentence.
GPGGA Global Positioning System Fix Data
123519 Current time in UTC – 12:35:19
4807.038,N Latitude 48 deg 07.038′ N
01131.000,E Longitude 11 deg 31.000′ E
1 GPS fix
08 Number of satellites being tracked
0.9 Horizontal dilution of position
545.4,M Altitude in Meters (above mean sea level)
46.9,M Height of geoid (mean sea level)
(empty field) Time in seconds since last DGPS update
(empty field) DGPS station ID number
*47 The checksum data, always begins with *

For more information about NMEA sentences and what data they contain, check out gpsinformation.org

Информация о 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 должен быть в любое время в течение дня и отображать информацию о орбите для этого спутника и каждого другого спутника в системе.
Добавить комментарий

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

Adblock
detector