- Необходимые материалы
- Arduino LoRa Shield
- Изготовление печатной платы для LoRa Shield
- Сборка печатной платы
- Подключение GPS модуля к передатчику LoRa
- Программирование Arduino LoRa как передатчика GPS
- Программирование Arduino LoRa как приемника GPS
- Работает GPS-трекер Arduino LoRa
Знание местонахождения конкретного объекта / человека всегда утешало. Сегодня GPS широко используется в приложениях для управления активами, таких как слежение за транспортными средствами, слежение за парком, слежение за активами, слежение за людьми, слежение за домашними животными и т. Д. Для любого устройства слежения основное внимание при проектировании будет уделяться ожидаемой емкости аккумулятора и диапазону мониторинга. Учитывая и то, и другое, LoRa кажется идеальным выбором, поскольку он имеет очень низкое энергопотребление и может работать на больших расстояниях. Итак, в этом уроке мы построим систему GPS-слежения с использованием LoRa, система будет состоять из передатчика, который будет считывать информацию о местоположении с GPS-модуля NEO-6M.и передать его по беспроводной сети через Лору. Приемная часть будет получать информацию и отображать ее на ЖК-дисплее 16x2. Если вы новичок в LoRa, узнайте о технологиях LoRa и LoRaWAN и о том, как их можно связать с Arduino, прежде чем продолжить.
Для простоты и рентабельности этого проекта мы не будем использовать шлюз LoRa. Вместо этого будет выполняться одноранговая связь между передатчиком и приемником. Однако, если вам нужен глобальный диапазон, вы можете заменить приемник шлюзом LoRa. Кроме того, поскольку я из Индии, мы будем использовать модуль LoRa 433 МГц, который является здесь законным диапазоном ISM, поэтому вам, возможно, придется выбрать модуль в зависимости от вашей страны. При этом, давайте начнем…
Необходимые материалы
- Arduino Lora Shield - 2Nos (дизайн печатной платы доступен для загрузки)
- Arduino Uno - 2Nos
- Модуль LoRa SX1278 433 МГц - 2
- Антенна Lora 433 МГц
- Модуль GPS НЕО-6М
- Модуль ЖК-дисплея
- Соединительные провода
Arduino LoRa Shield
Чтобы упростить создание вещей с помощью LoRa, мы разработали для этого проекта LoRa Arduino Shield. Этот экран состоит из SX1278 433 МГц с регулятором 3,3 В, разработанным с использованием регулятора LM317 Variable. Shield будет располагаться непосредственно поверх Arduino, обеспечивая ему возможности LoRa. Этот LoRa Shield пригодится, когда вам нужно развернуть узлы зондирования LoRa или создать ячеистую сеть LoRa. Полная принципиальная схема LoRa Arduino Shield приведена ниже.
Shield состоит из разъема 12 В, который при включении будет использоваться для регулирования 3,3 В для модуля LoRa с помощью регулятора LM317. Он также будет использоваться для питания Arduino UNO через вывод Vin, а регулируемое напряжение 5 В от Arduino используется для питания ЖК-дисплея на щите. Выходное напряжение LM317 фиксируется на уровне 3,3 В с использованием резистора R1 и R2 соответственно, номинал этих резисторов можно рассчитать с помощью калькулятора LM317.
Поскольку модуль LoRa потребляет очень низкую мощность, он также может питаться напрямую от вывода 3.3V Arduino, но мы использовали конструкцию внешнего регулятора, поскольку LM317 более надежен, чем встроенный регулятор напряжения. На экране также есть потенциометр, который можно использовать для регулировки яркости ЖК-дисплея. Подключение модуля LoRa к Arduino аналогично тому, что мы делали в нашем предыдущем руководстве по взаимодействию Arduino с Lora.
Изготовление печатной платы для LoRa Shield
Теперь, когда наша схема готова, мы можем приступить к проектированию нашей печатной платы. Я открыл программу для проектирования печатных плат и начал формировать свои треки. После завершения проектирования печатной платы моя плата выглядела примерно так, как показано ниже.
Вы также можете загрузить файлы дизайна в формате GERBER и изготовить из них свои платы. Ссылка на файл Gerber приведена ниже.
Скачать файл Gerber для Arduino LoRa Shield
Теперь, когда наш Дизайн готов, пора их изготовить. Сделать печатную плату довольно просто, просто выполните следующие действия.
Шаг 1. Зайдите на сайт www.pcbgogo.com, зарегистрируйтесь, если вы впервые. Затем на вкладке прототипа печатной платы введите размеры вашей печатной платы, количество слоев и количество требуемых печатных плат. Предполагая, что размер печатной платы составляет 80 см × 80 см, вы можете установить размеры, как показано ниже.
Шаг 2: Продолжите, нажав кнопку Цитировать сейчас . Вы попадете на страницу, где при необходимости установите несколько дополнительных параметров, например, используемый материал, интервал дорожек и т. Д. Но в большинстве случаев значения по умолчанию будут работать нормально. Единственное, что мы должны здесь учитывать, - это цена и время. Как видите, время сборки составляет всего 2-3 дня, а для нашего PSB это всего лишь 5 долларов. Затем вы можете выбрать предпочтительный способ доставки в зависимости от ваших требований.
Шаг 3: Последний шаг - загрузить файл Gerber и продолжить оплату. Чтобы убедиться, что процесс проходит гладко, PCBGOGO проверяет, действителен ли ваш файл Gerber, прежде чем продолжить оплату. Таким образом, вы можете быть уверены, что ваша печатная плата удобна для изготовления и будет доставлена вам в установленном порядке.
Сборка печатной платы
После того, как плата была заказана, она пришла ко мне через несколько дней, хотя курьер доставил ее в аккуратно помеченную, хорошо упакованную коробку, и, как всегда, качество печатной платы было потрясающим.
Я включил паяльник и приступил к сборке платы. Поскольку посадочные места, контактные площадки, переходные отверстия и шелкография идеально подходят по форме и размеру, у меня не было проблем со сборкой платы. После завершения пайки плата выглядела так, как показано ниже, поскольку вы можете видеть, что она плотно прилегает к моей плате Arduino Uno.
Поскольку наш проект имеет передатчик Arduino Lora и Arduino Lora приемника нам потребуется два щита один для приемника, а другой для передатчика. Итак, я приступил к пайке еще одной печатной платы, как печатная плата с модулем LoRa, так и ЖК-дисплей показаны ниже.
Как вы можете видеть, только к приемнику LoRa shied (левый) подключен ЖК-дисплей, сторона передатчика состоит только из модуля LoRa. Далее мы подключим модуль GPS к передатчику, как описано ниже.
Подключение GPS модуля к передатчику LoRa
Используемый здесь модуль GPS - это модуль GPS NEO-6M, модуль может работать с очень низким энергопотреблением с малым форм-фактором, что делает его подходящим для приложений слежения. Однако есть много других доступных модулей GPS, которые мы использовали ранее в различных приложениях для отслеживания транспортных средств и определения местоположения.
Модуль работает при напряжении 5 В и обменивается данными с использованием последовательной связи со скоростью 9600 бод. Следовательно, мы подключаем модуль к выводу + 5V Arduino и подключаем выводы Rx и Tx к цифровым выводам D4 и D3 соответственно, как показано ниже.
Контакты D4 и D3 будут настроены как программные последовательные контакты. После включения GPS-модуль NEO-6M будет искать спутниковое соединение и автоматически выводить всю информацию последовательно. Эти выходные данные будут в формате предложений NMEA, который обозначает Национальную ассоциацию морской электроники и является стандартным форматом для всех устройств GPS. Чтобы узнать больше об использовании GPS с Arduino, перейдите по ссылке. Эти данные будут большими, и в большинстве случаев нам придется обрабатывать их вручную, чтобы получить желаемый результат. К счастью для нас есть библиотека под названием TinyGPS ++, которая делает за нас всю тяжелую работу. Вам также необходимо добавить библиотеку LoRa, если вы еще этого не сделали. Итак, давайте загрузим обе библиотеки по ссылке ниже
Скачать библиотеку TinyGPS ++ Arduino
Скачать библиотеку Arduino LoRa
По ссылке будет загружен ZIP-файл, который затем можно будет добавить в IDE Arduino, выполнив команду Sketch -> Include Library -> Add.ZIP library. Как только вы будете готовы с оборудованием и библиотекой, мы можем приступить к программированию наших плат Arduino.
Программирование Arduino LoRa как передатчика GPS
Как мы знаем, LoRa - это приемопередающее устройство, то есть оно может как отправлять, так и получать информацию. Однако в этом проекте GPS-трекера мы будем использовать один модуль в качестве передатчика для считывания информации о координатах с GPS и ее отправки, а другой модуль в качестве приемника, который будет получать значения координат GPS и печатать их на ЖК-дисплее. Программу как для передатчика и модуля приемника можно найти в нижней части этой страницы. Убедитесь, что вы установили библиотеки для модуля GPS и LoRa, прежде чем продолжить код. В этом разделе мы рассмотрим код передатчика.
Как всегда, мы начинаем программу с добавления необходимых библиотек и контактов. Здесь библиотеки SPI и LoRa используются для связи LoRa, а библиотеки TinyGPS ++ и SoftwareSerial используются для связи GPS. Модуль GPS в моем оборудовании подключен к контактам 3 и 4, и поэтому мы также определяем это следующим образом
#включают
Внутри функции настройки мы запускаем мониторинг последовательного порта, а также инициализируем программный последовательный порт как «gpsSerial » для связи с нашим GPS-модулем NEO-6M. Также обратите внимание, что я использовал 433E6 (433 МГц) в качестве моей рабочей частоты LoRa, возможно, вам придется изменить ее в зависимости от типа используемого модуля.
void setup () { Serial.begin (9600); gpsSerial.begin (9600); while (! серийный); Serial.println («Отправитель LoRa»); if (! LoRa.begin (433E6)) { Serial.println («Не удалось запустить LoRa!»); в то время как (1); } LoRa.setTxPower (20); }
Внутри функции цикла мы проверяем, выдает ли модуль GPS какие-либо данные, если да, то мы читаем все данные и фразу, используя функцию gps.encode. Затем мы проверяем, получили ли мы действительные данные о местоположении, используя функцию gps.location.isValid () .
while (gpsSerial.available ()> 0) if (gps.encode (gpsSerial.read ())) if (gps.location.isValid ()) {
Если мы получили действительное местоположение, мы можем начать передачу значений широты и долготы. Функция gps.location.lat () дает координату широты, а функция gps.location.lng () дает координату долготы. Так как мы будем печатать их на ЖК-дисплее 16 * 2, мы должны указать, когда нужно переходить ко второй строке, поэтому мы используем ключевое слово «c», чтобы заставить получателя напечатать следующую информацию в строке 2.
LoRa.beginPacket (); LoRa.print ("Широта:"); LoRa.print (gps.location.lat (), 6); LoRa.print («с»); LoRa.print ("Длинный:"); LoRa.print (gps.location.lng (), 6); Serial.println («Отправлено через LoRa»); LoRa.endPacket ();
Программирование Arduino LoRa как приемника GPS
Код передатчика уже отправляет значение координат широты и долготы, теперь приемник должен прочитать эти значения и распечатать их на ЖК-дисплее. Точно так же здесь мы добавляем библиотеку для модуля LoRa и ЖК-дисплея и определяем, к каким контактам подключен ЖК-дисплей, а также инициализируем модуль LoRa, как и раньше.
#включают
Внутри функции цикла мы прослушиваем пакеты данных из модуля LoRa передатчика и их размер с помощью функции LoRa.parsePacket () и сохраняем их в переменной « packetSize ». Если пакеты получены, мы продолжаем их считывать как символы и выводить на ЖК-дисплей. Программа также проверяет, отправляет ли модуль LoRa ключевое слово «c», если да, то печатает оставшуюся информацию во второй строке.
if (packetSize) {// Если пакет получен Serial.print ("Полученный пакет '"); lcd.clear (); в то время как (LoRa.available ()) { char incoming = (char) LoRa.read (); если (входящий == 'c') { lcd.setCursor (0, 1); } else { lcd.print (входящий); } }
Работает GPS-трекер Arduino LoRa
Когда оборудование и программа готовы, мы можем загрузить оба кода в соответствующие модули Arduino и запитать их с помощью адаптера 12 В или кабеля USB. Когда передатчик включен, вы можете заметить, что синий светодиод на модуле GPS мигает, это означает, что модуль ищет спутниковое соединение для получения координат. Тем временем модуль приемника включится, и на ЖК-экране отобразится приветственное сообщение. Как только передатчик отправит информацию, модуль приемника отобразит ее на своем ЖК-дисплее, как показано ниже.
Теперь вы можете перемещаться с модулем GPS передатчика, и вы заметите, что приемник обновляет свое местоположение. Чтобы узнать, где именно находится модуль передатчика, вы можете прочитать значения широты и долготы, отображаемые на ЖК-дисплее, и ввести их в карты Google, чтобы получить местоположение на карте, как показано ниже.
Полный рабочий также можно найти в видео, приведенном в нижней части этой страницы. Надеюсь, вы поняли руководство и получили удовольствие от создания чего-то полезного. Если у вас есть какие-либо сомнения, вы можете оставить их в разделе комментариев ниже или использовать наши форумы для других технических вопросов.