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

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

bester пишет:

не робит ссылка

Запятую удали в конце ссылки.

speaker
Offline
Зарегистрирован: 06.05.2016

DIYMan пишет:

speaker пишет:

DIYMan пишет:

Можно. Если юзать формат PDU.

Как включить?

AT-командами, потом формировать SMS в PDU и отправлять. При получении SMS в формате PDU - раскодировать и будет русский текст.

AT-команды для включения кодировки PDU:

AT+CMGF=0

AT+CSCS="UCS2"

Классы для кодирования/раскодирования PDU:

https://github.com/Porokhnya/GreenhouseProject/blob/master/Main/PDUClass...

https://github.com/Porokhnya/GreenhouseProject/blob/master/Main/PDUClass...

Спасибо, сейчас заюзаю.

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

speaker пишет:

Спасибо, сейчас заюзаю.

Да не за что, только учтите, что приведённые ссылки - это "выдиралово" из конкретного проекта, и я не уверен, что всё взлетит сходу. К тому же я работаю с UTF-8, следовательно, входящая строка на русском должна быть в кодировке UTF-8 - это что касается кодирования в PDU. Что касается раскодирования - выходная строка тоже будет в кодировке UTF-8.

bester
Offline
Зарегистрирован: 25.06.2016

rapidshe пишет:

вот модуль http://fas.st/PRlCOF, все хвалят.  в интернете полно примеров скетчев, завтра на работе буду буду играться с ним

думаю через него еще и DTMF получится реализовать... инфу пока на эту тему не искал

Буду тогда такой брать, к сожалению модуль по ссылке теперь не доступен.

Минисимка нужна будет, правильно?

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

bester пишет:

rapidshe пишет:

вот модуль http://fas.st/PRlCOF, все хвалят.  в интернете полно примеров скетчев, завтра на работе буду буду играться с ним

думаю через него еще и DTMF получится реализовать... инфу пока на эту тему не искал

Буду тогда такой брать, к сожалению модуль по ссылке теперь не доступен.

Минисимка нужна будет, правильно?

Без запятой вконец нормально открывается

http://fas.st/PRlCOF

bester
Offline
Зарегистрирован: 25.06.2016

Вот что китаец пишет по поводу открытия спора по моим модулям, я думаю не нужно менять причину спора, как считеете? Я и видео короткого замыкания им отправил

I hope you modify the dispute reason, I will be punished because of such disputes.I hope you can understand. Modify the dispute reason, I ordered the product for mistake,i return ok?
rapidshe
Offline
Зарегистрирован: 31.12.2015

bester пишет:

Вот что китаец пишет по поводу открытия спора по моим модулям, я думаю не нужно менять причину спора, как считеете? Я и видео короткого замыкания им отправил

I hope you modify the dispute reason, I will be punished because of such disputes.I hope you can understand. Modify the dispute reason, I ordered the product for mistake,i return ok?

гни свою линию и повышай уровень спора

speaker
Offline
Зарегистрирован: 06.05.2016

Добрый день, или не день , кто может мне помочь ( не бесплатно) в реализации одной идеи,  нужно чтоб на цифровом выходе при звонке появлялся 0 ,  ну это не самое сложное , важно как то составить филтр по номерам телефона, чтоб на заданную группу номеров была реакция, а на других нет, что то типа белого списка, и еще емкость номеров какая может быть скажем в pro mini atmega168.

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

speaker пишет:

 и еще емкость номеров какая может быть скажем в pro mini atmega168.

Если хранить номер не в виде строки, а в виде unsigned long, то ёмкость номеров будет: (размер EEPROM минус 1 байт (для хранения кол-ва записей)) разделить на 4.

speaker
Offline
Зарегистрирован: 06.05.2016

DIYMan пишет:

speaker пишет:

 и еще емкость номеров какая может быть скажем в pro mini atmega168.

Если хранить номер не в виде строки, а в виде unsigned long, то ёмкость номеров будет: (размер EEPROM минус 1 байт (для хранения кол-ва записей)) разделить на 4.

Т.е около 100 номеров для atmega168.

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

speaker пишет:

Т.е около 100 номеров для atmega168.

Можно и чуть больше, если с упаковкой заморочиться ;)

dimitri08
Offline
Зарегистрирован: 21.04.2012

Купил модуль с али ,без сим карты загружается бут и отвечает на ат команды, а сим картои лед бкта загорается в сериал приходит modem startup и после отключается.в чем может быть проблема ???
две ночи уже не сплю

Заранее спасибо

dimitri08
Offline
Зарегистрирован: 21.04.2012
Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

dimitri08 пишет:
Купил модуль с али ,без сим карты загружается бут и отвечает на ат команды, а сим картои лед бкта загорается в сериал приходит modem startup и после отключается.в чем может быть проблема ??? две ночи уже не сплю Заранее спасибо

скорее всего нехватка тока по питанию, модулю нужно 4В 2А

dimitri08
Offline
Зарегистрирован: 21.04.2012

Спасибо за помошь.
Сегодня купил блок питания 5 вольт 2 ампер все заработало,до этого питал модулем lm7805.

speaker
Offline
Зарегистрирован: 06.05.2016

Хотел спросить, а можно изменять фрагменты кода, из модуля, путем смс, вносить или удалять телефоные номера .

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

speaker пишет:

Хотел спросить, а можно изменять фрагменты кода, из модуля, путем смс, вносить или удалять телефоные номера .

можно

speaker
Offline
Зарегистрирован: 06.05.2016

rapidshe пишет:

speaker пишет:

Хотел спросить, а можно изменять фрагменты кода, из модуля, путем смс, вносить или удалять телефоные номера .

можно

Тогда я с Вами дружу!!! Можно как то прознать как это реализуется.?

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

попахивает коммерциализацией... Общая идея: при получении смски с определенной командой захватывать номер телефона и записывать в какой-либо слот номера

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

зачем мучать сим карту, в EEPROM полно места

speaker
Offline
Зарегистрирован: 06.05.2016

rapidshe пишет:

попахивает коммерциализацией... Общая идея: при получении смски с определенной командой захватывать номер телефона и записывать в какой-либо слот номера

 

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

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

speaker пишет:

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

Зачем с ноутбуком бегать? Добавить поддержку СМС с добавлением номера в EEPROM, вот и всё. Т.е. если СМС пришла с мастер-номера и там есть текст типа "ADD=+7918...." - то добавлять переданный номер в массив разрешённых.

speaker
Offline
Зарегистрирован: 06.05.2016

DIYMan пишет:

speaker пишет:

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

Зачем с ноутбуком бегать? Добавить поддержку СМС с добавлением номера в EEPROM, вот и всё. Т.е. если СМС пришла с мастер-номера и там есть текст типа "ADD=+7918...." - то добавлять переданный номер в массив разрешённых.

А есть где нибудь пример кода, чтоб приспособить под себя,, а то я пока не понимаю ни чего.

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

speaker пишет:

А есть где нибудь пример кода, чтоб приспособить под себя,, а то я пока не понимаю ни чего.

СМС умеете получать? С какого номера СМС приходит - умеете узнавать? Ну а дальше - дело техники:

void parseSMS(const string& sms)
{
  int idx = sms.indexOf("ADD=");
  if(idx == -1)
    return;

  const char* num = sms.c_str() + 4;

 // тут сохраняем num в EEPROM
}

 

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

можно записывать вручную все номера соседей на симкарту, а называть их просто одним и тем же именем например VASYA ....  всех одинаково. при звонке реагировать на слово Вася и открывать подьезд.  С ноутом бегать  не придется, а только с телефоном.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015
Serial.println(val);
       
       Serial.println ("RTTY,\"(val)\", \"TEST\"");    

Обьясните плиз, как сформировать строку принт, чтобы в куске второй строки печаталось в терминалке  значение VAL ??

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

в первой строке все как нужно происходит, а во второй я этого никак не могу этого добится

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

Short Circuit пишет:

Serial.println(val);
       
       Serial.println ("RTTY,\"(val)\", \"TEST\"");    

Обьясните плиз, как сформировать строку принт, чтобы в куске второй строки печаталось в терминалке  значение VAL ??

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

в первой строке все как нужно происходит, а во второй я этого никак не могу этого добится

я когда формирую строку для смс, прибавляю к строке с текстом просто переменную без ковычек.   В итоге при выводе этой строки вижу текст и значения переменных где надо. Но может не так понял тебя...

примера под рукой нет

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

Дел

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

Может так? Не понял что у тебя текст, а что обозначение переменной...

Serial.println ("RTTY" + val + "TEST");

 

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

так помоему оно тупо  плюсыпечатает и все. попробую.

speaker
Offline
Зарегистрирован: 06.05.2016

Спасибо поэксперементирую.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015
void send_sms(String sms_number, String sms_text) 
{  
   delay(1500);
   gsm.print("AT+CMGS="); // send the SMS the number
   gsm.print((char)34);   // передача в порт символа "
   gsm.print((String)sms_number);   // передача номера телефона
   gsm.print((char)34);   // передача в порт символа "
   gsm.print((char)13);   // передача Enter
   delay(1000);
   gsm.println((String)sms_text); // передача текста сообщения
   delay(100);
   gsm.print((char)26); // передача ^Z
   gsm.print((char)13); // передача Enter


}

 

 
достал этот модуль....
отправляю смс.. и вот что замети, после подачи питания - смс отправляется отлично, 
второе смс отпр -  пишет еррор
третье - отлично отправляет..
четв - еррор 
и т.д.  - через один раз..  
или  чтото там не очищается, или какая то иная проблема - не могу понять.
склоняюсь к мысли что типа буфер  при еррор очищается, и тогда оно  шлет смс нормально...
 
 никто не сталкивался?
 
 
еще пару десятков раз попроверял..это звиздец какой то.. через раз и хоть тресни, не знаю что делать.
Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

вот так работает без проблем

void sendmessage(String telnum, String text) {
  if (telnum.length() > 4) {
    gprs.print("AT+CMGF=1\r");
    delay(100);
    gprs.println("AT+CMGS=\"" + telnum + "\"");
    delay(100);
    gprs.println(text);
    delay(100);
    gprs.println((char)26);
    delay(5000);
  }
}

 

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

Valera19701 пишет:

вот так работает без проблем

 

даааа...... с этим кодом проверил, и раз 10ть отправил запросы получил ответы... никаких проблем.

спасибо за код.

короче говоря - мой код не использовать, не все ёгурты одинаково полезны..

а он здесь много где встречается.

fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

Пришел новый набор модема,спаял,проверил командами определяется нормально,но стал отключаться через 30-45 секунд работы ,а так же не могу ни позвонить не принять звонок.Подскажите в какую сторону рыть, в чем может быть проблема.Запитывал от 18650 минуя понижающий диод.

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

смотрите что пишет в порт? может ему напруги мало. и  рх тх не путать..

fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

Если сим нет в слоте ,модуль не отключается,а при вставленной сим карте работем секунд 30 и пишет в порт +PBREADY,после этго отрубается.

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

fly245 пишет:

Если сим нет в слоте ,модуль не отключается,а при вставленной сим карте работем секунд 30 и пишет в порт +PBREADY,после этго отрубается.

это 99%  проблема с питанием

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

даже 101 % питание.. зацепитесь  надежно тестером на контакти питания 590го(можете проводки припаять) и включите питание...  и так несколько раз. если там есть провалы в питании, то вы увидите показания намного ниже заряженного аккума  в 4,2в.. может там 3,6 или ниже, вот он и выкл. контаты везде проверьте.

не забывайте, что провода от аккума нельзя тонкие применять - провалится напряжение при импульсе тока в 2А.

и можете посмотреть что в терминалку пишет с этим кодом:

 

#include <SoftwareSerial.h>
SoftwareSerial gsm(2, 3); // RX, TX
#define pinBOOT 4


void setup()  {

  pinMode(pinBOOT, OUTPUT);              /// нога BOOT на модеме
  digitalWrite(pinBOOT, LOW);
  Serial.begin(9600);
  gsm.begin(9600);                     /// незабываем указать скорость работы UART модема
  delay(100);
  Serial.println("modem ON");
}
  
void loop() {
  if (gsm.available())
    Serial.write(gsm.read());
  if (Serial.available())
    gsm.write(Serial.read());
}

с этим кодом должны быть видны и те команды которых вы обычно не видите.  может там что по напряжению говорится, например сим800 жутко ругается  на питание и потом выключается всего лиш мигнув три раза если оно или маленькое или больше 4,5в.

за 590м еще не наблюдал, но я нормальное питание даю.

fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

Спасибо,попробую Вашим способом вечером.

fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

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

#include <SoftwareSerial.h>
 #include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

SoftwareSerial gsm(7, 8); // TX,RX
 
void setup() {
 Serial.begin(9600);
 gsm.begin(9600);
 
  mySwitch.enableReceive(0);  // Receiver on inerrupt 0 => that is pin #2
 
}
 
void loop() {
  if (mySwitch.available()) {
    
       int value = mySwitch.getReceivedValue();
    
    switch (value) {
    case 2078505:
    
   
     while(1){             // проверяем готовность модема
       gsm.println("AT+CPAS");
       if (gsm.find("0")) break;
       delay(100);  
     }
  
     gsm.println("ATD+790xxxxxxxx;"); // звоним по указанному номеру
     delay(100);
     if (gsm.find("OK")) Serial.println("OK!");
     else Serial.println("error");
     break;
   }
}
}

 

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

а без  value = "" ;  ??

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

Вставьте 

mySwitch.resetAvailable(); // сброс радио кода

 

fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

Спасибо,подумал тоже,что эту строчку не вставил.

fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

Вообщем добавил строку сброса кода,все равно циклично набирает номер пока не перегружу 

#include <SoftwareSerial.h>
 #include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

SoftwareSerial gsm(7, 8); // TX,RX
 
void setup() {
 Serial.begin(9600);
 gsm.begin(9600);
 
  mySwitch.enableReceive(0);  // Receiver on inerrupt 0 => that is pin #2
 
}
 
void loop() {
  if (mySwitch.available()) {
    
       int value = mySwitch.getReceivedValue();
    
    switch (value) {
    case 2078505:
    
   
     while(1){             // проверяем готовность модема
       gsm.println("AT+CPAS");
       if (gsm.find("0")) break;
       delay(100);  
     }
  
     gsm.println("ATD+790xxxxxxxx;"); // звоним по указанному номеру
     delay(100);
     if (gsm.find("OK")) Serial.println("OK!");
     else Serial.println("error");
     break;
   }
   mySwitch.resetAvailable();
}
}

 

AlexZZZ
Offline
Зарегистрирован: 22.07.2016

31 строка - указание модему соеденится с номером ххххх, НЕ звоним, а всего лишь отдаем команду модему, он сам потом проводит процедуру соединения.

32 строка 0,1 сек ...

33 строка "if" а какого Вы ответа ожидаете получить через 0,1 сек не после звонка, а после команды модему на звонок?

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

AlexZZZ пишет:
 Вы ответа ожидаете получить через 0,1 сек не после звонка, а после команды модему на звонок?

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

 

вот меня другое интересует - а если в это время датчик передал данные - обработается корректно или жуткая коллизия получится?

AlexZZZ
Offline
Зарегистрирован: 22.07.2016

нет сегодня этого модема под рукой проверить, просто думается мне что модем ответит "ОК" только после того как дозвонится, у Вас по идее всегда будет Error.

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

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

для начала проверьте, ошибаетесь но счет ответа модема..

fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

Модем отвечает ОК! и поом идет уже звонок входящий на сотике