neoway m590

vlad45
Offline
Зарегистрирован: 12.01.2015

Здравствуйте купил модуль gsm neoway m590 запустить запустил а как подключить не могу понять программу в интернете нашел залил проверяю не какх эффектов что делать? заранее спасибо

 

Araris
Offline
Зарегистрирован: 09.11.2012
vlad45
Offline
Зарегистрирован: 12.01.2015

да читал модуль запускается но на каманды не отвечает звоню гудки идут 

 

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

vlad45 пишет:

Здравствуйте купил модуль gsm neoway m590 запустить запустил а как подключить не могу понять программу в интернете нашел залил проверяю не какх эффектов что делать? заранее спасибо

 

купили - поздравляем.

как подключить? - читайте ветку, заливайте пока не потечет через верх, пока мало залили.

 

ЗЫ: кстати ответы вполне в вашем стиле вопросов - никакой конкретики, сплошны  рекомендации.

vlad45
Offline
Зарегистрирован: 12.01.2015

Я брал программу с инета заливал в ардуино и в мониторе порта писал команды и нет ответа

vlad45
Offline
Зарегистрирован: 12.01.2015

Да читал взял не много информации получилось запустить дозвон пошел а ардуино не видит

vlad45
Offline
Зарегистрирован: 12.01.2015

вот нашел программу для neoway m590 залил к себе для обработки и что то не догоняю где здесь ошибка 

// 14CORE TEST CODE FOR NEOWAY M590 GPS/GSM Module Board

/* ------------------------------------------------------------------------------------
ENABLING SMS SERVICE AT COMMAND (Please see the AT Command Documentation for further details)
> AT+CMGF=1 
SENDING SMS COMMAND AT COMMAND (Please see the AT Command Documentation for further details)
> AT+CMGS="001123456789"
> "This is text masage"
> <Ctrl+Z>

You can use the other serial communication tool below.
> PUTTY  http://www.putty.org/
> COOLTERM http://freeware.the-meiers.org/
--------------------------------------------------------------------------------------*/

void setup()
	Serial1.begin(115200);
	Serial2.begin(9600); // Change the baud rate at 9600 with AT Command AT+IPR=9600
}
void loop(){
	while(Serial2.available()) Serial.write(Serial2.read());
	while(serial1.available()) Serial.write(Serial1.read());
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

#include <SoftwareSerial.h>
SoftwareSerial goMySerial(2, 3); //RX, TX (Change the g to G) :)

void setup(){
Serial.begin(19200);
Serial.println("14CORE TEST CODE FOR M590 GSP/GPRS MODULE");
GoMySerial.println(19200);
GoMySerial.println("AT");
}

void loop(){
if (GoMySerial.available())
    Serial.write(GoMySerial.read());
if (Serial.available())
    GoMySerial.write(Serial.read());
}

 

DESArt
Offline
Зарегистрирован: 26.02.2017
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX

String data;

void setup()
{
  Serial.begin(9600);  //Скорость порта для связи Arduino с компьютером
  Serial.println("Goodnight moon!");
  mySerial.begin(9600);  //Скорость порта для связи Arduino с GSM модулем
  mySerial.println("AT");
   delay(100);  
  mySerial.println("AT+CMGF=1"); //включаем текстовый режим
   delay(100);
  mySerial.println("AT+CLIP=1"); //включаем АОН
   delay(100);
  mySerial.println("AT+CSCS=\"GSM\""); //режим кодировки текста
   delay(100);
  mySerial.println("AT+CNMI=2,2"); //отображение СМС в терминале
   delay(100);  
}

void loop()
{
  bool f_enter = false; //первый перенос или нет
  byte r_byte  = 0;     //текущий обрабатываемый бит
    
  if (mySerial.available())
  {
    while (mySerial.available() > 0)
    {
       r_byte = mySerial.read();
      
       switch (r_byte)
        {
          case 13: if (!f_enter)
                   {
                     data += ';';
                     f_enter = true;
                   } break;
          case 10: {} break;
          default: { 
                    data += (char)r_byte;
                    f_enter = false;
                   } 
        }    
    } 

    if (mySerial.available() == 0) delay(50);
  }

  if (data != "")
   {Serial.println(data); data = "";}
    
  if (Serial.available())
    mySerial.write(Serial.read());
}

Попробуйте вот это

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

01 #include <avr/pgmspace.h>

{

 

   
08   Serial.begin(9600);  //Скорость порта для связи Arduino с компьютером
09   Serial.println(F("Goodnight moon!"));
10   mySerial.begin(9600);  //Скорость порта для связи Arduino с GSM модулем
11   mySerial.println(F("AT"));
12    delay(100); 
13   mySerial.println(F("AT+CMGF=1")); //включаем текстовый режим
14    delay(100);
15   mySerial.println(F("AT+CLIP=1")); //включаем АОН
16    delay(100);
17   mySerial.println(F("AT+CSCS=\"GSM\"")); //режим кодировки текста
18    delay(100);
19   mySerial.println(F("AT+CNMI=2,2")); //отображение СМС в терминале
20    delay(100); 
21 }

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

я так уменьшил занятось памяти с 70% до 20% !!! 

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

DESArt пишет:

Попробуйте вот это

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

Спасибо.

DESArt
Offline
Зарегистрирован: 26.02.2017
5

Если совсем коротко, то мы берем команду и парсим её

получается что то типа <command>;<command>;<command>; и т.д.

т.е. избавляемся от лишних переносов и все записываем в одну строку

;RING;+CLIP: "7961*******",145,,,"",0;

 String data - не забываем добавлять

  bool f_enter = false//первый перенос или нет

26   byte r_byte  = 0;     //текущий обрабатываемый бит
27     
28   if (mySerial.available()) //Ждем данных
29   {
30     while (mySerial.available() > 0) //если данные пришли...
31     {
32        r_byte = mySerial.read(); //читаем байт
33       
34        switch (r_byte)
35         {
36           case 13: if (!f_enter) //если это перенос (enter) то в место него записываем;
37                    {
38                      data += ';';
39                      f_enter = true;
40                    break;
41           case 10: {} break; //если это другой перенос (он в основном в связке с enter идет) то тупо пропускаем
42           default: {
43                     data += (char)r_byte; //если это не символы переноса то пишем в data
44                     f_enter = false;
45                    }
46         }   
47     }
48  
49     if (mySerial.available() == 0) delay(50); //ждем вдруг ещё данные прийдут (если большая смс например)
50   }
51

 

 

        все данные теперь у нас в data в виде <command>;<command>;<command>; 

 

DESArt
Offline
Зарегистрирован: 26.02.2017

 byte r_byte  = 0;     //текущий обрабатываемый бит 

тут ошибка в описании точнее байт

DESArt
Offline
Зарегистрирован: 26.02.2017

про уменьшение памяти

 Идея хорошая, но у меня настройки в памяти храняться, 

 для оптимизации кода можно написать процедурку

void SendSerialData(String pData)
{
  mySerial.println(pData);
  delay(100);
}

и вместо полностью хранимых команд в памяти можно записать что то типа

 AT+ - это старт

 остальные команды CNMI=2,2 и т.д. т.е. без AT+

 будет выглядеть примерно так

SendSerialData(RDStart + Command);
 
Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

дел.....