m590 нет связи с мегой

findeler
Offline
Зарегистрирован: 08.03.2016

Есть м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

Куда копать непонятно

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Копать в сторону соответствия скоростей работы UART ардуины и M590 - вы уверены, что модуль работает на скорости 9600?

findeler
Offline
Зарегистрирован: 08.03.2016

DIYMan пишет:

Копать в сторону соответствия скоростей работы UART ардуины и M590 - вы уверены, что модуль работает на скорости 9600?

Нет не уверен. Предлагаете менять mySerial.begin(19200); ?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

findeler пишет:

Нет не уверен. Предлагаете менять mySerial.begin(19200); ?

Предлагаю выяснить, на какой всё-таки скорости у вас работает модуль. Выяснить можно через любую терминальную программу (типа CoolTerm), подсоединив модуль к USB-TTL-переходнику, коннектясь к нему из терминальной программы на разных скоростях и отправляя в порт команду "AT\r\n".

findeler
Offline
Зарегистрирован: 08.03.2016

У меня его нет, быстро достать не смогу. Естьли другие решения ?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

findeler пишет:

У меня его нет, быстро достать не смогу. Естьли другие решения ?

Тестовый скетч по подбору скорости, пишется за пару минут.

findeler
Offline
Зарегистрирован: 08.03.2016

сделал переходник из ардуины, ответа на at команду нет.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

findeler пишет:

сделал переходник из ардуины, ответа на at команду нет.

На всех доступных скоростях?

findeler
Offline
Зарегистрирован: 08.03.2016

да. от 300 до 115200

Уровни на модуле м590 нормальные. 3,6 V

перемычка rx-tx на ардуине работает, команды проходят. сам модуль в сети и звонки проходят.

общий ноль сделал.

что за хрень ?

DTR RTS on

 

 

findeler
Offline
Зарегистрирован: 08.03.2016

спаял другой модуль.

ответ появился но какойто странный на все at команды возращает их же. ответ на at at на atz atz и.т.д. работает через терминал на любой скорости.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Возможно, битые модули. 

findeler
Offline
Зарегистрирован: 08.03.2016

хреново, придётся на sim900 уходить.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

У Вас точно в кoнце строки отправляются символы возврата каретки и переноса строки? (\r\n или CR+LF). Обычно в любом терминале эту опцию можно включить или выключить. В мониторе Arduino IDE тоже включается (внизу окошка монитора).

findeler
Offline
Зарегистрирован: 08.03.2016

Проблема решена.  Пытался software serial выполнить на serial pins.