Начало работы с платой Quectel EC200U 4G LTE Cat 1 для IoT с использованием QNavigator и QuecOpen SDK

CNXSoft: Это гостевой пост от Eicut , демонстрирующий начало работы с платой разработки Quectel EC200U 4G TLE Cat 1 для IoT с использованием QNavigator и QuecOpen SDK.

В проектах IoT и в embedded-системах в целом наблюдается растущий спрос на более высокие скорости обмена данными и более широкое покрытие частотных диапазонов. Эти достижения критически важны для повышения надежности канала связи устройства с сетью. В результате модули 4G с возможностью отката на сети 2G и 4G стали ведущим решением в этой области. Но ключевой вопрос остается: какие модули следует использовать для применения этой технологии и какие функции они предлагают?

Изучение модуля Quectel EC200U LTE Cat 1 для IoT

В этом разделе руководства по EC200U мы подробнее рассмотрим один из самых популярных и надежных вариантов в сфере IoT — модуль Quectel EC200U. Если вы уже работали с модулями LTE Cat 1, вы, вероятно, сталкивались с этим модулем (или даже разрабатывали продукты на его основе). Но если вы новичок в EC200U, вот краткое введение.

EC200U — это серия модулей LTE Cat 1, оптимизированных для приложений M2M и IoT. Он поддерживает откат на сети 2G, когда 4G недоступен, обеспечивая надежное соединение, и обеспечивает скорости до 10 Мбит/с на прием и 5 Мбит/с на передачу по LTE-FDD (дуплексу с частотным разделением) и до 8,96 Мбит/с на прием и 3,1 Мбит/с на передачу по LTE-TDD (дуплексу с временным разделением).

Ключевые особенности и варианты

  • Форм-фактор Mini PCIe для широкой промышленной совместимости
  • Три региональные модели:
    • EC200U-CN (Китай/Индия)
    • EC200U-EU (EMEA/Австралия/Новая Зеландия)
    • EC200U-AU (Латинская Америка)

Каждый вариант покрывает необходимые частотные диапазоны для своего целевого рынка. Модуль поддерживает широкий спектр протоколов и интерфейсов, а также драйверы USB для Windows 8.1/10/11, Linux и Android, что делает его идеальным для приложений, таких как POS-системы, POC-устройства и другие IoT-решения.

Помимо базовой связи, EC200U предлагает:

  • Глобальное покрытие LTE & GSM/GPRS
  • Множество интерфейсов для приложений
  • Поддержку аналоговой голосовой связи
  • Встроенный GNSS (GPS/ГЛОНАСС/BeiDou/Galileo)
  • Сканирование Wi-Fi, Bluetooth и FOTA (обновление прошивки по воздуху)

Три версии: AB vs AA vs AC

EC200U поставляется в трех версиях (AB, AA и AC), которые мы подробно сравним позже. Самое приятное? Все версии имеют абсолютно одинаковый посадочный размер и программный слой, что означает возможность их замены в проекте без каких-либо проблем совместимости.

Feature EC200U-EU AB EC200U-EU AA EC200U-EU AC
LTE Category Cat 1 Cat 1 Cat 1
Max Download Speed 10 Mbps 10 Mbps 10 Mbps
Max Upload Speed 5 Mbps 5 Mbps 5 Mbps
GNSS Support No Yes No
BLE Yes Yes No
Form Factor LCC Package LCC Package LCC Package

Платформа разработки QuecOpen

Одна из выдающихся особенностей модуля — и фокус этой серии руководств — QuecOpen, функциональность, аналогичная OpenCPU (которую вы можете знать по 2G-модулям Quectel, таким как MC60 и M66).

С QuecOpen вы можете разрабатывать прошивку вашего устройства непосредственно на модуле, устраняя необходимость во внешнем микроконтроллере во многих случаях. Это не только упрощает конструкцию, но и снижает затраты — то, что мы уже видели в линейке 2G от Quectel, но теперь усилено для LTE-приложений. Для полного анализа аппаратных и программных характеристик EC200U ознакомьтесь с datasheet .

Начало работы с платой разработки Quectel EC200U

Вам понадобится аппаратная платформа на основе модуля Quectel EC200U. Это руководство основано на оценочной плате EC200U от Eicut (показана ниже), но вы также можете использовать официальную оценочную плату QuecPython EC200U , воспроизведенную несколькими компаниями, например, плату C4-P01 от Waveshare . Обратите внимание, что мини-PCIe модули Quectel EC200U здесь не подойдут, поскольку интерфейс лишен многих периферийных устройств, а клавиша USB BOOT не выведена, что не позволяет нам прошивать ОС.

Eicut Quectel EC200U-EU development board
Оценочная плата Eicut EC200U

Оценочная плата EC200U — это компактная платформа разработки для модуля Quectel EC200U серии LTE Cat-1 для прототипирования IoT.

Ключевая периферия для тестирования:

  • Слоты для SIM-карты и SD-карты
  • 3 разъема IPEX для 4G и GNSS, керамическая антенна WiFi/Bluetooth
  • Поддержка множества протоколов связи
  • 14-контактный заголовок с UART, I2C, ADC, 5V, GND

EICUT LTE EVB A bottom pinout diagram

Связь с модулем

Помимо QuecOpen (обсуждалось ранее), EC200U поддерживает AT-команды через:

  • Последовательный порт (основной интерфейс связи)
  • USB-порт

Начальная настройка с QNavigator

Для базового тестирования и отправки AT-команд мы будем использовать программное обеспечение QNavigator от Quectel. QNavigator используется только для тестирования модулей Quectel. Используя этот инструмент, вы ознакомитесь с рабочим процессом основных функций, таких как вызов, SMS, TCP/UDP, PPP и QuceLocator, даже если не знаете никаких AT-команд.

  • Пользователи Windows: Подключите плату через USB и запустите QNavigator напрямую.
  • Пользователи Linux: Требуется Wine для запуска программного обеспечения под Windows.

Установка драйверов (только Windows)

Подключите модуль к ПК, и если ваша система не распознает модуль автоматически:

  1. Разархивируйте драйвер Quectel для Windows. (Чтобы получить драйвер, обратитесь в поддержку Quectel)
  2. Запустите файл Setup и следуйте подсказкам установки.

Quectel EC200U Windows drivers

Подключение к модулю

  1. Откройте QNavigator и выберите правильный COM-порт (показан в интерфейсе программного обеспечения).
  2. Нажмите Connect — при успешном подключении вы увидите живой обмен данными между ПО и модулем.

QNavigator Connect to moduleQuectel USB AT Port QNavigator Connect to EC200U module Quectel EC200U QNavigator AT commands monitoring

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

Тестирование ключевых функций

  1. Отправка SMS:
    • Выберите функцию SMS в левом меню.
    • Введите свой номер телефона в поле Receiver, ваше сообщение в поле Input и нажмите Send message.
    • Если отправка прошла успешно, вы увидите подтверждение в консоли (и получите SMS на свой телефон). Quectel EC200U QNavigator Send SMS
  2. Совершение вызова:
    • Используйте функцию вызова для проверки голосовой связи.
    • Введите свой номер в поле и нажмите CALL.
    • Устранение неполадок: Ошибки могут указывать на проблемы с SIM-картой, антенной или источником питания. Quectel EC200U QNavigator Call
  3. Пользовательские AT-команды:
    • Для продвинутых задач используйте раздел AT Command для ручной отправки инструкций (все поддерживаемые команды перечислены здесь). Quectel EC200U QNavigator AT Commands

Следующие шаги

После некоторых тестов с модулем мы готовы углубиться в:

  • SDK для EC200U
  • Разработку с QuecOpen

Часть 2 руководства по EC200U – Настройка SDK и проект «Hello World»

В предыдущей части мы рассмотрели основы модуля EC200U и методы связи. Теперь мы углубимся в использование SDK модуля и пройдем через простой проект «Hello World», чтобы помочь вам освоить программирование модуля напрямую.

Хорошая новость? Quectel проделал большую часть тяжелой работы за вас! Их SDK поставляется с готовыми к использованию примерами кода для всех основных функций модуля:

  • Функциональность вызовов и SMS
  • Протоколы связи (включая MQTT)
  • Удаленное обновление прошивки
  • Управление питанием
  • И многое другое

Примечание: В этом руководстве используется Debian Linux, но пользователи Windows также могут следовать ему — мы укажем на любые различия по пути.

Настройка среды разработки

Необходимые инструменты:

  1. SDK – Для написания и сборки вашего кода
  2. QLoader (Linux) или QFlash (Windows) – Для загрузки программ на модуль

Примечание: Чтобы получить SDK, инструменты QLoader и QFlash, обратитесь в поддержку Quectel .

Руководство по настройке Linux

  1. Скачайте и распакуйте SDK
  2. Подготовьте среду сборки:
    # Сделайте скрипт сборки исполняемым
    chmod 777 build_all.sh
    
    # Отредактируйте скрипт (мы меняем строку shebang)
    nano ./build_all.sh

    [Format Time: 0.0008 seconds]

    Убедитесь, что первая строка гласит: #!/bin/bash

    buildall script

  3. Соберите проект:
    ./build_all.sh new EC200UEU_AA V01

    [Format Time: 0.0001 seconds]

Пользователи Windows: Вы можете пропустить приведенные выше шаги, специфичные для Linux — мы рассмотрим вашу настройку в следующем разделе.

Прошивка вашей программы в модуль EC200U

Для пользователей Linux

  1. Проверьте вывод сборки
    После успешной сборки проверьте вашу директорию target/EC200UEU_AA_V01. Вы должны увидеть файлы, такие как:

    eicut@eicut:~/LTE01R03A04_C_SDK_U/target/EC200UEU_AA_V01$ ls
    8915DM_cat1_open.elf
    8915DM_cat1_open_V01_merge.pac <-- Это ваш файл для прошивки
    8915DM_cat1_open.map
    app/
    prepack/

    [Format Time: 0.0001 seconds]

  2. Подготовьте QDloader
    • Скачайте и распакуйте QDloader
    • Соберите его, запустив make в его директории
    • Ваш скомпилированный загрузчик будет в папке out/
  3. Прошейте модуль
    Скопируйте ваш файл .pac в директорию out/ QDloader и запустите:

    sudo ./QDloader -s /dev/ttyUSB0 -f 8915DM_cat1_open_V01_merge.pac -g EC200U

    [Format Time: 0.0001 seconds]

    Примечание: Измените /dev/ttyUSB0, если ваш модуль использует другой порт.

Для пользователей Windows

  • Соберите ваш проект
    Откройте Командную строку от имени администратора, перейдите в директорию вашего SDK и запустите:

    build_all.bat new EC200UEU_AA V01

    [Format Time: 0.0000 seconds]
    QuecOpen Windows Build

  • Прошивка с использованием QFlash
    • Откройте программное обеспечение QFlash
    • Загрузите ваш файл .pac (созданный в целевой директории 8915DM_cat1_open_V01_merge.pac)
    • Нажмите «Start», чтобы начать программирование Quectel Firmware Windows

Изменение кода модуля

Теперь, когда мы проверили работу прошивки, давайте внесем наше первое изменение кода:

  • Перейдите в ql_int.c:
    cd LTE01R02A05_C_SDK_U/components/ql-application/init/ql_int.c
    code . <- Чтобы открыть VScode

    [Format Time: 0.0001 seconds]

    Найдите и раскомментируйте:

    ql_ledcfg_app_init();

    [Format Time: 0.0000 seconds]

  • Перейдите к конфигурации светодиода (в VSCode: F12 или щелкните правой кнопкой «Go to Definition»), чтобы открыть led_cfg_demo.c

Демонстрационный код светодиода (и почти весь другой код) организован в три логических раздела:

  • Создание задачи ОС (внизу файла)
  • Основной код
  • Раздел журналирования

Первый раздел, где инициализируется задача операционной системы, выглядит так:

void ql_ledcfg_app_init(void)
{
    QlOSStatus err = QL_OSI_SUCCESS;

    err = ql_rtos_task_create(&ledcfg_task, 1024, APP_PRIORITY_NORMAL, "ql_ledcfgdemo", ql_ledcfg_demo_thread, NULL, 1);
    if( err != QL_OSI_SUCCESS )
    {
        QL_LEDCFGDEMO_LOG("led config demo task created failed");
    }
}

Следующий раздел, который является функцией, выполняемой ОС:

static void ql_ledcfg_demo_thread(void *param)
{
QL_LEDCFGDEMO_LOG("led config demo thread enter, param 0x%x", param);

/*** LPG open ***/
ql_pwm_open(PWM_LPG);
QL_LEDCFGDEMO_LOG("led config start"); 

/* set NET_MODE */ 

ql_pin_set_func(QL_PIN_GPIO1, QL_PIN_GPIO1_FUNC_ZSP_CTS); //Pin126 set zsp_uart_cts, two pins can't set the same GPIO 

ql_pin_set_func(QL_PIN_NET_MODE, QL_PIN_NET_MODE_FUNC_GPIO); 
ql_gpio_init(QL_GPIO_NET_MODE, GPIO_OUTPUT, PULL_NONE, LVL_LOW); 

ql_event_t event; 
ql_ledcfg_callback_register(_ledcfg_demo_cb); 

while(1) 
{ 
if( ql_event_try_wait(&event) != 0 ) 
{ 
continue; 
} 

if ( event.id == QUEC_LEDCFG_EVENT_IND ) 
{ 
switch( event.param1 ) 
{ 
case IND_SIM_NOT_INSERT: 
case IND_SIM_INITIALIZING: 
case IND_SIM_PIN_LOCK: 
case IND_SIM_CPIN_READY: 
case IND_SEARCHING: 
case IND_CAMP_ON_CELL: 
case IND_REGISTERING: 
QL_LEDCFGDEMO_LOG("led config slow twinkle [%d]", event.param1); 
ql_pwm_lpg_enable(QL_LED_TWINKLE_SLOW_PERIOD, QL_LED_TWINKLE_SLOW_ONTIME); 
break 

case IND_STANDBY: 
case IND_PDP_ACTIVING: 
case IND_PDP_ACTIVATED: 
case IND_SOCKET_SET_UP: 
case IND_PDP_DEACTIVING: 
QL_LEDCFGDEMO_LOG("led config fast twinkle [%d]", event.param1); 
ql_pwm_lpg_enable(QL_LED_TWINKLE_FAST_PERIOD, QL_LED_TWINKLE_FAST_ONTIME); 
break 

case IND_DATA_TRANSMIT: 
QL_LEDCFGDEMO_LOG("led config speed twinkle [%d]", event.param1); 
ql_pwm_lpg_enable(QL_LED_TWINKLE_SPEED_PERIOD, QL_LED_TWINKLE_SPEED_ONTIME); 
break 

case IND_DIALING: 
QL_LEDCFGDEMO_LOG("led config keep on [%d]", event.param1); 
ql_pwm_lpg_enable(QL_LED_TWINKLE_ON_PERIOD, QL_LED_TWINKLE_ON_ONTIME); 
break 

default: 
QL_LEDCFGDEMO_LOG("led config error!"); 
break 
} 

if ( event.param2 == IND_NET_TYPE_4G ) 
{ 
QL_LEDCFGDEMO_LOG("led config network is 4G"); 
ql_gpio_set_level(QL_GPIO_NET_MODE, LVL_HIGH); 
} 
otherwise 
{ 
QL_LEDCFGDEMO_LOG("led config network is not 4G"); 
ql_gpio_set_level(QL_GPIO_NET_MODE, LVL_LOW); 
} 
} 
} 

ql_rtos_task_delete(NULL);
}

Последний раздел кода — это код журналирования. SDK включает полезную структуру журналирования. Эти макросы управляют выводом отладки:

#define QL_LEDCFGDEMO_LOG_LEVEL QL_LOG_LEVEL_INFO // Set log verbosity
#define QL_LEDCFGDEMO_LOG(msg, ...) QL_LOG(QL_LEDCFGDEMO_LOG_LEVEL, "ql_LEDCFGDEMO", msg, ##__VA_ARGS__)
#define QL_LEDCFGDEMO_LOG_PUSH(msg, ...) QL_LOG_PUSH("ql_LEDCFGDEMO", msg, ##__VA_ARGS__)

Давайте изменим поведение светодиода статуса сети (NET Status LED). Вот как создать цикл мигания в 1 секунду, отредактировав основную функцию:

static void ql_ledcfg_demo_thread(void *param)
{
    // Configure NET_MODE pin as GPIO
    ql_pin_set_func(QL_PIN_NET_MODE, QL_PIN_NET_MODE_FUNC_GPIO);
    ql_gpio_init(QL_GPIO_NET_MODE, GPIO_OUTPUT, PULL_NONE, LVL_LOW);
    
    // Main blink loop
    while(1) {
        ql_gpio_set_level(QL_GPIO_NET_MODE, 1);  // LED ON
        ql_rtos_task_sleep_s(1);                 // 1-second delay
        ql_gpio_set_level(QL_GPIO_NET_MODE, 0);  // LED OFF
        ql_rtos_task_sleep_s(1);                 // 1-second delay
    }
}

Сборка и прошивка ваших изменений

  1. Скомпилируйте код:
    В Linux:

    ./build_all.sh new EC200UEU_AA V01

    [Format Time: 0.0001 seconds]

    В Windows:

    build_all.bat new EC200UEU_AA V01

    [Format Time: 0.0000 seconds]

  2.   Прошейте модуль:
    В Linux:

    sudo ./QDloader -s /dev/ttyUSB0 -f target/EC200UEU_AA_V01/8915DM_cat1_open_V01_merge.pac -g EC200U

    [Format Time: 0.0001 seconds]

    В Windows: Используйте QFlash, как мы делали ранее.

  3. Подтвердите успех: Светодиод статуса сети теперь должен мигать с интервалом в 1 секунду.

Следующие шаги

  • Попробуйте изменить длительность сна для различных паттернов мигания
  • Поэкспериментируйте с другими выводами GPIO
  • Добавьте сообщения журнала для отслеживания изменений состояния светодиода

Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

0 0 votes
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments