Модуль продаётся «врассыпную» (в комплекте есть всё необходимое), поэтому потребуются навыки пайки, впрочем, ничего сложного там нет.

Будем считать, что Вы всё правильно спаяли и у Вас получилось вот такое устройство:

Подключение и эксплуатация
NEOWAY общается с ардуиной (или иным устройством) через UART (RX, TX) с помощью AT-команд. Для того чтоб посылать команды, надо выяснить скорость UARTа.
Для выяснения скорости, нужно подключить собраный модуль к компьютеру с помощью USB-UART моста, выглядит эта штука так:

В этом случае соединяем:
USB-UART <> NEOWAY
+5 <> +5
GND <> GND
TX <> RX
RX <> TX
Контакт BOOT используется для включения/отключения модуля кратковременным (~1сек) соединением с GND, однако удобнее просто соединить его с GND и не отсоединять. Включение модуля будет происходить при подачи питания.
Если такой штуки нет, то можно превратить ардуину в USB-UART мост залив в неё вот такой скетч…
- Код: выделить все
void setup()
{
pinMode(0, INPUT);
pinMode(1, INPUT);
}
void loop()
{}
… и соединив следующим образом:
Ардуина <> NEOWAY
+5 <> +5
GND <> GND
RX <> RX
TX <> TX
Контакт BOOT соедините с GND.
О питании
Модуль может потреблять большой ток, до 2-х ампер в пике, поэтому для надёжной работы необходимо организовать дополнительный БП. В принципе заработает то он и от ардуины, но в момент регистрации в сети или приёма звонка, модуль может перегружаться.
Так же будет не лишним поставить электролитический конденсатор (~1000 микрофарад, 16 вольт) поближе к модулю.
После подачи питания, на плате должен начать мигать светодиод (примерно раз в секунду) — это говорит о том, что он готов к работе.
Теперь подключаем Вашу конструкцию к компьютеру, в IDE Arduino открываем «Монитор последовательного порта» (в дальнейшем «терминал»), выбираем (внизу-справа) NL & CR, устанавливаем скорость 9600 и отправляем команду проверки связи — AT
Если ответ — ОК, то значит модуль работает и скорость UARTа установлена 9600. Если ответа нет, то проверьте правильность соединения UARTа и дальше действуйте методом «тыка» подставляя разные скорости, пока не увидите заветное ОК.
После старта модем скажет — MODEM:STARTUP, а о готовности к работе сообщит — +PBREADY
Если модему не будет хватать питания (большинство возникающих проблем происходят из-за этого), то он будет постоянно рестартовать.

Ещё я столкнулся с тем, что модем работает не со всеми сим-картами.
Если всё в порядке, тогда переходим к изучению АТ-команд для общения с NEOWAY и его настройки.
АТ-команды
АТ — запрос состояния, ответ — ОК.
ATE0 — отключить «эхо».
ATE1 — включить «эхо».
Эхо — это повтор введённой команды в терминал.
ATI — название и версия модуля.
AT+getvers — версия прошивки.
AT+IPR=9600 — установка скорости UARTа (9600), возможные варианты — 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200.
AT&W0 — сохранение конфигурации настроек в EEPROM.
AT&W1 — сохранение конфигурации настроек в EEPROM.
0 для нулевого профиля, 1 для первого профиля.
AT+CPAS — проверка статуса модема, ответ — +CPAS: 0.
Статусы: 0 — готов к работе, 2 — неизвестно, 3 — входящий звонок, 4 — в режиме соединения.
AT+CPWROFF — отключение модуля.
AT+CLIP=1 — включить АОН.
AT+CLIP=0 — отключить АОН.
ATD+79634759175; — позвонить.
В терминал будут выводиться сообщения: CONNECT — соединение установлено, BUSY — занят, NO ANSWER — нет ответа, NO CARRIER — вызов сброшен.
ATH — сбросить все соединения.
ATH1 — сбросить текущие соединение.
AT+CMGF=1 — настроить на текстовый формат SMS.
AT+CMGF=0 — настроить SMS на PDU формат.
AT+CSCS=«GSM» — кодировка текста sms — ASCII. Переправьте на нормальные кавычки.
Возможны другие кодировки: HEX – шестнадцатеричными значениями, IRA – международный справочный алфавит, PCCP437 – кодировка CP437(IBM PC), 8859-1 – кодовые страницы семейства ISO 8859, UCS2 – кодировка unicode.
AT+CMGR=1 — чтение sms, где цифра — порядковый номер сообщения. То есть в данном случае читается первое сообщение, так — AT+CMGR=2 второе и т.д.
AT+CMGD=1 — удаление sms, где цифра — порядковый номер сообщения.
AT+CMGD=1,1 — удалить все прочитанные sms.
AT+CMGD=1,2 — удалить все прочитанные и отправленные sms.
AT+CMGD=1,3 — удалить все прочитанные, отправленные и неотправленные sms.
AT+CMGD=1,4 — удалить все sms.
AT+CNMI=1,2,2,1,0 — вывод принятого sms в терминал.
Здесь можно найти исчерпывающую информацию по ат-командам.
Отправка SMS будет осуществляться ардуиной.
Далее будем управлять модулем с помощью ардуины
Если на вашем модуле установлена скорость UARTа отличная от 9600, тогда дайте команду:
AT+IPR=9600
При взаимодействии с ардуиной будет использоваться SoftwareSerial, а он плохо работает на скоростях выше 9600.
Отключите девайс от питания и переключите RX и TX (остальное без изменений) модуля к ардуине следующим образом:
Ардуина <> NEOWAY
+5 <> +5
GND <> GND
D2 <> TX
D3 <> RX
Контакт BOOT соедините с GND.
Вначале загружаем в ардуину простой скетч (предварительно вписав номер, с которого будете звонить на модуль).
При старте, на каждую команду должно быть подтверждение — ОК.
- Код: выделить все
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);
byte led = 13;
void setup() {
delay(2000);
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
Serial.begin(9600);
mySerial.begin(9600);
Serial.println("GSM NEOWAY promote site istarik.ru");
Serial.println();
Serial.println("Turn on AOH:");
mySerial.println("AT+CLIP=1"); //включить АОН
delay(100);
// ПРИ СТАРТЕ, НА КАЖДУЮ КОМАНДУ ДОЛЖНО БЫТЬ ПОДТВЕРЖДЕНИЕ - ОК
}
void loop()
{
if(mySerial.available()) //если модуль что-то послал
{
char ch = ' ';
String val = "";
while(mySerial.available())
{
ch = mySerial.read();
val += char(ch); //собираем принятые символы в строку
delay(3);
}
Serial.print("Neo send> ");
Serial.println(val);
if(val.indexOf("RING") > -1) //если есть входящий вызов, то проверяем номер
{
if(val.indexOf("79891196709") > -1) // ВПИШИТЕ НОМЕР, с которого Вы будете звонить на модуль
{
Serial.println("Call my phone");
mySerial.println("ATH"); //разрываем связь
Serial.println("Disconnection");
Serial.println("On D13");
digitalWrite(led, HIGH); //включаем светодиод на 5 сек
Serial.println("5 sec pause");
delay(5000);
digitalWrite(led, LOW); //выключаем
Serial.println("Off D13");
}
}
}
}
При звонке со вписанного номера, будет на 5 секунд зажигаться D13, а связь обрываться. Если это будет другой номер, то ничего не произойдёт. Все действия отображаются в терминале.
Следующий скетч будет посылать SMS в ответ на наш звонок:
- Код: выделить все
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);
byte led = 13;
void setup()
{
delay(2000);
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
Serial.begin(9600);
mySerial.begin(9600);
Serial.println("GSM NEOWAY promote site istarik.ru");
Serial.println();
Serial.println("Turn on AOH:");
mySerial.println("AT+CLIP=1"); // включить АОН
delay(100);
Serial.println("Text format sms:");
mySerial.println("AT+CMGF=1"); // текстовый формат SMS
delay(100);
Serial.println("Mode GSM:");
mySerial.println("AT+CSCS=\"GSM\""); // кодировка текста - GSM
delay(100);
// ПРИ СТАРТЕ, НА КАЖДУЮ КОМАНДУ ДОЛЖНО БЫТЬ ПОДТВЕРЖДЕНИЕ - ОК
}
void loop()
{
if(mySerial.available()) //если модуль что-то послал
{
char ch = ' ';
String val = "";
while(mySerial.available())
{
ch = mySerial.read();
val += char(ch); //собираем принятые символы в строку
delay(5);
}
Serial.print("Neo send> ");
Serial.println(val);
if(val.indexOf("RING") > -1) //если есть входящий вызов, то проверяем номер
{
if(val.indexOf("79919790861") > -1) // ВПИШИТЕ НОМЕР, с которого Вы будете звонить на модуль
{
Serial.println("Call my phone");
mySerial.println("ATH"); //разрываем связь
Serial.println("Disconnection");
delay(3000);
sms(String("Hello from istarik.ru"), String("+79919790861")); // ВПИШИТЕ НОМЕР, с которого Вы будете звонить на модуль
}
}
}
}
void sms(String text, String phone) // отправка СМС
{
Serial.println("Start SMS send");
mySerial.println("AT+CMGS=\"" + phone + "\"");
delay(500);
mySerial.print(text);
delay(500);
mySerial.print((char)26);
delay(500);
Serial.println("SMS send OK");
delay(2000);
}