не работает? Neoway m590

rapidshe
Offline
Зарегистрирован: 31.12.2015

получил еще 3 модуля. в машину поставляю итд....

один очень компактный, два других вот такие. картинки не мои

на компактном стоит м590, на других м590е.

ко всем трем припаял конденсаторы (как на левом модуле с картинки. да и на свой старый модуль такой же припаивал).

компактный завелся сразу, всё ок. а с другими геморрой. rx,tx пока не дорабатывал... да и не влияют они пока

один модуль вообще не запускается(и с диодом и без). светодиод не загарается (везде впаял резюк между землей и пином on/off). 

проверил все резисторы, светодиод.  штатный конденсатор ставил от второго модуля(он включился). всёравно не запускается (питалово 4в 2А). как проверить сам чип?

второй моудль включается. в монитор прилетает модем:стартап и всё. в сети не регистрируется. симку на всех модулях использую одну и ту же.(питание 4в 2А). в чем может быть дело? антенка такая же как на фотке

 

везде всё хорошо пропаяно. пользую припой с включением флюса, смд пасту

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

резюк не поможет, нужно аккуратно пинцетом на доли секунды замкнуть.

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

s1981 пишет:

А кто знает? У этой приблуды есть спящий режим?

  mySerial.println("AT+ENPWRSAVE=1");                       //отправляем GSM модуль баиньки
  delay(100);

   mySerial.println("AT+ENPWRSAVE=0");                       //будим GSM модуль если это первый проход цикла
  delay(100);

 

rapidshe
Offline
Зарегистрирован: 31.12.2015

Short Circuit пишет:

резюк не поможет, нужно аккуратно пинцетом на доли секунды замкнуть.

да я и замыкал напрямую - фиг. кажется что чип битый... попробую перепаять с одной платы на другую. 

а вообще резюк помогает. на двух модулях впаял на 4,7к - работает норм

s1981
Offline
Зарегистрирован: 22.12.2013

А почему смс принемает только 15 символов? это нормально???

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

s1981 пишет:

А почему смс принемает только 15 символов? это нормально???

Смотря какое СМС - если короткое, то нормально. А так, емнип, максимальная длина текста для самой большой СМС - под двести байт будет, вне зависимости от используемой кодировки.

rapidshe
Offline
Зарегистрирован: 31.12.2015

хех, снимал видео для спора на али и выяснилось что тот, на который я думал что он полностью нерабочий - заработал. правда светодиод всеравно не светится, однако в монитор прилетает MODEM:STARTUP, +PBREADY

а вот второй только  MODEM:STARTUP и всё... есть предположения как получить +PBREADY

 
rapidshe
Offline
Зарегистрирован: 31.12.2015

DIYMan пишет:

s1981 пишет:

А почему смс принемает только 15 символов? это нормально???

Смотря какое СМС - если короткое, то нормально. А так, емнип, максимальная длина текста для самой большой СМС - под двести байт будет, вне зависимости от используемой кодировки.

и правда всего 15 символов приходит от модуля... хотя смску бахнул длинную

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

rapidshe пишет:

DIYMan пишет:

s1981 пишет:

А почему смс принемает только 15 символов? это нормально???

Смотря какое СМС - если короткое, то нормально. А так, емнип, максимальная длина текста для самой большой СМС - под двести байт будет, вне зависимости от используемой кодировки.

и правда всего 15 символов приходит от модуля... хотя смску бахнул длинную

С питанием точно всё нормально? Как вычитываете данные - покажите плз.

rapidshe
Offline
Зарегистрирован: 31.12.2015

DIYMan пишет:

С питанием точно всё нормально? Как вычитываете данные - покажите плз.

а у тебя текст смс длинее считывается?

 

подготовка модуля 

 mySerial.begin(9600);
  delay(200);
  mySerial.println("AT+CSQ");          //вывести в терминал уровень сигнала (если 99, то связи нет)
  delay(200);
  mySerial.println("AT+CLIP=1");  //включаем АОН
  delay(200);
  mySerial.println("AT+CMGF=1");  //режим кодировки СМС - обычный (для англ.)
  delay(200);
  mySerial.println("AT+CSCS=\"GSM\"");  //режим кодировки текста
  delay(200);
  mySerial.println("AT+CNMI=2,2"); 
  delay(200);

чтение данных с модуля

if (mySerial.available()) 
  {  //если GSM модуль что-то послал нам, то
    delay(200);
    while (mySerial.available()) //сохраняем входную строку в переменную val
      {  
      ch = mySerial.read();
      val += char(ch);
      delay(10);
      }
  }
Serial.println(val); 

 

 

rapidshe
Offline
Зарегистрирован: 31.12.2015

Short Circuit, а какая длина текста смс у тебя?

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

1. Зачем delay при вычитке в while(Serial.available ???

2. Зачем при вычитке вообще delay?

Читай так:

String line; // это где-то глобально объяви

void GotLineFromNeoway(const String& line)
{
// Получили строку ответа от Neoway. Любые ответы приходят в виде
// либо одной, либо нескольких строк, так что единица, которой мы должны
// оперировать - именно строка
//  if(line == F("ERROR")) // ошибка
// if(line == F("OK")) // всё ок
// if(line.startsWith(F("+CMT"))) // пришло СМС  
}

char ch;
while(Serial.available())
{
 ch = Serial.read();
 if(ch == '\r') continue;
 if(ch == '\n') { GotLineFromNeoway(line); line = ""; }
 else
    line += ch;
}

И никаких делеев там при вычитке не надо - данные уже лежат в кольцевом буфере, они уже вычитаны из порта за тебя. Делая делеи - увеличиваешь риск пропадания данных в буфере, т.к. во время делея данные продолжают туда приниматься.

AndWS
Offline
Зарегистрирован: 04.04.2016

Собрал блок управления нагрузками для дачи на 4 канала в составе UNO, NEOWEY M590 и модуля на 4 реле. Питание раздельное 5В 2А - М590, 9 В 1,5 А - на UNO. Реле питаются с ардуины. Скетч рабочий есть. Но все это хозяйство адекватно начинает работать, если сначала запитать модули, а уж потом кинуть GND, RX, TX. В противном случае либо M590 не запускается, либо звонки проходят, а смс - нет. Получается все работает до первого отключения электричества. Может кто решал такую проблему?

 

s1981
Offline
Зарегистрирован: 22.12.2013

[quote=AndWS]

Собрал блок управления нагрузками для дачи на 4 канала в составе UNO, NEOWEY M590 и модуля на 4 реле. Питание раздельное 5В 2А - М590, 9 В 1,5 А - на UNO. Реле питаются с ардуины. Скетч рабочий есть. Но все это хозяйство адекватно начинает работать, если сначала запитать модули, а уж потом кинуть GND, RX, TX. В противном случае либо M590 не запускается, либо звонки проходят, а смс - нет. Получается все работает до первого отключения электричества. Может кто решал такую проблему?

 

[/quoteAT+CNMI=2,2 - отображение смс в терминале сразу после приема (без этого сообщения молча падают в память), возвращает OK

P32L
Offline
Зарегистрирован: 05.04.2016

Всем доброго времени суток! Пришел модуль neoway M590E.Собрал под него макетку,но почему то не работает... Проверял на всех скоростях и результата ноль.В терминал ничего не прилетает,кроме кракозябр.Симка мегафона,работает.После включения появляется в сети.Можно на нее позвонить,идут гудки.Светодиод моргает.Куда копать?

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

rapidshe пишет:

Short Circuit, а какая длина текста смс у тебя?

показывает все.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

P32L пишет:

Всем доброго времени суток! Пришел модуль neoway M590E.Собрал под него макетку,но почему то не работает... Проверял на всех скоростях и результата ноль.В терминал ничего не прилетает,кроме кракозябр.Симка мегафона,работает.После включения появляется в сети.Можно на нее позвонить,идут гудки.Светодиод моргает.Куда копать?

 

как куда? здесь много раз поднималось - не та скрость у вас. в термналке поставьте 115200 или менее, увидите ОК - ищите еоманду ат сменить скорость на 9600 и меняйте.

AndWS
Offline
Зарегистрирован: 04.04.2016

Эта команда у меня в скетче прописана. Модуль смс принимает, после включения реле смс получаю. Вчера укоротил GND между ардуино и NEOWEY. Провода RX, TX, GND припаял к прото-шилду. Стало работать стабильнее. Но при аварийном вкл/выкл питания (имитация выключения электричества) почти всегда требуется аппаратная перезагрузка. Как реализовать дистанционно - вопрос...

P32L
Offline
Зарегистрирован: 05.04.2016

Short Circuit пишет:

как куда? здесь много раз поднималось - не та скрость у вас. в термналке поставьте 115200 или менее, увидите ОК - ищите еоманду ат сменить скорость на 9600 и меняйте.

Да пробовал уже несколько раз на всех скоростях,я же написал.Пробовал в двух терминалах,результат один и тот же.

vovka1021
Offline
Зарегистрирован: 02.02.2016

знающие люди подскажите, как подготовить этот модуль к работе. какие команды залить в ардуино чтобы не бегать вокруг с бубном.

если не трудно скечь дайте. спасибо.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

Внимание всем!

 

Ну что, могу всех "поздравить" с  выяснившейся сегодня "работой и надежностью" 590х модулей:

Взял мой знакомый на Али 10шт., сделал  красивую платку, запаял модуль, позвал меня проверять.

Сегодня я присутсвоовал при запуске. 

Первый модуль запаян, но питание еще не подавали, решили на счет КЗ проверить.. Оказалось есть таки КЗ, думали что на плате случайно, а оказалось на модуле по питанию полностью ноль !! Ом..  странно.. берем все проверяем незапаянные - оказалось там еще два с КЗ по питанию из оставшихся !!!!!!! .

Ок, выдрал этот запаяный (выпаял то сразу, с дорожками вместе)запаял  четвертый ! модуль.

 включился...  через 6 сек выбило блок питания по защите.. перезапустили.. на 6 секунде выбивет нафик бп хоть тресни, хотя бп все гсм модули до этого всегда держал, там 12В 1,5А и защита, + стрелка по потреблению в мА.  Более мощный подключили бп, он уже справляется, но каждые 5 сек в модуле гсм тихий щелчок и в сети гсм модуль не появляется...!

Берем 5Й!  модуль, и только он уже появился в сети.  Все, я ушел, не вытерпев проверки остальных модулей.

Неизвестно даже какие глюки в 5м модуле и в остальных. Короче лучше чзять чуть подороже sim800C или М66, и уже надежные и проверенные временем запускать в работу. А эти пусть себе китайцы (а ведь они знают что фуфло толкают) - засунут себе в одно место..

Брать их точно не буду, а китайцам  большй привет, хлам  нам толкают и рады.

P32L
Offline
Зарегистрирован: 05.04.2016

ну и все....Может я как то команды неправильно пишу? В ответ приходит то,что я отправил.

AndWS
Offline
Зарегистрирован: 04.04.2016

Я менял скорость на 9600 через CP2102. 

Чтобы вводить команды через терминал, я добавляю $0D (например AT+CSQ$0D) - тогда откликается.

Обязательно соединить GND ардуино и GND NEOWEY

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

Short Circuit пишет:

Внимание всем!

А-хре-неть! А у мну уже на M590 работа завязана, по причине того, что как раз он заводится легко. Что-то даже боязно теперь запасной пробовать :)

Но ничо: надо будет - переползём на Sim.

vovka1021
Offline
Зарегистрирован: 02.02.2016

у меня завелся от 5в ардуино. без дополнительного питания. ночь проработал, пока все ок.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

vovka1021 пишет:

у меня завелся от 5в ардуино. без дополнительного питания. ночь проработал, пока все ок.


то есть, вы себе думаете это нормально так включать?? ну-ну.
Это типа - " а я сегодня перешел перекресток на красный свет, пока все нормально.."

P32L
Offline
Зарегистрирован: 05.04.2016

от 5 вольт проработает не долго))) Хотя бы 4,2v

vovka1021
Offline
Зарегистрирован: 02.02.2016

вот в том то и проблема, от 3.3в не работает. а от 5 без проблем

s1981
Offline
Зарегистрирован: 22.12.2013

Short Circuit пишет:

Внимание всем!

 

Ну что, могу всех "поздравить" с  выяснившейся сегодня "работой и надежностью" 590х модулей:

Взял мой знакомый на Али 10шт., сделал  красивую платку, запаял модуль, позвал меня проверять.

Сегодня я присутсвоовал при запуске. 

Первый модуль запаян, но питание еще не подавали, решили на счет КЗ проверить.. Оказалось есть таки КЗ, думали что на плате случайно, а оказалось на модуле по питанию полностью ноль !! Ом..  странно.. берем все проверяем незапаянные - оказалось там еще два с КЗ по питанию из оставшихся !!!!!!! .

Ок, выдрал этот запаяный (выпаял то сразу, с дорожками вместе)запаял  четвертый ! модуль.

 включился...  через 6 сек выбило блок питания по защите.. перезапустили.. на 6 секунде выбивет нафик бп хоть тресни, хотя бп все гсм модули до этого всегда держал, там 12В 1,5А и защита, + стрелка по потреблению в мА.  Более мощный подключили бп, он уже справляется, но каждые 5 сек в модуле гсм тихий щелчок и в сети гсм модуль не появляется...!

Берем 5Й!  модуль, и только он уже появился в сети.  Все, я ушел, не вытерпев проверки остальных модулей.

Неизвестно даже какие глюки в 5м модуле и в остальных. Короче лучше чзять чуть подороже sim800C или М66, и уже надежные и проверенные временем запускать в работу. А эти пусть себе китайцы (а ведь они знают что фуфло толкают) - засунут себе в одно место..

Брать их точно не буду, а китайцам  большй привет, хлам  нам толкают и рады.

У меня все нормально работает. Брал сразу спаяный. Поплясал правда с бубном, но теперь все ок. А китаезов зря гнобите, если бы не они у нас с вами не трусов не носков бы небыло. Наша страна делать ничего не хочет и не умеет. А если сделают разговору....где этот блядь как его етафон?)) и кто его делал? китайцы. Молодцы они

Misha87
Offline
Зарегистрирован: 10.06.2015

Пришел сегодня такой модуль уже собранный, блока питания на 2А сейчас нет....Подключил от Ардуино, светодиод морагет,связь не проверял,симки не было, а вот на АТ команды отвечает всякой хренью....Перебровал все скорости,но толку ноль...Может такое быть из-за питания?

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

подключили к хрени и чтото от него хотите?? вот он вам заслужено и ответил.

Misha87
Offline
Зарегистрирован: 10.06.2015

:))) Хорошо ответии :))) Мне просто интересно,такие кракозябры в терминале могут быть из-за питания? Просто тут некотрые писали,что от Ардуино нормально завелось...

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

вы даташиты читайте а не сплетни незнаек на форуме, там пользы больше. нравится искать черную кошку в темной комнате, ну так тут не стоит про это писать, тут серьезные люди собрались.

Misha87
Offline
Зарегистрирован: 10.06.2015

Short Circuit пишет:

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

Это понятно,я читал. Просто я думал,что если и будет глючить,то это будет проявляться допустим перезагрузкой модуля или его отключением....А так как у меня в терминале ответ приходит,но с "кракозябрами", я и решил спросить здесь,может ли такое быть из-за питания....Просто я уже начал думать,что либо модуль неисправный,либо возможно скорость установлена какая-то своя,а не 9600, 19200,115200 и так далее....

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

у меня было 19200 38400  9600 155200

 

есть же блин тестовые скетчи, почеему все пытаются темных кошаков искать, непонятно.

 

#include <SoftwareSerial.h>
SoftwareSerial gsm(8, 9); // RX, TX
unsigned char buffer[64]; // buffer array for data recieve over serial port
#define pinBOOT 5


void setup()  {
  Serial.begin(9600);
  gsm.begin(9600);
  pinMode(pinBOOT, OUTPUT);              /// нога BOOT на модеме
  Serial.println("modem ON");
  // while (!gsm.find("+PBREADY"));
  delay(20000);

 
    // Настраиваем приём сообщений с других устройств
    // Между командами даём время на их обработку
    gsm.print("AT+CMGF=1\r");  // устанавливает текстовый режим смс-сообщения
    delay(300);
    gsm.print("AT+IFC=1,1\r");  // устанавливает программный контроль потоком передачи данных
    delay(300);
    gsm.print("AT+CPBS=\"SM\"\r");  // пользуемся записной книжкой симкарты
    delay(300);
    gsm.print("AT+CNMI=1,2,2,1,0\r");  // настраиваем прием смс в нужном формате
    delay(300);
    gsm.print("AT+CLIP=1\r");   // определение АОН
    delay(300);
    // gsm.print("AT+CRC=1\r"); // будет при входящем еще писать и +CRING: VOICE
    delay(300);
    gsm.print("AT+CSCS=\"GSM\"\r");  // включить текстовый режим смс и прочего
    delay(300);
    Serial.print("AT+CMGD=1,4\r");//все смс удалить
    delay(500);

 }

void loop() {
  if (gsm.available())
    Serial.write(gsm.read());
  if (Serial.available())
    gsm.write(Serial.read());
}
// Теперь то, что вы посылаете в Монитор порта (настроенный на 9600) отправляется модулю, а то что отсылает модуль - выводится на монитор порта. Очень удобно, для тестирования AT команд.

// Источник https://arduino-ua.com/prod261-Plata_GSM-GPRS_XBee_Ardyino

 

только и симкарту нужно вставлять и ждат пока зарегистрируется. иначе часть команд не будет работать.

58RUS
Offline
Зарегистрирован: 04.04.2016

Я столкнулся с такой проблемой. Этот модуль как на картинке с первой страницы, завел, загрузил скетч для управления 3 нагрузками, все нормально работало. BOOT был сразу замкнут на GND. Запитано все было от 5В 2А. Никаких проблем и глюков не возникало. Начал сеггодня запаивать все это дело на макетку, перестал инициализироваться 590 ый. Загорается LED1, а второй больше не моргает. Соплей нигде не вешал, на замыкание BOOT не реагирует. Что бы это могло быть?

Misha87
Offline
Зарегистрирован: 10.06.2015

Попробовал этот скетч,тольку ноль....Запитал модуль от 5в 2А, результат тот же....Скорость перебрал всю....Ответ на команды приходит,но хрень какая-то....Уже не знаю,что делать...Неужели реально в питании дело...

Отправка команды АТОтвет на команду АТ

Misha87
Offline
Зарегистрирован: 10.06.2015

А в чем заключалиь "Пляски с бубном"? Можно поподробнее? Я все никак не могу завести такой же спаяный модуль...

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

58RUS пишет:

 Соплей нигде не вешал, на замыкание BOOT не реагирует. Что бы это могло быть?

это скорее к Кашпировскому нужно..

Misha87
Offline
Зарегистрирован: 10.06.2015

Заказывал несколько штук этих модулей...Один уже спаяный,а остальные нет....Так вот проблемы были на том,который спаяный. Сейчас собрал другой,подключил и проблем нет. От ардуино работает,правда только на АТ команды отвечает (дозвониться не получается), а от отдельного питания 5в 2а все работает...

slider
Offline
Зарегистрирован: 17.06.2014

Misha87 пишет:

Попробовал этот скетч,тольку ноль....Запитал модуль от 5в 2А, результат тот же....Скорость перебрал всю....Ответ на команды приходит,но хрень какая-то....Уже не знаю,что делать...Неужели реально в питании дело...

...Ответ на команду АТ

Где скорость перебрали? в терминалке (чтоб сперва настроить модуль) или в скетче (уже пытаясь перепробовать скорости софтпорта)? , причем на высоких софтпорт в принципе работать не может.

Непонятно что вам сдалась эта скорость софт порта 19200?  Short Circuit правильно посоветовал в примере - 9600.  

и непонятно настраивали ли сперва модуль на скорость 9600? (желательно это делать не ардуино иде, а сторонней терминальной программой ибо у неё есть весь список скоростей. команда перестройки AT+IPR=9600) , а потом уже скетчи подрубать с этой скоростью. И после перестройки желательно питание модуля передергивать.

и ещё, если приходится делать сброс модуля после запуска ардуины (видимо всякий мусор по rx tx сыпится), сделайте чтоб модуль включался от скетча, а не перемычкой на GND.

все это уже обсуждалось в предыдущих сообщениях. и снова появляются новички и твердят - неработает. А тему изучали? все сделали что советовали? или часть пропустили и хотите чтоб работало?

и покупая с разбора эти модули  за 1.5$ - 2$ , надо быть готовым что некоторые могут оказаться с проблемами.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

модули стоят уже менеее 1,5 доллара... видать рабочие закончились.

trak
Offline
Зарегистрирован: 15.02.2016

У меня пришел спаянный  модуль, все работает. Только вот блин нету похоже готовой библитоеки ардуиновской для GPRS.  Писать неохота жуть :(

 

UPD,  взял сейбы в руки и начал писать либу. Напишу только то, что мне нужно  и положу на  github

 

 

Jatixo
Offline
Зарегистрирован: 13.01.2016

trak пишет:

У меня пришел спаянный  модуль, все работает. Только вот блин нету похоже готовой библитоеки ардуиновской для GPRS.  Писать неохота жуть :(

 

UPD,  взял сейбы в руки и начал писать либу. Напишу только то, что мне нужно  и положу на  github

Со средой ардуино идет библиотека GSM с примерами работы с ней, там и GPRS есть, может подойдет, даже если не подойдет, там может чуть подправить и заработает с M590.

trak
Offline
Зарегистрирован: 15.02.2016

Я смотрел, мне не показалось, что там так просто подправить. Может я и не прав.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

Кто разбирается - тому подправить - не особо проблема.

rapidshe
Offline
Зарегистрирован: 31.12.2015

Подскажите, как оптимизировать код отправки смски? модуль очень часто вместо длинных смс присылает пустую смску.

Исользую код который везде пишут...

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);
}

 

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

что значит "длинных"??

rapidshe
Offline
Зарегистрирован: 31.12.2015

130-160 символов

причем не пойму закономерность поначалу отлично работало, а потом начались глюки...

 


начальная настройка модуля
[code=cpp] //настройка М590
  gsm.begin(9600);
  delay(200);
  gsm.println("AT+CSQ");          //вывести в терминал уровень сигнала (если 99, то связи нет)
  delay(200);
  gsm.println("AT+CMGD=0,3");
  delay(200);
  gsm.println("AT+CLIP=1");  //включаем АОН
  delay(200);
  gsm.println("AT+CMGF=1");  //режим кодировки СМС - обычный (для англ.)
  delay(200);
  gsm.println("AT+CSCS=\"GSM\"");  //режим кодировки текста
  delay(200);
  gsm.println("AT+CNMI=2,2");
  delay(200);[/code]

функция отправки смс:
[code=cpp]void smssend(String text, String phone) { //процедура отправки СМС
  Serial.println("SMS send started");
  gsm.println("AT+CMGS=\"" + phone + "\"");
  delay(500);
  gsm.print(text);
  delay(500);
  gsm.print((char)26);
  delay(5000);
/* val1 = ""; пытался сделать так, чтоб ардуина ждала ответа "ОК" от модуля и продолжала работу, но что то не сложилось....
  do {
     while (gsm.available())
         {
         ch = gsm.read();
         val1 += char(ch);
         delay(10);}
         }
         while (val1.indexOf("OK") < 0);
  Serial.println(val1);
  val1 = "";*/
  Serial.println("SMS send complete");
}[/code]

и формирование самого сообщения:
прибавляем к строке, отправленной потом в модуль, кусок текста с поятоянной проверкой на длину сообщения. и если длина сообщения достигает указанного предела, сообщение отправляется, строка обнуляется и опять начинает заполнятся для следующей смски. опять же с проверкой на кол-во символов
[code=cpp]void FullStatus() {
sms = "";
  for(int i = 0; i <= numPins -1; i++) {
   val3 = "R";
   val3 += (i+1);
   switch (relayMode[i]) {
      case 1:{
            val3 += " manual ";
            if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
            if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
            if (PinStatus[i]==ON) {val3 += "ON"; val3 +='\n';}
            else {val3 += "OFF"; val3 +='\n';}
            if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
            if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
            }
      break;
      case 2:{
             val3 += " heat ";
             if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
             if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
             val3 += ttarget1[i];
             val3 += " ";
             val3 += ttarget2[i];
             val3 +='\n';
            if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
            if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
              }
      break;
      case 3:{
             val3 += " cool ";
             if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
             if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
             val3 += ttarget1[i];
             val3 += " ";
             val3 += ttarget2[i];
             val3 +='\n';
            if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
            if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
            }
      break;
      case 4:{
             val3 += " sign" ;
             if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
             if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
             val3 += "Ch";
             val3 += signin[i];
             val3 += " Lvl";
             val3 += signlvl[i];
             val3 +='\n';
            if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
            if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
             }
      break;
      case 5:{
             val3 += " time\n";
             if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
             if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
             val3 += "Int1";
             for (int n = 0; n <= 6; n++)
                 {
                 if (dayon1[i][n] == true) val3 += "+";
                 else  val3 += "-";
                 }
             val3 += " on ";
             val3 += h1on[i];
             val3 += ":";
             val3 += m1on[i];
             val3 += " off ";
             val3 += h1off[i];
             val3 += ":";
             val3 += m1off[i];
            if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
            if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }

             val3 += "\nInt2";
             for (int n = 0; n <= 6; n++)
                 {
                 if (dayon2[i][n] == true) val3 += "+";
                 else  val3 += "-";
                 }
             val3 += " on ";
             val3 += h2on[i];
             val3 += ":";
             val3 += m2on[i];
             val3 += " off ";
             val3 += h2off[i];
             val3 += ":";
             val3 += m2off[i];
             val3 +='\n';
            if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
            if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
             }
      break;
      case 6:{
             val3 += " timer ";
             if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
             if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
             val3 += ((timerval[i]-rtc.getUnixTime(t))/60);
             val3 += " min\n";
            if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
            if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
             }
      break;
      }
  }
Serial.println(sms);

smssend(sms, String("+79161112219"));
sms = "";
}[/code]

в монитор прилетает :
[code=cpp]R1 cool 12 24 // этот кусок не приходит. приходит пустая смс
R2 time
Int1+++++++ on 9:29 off 9:30
Int2+++++++ on 13:56 off 13:40
R3 manual OFF
R4 heat 14 28
R5 timer 6762 min

SMS send started
SMS send complete
R6 signCh1 Lvl1 //этот кусок приходит
R7 signCh2 Lvl1

SMS send started
SMS send complete
AAT+CMGS="+79161112219"
>
+CMGS: 3

OK
[/code]
изначально пробовал отправлять смски длиной вплоть до 160символов и они приходили. далее происходили глюки, но оно и понятно.
как видно в коде при формировании сообщения я снизил длину сообщения до 130символов и всёравно приходит пустое смс. короткая часть статуса приходит нормально. примечательно что изначально (при ограничении на длину сообщения в 155 символов) сообщения отправлялись нормально, а потом начали приходить пустые сообщения. я уменьшил ограничение до 145 символов и сообщения приходили нормально. потом опять начали приходить пустые сообщения. такое ощущение что где то забивается память. уже всячески пытался удалить смски с модуля...

 

 

vovka1021
Offline
Зарегистрирован: 02.02.2016

кто подскаже в чем косяк?

не определяет номер. команда срабатывает независимо от номера звонящего

#include <SoftwareSerial.h>

SoftwareSerial gsm(2, 3);

void setup() {
  Serial.begin(19200);
  gsm.begin(19200);
  
  pinMode(11, OUTPUT);
    
}

void loop() {
 
    if(gsm.find("RING")){                    // если нашли RING
      Serial.println("RING!");
      (gsm.println("AT+CLIP=1");              // включаем АОН, 
            
      while(1){                              // в цикле
       if (gsm.find("+CLIP")){               // Абонент №1
         (gsm.find("79093530000"));
         digitalWrite(11, OUTPUT);
         delay(1000);
         digitalWrite(11, LOW);
         delay(100);
         Serial.println("abonent #1 opened");
         break;                              // и выходим
       }
       
       if (gsm.find("+CLIP")){               // Абонент №2
         (gsm.find("79638950000"));
         digitalWrite(11, OUTPUT);
         delay(1000);
         digitalWrite(11, LOW);
         delay(100);
         Serial.println("abonent #2 opened");
         break;                              // и выходим
       } 
        
       else{                                 // иначе 
         gsm.println("AT+CPAS");             // спрашиваем состояние модема   
         delay(100);
         if (gsm.find("+CPAS: 0")) break;    // и если он в "готовности", выходим из цикла
       }                                     // если звонок в процессе, возвращает +CPAS: 3
      }                                      // и крутимся дальше
        gsm.println("AT+CLIP=0");            // выключаем АОН, 
        delay(100);
        gsm.println("ATH0");                      // сбрасываем вызов  
    }
}