И так задача: Arduino должен отправлять СМС через данный GSM модуль Neoway m590.

Подключение к Arduino


Соединяем GSM модуль с Arduino.
5В модуля -> 5V Arduino GND модуля -> GND Arduino ТХ модуля -> digital pin2 Arduino RX модуля -> digital pin3 Arduino
Распиновку можно посмотреть на фото. Выводы разъёма P1:
2 - VCC
4 - GND
12 - RING
14 - TX
16 - RX
Модуль использует питание от 3.3В до 4.5В.
Подключаем Arduino с GSM модулем к компьютеру.

Логические уровни не должны превышать 3.3 вольта - в противном случае возможен выход их строя. В случае использования с пятивольтовыми МК требуется использовать резистивные делители или иные способы согласования уровней.

.
Заливаем скетч.

#include‹SoftwareSerial.h›;
SoftwareSerial mySerial(2, 3); // RX, TX
int ch = 0;
int led = 13;
String val = "";
void setup() {
delay(2000); //задержка для инициализации модуля
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
Serial.begin(9600); //устанавливаем скорость порта
Serial.println("GSM tester v1.0");
mySerial.begin(9600);
mySerial.println("AT+CLIP=1"); //АОН будет включен
delay(100);
mySerial.println("AT+CMGF=1"); //обычный режим кодировки СМС
delay(100);
mySerial.println("AT+CSCS=\"GSM\""); //режим кодировки текста
delay(100);
}
void loop() {
if (mySerial.available()) { //если с GSM модуля что-топришлом, то
while (mySerial.available()) { //сохраняем входную строку в переменную val
ch = mySerial.read();
val += char(ch);
delay(10);
}
if (val.indexOf("RING") > -1) { //в случае обнаружения звонка проверяем номер
if (val.indexOf("71234567890") > -1) { //если номер звонящего наш. Укажите свой номер без "+"
Serial.println("--- MASTER RING DETECTED ---");
mySerial.println("ATH0"); //разрываем связь
digitalWrite(led, HIGH); //включаем светодиод на 3 сек
delay(3000);
digitalWrite(led, LOW); //выключаем реле
}
} else
Serial.println(val); //печатаем в монитор порта пришедшую строку
val = "";
}
if (Serial.available()) { //если в мониторе порта ввели что-то
while (Serial.available()) { //сохраняем строку в переменную val
ch = Serial.read();
val += char(ch);
delay(10);
}
//mySerial.println(val); //передача всех команд, набранных в мониторе порта в GSM модуль
if (val.indexOf("sendsms") > -1) { //если увидели команду отправки СМС
sms(String("hello world"), String("+71234567890")); //отправляем СМС на номер +7XXXXXXXXXX
}
val = ""; //очищаем
}
}
void sms(String text, String phone) //процедура отправки СМС
{
Serial.println("SMS send started");
mySerial.println("AT+CMGS=\"" + phone + "\"");
delay(500);
mySerial.print(text);
delay(500);
mySerial.print((char)26);
delay(500);
Serial.println("SMS send complete");
delay(2000);
}

Открываем монитор порта и если все в порядке, то увидим следующую картину

Более подробная информация

Neoway M590 Hardware Design Manual V1.1
Neoway M590 AT Command Sets V3.0
Neoway M590 User Guide
Модуль монтируется на плате с минимальной обвязкой или поставляется в виде конструктора который можно приобрести в китайском интернет магазине, продается как шилд для Arduino.
На картинке схема с рекомендуемой обвязкой модуля: Максимальный ток потребления может кратковременно достигать 2А (в момент включения как правило), конденсатор C1 в связи с этим должен иметь минимальную емкость в 1000 мкФ, лучше больше. В режиме ожидания средний ток потребления модуля равен 25 мА.

Включается модуль подачей положительного импульса на линию ON/OFF (база, транзистор VT1), длительность импульса необходима не менее 300 мс. Подтверждением рабочего режим, является магание светодиода статуса HL1 с частотой в 1Гц. Так же необходимо выдержать паузу 2 секунды после включения, перед отправкой команд для модуля. При включении модуль выдает сообщение MODEM:STARTUP, далее через 10-15 секунд сообщение +PBREADY, оно означает, что телефонная книга готова к использованию.

Выключается модуль повторным положительным импульсом, или же отправкой специальной команды на выключение (AT+CPWROFF). Потребление тока в выключенном состоянии примерно 80 мкА.

Рабочее напряжение линий ввода/вывода модуля (RXD, TXD, DTR, RING, LED) составляет 2,85V. Напряжение на линиях ввода (RXD, DTR) не должно превышать 3,3В, для исключения их повреждения, поэтому для их сопряжения с логическими уровнями большего напряжения установлены элементы VD1, R1, VD2, R2. Резисторы служат для подтягивания к линии VCCIO, после включения модуля на этой линии появляется напряжение величиной 2,85В и при этом максимальный выходной ток составляет 3 mA, тем самым обеспечивается безопасный логический уровень для линий ввода. Диоды защищают входы от перенапряжения.

Если модуль зависнет, имеется возможность аварийного выключения, для этого необходимо подать положительный импульс на линию EMERGENCY OFF (база транзистора VT2) длительностью 100 ms. Далее требуется выдержать паузу в 5 секунд перед повторным включением, для исключения возможности повреждения модуля.

Работа с модулем осуществляется с помощью стандартного интерфейса UART, линия MCU TX подключается к выходу передатчика управляющего устройства (компьютер или микроконтроллер), вывод MCU RX к входу приемника управляющего устройства.

Управление энергопотреблением в модуле возможно с помощью спящего режима, по умолчанию этот режим отключен, для его включения необходимо предварительно подать команду на разрешение спящего режима (at+enpwrsave=1). Далее необходимо установить низкий логический уровень на линии SLEEP, затем, через 10-30 секунд модуль перейдет в режим “сна”. Во время режима “сна” модуль не воспринимает команды, поступающие по UART. Установка высокого логического уровня на линии SLEEP, выводит модуль из режима "сна" в течение 50 мс. Если во время режима “сна” поступает SMS сообщение, данные от сервера, или входящий звонок, то модуль "просыпается" и отправляет соответствующее сообщение по UART, в этом случае управляющее устройство должно выставить высокий логический уровень на линии SLEEP, для продолжения обмена данными. Если этого не произойдет, модуль автоматически перейдет в режим “сна” в течение 10-30 сек. В режиме "сна" потребляемый ток составляет 2,5-3 мА.

При входящем вызове на линии RING появляются импульсы с низким логическим уровнем длительностью 30 мс, частота следования примерно один раз в 5 секунд. При получении SMS сообщения, на линии появляется однократный импульс длительностью 25-35 мс. Данную линию можно использовать для генерации прерываний в управляющем устройстве.

Линии DCD (вывод 16 модуля), DSR (вывод 17 модуля) не используются, остальные выводы задействованы для подключения СИМ карты A2. Микрофонного входа в модуле нет, поэтому голосовую связь осуществить не получится, но само соединение устанавливается, если принять звонок от модуля, в динамике будет стоять тишина.