Как связать Arduino Mega с GPS-модулем NEO-6M
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 |
Приложения и онлайн-сервисы
|
Об этом проекте
Я обнаружил, что нет учебника по взаимодействию Arduino Mega с GPS-модулем NEO-6M, поэтому я решил сделать его. Надеюсь, вам понравится!
Необходимые компоненты
Оборудование
- Arduino Mega ==> 30 долларов США.
- GPS-модуль Нео-6М ==> 30 долларов
Программное обеспечение
- IDE Arduino
Общая стоимость проекта 60 долларов.
Информация о 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-модуль Нео-6М
GPS-модуль NEO-6M показан на рисунке ниже. Он поставляется с внешней антенной и не имеет контактов разъема. Так что вам нужно будет его припаять.
Обзор GPS-модуля NEO-6M
- GPS-чип NEO-6M
Сердцем модуля является GPS-чип NEO-6M от u-blox. Он может отслеживать до 22 спутников на 50 каналах и обеспечивает самый высокий в отрасли уровень чувствительности, то есть отслеживание -161 дБ, при потреблении тока питания всего 45 мА. Механизм позиционирования u-blox 6 также может похвастаться временем до первого исправления (TTFF) менее 1 секунды. Одна из лучших функций чипа - это режим энергосбережения (PSM). Это позволяет снизить энергопотребление системы за счет выборочного включения и выключения частей приемника. Это значительно снижает энергопотребление модуля до 11 мА, что делает его подходящим для приложений, чувствительных к энергопотреблению, таких как наручные часы с GPS. Необходимые контакты данных микросхемы NEO-6M GPS разбиты на заголовки с шагом 0,1 дюйма. Это включает в себя контакты, необходимые для связи с микроконтроллером через UART.
Примечание :- Модуль поддерживает скорость передачи от 4800 до 230400 бит / с при скорости передачи по умолчанию 9600 бод.
Светодиодный индикатор фиксации положения
На модуле GPS NEO-6M есть светодиод, который показывает состояние определения местоположения. Он будет мигать с разной частотой в зависимости от того, в каком состоянии он находится
- Не мигает ==> означает поиск спутников.
- Мигает раз в секунду - означает, что исправление положения найдено.
- Регулятор LDO 3,3 В
Рабочее напряжение микросхемы NEO-6M от 2,7 до 3,6В. Но модуль поставляется с регулятором 3V3 со сверхмалым падением напряжения MIC5205 от MICREL. Логические выводы также устойчивы к напряжению 5 В, поэтому мы можем легко подключить их к Arduino или любому логическому микроконтроллеру с напряжением 5 В без использования преобразователя логического уровня.
Батарея и EEPROM
Модуль оснащен двухпроводной последовательной EEPROM HK24C32. Он имеет размер 4 КБ и подключается к микросхеме NEO-6M через I2C. Модуль также содержит аккумуляторную батарею, которая действует как суперконденсатор.
EEPROM вместе с батареей помогает удерживать RAM с батарейным питанием (BBR). BBR содержит данные часов, последние данные о местоположении (GNSS или битовые данные) и конфигурацию модуля. Но он не предназначен для постоянного хранения данных.
Поскольку батарея сохраняет часы и последнее положение, время до первого исправления (TTFF) значительно сокращается до 1 с. Это позволяет намного быстрее блокировать положение.
Без батареи GPS всегда запускается из холодного состояния, поэтому первоначальная блокировка GPS занимает больше времени. Аккумулятор автоматически заряжается при включении питания и сохраняет данные до двух недель без питания.
Распиновка
- GND - это контакт заземления, который необходимо подключить к контакту GND на Arduino.
- Вывод TxD (передатчик) используется для последовательной связи.
- Вывод RxD (приемник) используется для последовательной связи.
- VCC обеспечивает питание модуля. Вы можете напрямую подключить его к выводу 5V на Arduino.
Ардуино Мега
Arduino - это электронная платформа с открытым исходным кодом, основанная на простом в использовании аппаратном и программном обеспечении. Платы Arduino могут считывать входные данные - свет на датчике, палец на кнопке или сообщение Twitter - и превращать его в выход - активировать двигатель, включать светодиод, публиковать что-то в Интернете. Вы можете указать своей плате, что делать, отправив набор инструкций микроконтроллеру на плате. Для этого вы используете язык программирования Arduino (на основе Wiring) и программное обеспечение Arduino (IDE) на основе Processing.
Arduino Mega 2560 - это плата микроконтроллера на базе Atmega2560.
- На плате имеется 54 цифровых входа / выхода и 16 аналоговых контактов, которые делают это устройство уникальным и выделяющимся среди других. Из 54 цифровых входов / выходов 15 используются для ШИМ (широтно-импульсной модуляции).
- Кварцевый генератор с частотой 16 МГц.
- Плата поставляется с портом для USB-кабеля, который используется для подключения и передачи кода с компьютера на плату.
- Разъем питания постоянного тока соединен с платой, которая используется для питания платы.
- Плата поставляется с двумя регуляторами напряжения, то есть 5 В и 3,3 В, что обеспечивает гибкость для регулирования напряжения в соответствии с требованиями.
- Есть кнопка сброса и 4 аппаратных последовательных порта, называемых USART, которые обеспечивают максимальную скорость для настройки связи.
- Есть три способа включить доску. Вы можете использовать USB-кабель для питания платы и передачи кода на плату, или вы можете включить его, используя Vin платы или через разъем питания или батарею.
Технические характеристики
Распиновка
Описание контакта
- 5 В и 3,3 В ==> Этот вывод используется для обеспечения выходного стабилизированного напряжения около 5 В. Этот регулируемый источник питания питает контроллер и другие компоненты на плате. Его можно получить от Vin платы или кабеля USB или другого регулируемого источника напряжения 5 В. В то время как другое регулирование напряжения обеспечивается контактом 3,3 В. Максимальная мощность, которую он может потреблять, составляет 50 мА.
- GND ==> На плате доступно 5 контактов заземления, что делает его полезным, когда для проекта требуется более одного контакта заземления.
- Сброс ==> Этот вывод используется для сброса платы. Установка этого вывода на НИЗКИЙ приведет к сбросу платы.
- Вин ==> Это входное напряжение, подаваемое на плату, от 7 до 20 В. Через этот контакт можно получить доступ к напряжению, обеспечиваемому разъемом питания. Однако выходное напряжение через этот вывод на плате будет автоматически установлено до 5 В.
- Последовательная связь ==> RXD и TXD - это последовательные контакты, используемые для передачи и приема последовательных данных, то есть Rx представляет собой передачу данных, а Tx используется для приема данных. Используются четыре комбинации этих последовательных контактов, где Serail 0 содержит RX (0) и TX (1), Serial 1 содержит TX (18) и RX (19), Serial 2 содержит TX (16) и RX (17), а Serial 3 содержит TX (14) и RX (15).
- Внешние прерывания ==> Шесть контактов используются для создания внешних прерываний, то есть прерывания 0 (0), прерывания 1 (3), прерывания 2 (21), прерывания 3 (20), прерывания 4 (19), прерывания 5 (18). Эти выводы создают прерывания несколькими способами, например, обеспечивают НИЗКОЕ значение, нарастающий или спадающий фронт или изменяют значение на выводах прерывания.
- Светодиод ==> Эта плата оснащена встроенным светодиодом, подключенным к цифровому выводу 13. ВЫСОКОЕ значение на этом выводе включает светодиод, а низкое - его выключение.
- AREF ==> AREF означает аналоговое опорное напряжение, которое является опорным напряжением для аналоговых входов.
- Аналоговые контакты ==> На плате имеется 16 аналоговых контактов, обозначенных как A0 - A15. Важно отметить, что все эти аналоговые выводы могут использоваться как цифровые выводы ввода / вывода. Каждый аналоговый вывод имеет 10-битное разрешение. Эти контакты могут измерять от земли до 5 В. Однако верхнее значение можно изменить с помощью функций AREF и analogReference ().
- I2C ==> Два контакта 20 и 21 поддерживают связь I2C, где 20 представляет SDA (последовательную линию данных, в основном используемую для хранения данных), а 21 представляет SCL (последовательную линию синхронизации, в основном используемую для обеспечения синхронизации данных между устройствами)
- Связь SPI ==> SPI означает последовательный периферийный интерфейс, используемый для передачи данных между контроллером и другими компонентами периферийных устройств. Четыре контакта, то есть 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS), используются для связи SPI.
IDE Arduino
Я предполагаю, что вы уже установили Arduino IDE.
1. Загрузите необходимую библиотеку, указанную ниже
Библиотека TinyGPS
2. После скачивания. Извлеките его и переместите в папку C:\ Users \ ... \ Documents \ Arduino \ libraries, убедитесь, что там нет (-).
3. Откройте IDE Arduino и скопируйте код из раздела программы.
4. Затем выберите плату для этого перейдите в Инструменты ==> Платы ==> выберите плату, здесь мы используем Arduino Mega 2560.
5. После выбора платы выберите порт, для чего перейдите в Инструменты ==> Порты.
6. После выбора платы и порта нажмите «Загрузить».
Связи
Arduino MEGA ==> NEO-6M GPS .
- 3,3 В ==> VCC
- GND ==> GND
- Tx1 (18) ==> Rx
- Rx1 (19) ==> Tx
Вы также можете использовать Serial2 или Serial3 вместо Serial1
Контакты Serial2
- Tx2 (16) ==> Rx
- Rx2 (17) ==> Tx
Контакты Serial3
- Tx3 (14) ==> Rx
- Rx3 (15) ==> Tx
Результат
Код
- Arduinomega_GPS
Arduinomega_GPS Arduino
// Подключение к контактам 18 и 19 # include// long lat, lon; // создать переменную для широты и долготы objectfloat lat, lon; TinyGPS gps; // создать объект GPSvoid setup () {Serial.begin (57600); // подключаемся к serialSerial.println ("Полученный сигнал GPS:"); Serial1.begin (9600); // подключаем датчик GPS} void loop () {while (Serial1.available ()) {// проверяем данные GPS if (gps.encode (Serial1.read ())) // кодируем данные GPS {gps.f_get_position (&lat , &lon); // получить широту и долготу Serial.print ("Position:"); // Широта Serial.print ("Широта:"); Серийный принт (лат., 6); Serial.print (","); // Долгота Serial.print ("Долгота:"); Serial.println (lon, 6); }}} / * // Подключение к контактам 16 и 17 # include // long lat, lon; // создать переменную для широты и долготы objectfloat lat, lon; TinyGPS gps; // создать объект GPSvoid setup () {Serial.begin (57600); // подключаемся к serialSerial.println ("Полученный сигнал GPS:"); Serial2.begin (9600); // подключаем датчик GPS} void loop () {while (Serial2.available ()) {// проверяем данные GPS if (gps.encode (Serial2.read ())) // кодируем данные GPS {gps.f_get_position (&lat , &lon); // получить широту и долготу Serial.print ("Position:"); // Широта Serial.print ("Широта:"); Серийный принт (лат., 6); Serial.print (","); // Долгота Serial.print ("Долгота:"); Serial.println (lon, 6); }}} * // * // Подключение к контактам 14 и 15 # include // long lat, lon; // создать переменную для широты и долготы objectfloat lat, lon; TinyGPS gps; // создать объект GPSvoid setup () {Serial.begin (57600); // подключаемся к serialSerial.println ("Полученный сигнал GPS:"); Serial3.begin (9600); // подключаем датчик GPS} void loop () {while (Serial3.available ()) {// проверяем данные GPS if (gps.encode (Serial3.read ())) // кодируем данные GPS {gps.f_get_position (&lat , &lon); // получить широту и долготу Serial.print ("Position:"); // Широта Serial.print ("Широта:"); Серийный принт (лат., 6); Serial.print (","); // Долгота Serial.print ("Долгота:"); Serial.println (lon, 6); }}} * /
Схема
Производственный процесс
- Захват капель воды с помощью Arduino
- Игра с дисплеем Nextion
- u-blox LEA-6H 02 GPS-модуль с Arduino и Python
- Как читать температуру и влажность на Blynk с DHT11
- Как создавать музыку с помощью Arduino
- Как использовать NMEA-0183 с Arduino
- Отображение местоположения по GPS с помощью экранов GPS и TFT
- Как использовать Modbus с Arduino
- Записывать информацию GPS на карту MicorSD с помощью Visuino
- Модуль Arduino + GPS - средство уведомления о пункте назначения