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 не выведена, что не позволяет нам прошивать ОС.

Оценочная плата EC200U — это компактная платформа разработки для модуля Quectel EC200U серии LTE Cat-1 для прототипирования IoT.
Ключевая периферия для тестирования:
- Слоты для SIM-карты и SD-карты
- 3 разъема IPEX для 4G и GNSS, керамическая антенна WiFi/Bluetooth
- Поддержка множества протоколов связи
- 14-контактный заголовок с UART, I2C, ADC, 5V, GND
Связь с модулем
Помимо QuecOpen (обсуждалось ранее), EC200U поддерживает AT-команды через:
- Последовательный порт (основной интерфейс связи)
- USB-порт
Начальная настройка с QNavigator
Для базового тестирования и отправки AT-команд мы будем использовать программное обеспечение QNavigator от Quectel. QNavigator используется только для тестирования модулей Quectel. Используя этот инструмент, вы ознакомитесь с рабочим процессом основных функций, таких как вызов, SMS, TCP/UDP, PPP и QuceLocator, даже если не знаете никаких AT-команд.
- Пользователи Windows: Подключите плату через USB и запустите QNavigator напрямую.
- Пользователи Linux: Требуется Wine для запуска программного обеспечения под Windows.
Установка драйверов (только Windows)
Подключите модуль к ПК, и если ваша система не распознает модуль автоматически:
- Разархивируйте драйвер Quectel для Windows. (Чтобы получить драйвер, обратитесь в поддержку Quectel)
- Запустите файл Setup и следуйте подсказкам установки.
Подключение к модулю
- Откройте QNavigator и выберите правильный COM-порт (показан в интерфейсе программного обеспечения).
- Нажмите Connect — при успешном подключении вы увидите живой обмен данными между ПО и модулем.
Когда ваш модуль функционирует правильно, вы должны увидеть вывод, подобный показанному на скриншоте выше, с несколькими AT-командами в последовательной консоли. После выполнения этих базовых тестов вы можете перейти к следующим шагам руководства.
Тестирование ключевых функций
- Отправка SMS:
- Совершение вызова:
- Пользовательские AT-команды:
Следующие шаги
После некоторых тестов с модулем мы готовы углубиться в:
- SDK для EC200U
- Разработку с QuecOpen
Часть 2 руководства по EC200U – Настройка SDK и проект «Hello World»
В предыдущей части мы рассмотрели основы модуля EC200U и методы связи. Теперь мы углубимся в использование SDK модуля и пройдем через простой проект «Hello World», чтобы помочь вам освоить программирование модуля напрямую.
Хорошая новость? Quectel проделал большую часть тяжелой работы за вас! Их SDK поставляется с готовыми к использованию примерами кода для всех основных функций модуля:
- Функциональность вызовов и SMS
- Протоколы связи (включая MQTT)
- Удаленное обновление прошивки
- Управление питанием
- И многое другое
Примечание: В этом руководстве используется Debian Linux, но пользователи Windows также могут следовать ему — мы укажем на любые различия по пути.
Настройка среды разработки
Необходимые инструменты:
- SDK – Для написания и сборки вашего кода
- QLoader (Linux) или QFlash (Windows) – Для загрузки программ на модуль
Примечание: Чтобы получить SDK, инструменты QLoader и QFlash, обратитесь в поддержку Quectel .
Руководство по настройке Linux
- Скачайте и распакуйте SDK
- Подготовьте среду сборки:
# Сделайте скрипт сборки исполняемым chmod 777 build_all.sh # Отредактируйте скрипт (мы меняем строку shebang) nano ./build_all.sh
[Format Time: 0.0008 seconds]
Убедитесь, что первая строка гласит: #!/bin/bash
- Соберите проект:
./build_all.sh new EC200UEU_AA V01
[Format Time: 0.0001 seconds]
Пользователи Windows: Вы можете пропустить приведенные выше шаги, специфичные для Linux — мы рассмотрим вашу настройку в следующем разделе.
Прошивка вашей программы в модуль EC200U
Для пользователей Linux
- Проверьте вывод сборки
После успешной сборки проверьте вашу директорию 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]
- Подготовьте QDloader
- Скачайте и распакуйте QDloader
- Соберите его, запустив make в его директории
- Ваш скомпилированный загрузчик будет в папке out/
- Прошейте модуль
Скопируйте ваш файл .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
- Прошивка с использованием QFlash
Изменение кода модуля
Теперь, когда мы проверили работу прошивки, давайте внесем наше первое изменение кода:
- Перейдите в 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
}
}
Сборка и прошивка ваших изменений
- Скомпилируйте код:
В 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]
- Прошейте модуль:
В 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, как мы делали ранее.
- Подтвердите успех: Светодиод статуса сети теперь должен мигать с интервалом в 1 секунду.
Следующие шаги
- Попробуйте изменить длительность сна для различных паттернов мигания
- Поэкспериментируйте с другими выводами GPIO
- Добавьте сообщения журнала для отслеживания изменений состояния светодиода
Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.