Новый 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


24 апреля, 2020
28 января, 2020
28 октября, 2019