Передача данных через Arduino на частоте 433 МГц

Вопросы и ответы

Технические характеристики передатчик MX-F01

  • Напряжение питания: 3-12 В
  • Потребление тока в режиме ожидания: 0 мА
  • Потребление тока в режиме передачи: 20-28 мА
  • Рабочая частота: 433,920 МГц (доступно 315 МГц)
  • Выходная мощность передатчика: 40 мВт
  • Дальность передачи: до 500 м по прямой с дополнительной антенной 17,5, 35 или 70 см
  • Тип модуляции: амплитуда
  • Диапазон температур: –10… + 70 ° C
  • Размеры: 19x19x8 мм

Назначение выводов передатчика MX-F01

  • ATAD — данные
  • VCC — блок питания «+»
  • GND — блок питания «-«
  • ANT — антенна

Информация о GPS

Что такое GPS?

Глобальная система позиционирования (GPS) — это спутниковая навигационная система, состоящая как минимум из 24 спутников. GPS работает в любых погодных условиях в любой точке мира 24 часа в сутки без ежемесячных затрат или затрат на установку.

Как работает GPS?

Спутники GPS обращаются вокруг Земли дважды в день по точной орбите. Каждый спутник передает уникальный сигнал и параметры орбиты, которые позволяют устройствам GPS декодировать и вычислять точное местоположение спутника. Приемники GPS используют эту информацию и трилатерацию для расчета точного местоположения пользователя. По сути, приемник GPS измеряет расстояние до каждого спутника в зависимости от времени, необходимого для приема переданного сигнала. При измерении расстояния до нескольких спутников приемник может определить ваше местоположение и отобразить его.

Чтобы рассчитать 2D-координаты (широту и долготу) и направление, приемник GPS должен быть привязан к сигналу как минимум от 3 спутников. При наличии 4 или более спутников приемник может определить ваше трехмерное положение (широту, долготу и высоту). Обычно приемник GPS отслеживает 8 или более спутников, но это зависит от времени суток и вашего местоположения на Земле.

После определения вашего местоположения модуль GPS может вычислить другую информацию, например:

  • скорость;
  • азимут, пеленг;
  • направление;
  • расстояние от остановки;
  • расстояние от пункта назначения.

Какой сигнал?

Спутники GPS передают не менее 2 радиосигналов малой мощности. Сигналы проходят в пределах прямой видимости, что означает, что они будут проходить через облака, стекло и пластик, но не будут проходить через большинство твердых объектов, таких как здания и горы. Однако современные приемники более чувствительны и, как правило, могут отслеживать даже дома.

Сигнал GPS содержит 3 различных типа информации:

  • Псевдослучайный код — это идентификационный код, который определяет, какой спутник передает информацию. Вы можете увидеть, с какого спутника вы принимаете сигналы, на странице информации о спутнике на вашем устройстве.
  • Данные эфемерид необходимы для определения положения спутника и предоставления важной информации о статусе спутника, текущей дате и времени.
  • Данные альманаха сообщают приемнику GPS, где должен находиться каждый спутник GPS в любое время суток, и отображают информацию об орбите для этого спутника и каждого другого спутника в системе.

Аппаратная часть

Мой модуль GPS имеет 6 контактов: GND, Vin, Tx, Rx и еще GND. Шестой пин никуда не подключен. Вывод GND подключен к корпусу на Arduino, Vin подключен к шине + 5V на Arduino, Tx подключен к выводу 10 на Arduino, а вывод Rx нигде не подключен, так как мы не будем отправлять никаких сообщений на GPS модуль. Мой модуль передает спутниковые данные с помощью интерфейса RS-232 со скоростью 4800 бит / с, который принимает Arduino на выводе 10.

Ниже фото модуля GPS:

модуль gps
Модуль GPS EM-411

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

$ GPGGA, 161229.487,3723.2475, N, 12158.3416, W, 1,07,1.0,9.0, M ,,,, 0000 * 18

Формат данных GGAНазвание Пример Единица Описание

ID сообщения $ GPGGA Заголовок протокола GGA
Время UTC 161 229,487 hhmmss.sss (две цифры для часов, две цифры для минут, затем секунды с точностью до тысячных)
Широта 3723,2475 ддмм.мммм (первые две цифры — градусы, затем минуты с точностью до десятитысячных)
N / S флаг Нет N — север, S — юг
Долгота 12158.3416 ддмм.мммм (первые две цифры — градусы, затем минуты с точностью до десятитысячных)
E / W флаг W E — восток, W — запад
Индикатор положения 1
  • 0 — позиция недоступна или неверна;
  • 1 — режим SPS GPS, положение правильное;
  • 2 — дифференциальный GPS, режим SPS, положение правильное;
  • 3 — режим GPS PPS, локация верна.
Количество используемых спутников 07 В диапазоне от 0 до 12
HDOP 1.0 Ухудшение горизонтальной точности
Высота над уровнем моря 9.0 метры
Ед изм М метры
Разница геоидов Разница между земным эллипсоидом WGS-84 и уровнем моря (геноидом)
Ед изм М метры
Возраст дифференциальных данных GPS секунды Нулевые поля, когда DGPS не используется
Дифференциальные поправки радиовещания ID станции 0000
Проверить сумму *18
Конец сообщения

Все эти данные поступают в Arduino через контакт 10. Библиотека TinyGPS считывает сообщения GPGGA и GPRMC (подробности о GPRMC см. В техническом описании).

Arduino на схеме не показан. Подключите периферийные устройства согласно подписанным соединениям.

схема часов gps на arduino
Схема часов Arduino GPS

Загрузки

Вот все файлы, которые могут вам понадобиться:

  • исходный код скетча;
  • библиотека TinyGPS;
  • техническое описание GPS-модуля EM-411;
  • техническое описание GPS-модуля VK2828U7G5LF;
  • техническое описание GPS-модулей NEO-6.

Основные функций для работы с последовательным портом (Serial)

Serial.begin (скорость) — открывает последовательный порт и устанавливает скорость последовательной передачи данных. Типичная скорость передачи данных для компьютерной связи составляет 9600 бод.

Очевидно, что когда последовательный порт включен, контакты 0 (RX) и 1 (TX) не могут использоваться для каких-либо других целей.

Serial.println (данные) — отправляет данные в последовательный порт с последующим переносом слов и новой строкой.

Serial.print (data) — тоже самое без возврата каретки и новой строки.

count = Serial.available (); — Байты, полученные через последовательный порт, попадают в буфер микроконтроллера, откуда ваша программа может их прочитать. Функция возвращает количество байтов, накопленных в буфере. В последовательном буфере может храниться до 128 байт.

char = Serial.read (); — Чтение следующего байта из буфера последовательного порта возвращает -1, если нет входов

Serial.flush (); — Ожидает окончания передачи выходных данных (до Arduino 1.0 функция очищала буфер последовательного соединения)..

Разные варианты функции print:

Серийный принт (b, DEC); — вывести строку ASCII — десятичное представление числа b.

Serial.print (b, BYTE) — выводит младший байт числа b.

(аналогично HEX, OCT, BIN).

Serial.print (str) // если str является строкой или символьным массивом, передать str в COM-порт по байтам.

Serial.println (); — разница в том, что после данных выводятся два дополнительных символа: символ возврата каретки (ASCII 13 или ‘ r’) и символ новой строки (ASCII 10 или ‘ n’).

Функция write:

Serial.write (uint8_t c); — Записывает данные в последовательный порт. Данные отправляются в виде байта или последовательности байтов.

Serial.write (val); // где val — это переменная, которая должна быть передана в виде одного байта

Serial.write (ex); // где str — строка, которая должна быть передана как последовательность байтов

Serial.write (buf, len); // где buf — массив, который нужно передать как последовательность байтов; len — это длина массива.

Технические характеристики приемника MX-RM-5V

  • Напряжение питания: 5 В
  • Потребление тока: 4 мА
  • Рабочая частота: 433,920 МГц (доступно 315 МГц)
  • Размеры: 30x14x7 мм

Назначение выводов приемника MX-RM-5V

  • GND — блок питания «-«
  • DATA — данные
  • VCC — блок питания «+»
  • ANT — антенна

Основная информация у нас есть: пора приступить к практической части.

Комплектующие: технические описания и ссылки на магазины (aliexpress и пр.)

  • Arduino Mega;
  • ЖК-индикатор (или такой же индикатор, но с кнопками и потенциометром);
  • GPS-модули VK2828U7G5LF и GY-NEO6MV2;
  • макетная доска;
  • перемычки.

Введение

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

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

По сути, приемник измеряет TOA (время прибытия) четырех спутниковых сигналов со своих часов. Основываясь на TOA и TOT (времени передачи), приемник рассчитывает четыре раза «полетного» сигнала (TOF, время полета), которые отличаются друг от друга в зависимости от расстояния от спутника до приемника. Затем на основе четырех значений TOF приемник вычисляет свое трехмерное положение и наклон своих часов.

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

Подключение передатчика MX-F01 к Arduino

Я буду использовать Arduino Mega 2560 для управления передатчиком MX-F01.

Приступаем к подключению:

  • ATAD на MX-F01 подключен к дискретному выводу 12 Arduino Mega 2560
  • VCC на MX-F01 подключается к + 5V Arduino Mega 2560
  • GND на MX-F01 подключается к GND Arduino Mega 2560
  • ANT на MX-F01 к антенне в виде отрезка провода длиной 17,5, 35 или 70 см (антенну еще не припаивал)

Обзор GPS-модулей для Ардуино

Ардуино GPSСуществует большое количество различных модулей GPS для работы с Arduino. С их помощью можно определить точное местоположение (географические координаты, высоту), скорость движения, дату, время.

Модуль ЭМ-411. В основе устройства лежит высокопроизводительный чип SiRF Star III, обладающий низким энергопотреблением. Модуль имеет большой объем памяти для хранения данных альманаха, поддерживает стандартный протокол NMEA 0183. Время холодного старта составляет примерно 45 секунд.

VK2828U7G5LF. Этот модуль основан на микросхеме Ublox UBX-G7020-KT. С его помощью можно получать координаты через GPS и ГЛОНАСС. Ресивер имеет внутреннюю память, в которой можно сохранять настройки. Модуль имеет встроенную керамическую антенну и работает по протоколу NMEA 0183. Напряжение питания модуля составляет 3,3-5 В.

SKM53 GPS. Один из самых дешевых модулей с низким энергопотреблением. Время холодного старта составляет около 36 секунд, время горячего старта — 1 секунда. 66 каналов используются для позиционирования, 22 канала для отслеживания. В модуль встроена GPS-антенна, устройство обеспечивает высокие навигационные характеристики в различных условиях видимости.

Нео-6М GPS. Ресивер произведен компанией u-blox. Этот модуль использует новейшие технологии для получения точной информации о местоположении. Напряжение питания модуля 3-5В. Ассортимент устройств представлен типами G, Q, M, P, V и T со своими уникальными характеристиками. Время холодной загрузки составляет примерно 27 секунд.

locosys 1513. Этот модуль поддерживает GPS, ГЛОНАСС, Galileo, QZSS, SBAS. Основан на чипе MediaTek MT333, который имеет низкое энергопотребление, высокую чувствительность и стабильную работу в различных условиях. Приемник поддерживает текстовый протокол управления. Время холодной загрузки составляет примерно 38 секунд.

Подключение приемника MX-RM-5V к Arduino

Я буду использовать Arduino Nano ATmega328 для управления приемником.

  • ДАННЫЕ на MX-RM-5V подключаются к дискретному контакту 12 Arduino Nano ATmega328
  • VCC на MX-RM-5V подключается к + 5V Arduino Nano ATmega328
  • GND на MX-RM-5V подключается к GND Arduino Nano ATmega328
  • ANT на MX-RM-5V к антенне в виде отрезка провода длиной 17,5, 35 или 70 см (антенну еще не припаивал)

Библиотека VirtualWire

Для упрощения написания кода для работы с радиомодулями создана библиотека VirtualWire.

VirtualWire.rar (17,3 KiB, 5 371 результатов)

Распакуйте содержимое архива в папку / libraries /, которая находится в каталоге среды разработки Arduino.

Программное обеспечение

Когда GPS включен, для получения правильного положения от спутников требуется некоторое время. Когда позиция получена, модуль отправляет сообщения NMEA на Arduino. Библиотека TinyGPS содержит функцию для получения времени и даты из сообщения GPRMC. Он называется crack_datetime () и принимает в качестве параметров семь указателей на переменные: год год, месяц месяц, день месяца день, час час, минута минута, секунда секунда и сотые сотые доли. Вызов функции выглядит так:

Вызов этой функции возвращает вам правильные значения переменных, если с оборудованием все в порядке.

Чтобы узнать свою позицию, вы можете вызвать функцию f_get_position (). Эта функция принимает в качестве параметров два указателя на переменные: широту и долготу. Вызов этой функции выглядит так:

Примеры кода для работы с передатчиком MX-F01 с использованием библиотеки VirtualWire

GPS модуль NEO-6M и Arduino UNO

Внешне модуль GPS выглядит так:

Вы, наверное, уже знаете плату Arduino Uno:

Подключение модуля GPS и Arduino UNO

Подключите четыре контакта к Arduino следующим образом

GND → GND
TX → Цифровой выход (D3)
RX → цифровой вывод (D4)
Vcc → 5Vcc

Мы предлагаем использовать внешний источник питания для питания модуля GPS, так как минимальное энергопотребление для модуля GPS Arduino составляет 3,3 В, и Arduino не может обеспечить это напряжение. Используйте USB TTL для подачи напряжения:

Win8_x64_x86 профили USB-TTL

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

Подключение Arduino UNO и ЖК-дисплея JHD162a

Теперь нам нужно соединить Arduino и LCD, мы взяли LHD162a:

Список подключений ниже: LCD → Arduino:

  • VSS → GND
  • VCC → 5 В
  • VEE → резистор 10 кОм
  • RS → A0 (аналоговый вывод)
  • R / W → GND
  • MI → LA1
  • D4 → LA2
  • D5 → LA3
  • D6 → LA4
  • D7 → A5
  • LED + → VCC
  • LED- → GND

Как соединить две ардуины по UART (serial) порту

Схема соединения двух ардуин:

  • 1-й —- 2
  • GND <—> GND
  • RX <—> TX
  • TX <—> RX

Длина и скорость кабеля: RS-232 (рекомендуемый стандарт 232) — это стандарт физического уровня для асинхронного интерфейса (UART).

Максимальное расстояние связи RS232 15 метров.

Результат работы

Не забудьте припаять антенны, иначе без них дальность передачи будет всего несколько сантиметров.

на этом пока все.

Возможные проблемы

Автоматическая перезагрузка DTR: вы можете автоматически перезагружать MC при передаче на него данных в последовательном режиме. Чтобы выключить его, поместите конденсатор 10 мкФ между RES и GND. Поставил электролитический конденсатор (конечно + на РЭС).

Arduino GPS модуль GY-NEO6MV2

Arduino GPS NEO 6M с антеннойМодуль использует стандартный протокол NMEA 0183 для связи с приемниками GPS. Приемник представляет собой плату, на которой расположены модуль НЕО-6М-0-001, стабилизатор напряжения, энергонезависимая память, светодиод и аккумулятор.

Технические характеристики модуля:

  • Напряжение питания 3,3-5В;
  • Интерфейс UART 9600 8N1 3.3V;
  • Протокол NMEA;
  • Вес модуля 18 гр.;
  • EEPROM для сохранения настроек;
  • Встроенный аккумулятор;
  • Возможность подключения антенны к разъему U-FL;
  • Время холодного старта составляет около 27 секунд, время горячего старта — 1 секунда;
  • Более 50 каналов позиционирования;
  • Частота обновления 5 Гц;
  • Рабочие температуры от -40С до 85С.

Модуль широко используется для вертолетов, определяя текущее положение сидячих объектов и транспортных средств. Полученные координаты можно загрузить в Google Maps, Google Earth и другие.

После холодного запуска модуля начинается загрузка альманаха. Время зарядки: не более 15 минут, в зависимости от условий и количества спутников в зоне видимости.

Распиновка: GND (земля), RX (ввод данных UART), TX (вывод данных UART), Vcc — источник питания от 3,3 до 5 В.

Для подключения понадобится модуль GY-NEO6MV2, плата Arduino, кабели, антенна GPS. Подключение контактов: VCC к 5 В, GND к GND, RX к контакту 9 на Arduino, TX к контакту 10. Затем Arduino необходимо подключить к компьютеру через USB.

Для работы потребуется связать несколько библиотек. SoftwareSerial: требуется для расширения аппаратных функций устройства и управления последовательной связью. Библиотека TinyGPS используется для преобразования сообщений NMEA в удобный для чтения формат.

Проверка работы через программу U-Center

Как было сказано выше, модуль производится компанией u-blox, поэтому для настройки приемника используется программное обеспечение U-Center.

При подключении к UART приемник отправляет сообщения по протоколу NMEA один раз в секунду. С помощью программы можно персонализировать передаваемые сообщения.

Для настройки модуля необходимо подключить его через преобразователь USB-UART (COM-UART). Вы можете настроить соединение с помощью меню Receiver-Port. Как только соединение будет установлено, загорится зеленый индикатор. Приемник начнет устанавливать соединение со спутниками, после чего на экране появятся текущие координаты, время и другая информация. Все сообщения отображаются в окне сообщений. В меню View — Messages можно выбрать сообщения, которые будут передаваться на микроконтроллер. В зависимости от выполняемой задачи количество отправляемых сообщений может быть уменьшено, что увеличит скорость обработки данных и упростит алгоритм анализа сообщений контроллером.

Если связь со спутником не установлена, необходимо проверить, подключена ли антенна. Затем нужно проверить напряжение питания, оно должно быть 5В. Если соединение еще не установлено, вы можете разместить модуль в окне или выйти на открытое пространство.

вы можете просмотреть переданные данные через меню View.

GPS в проектах Arduino

Все сообщения начинаются с символа $, за которым следуют идентификаторы сообщений. GP — это глобальная система, следующие 3 буквы показывают, какая информация содержится.

RMC — наименьшая навигационная информация (время, дата, координаты, скорость, направление).

GGA — Информация о фиксированном местоположении. Записываются время, координаты, высота, статус позиционирования, количество спутников.

Читайте также: Bluetooth-модуль HC-05 и HC-06 для Ардуино: АТ-команды и подключение

Оцените статью
Блог про Arduino