Новый GSM-модуль Neoway M680 OpenCPU с возможностью загрузки приложений пользователя
M680 OpenCPU (рисунок) — четырехдиапазонный GSM-модуль GPRS class 12 (скорость 85,6 кбит/с), обеспечивающий возможность загрузки приложений разработчиков. Модуль выполнен в 83-контактном корпусе LGA. M680 OpenCPU построен на микросхеме GSM-процессора MediaTek MT6260, прекрасно зарекомендовавшей себя в модулях M660, M680 и M660A. Основные технические характеристики модуля приведены в таблице 1.
Название |
Значение |
Частотный диапазон, МГц |
850, 900, 1800, 1900 |
Максимальная мощность, Вт |
2 (для диапазонов 850, 900) 1 (для диапазонов 1800, 1900) |
Чувствительность, дБм |
–107 |
Максимальная скорость GPRS, кбит/с |
85,6 |
Набор AT-команд |
GSM 07.07, расширенные команды |
Интерфейсы |
2×UART, SPI, I2C, 3ADC, 15×GPIO, USB 1.0, PCM |
Процессор |
ARM7-EJ, 360 МГц |
Доступная память, кбайт |
512 ОЗУ, 200 flash, 512 File System |
Напряжение питания, В |
3,5–4,3 |
Ток потребления в режиме сна, мА |
менее 2 |
Размеры, мм |
18×15×2,1 |
Рабочая температура, ºC |
–40…+85 |
Модуль также характеризуется расширенным набором аудиоинтерфейсов: два микрофонных входа, три аудиовыхода и цифровой интерфейс PCM. Описание аналоговых аудиоинтерфейсов приведено в таблице 2.
Обозначение вывода |
Направление (вход/выход) |
Название |
Примечание |
SPKP |
Выход |
Громкоговоритель, положительный вывод |
Максимальная выходная мощность 0,8 Вт на нагрузке 8 Ом |
SPKN |
Громкоговоритель, отрицательный вывод |
||
MICP0 |
Вход |
Микрофон 0, положительный вывод |
Максимальная разность потенциалов между выводами не должна превышать 200 мВ |
MICN0 |
Микрофон 0, отрицательный вывод |
||
EAR-L |
Выход |
Левый наушник |
Допустимо подключение наушников с сопротивлением 16 или 32 Ом |
EAR-R |
Правый наушник |
||
MIC1 |
Вход |
Микрофон 1 |
|
RECN |
Выход |
Аудиовыход, положительный вывод |
Аудиовыход, рассчитанный на нагрузку 32 Ом |
RECP |
Аудиовыход, отрицательный вывод |
Описание модуля M680 OpenCPU невозможно без краткого обзора его программной платформы. Платформа OpenCPU позволяет использовать GSM-модуль в качестве управляющего контроллера и содержит три уровня: ядра, программных интерфейсов (API) и приложения пользователя. Приложение пользователя представляет собой программу на языке Си и может использовать программные интерфейсы, которые включают в себя UART, GPIO, I2C, SPI, USB, ADC, аудио, а также интерфейсы работы с оперативной и flash-памятью, файловой системой, таймерами, прерываниями, системным временем. Взаимодействие ядра с пользовательским приложением реализуется с помощью функций обратного вызова (callback). Когда в системе происходит определенное событие, вызывается соответствующая этому событию callback-функция. Все callback-функции должны быть зарегистрированы в приложении перед началом их использования. Приложение может содержать до семи задач (tasks), взаимодействующих друг с другом.
Пользователю доступны до 32 таймеров, API работы с системным временем. Для управления модулем из приложения пользователя с помощью AT-команд используется виртуальный порт UART. Например, следующее выражение посылает на виртуальный UART команду AT+CSQ: Neoway_VirtualUartSend(NEOWAY_MOD_USER1,»AT+CSQ\r»,7);
Кроме стандартных команд управления модулем, разработчику доступно большое количество дополнительных AT-команд, облегчающих разработку. К ним относятся команды работы с протоколами TCP, UDP, FTP, DNS, HTTP, HTTPS, SMTP, POP3, ICMP, работы с файлами, определения местоположения модуля по идентификаторам базовых станций, автоматического включения/выключения модуля, eCall и др.
Для управления режимом пониженного энергопотребления предназначена функция Neoway_Sleep(). Выражение Neoway_Sleep(NEOWAY_TRUE) включает режим пониженного энергопотребления, а выражение Neoway_Sleep(NEOWAY_FALSE) выключает его. В режиме Sleep модуль принимает входящие звонки и SMS-сообщения и автоматически возвращается в спящий режим по их завершении.
Для отладки программы может использоваться тестовая функция Neoway_TestFunction(), которая выполняет заданную пользователем последовательность команд при подаче на физический интерфейс UART модуля команды AT+TEST=<PARAM>, где PARAM – любая заранее определенная последовательность символов.
Также для целей отладки может использоваться функция Neoway_Print(), предназначенная для вывода последовательности символов на физический UART модуля.
В качестве примера приведем текст приложения, которое при нажатии внешней кнопки осуществляет звонок на заданный номер.
/***********************************************************************
Программа, выполняющая вызов на номер +71234567890 при появлении высокого уровня на выводе 40 GSM-модуля M680 OpenCPU
***********************************************************************/
#ifdef __EXAMPLE_HELLOWORLD__ #include "neoway_openplatform.h" U8 AT_MAKE_CALL[] = "ATD+71234567890;\r"; // AT-команда совершения вызова на номер +71234567890 void Neoway_UserInit(void) { Neoway_StopWatchdog(); //Остановить watchdog Neoway_InterruptInit(44,NEOWAY_INT_10); //Установить GPIO 44 (pin 40) как прерывание 10 Neoway_InterruptSetDebounceTime(NEOWAY_INT_10,40); //Установить время дребезга контактов — 40 тиков Neoway_InterruptSetPolarity(NEOWAY_INT_10,NEOWAY_TRUE); //Установить полярность сигнала – высокий уровень или передний фронт Neoway_InterruptSetTriggerMode(NEOWAY_INT_10,NEOWAY_FALSE); //Прерывание по уровню сигнала } void Neoway_UserTask1(NeowayMsgTypeStruct msg_type,NeowayModuleTypeEnum mod_type) { switch(msg_type.msg_id) { case NEOWAY_MSG_ID_INT_NOTIFY10: Neoway_VirtualUartSend(NEOWAY_MOD_USER1, AT_MAKE_CALL, strlen(AT_MAKE_CALL)); // Позвонить на номер break; default: break; } } void Neoway_IntResponse(NeowayIntNumEnum int_no,NeowayModuleTypeEnum mod_id) { if(int_no==NEOWAY_INT_10) { Neoway_SendMsgTask(mod_id,NEOWAY_MOD_USER1,NEOWAY_MSG_ID_INT_NOTIFY10,NULL,0); // Послать сообщение NEOWAY_MSG_ID_INT_NOTIFY10 в Neoway_UserTask1 при поступлении прерывания 10 } } void Neoway_RegisterCallbackFunction(void) { Neoway_RegisterCallBack(NEOWAY_KB_ID_USER_TASK_1,(U32)Neoway_UserTask1); //Регистрация функции Neoway_UserTask1 Neoway_RegisterCallBack(NEOWAY_KB_ID_INT_RESPONSE,(U32)Neoway_IntResponse); //Регистрация функции Neoway_IntResponse } #endif
В данном примере функция Neoway_UserInit() используется для остановки Watchdog и конфигурирования вывода 40 модуля в качестве входа прерывания. При поступлении прерывания функция обработки прерываний Neoway_IntResponse() посылает сообщение об этом событии в задачу UserTask1, после чего функция Neoway_UserTask1() осуществляет вызов на номер +71234567890.
Производитель предоставляет около тридцати программных примеров, демонстрирующих работу с API OpenCPU. Для компиляции приложения используется компилятор RVDS.
Загрузка приложения в модуль может осуществляться как через UART с помощью программы FlashTool, так и удаленно, используя TCP-соединение. Процедура загрузки приложения описана в [1] и на сайте www.wless.ru.
Примеры приложений, инструкцию на русском языке по установке компилятора и работе с примерами, а также программу FlashTool можно получить у официального дистрибьютора Neoway в России — компании ЭФО.
Заключение
GSM-модуль Neoway M680 OpenCPU может использоваться в качестве управляющего контроллера в приложениях, где необходимо уменьшить стоимость и габариты разрабатываемого устройства. Готовые программные примеры, недорогие отладочные средства и оперативная поддержка производителя позволяют уменьшить время и стоимость вывода продукта на рынок.
- Neoway_OpenCPU_Development_Guide_V2_5. pdf
- Neoway_OpenCPU_API_Description_V2_0. pdf
- Neoway_M680_OpenCPU_Module_Hardware_ User_Guide_V1_4.pdf
- Neoway_M680_GPRS_Module_AT_Command_ Set_V1_9.pdf
- www.wless.ru