Сделать GPS-часы с Arduino
Вам нужно время GPS на вашем столе? В этой статье вы узнаете, как использовать модуль GPS для получения времени, даты и вашего местоположения, отображаемых на ЖК-дисплее с помощью Arduino.
Требования
- Компьютер с установленной IDE Arduino
- Ардуино (я использую Arduino Mega)
- ЖК-дисплей
- Модуль GPS (я использую EM-411)
- Макет, перемычки и 5-килограммовый горшок
- Библиотека TinyGPS (ссылка ниже)
Введение
Разработка Глобальной системы позиционирования или GPS началась в начале 1970-х годов. Каждая страна (Россия, США, Китай и т. Д.) Имеет свою собственную систему, но большинство подразделений GPS по всему миру используют систему США.
Каждый спутник для каждой системы имеет атомные часы, которые непрерывно контролируются и устанавливаются NORAD каждый день:
«Концептуально приемник измеряет TOAs (по собственным часам) четырех спутниковых сигналов. Из TOAs и TOTs приемник формирует четыре значения времени полета (TOF), которые (с учетом скорости света) приблизительно эквивалентны к разнице частот приемника-спутника. Затем приемник вычисляет свое трехмерное положение и отклонение часов от четырех TOF. " (Википедия)
$$ \ text {Примечание: TOA = Время прибытия, TOT = Время передачи} $$
Самые недорогие GPS-приемники имеют точность около 20 метров для большинства мест на Земле. Здесь мы узнаем, как узнать наши собственные GPS-часы, используя Arduino.
аппаратные средства
Мой модуль GPS имеет 6 контактов: GND, Vin, Tx, Rx & GND. 6-й вывод - NC. GND подключен к GND, Vin к Vin, TX подключен к выходу Arduino 10, а вывод Rx не подключен ни к чему, так как я не отправляю никаких сообщений в модуль GPS. Мой модуль передает спутниковые данные, используя RS-232 с 4800 бит / с, который поступает на контакт 10.
Это модуль, спереди и сзади.

Модуль отправляет так называемые NMEA-предложения. Здесь вы можете увидеть пример одного предложения NMEA и объяснения этого предложения (выдержка из таблицы):

Все эти данные получены Arduino Mega на булавке 10. Библиотека TinyGPS читает предложение GPGGA и предложение GPRMC. (Подробные сведения о GPRMC см. В техническом описании).
Arduino не находится в схеме, поэтому, пожалуйста, следуйте соединениям.

Программного обеспечения
При подаче питания модуль GPS занимает некоторое время, чтобы получить правильное исправление на спутниках. Когда фиксированное положение сделано, модуль отправляет предложения NMEA в Arduino. Библиотека TinyGPS имеет одну функцию для получения даты и времени из предложения GPRMC. Он называется crack_datetime (), и он принимает семь переменных: год, месяц, день, час, минута, секунды и сотые. Вызов функции выглядит следующим образом:
gps.crack_datetime (& year, & month, & day, & hour, & minute, & second, &hundredths);
Вызов этой функции дает вам правильные значения в переменных, если все с оборудованием в порядке.
Чтобы получить нашу позицию, вы вызываете функцию f_get_position (). Эта функция принимает две переменные, широту и долготу. Чтобы вызвать эту функцию, вы пишете это в своем коде:
gps.f_get_position (& широта и долгота);
Эскиз в ссылке показывает, как работают обе функции.
Загрузки
Вот все файлы, которые вам понадобятся:
Эскиз кода исходного кода
Вывод
В этой статье я показал вам, как получить время, дату и местоположение из модуля GPS, а затем отобразить все это на ЖК-дисплее. Теперь вы знаете, где вы!
Фото и видео
На фотографиях и видео я добавил смещение к широте и долготе для моей конфиденциальности. Комната, в которой я работаю, находится в подвале и имеет четыре бетонные стены. Чтобы получить лучший прием, мне пришлось припаять кабель между модулем GPS и заголовком соединений. Затем я поместил GPS в окно.



Попробуйте этот проект сами! Получить спецификацию.