- Составные части:
- Рабочее объяснение:
- Принципиальная электрическая схема:
- Объяснение программирования:
Вокруг Земли есть множество спутников GPS, которые используются для определения точного местоположения любого места. Наряду с координатами местоположения (широта и долгота) он также предоставляет другие данные, такие как время, дату, высоту, угол отслеживания направления и т. Д. Мы уже научились считывать эти данные GPS со спутника с помощью Arduino. Итак, мы собираемся создать часы GPS, используя данные «Время и дата» со спутника GPS. GPS обновленные часы очень точны и предоставляют данные в реальном времени с точностью до миллисекунд.
Составные части:
- Ардуино Уно
- Модуль GPS
- ЖК-дисплей 16x2
- Соединительные провода
- Источник питания
Рабочее объяснение:
Модуль GPS отправляет данные в формате NMEA, см. Вывод данных GPS на снимке экрана ниже. Формат NMEA состоит из нескольких предложений, в которых нам нужно одно предложение для извлечения даты и времени. Это предложение начинается с $ GPRMC и содержит координаты, время и другую полезную информацию. Этот $ GPRMC относится к рекомендованному минимуму конкретных данных GPS / транзита, и длина этой строки составляет около 70 символов. Ранее мы извлекали строку $ GPGGA в системе слежения за транспортными средствами, чтобы найти координаты широты и долготы. Вот результат GPS:
А строка $ GPRMC в основном содержит скорость, время, дату и положение.
$ GPRMC, 123519.000, A, 7791.0381, N, 06727.4434, E, 022.4 084.4, 230394 003.1, W * 6 A $ GPRMC, HHMMSS.SSS, A, широта, N, долгота, E, скорость, угол, дата, МВ, Вт, CMD
Идентификатор |
Описание |
RMC |
Рекомендуемое минимальное предложение C |
ЧЧММСС.ССС |
Время в формате часов, минут, секунд и миллисекунд. |
А |
Статус // A = активно и V = недействительно |
Широта |
Широта 49 град. 16,45 мин. север |
N |
Направление N = Север, S = Юг |
Долгота |
Долгота (координата) |
E |
Направление E = Восток, W = Запад |
Скорость |
скорость в узлах |
Угол |
Угол сопровождения в градусах |
Свидание |
ДАТА в UTC |
MV |
Магнитная вариация |
W |
Направление изменения E / W |
CMD (* 6A) |
Данные контрольной суммы |
Мы можем извлечь время и дату из строки $ GPRMC, посчитав запятые в строке. С помощью Arduino и программирования мы находим строку $ GPRMC и сохраняем ее в массиве, тогда время (24-часовой формат) можно найти через одну запятую, а дату можно найти через девять запятых. Время и дата далее сохраняются в строках.
Спутник GPS предоставляет время и дату в формате всемирного координированного времени (UTC), поэтому нам необходимо соответствующим образом преобразовать их. Чтобы преобразовать в соответствии с индийским временем, мы добавили 5:30 по всемирному координированному времени, поскольку индийское время на 5 с половиной часов опережает UTC / GMT.
Принципиальная электрическая схема:
Схема подключения Arduino GPS Clock проста. Arduino используется для управления всем процессом, он получает данные GPS со спутника через модуль GPS, извлекает дату и время из строки $ GPRMC и отображает их на ЖК-дисплее.
Выводы данных D4, D5, D6, D7 ЖК-дисплея 16x2 подключены к выводу №. 5, 4, 3, 2 Arduino и командные выводы RS и EN ЖК-дисплея подключены к выводам 7 и 6 Arduino соответственно. Контакт Tx модуля приемника GPS подключен к контакту 10 Rx Arduino. Контакт заземления Arduino и GPS соединены друг с другом. Здесь мы использовали модуль GPS SKG13BL, работающий со скоростью 9800 бит / с. Arduino также настроен на скорость передачи 9800 бит / с с помощью функции «Serial.begin (9800)».
Объяснение программирования:
В части программирования сначала мы включаем библиотеки и определяем контакты для последовательной связи ЖК-дисплея и программного обеспечения. Также определите некоторую переменную с массивами для хранения данных. Используя здесь Software Serial Library, мы разрешили последовательную связь на выводах 10 и 11 и сделали их Rx и Tx соответственно. По умолчанию выводы 0 и 1 Arduino используются для последовательной связи, но с помощью библиотеки SoftwareSerial мы можем разрешить последовательную связь на других цифровых выводах Arduino.
#включают
После этого мы инициализировали последовательную связь и ЖК-дисплей в функции настройки и отобразили приветственное сообщение на ЖК-дисплее.
Затем мы извлекли время и дату из полученной строки.
в то время как (x
А затем преобразуйте время и дату в десятичные числа и измените их на индийское время (UTC +5: 30)
int UTC_hourDec = UTC_hour.toInt (); int UTC_minutDec = UTC_minut.toInt (); int Second = UTC_second.toInt (); int Date = UTC_date.toInt (); int Месяц = UTC_month.toInt ();……………
И, наконец, время и дата были показаны на ЖК-дисплее с помощью функции lcd.print , проверьте полный код ниже.