Проблема со связью.
Есть м590 модуль. Питание внешнее boot на землю. В сети регистрируется позвонить на него можно.
Скетч на меге:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(15, 14); // RX, TX
int ch = 0;
String val = "";
#define MASTER "+7XXXXXXXXXX" //укажите телефон хозяина
void setup()
{
Serial.begin(9600); //подключаем порт компьютера
Serial.println("GSM Neoway M590 example");
mySerial.begin(19200); //подключаем порт модема (при других скоростях не отвечает)
mySerial.println("ATI"); //вывести в терминал иноформацию о модеме
delay(100);
mySerial.println("AT+CSQ"); //вывести в терминал уровень сигнала (если 99, то связи нет)
delay(100);
mySerial.println("AT+CLIP=1"); //включаем АОН
delay(100);
mySerial.println("AT+CMGF=1"); //режим кодировки СМС - обычный (для англ.)
delay(100);
mySerial.println("AT+CSCS=\"GSM\""); //режим кодировки текста
delay(100);
mySerial.println("AT+CNMI=2,2"); //отображение смс в терминале сразу после приема (без этого сообщения молча падают в память)
}
void loop()
{
if (mySerial.available()) { //есть данные от GSM модуля
delay(200); //выждем, чтобы строка успела попасть в порт целиком раньше чем будет считана
while (mySerial.available()) { //сохраняем входную строку в переменную val
ch = mySerial.read();
val += char(ch);
delay(10);
}
Serial.println(val); // дублируем сообщение в терминал
//----------------------- определение факта приема СМС и сравнение номера(ов) с заданным(и)
if (val.indexOf("+CMT") > -1) { //если обнаружен СМС (для определения звонка вместо "+CMT" вписать "RING", трубку он не берет, но реагировать на факт звонка можно)
if (val.indexOf(MASTER) > -1) { //если СМС от хозяина
Serial.println("--- MASTER SMS DETECTED ---");
} else {
Serial.println("NO MASTER SMS");
}
//----------------------- поиск кодового слова в СМС (вообще эту часть надо поместить внутрь предыдущей, но если использовать кодовое слово не совпадающее с сообщениями модема, то не обязательно)
if (val.indexOf("sendme") > -1) { // если обнаружено кодовое слово
Serial.println("send you ok"); // сообщаем об этом в терминал (если нужно)
sms("yes sir!", MASTER); // отвечаем смской
} else { // если другое слово или вообще пустое сообщение
Serial.println("no send you");
sms("no sir!", MASTER);
}
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);
}
На мониторе порта только.
GSM Neoway M590 example и всё.
RX TX и менял местами, и менял пины. Поданы напрямую уровни по 5V.
плата м590 такая: http://s019.radikal.ru/i629/1601/81/fbb412a54cbe.jpg
Куда копать непонятно.