m590 нет связи с мегой
- Войдите на сайт для отправки комментариев
Вс, 24/07/2016 - 16:26
Есть м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
Куда копать непонятно
Копать в сторону соответствия скоростей работы UART ардуины и M590 - вы уверены, что модуль работает на скорости 9600?
Копать в сторону соответствия скоростей работы UART ардуины и M590 - вы уверены, что модуль работает на скорости 9600?
Нет не уверен. Предлагаете менять
mySerial.begin(19200); ?
Нет не уверен. Предлагаете менять
mySerial.begin(19200); ?
Предлагаю выяснить, на какой всё-таки скорости у вас работает модуль. Выяснить можно через любую терминальную программу (типа CoolTerm), подсоединив модуль к USB-TTL-переходнику, коннектясь к нему из терминальной программы на разных скоростях и отправляя в порт команду "AT\r\n".
У меня его нет, быстро достать не смогу. Естьли другие решения ?
У меня его нет, быстро достать не смогу. Естьли другие решения ?
Тестовый скетч по подбору скорости, пишется за пару минут.
сделал переходник из ардуины, ответа на at команду нет.
сделал переходник из ардуины, ответа на at команду нет.
На всех доступных скоростях?
да. от 300 до 115200
Уровни на модуле м590 нормальные. 3,6 V
перемычка rx-tx на ардуине работает, команды проходят. сам модуль в сети и звонки проходят.
общий ноль сделал.
что за хрень ?
DTR RTS on
спаял другой модуль.
ответ появился но какойто странный на все at команды возращает их же. ответ на at at на atz atz и.т.д. работает через терминал на любой скорости.
Возможно, битые модули.
хреново, придётся на sim900 уходить.
У Вас точно в кoнце строки отправляются символы возврата каретки и переноса строки? (\r\n или CR+LF). Обычно в любом терминале эту опцию можно включить или выключить. В мониторе Arduino IDE тоже включается (внизу окошка монитора).
Проблема решена. Пытался software serial выполнить на serial pins.