В этой статье мы рассмотрим подключение GPS-модуля Quectel L80 к плате Arduino. Модуль L80 GPS от Quectel — это крошечный, недорогой и маломощный модуль GPS-модуль, доступный на рынке. Модуль L80 GPS со встроенной патч-антенной и малошумящим усилителем (LNA) обеспечивает высокую производительность системы позиционирования в промышленных приложениях.
Он может достичь самого высокого в отрасли уровня чувствительности, точности и TTFF с самым низким энергопотреблением в компактном корпусе без выводов. Он захватывает и отслеживает спутники в кратчайшие сроки даже при уровне сигнала в помещении. По сравнению с модулем GPS NEO-6M и приемником GPS/GNSS RYS8830 этот модуль имеет лучшую производительность .
Поэтому в этом проекте мы соединим модуль Quectel L80 GPS с Arduino и создадим собственный приемник GPS. Модуль L80 GPS может выдавать значения широты, долготы, скорости, высоты, даты и времени после синхронизации со спутником. Сначала мы подключим L80 GPS к плате Arduino Nano и отобразим параметры GPS на последовательном мониторе. Затем мы будем использовать ЖК-дисплей 16×2 для отображения значений широты, долготы, скорости, высоты, даты и времени.
Необходимые компоненты
- Плата Arduino Nano (купить на AliExpress).
- GPS-модуль Quectel L80 (купить на AliExpress).
- ЖК дисплей 16x2 (купить на AliExpress).
- Потенциометр (купить на AliExpress).
- Макетная плата.
- Соединительные провода.
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
GPS-модуль Quectel L80
L80 является идеальным решением для носимых фитнес-устройств благодаря своей сверхкомпактной конструкции и низкому энергопотреблению. Его функция низкого энергопотребления обеспечивает подключение к GPS примерно с половиной энергопотребления обычного режима в режиме статического приема. В сочетании с его точностью и высокой чувствительностью это делает L80 также подходящим для широкого спектра приложений интернета вещей (IoT), таких как портативные устройства, автомобильные, персональные трекеры, системы безопасности и промышленные КПК.
L80 имеет патч-антенну сверху размером 16,0 мм × 16,0 мм × 6,45 мм с 66 каналами захвата и 22 каналами слежения. Он захватывает и отслеживает спутники в кратчайшие сроки даже при уровне сигнала в помещении. Модуль работает при напряжении 2,8 В ~ 4,3 В с типичным потреблением энергии 20 мА, а в режиме ожидания потребление энергии составляет около 1,0 мА.
Основные характеристики модуля
1. Потребляемая мощность: обнаружение 25 мА, отслеживание 20 мА, режим ожидания 1,0 мА, резервное копирование: 7 мкА.
2. Тип приемника: GPS L1 1575,42 МГц C/A Code, 66 каналов поиска, 22 одновременных канала отслеживания.
3. Чувствительность: обнаружение -148 дБм, повторное обнаружение -160 дБм, отслеживание -165 дБм.
4. Источник питания: 2,8 В ~ 4,3 В.
5. Частота обновления: до 10 Гц, по умолчанию 1 Гц.
6. Точность сигнала 1PPS: типичная точность: +/-10 нс, ширина импульса времени 100 мс.
7. Точность ускорения: 0,1 м/с2
8. Динамические характеристики: максимальная высота 18000 м, максимальная скорость 515 м/с, ускорение 4G
9. Порт UART: TXD1 и RXD1. Поддерживает скорость передачи данных от 4800 бит/с до 115200 бит/с, по умолчанию 9600 бит /с.
10. Точность измерения скорости: 0,1 м/с.
11. Диапазон рабочих температур: -40~85 °C.
12. Встроенная патч-антенна.
13. Встроенный малошумящий усилитель для лучшей чувствительности.
Распиновка L80
Модуль Quectel L80 GPS имеет 12 контактов, как показано на рисунке выше. Функция каждого контакта представлена в следующей таблице.
Номер контакта | Название контакта | Функция контакта |
1 | RXD1 | UART-приемник |
2 | TXD1 | UART-передатчик |
3 | GND | земля (общий провод) |
4 | VCC | напряжение питания 2,8–4,3 В, обычно 3,3 В |
5 | V_BCKP | резервное питание для RTC |
6 | 1PPS | один импульс в секунду, синхронизирован по переднему фронту, ширина импульса 100 мс |
7 | TIMER | выходной сигнал с открытым стоком, используемый для управления включением/выключением основного питания модуля GPS |
8 | AADET_N | активное обнаружение антенны |
9 | NC | не подключается |
10 | RESET | сброс модуля |
11 | EX_ANT | вход внешней активной антенны RF |
12 | GND | земля (общий провод) |
Более подробную информацию об этом модуле вы можете найти в техническом описании L80.
Пайка штыревых контактов к модулю L80
L80 — это крошечный модуль SMD-типа, не имеющий штыревых/гнездовых контактов для тестирования. Поэтому вы можете использовать штыревой контакт с шагом 2,54 и припаять их к печатной плате L80 снизу.
После того, как вы припаяли все 12 контактов на модуле L80, модуль становится совместимым с макетной платой. Теперь вы можете легко вставить модуль на макетную плату.
Схема проекта
Схема подключения GPS-модуля Quectel L80 к плате Arduino представлена на следующем рисунке.
Подключение модуля довольно простое. Подключите VCC/GND для питания и не подавайте больше 3,3 В. Аналогично подключите резервный VCC (V_BCKP) к VCC или к внешней батарее. Он не будет работать, если этот вывод не запитан.
Подключите RX/TX L80 к контактам D2/D3 платы Arduino. Это для последовательной связи с использованием программного последовательного порта.
Исходный код программы и тестирование работы проекта
Самое лучшее в модуле L80 GPS — это то, что он поддерживает библиотеку Tiny GPS++. Загрузите библиотеку и добавьте ее в папку библиотеки.
Скопируйте следующий код и загрузите его на плату Arduino.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
#include <TinyGPS++.h> #include <SoftwareSerial.h> #define rxGPS 3 #define txGPS 2 long lat, lon; SoftwareSerial gpsSerial(rxGPS, txGPS); TinyGPSPlus gps; void setup() { Serial.begin(9600); // connect serial gpsSerial.begin(9600); // connect gps sensor } void loop() { while (gpsSerial.available()) // check for gps data { if (gps.encode(gpsSerial.read())) // encode gps data { Serial.print("SATS: "); Serial.println(gps.satellites.value()); Serial.print("LAT: "); Serial.println(gps.location.lat(), 6); Serial.print("LONG: "); Serial.println(gps.location.lng(), 6); Serial.print("ALT: "); Serial.println(gps.altitude.meters()); Serial.print("SPEED: "); Serial.println(gps.speed.mps()); Serial.print("Date: "); Serial.print(gps.date.day()); Serial.print("/"); Serial.print(gps.date.month()); Serial.print("/"); Serial.println(gps.date.year()); Serial.print("Hour: "); Serial.print(gps.time.hour()); Serial.print(":"); Serial.print(gps.time.minute()); Serial.print(":"); Serial.println(gps.time.second()); Serial.println("---------------------------"); delay(4000); } } } |
После загрузки кода откройте Serial Monitor (окно монитора последовательной связи). Изначально он отображает неверные данные, так как GPS-модуль не синхронизирован со спутником.
В первый раз получение данных может занять 2-3 минуты. В следующий раз и далее местоположение будет считываться очень быстро. В последовательном мониторе вы сможете увидеть широту, долготу, высоту, скорость, время и дату.
Схема проекта с ЖК-дисплеем
Схема подключения GPS-модуля Quectel L80 и ЖК-дисплея к плате Arduino представлена на следующем рисунке.
ЖК-дисплей работает от 5 В. Для подключения его контактов rs, en, d4, d5, d6, d7 вы можете выбрать любые контакты Arduino и задать их потом в коде. Например, мы используем контакты A0, A1, A2, A3, A4, A5.
Исходный код программы и тестирование проекта с ЖК-дисплеем
Скопируйте код и загрузите его на плату Arduino.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
#include <TinyGPS++.h> #include <SoftwareSerial.h> #include <LiquidCrystal.h> // include the library code const int rs = A0, en = A1, d4 = A2, d5 = A3, d6 = A4, d7 = A5; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); #define txGPS 2 #define rxGPS 3 long lat, lon; //int counter = 0; SoftwareSerial gpsSerial(rxGPS, txGPS); TinyGPSPlus gps; void setup() { Serial.begin(9600); // connect serial gpsSerial.begin(9600); // connect gps sensor lcd.begin(16, 2); } void loop() { while (gpsSerial.available()) // check for gps data { if (gps.encode(gpsSerial.read())) // encode gps data { Serial.print("SATS: "); Serial.println(gps.satellites.value()); Serial.print("LAT: "); Serial.println(gps.location.lat(), 6); Serial.print("LONG: "); Serial.println(gps.location.lng(), 6); Serial.print("ALT: "); Serial.println(gps.altitude.meters()); Serial.print("SPEED: "); Serial.println(gps.speed.mps()); Serial.print("Date: "); Serial.print(gps.date.day()); Serial.print("/"); Serial.print(gps.date.month()); Serial.print("/"); Serial.println(gps.date.year()); Serial.print("Hour: "); Serial.print(gps.time.hour()); Serial.print(":"); Serial.print(gps.time.minute()); Serial.print(":"); Serial.println(gps.time.second()); Serial.println("---------------------------"); lcd.setCursor(0, 0); lcd.print("LAT: "); lcd.print(gps.location.lat(), 6); lcd.setCursor(0, 1); lcd.print("LON: "); lcd.print(gps.location.lng(), 6); delay(2000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("ALT: "); lcd.print(gps.altitude.meters()); lcd.print(" m"); lcd.setCursor(0, 1); lcd.print("SPD: "); lcd.print(gps.speed.mps()); lcd.print(" mps"); delay(2000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Date: "); lcd.print(gps.date.day()); lcd.print("/"); lcd.print(gps.date.month()); lcd.print("/"); lcd.print(gps.date.year()); lcd.setCursor(0, 1); lcd.print("Time: "); lcd.print(gps.time.hour()); lcd.print(":"); lcd.print(gps.time.minute()); lcd.print(":"); lcd.print(gps.time.second()); delay(2000); lcd.clear(); } } } |
После загрузки кода подождите некоторое время. Когда модуль GPS синхронизируется со спутником, он отобразит значение широты и долготы на ЖК-дисплее.
Аналогично на ЖК-экране будут отображаться местное время и дата.
И, наконец, он также отобразит высоту над уровнем моря и скорость, с которой движется объект.
Портативный GPS-приемник с питанием от батареи
Поскольку модуль GPS L80 работает при напряжении 3,3 В, мы можем легко сделать GPS-приемник с питанием от батареи. Схема может питаться от литий-ионной батареи напряжением 3,7 В.
Схема ниже представляет собой простую схему, выполненную с использованием микроконтроллера Atmega328 и только необходимых компонентов. Вы можете собрать компоненты на макетной плате или использовать печатную плату для сборки конструкции проекта.
Схема имеет все необходимые компоненты для запуска микроконтроллера Atmega328 с кодом Arduino. Вы можете использовать кнопку сброса для сброса всей схемы. Переключатель используется для включения/выключения устройства. Аналогично, есть программный вывод, который используется для программирования микроконтроллера Atmega328 с помощью модуля FTDI.
Вы можете напрямую подключить литий-ионную или литий-полимерную батарею 3,7 В для питания устройства. Чтобы прочитать выходные данные, подключите устройство к телефону с помощью модуля USB-to-TTL. Затем откройте Serial Monitor (окно монитора последовательной связи) на Android/iPhone и там вы сможете прочитать данные GPS.
Проект печатной платы
Если вы не хотите собирать схему на макетной плате и вам нужна печатная плата для проекта, то вот печатная плата для вас. Я использовал EasyEDA для проектирования печатной платы. Печатная плата для сопряжения модуля L80 GPS с микроконтроллером Arduino выглядит примерно так, как показано ниже.
Файл Gerber для печатной платы вы можете скачать по ссылке ниже.