mega 2560 + efcom gsm shielg

vizavill
Offline
Зарегистрирован: 31.07.2013

Помогите азобаться с подключением по этому мануалу

http://www.elecfreaks.com/wiki/index.php?title=EFCom_GPRS/GSM_Shield

maksim
Offline
Зарегистрирован: 12.02.2012

Берете шилд, насаживаете его на дуину и вуаля - готово, все подключено!

vizavill
Offline
Зарегистрирован: 31.07.2013

 

  • 1. Установите SIM-карту в ваш GPRS Щит.
  • 2. Взять Arduino и установить GPRS Щит над ним.
  • 3. Подключите антенну к GPRS Щит.
  • 4. Подключите Arduino к компьютеру с помощью кабеля USB.
  • 5.Подключите адаптер питания к Arduino.
  • 6.Нажмите и удерживайте кнопку питания в короткое время(в Течение 3-х секунд) на GPRS Щит, чтобы включить его. Ждать полминуты GPRS Щит для подключения к сети (СВЕТОДИОД NET начнет мигать каждые 3 секунды или около того). Если он продолжает мигать каждый 800mS, что означает EFCom не могу подключиться к Интернету, пожалуйста, извлеките SIM-карту и вновь Подключите его., или попробуйте использовать другую плату.

Затем вставил нижеприведенный код но на этапе компиляции выдало ошибку

//Serial Relay - Arduino will patch a 
//serial link between the computer and the GPRS Shield
//at 19200 bps 8-N-1
//Computer is connected to Hardware UART
//GPRS Shield is connected to the Software UART 
 
#include <NewSoftSerial.h>
 
NewSoftSerial mySerial(2, 3);
 
void setup()
{
  mySerial.begin(19200);               // the GPRS baud rate   
  Serial.begin(19200);                 // the GPRS baud rate   
}
 
void loop()
{
    if(Serial.available())
    {
       mySerial.print((unsigned char)Serial.read());
     }  
    else  if(mySerial.available())
    {
       Serial.print((unsigned char)mySerial.read());
     }   
 
}

ошибка

In file included from sketch_jul31a.ino:7:
C:\Users\vadim\Desktop\arduino-1.0.5\libraries\NewSoftSerial/NewSoftSerial.h:33:2: error: #error NewSoftSerial has been moved into the Arduino core as of version 1.0. Use SoftwareSerial instead.
In file included from sketch_jul31a.ino:7:
C:\Users\vadim\Desktop\arduino-1.0.5\libraries\NewSoftSerial/NewSoftSerial.h:99: error: conflicting return type specified for 'virtual void NewSoftSerial::write(uint8_t)'
C:\Users\vadim\Desktop\arduino-1.0.5\hardware\arduino\cores\arduino/Print.h:48: error:   overriding 'virtual size_t Print::write(uint8_t)'
 
vizavill
Offline
Зарегистрирован: 31.07.2013

Еще можете объяснить что за провода идут на нижней катинке

http://www.elecfreaks.com/4446.html

maksim
Offline
Зарегистрирован: 12.02.2012

Вот дарю Переводчик. Этими проводами можно подключаться к аппаратным UART'ам Меги.

maksim
Offline
Зарегистрирован: 12.02.2012

Переводчик помог?

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3);

void setup()
{
  mySerial.begin(19200);               // the GPRS baud rate   
  Serial.begin(19200);                 // the GPRS baud rate   
}

void loop()
{
  if(Serial.available())
  {
    mySerial.print((unsigned char)Serial.read());
  }  
  else  if(mySerial.available())
  {
    Serial.print((unsigned char)mySerial.read());
  }   

}

 

vizavill
Offline
Зарегистрирован: 31.07.2013

Как я понял на плате юарт входы обозначаются как tx0 rx0, tx1 rx1, tx2 rx2,tx3 rx3. Но если судить по картинке они расположены на моей плате в другом месте

vizavill
Offline
Зарегистрирован: 31.07.2013

maksim пишет:

Переводчик помог?

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3);

void setup()
{
  mySerial.begin(19200);               // the GPRS baud rate   
  Serial.begin(19200);                 // the GPRS baud rate   
}

void loop()
{
  if(Serial.available())
  {
    mySerial.print((unsigned char)Serial.read());
  }  
  else  if(mySerial.available())
  {
    Serial.print((unsigned char)mySerial.read());
  }   

}

 

 

да помог

vizavill
Offline
Зарегистрирован: 31.07.2013
//Serial Relay - Arduino will patch a 
//serial link between the computer and the GPRS Shield
//at 19200 bps 8-N-1
//Computer is connected to Hardware UART
//GPRS Shield is connected to the Software UART 
 
#include <SoftwareSerial.h>
 
SoftwareSerial mySerial(0, 1);
 
void setup()
{
  mySerial.begin(9600);               // the GPRS baud rate   
  Serial.begin(9600);                 // the GPRS baud rate   
}
 
void loop()
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());  
 
}

попробовал использовать 0 и 1 порт ,при посылке АТ команды мигает лампочка RX на плате но ответа нет

maksim
Offline
Зарегистрирован: 12.02.2012

Прочитайте полностью описание платформы Arduino Mega2560.

  • Последовательная шина: 0 (RX) и 1 (TX); Последовательная шина 1: 19 (RX) и 18 (TX); Последовательная шина 2: 17 (RX) и 16 (TX); Последовательная шина 3: 15 (RX) и 14 (TX). Выводы используются для получения (RX) и передачи (TX) данных TTL. Выводы 0 и 1 подключены к соответствующим выводам микросхемы последовательной шины ATmega8U2.
Связь

На платформе Arduino Mega2560 установлено несколько устройств для осуществления связи с компьютером, другими устройствами Arduino или микроконтроллерами. ATmega2560 поддерживает 4 порта последовательной передачи данных UART для TTL. Установленная на плате микросхема ATmega8U2 направляет один из интерфейсов через USB, предоставляя виртуальный COM порт программам на компьютере...

 

Выводы 0 и 1 подключены к соответствующим выводам микросхемы последовательной шины ...ATmega8U2... направляет один из интерфейсов через USB, предоставляя виртуальный COM порт программам на компьютере..

Выводы 0 и 1 - COM порт.

vizavill
Offline
Зарегистрирован: 31.07.2013

Подключаю вот таким образом, к 16 и 17 порту. на gsm подключаю без перемычек , просто к крайним выводам D3. 

Прописываю следующий код

//Serial Relay - Arduino will patch a 
//serial link between the computer and the GPRS Shield
//at 19200 bps 8-N-1
//Computer is connected to Hardware UART
//GPRS Shield is connected to the Software UART 
 
#include <SoftwareSerial.h>
 
SoftwareSerial mySerial(16, 17);
 
void setup()
{
  mySerial.begin(19200);               // the GPRS baud rate   
  Serial2.begin(19200);                 // the GPRS baud rate   
}
 
void loop()
{
  if (mySerial.available())
    Serial2.write(mySerial.read());
  if (Serial2.available())
    mySerial.write(Serial2.read());  
 
}

но на команду AT ничего не приходит

 

maksim
Offline
Зарегистрирован: 12.02.2012

А зачем вы пользуетесь программным UARTом если подключились к аппаратному? И вы все по прежнему "засовываете змее хвост в рот и спрашиваете почему она не ползет".

void setup()
{
  Serial.begin(19200);               // the GPRS baud rate   
  Serial2.begin(19200);                 // the GPRS baud rate   
  Serial.print("start");
}

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

 

maksim
Offline
Зарегистрирован: 12.02.2012

 start при открытии монитора печатается?

Так же есть вариант проверить шилд в обход дуины, заливаете в дуину сей код:

void setup() {}
void loop() {}

и ставите вот так перемычки:

vizavill
Offline
Зарегистрирован: 31.07.2013
void setup()
{
  Serial.begin(19200);               // the GPRS baud rate   
  Serial2.begin(19200);                 // the GPRS baud rate   
  Serial.print("start");
}

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

Этот код заработал, делал звонки отправлял сообщения с помощью АТ команд, но вот с библиотекой не получается, она помойму работает с програмным юартом

БИБЛИОТЕКА

vizavill
Offline
Зарегистрирован: 31.07.2013

Разобрался, с другой библиотекой все работает отлично, позже скину на нее ссылку

Looka
Offline
Зарегистрирован: 24.04.2012

vizavill пишет:

Разобрался, с другой библиотекой все работает отлично, позже скину на нее ссылку

 

А где обещенная ссылка?

vizavill
Offline
Зарегистрирован: 31.07.2013

Извиняюсь за такую задержку, вот библиотека 

https://code.google.com/p/gsm-shield-arduino/downloads/list

alanoff
Offline
Зарегистрирован: 20.01.2014

Здравствуйте!

Не могу заставить работать этот efcom с мегой. Все варианты перепробовал и скорости - молчит окоянный! Другой модем (другая модель) нормально работает на аппаратном. Этот же диодиками мыргает, но молчит. Что может быть?

MDV
Offline
Зарегистрирован: 08.08.2013

Таже проблема, не могу заставить работать на меге, на уно все гуд. maksim вопрос к вам ваш пример для хард сериал?

 

Serega_mexanik
Offline
Зарегистрирован: 21.12.2014

Уно на ура работает с наследниками класса GSM. Принимает, отправляет смс, звонит. И все это можно увидеть на мониторе.

На мега - проблема за проблемой, программно - включаю кнопку питания - запускаеться по настроению. Верю, что проблему можно решиль с помощью доп питания. Дальше, больше - Ни сериал потр, ни NEW Сериал, ни Хардвер - порт, ни преславутые ноги 50, 51 ни 6,7; 7,8; 10,11; и иже с ними перемычки на плате (icomsat 1.1) ставил по-разному. 

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

 

Может кто разобрался, покажите в картинках, куда, что... Танцы с бубном - уже надоели

#include <SoftwareSerial.h>
 
SoftwareSerial port1(52,53);
char Result;
 
void setup()
{ 
  Serial.begin(9600);
   port1.begin(9600);
}
void loop()
{  
   port1.listen();
   while (port1.available() > 0) 
   {
    char Result = port1.read();
    Serial.write(Result); 
   }
}

 

partizan
Offline
Зарегистрирован: 16.02.2015

Для меги подключение хитрО

Вот тут на фото видно (для Icomsat v1.1)

Крайние выводы (rx и tx) подключаются к выводам меги. tx - 19, rx - 18

не знаю как сюда подцепить архив с библиотекой.

 

Вот вспомнил где я нашел способ подключения: http://competefornothing.com/arduino-mega-2560-r3-using-itead-studio-icomsat-v1-1/

под картинкой красным цветом ссылка на саму библиотеку. кста вот она http://competefornothing.com/arduino-mega-2560-r3-using-itead-studio-icomsat-v1-1/icomsat_v1-1_arduino_mega_2560_library/

разархивировать и каталог GSM_Shield поместить в Program files\Arduino\Libraries

partizan
Offline
Зарегистрирован: 16.02.2015

Но мне пришлось доработать функцию GetSMS.

Без этого исправления некорректно текст пришедшей смс возвращался.

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

char GSM::GetSMS(byte position, char *phone_number, char *SMS_text, byte max_SMS_len) 
{
  char ret_val = -1;
  char *p_char; 
  char *p_char1;
  byte len;
  char AlxCmd[64];

  if (position == 0) return (-3);
  if (CLS_FREE != GetCommLineStatus()) return (ret_val);
  SetCommLineStatus(CLS_ATCMD);
  phone_number[0] = 0;  // end of string for now
  ret_val = GETSMS_NO_SMS; // still no SMS

  //send "AT+CMGR=X" - where X = position
  //Serial1.write("AT+CMGR=");
  //Serial1.write((int)position);
  sprintf(AlxCmd, "AT+CMGR=%d", (int)position);
  Serial1.write(AlxCmd);
  //Serial1.write((int)position);  
  Serial1.write("\r");

  // 5000 msec. for initial comm tmout
  // 100 msec. for inter character tmout
  switch (WaitResp(5000, 100, "+CMGR")) {
    case RX_TMOUT_ERR:
      // response was not received in specific time
      ret_val = -2;
      break;

    case RX_FINISHED_STR_NOT_RECV:
      // OK was received => there is NO SMS stored in this position
      if(IsStringReceived("OK")) {
        // there is only response <CR><LF>OK<CR><LF> 
        // => there is NO SMS
        ret_val = GETSMS_NO_SMS;
      }
      else if(IsStringReceived("ERROR")) {
        // error should not be here but for sure
        ret_val = GETSMS_NO_SMS;
      }
      break;

    case RX_FINISHED_STR_RECV:
      // find out what was received exactly

      //response for new SMS:
      //<CR><LF>+CMGR: "REC UNREAD","+XXXXXXXXXXXX",,"02/03/18,09:54:28+40"<CR><LF>
		  //There is SMS text<CR><LF>OK<CR><LF>
      if(IsStringReceived("\"REC UNREAD\"")) { 
        // get phone number of received SMS: parse phone number string 
        // +XXXXXXXXXXXX
        // -------------------------------------------------------
        ret_val = GETSMS_UNREAD_SMS;
      }
      //response for already read SMS = old SMS:
      //<CR><LF>+CMGR: "REC READ","+XXXXXXXXXXXX",,"02/03/18,09:54:28+40"<CR><LF>
		  //There is SMS text<CR><LF>
      else if(IsStringReceived("\"REC READ\"")) {
        // get phone number of received SMS
        // --------------------------------
        ret_val = GETSMS_READ_SMS;
      }
      else {
        // other type like stored for sending.. 
        ret_val = GETSMS_OTHER_SMS;
      }

      // extract phone number string
      // ---------------------------
      p_char = strchr((char *)(comm_buf),',');
      p_char1 = p_char+2; // we are on the first phone number character
      p_char = strchr((char *)(p_char1),'"');
      if (p_char != NULL) {
        *p_char = 0; // end of string
        strcpy(phone_number, (char *)(p_char1));
      }

      // get SMS text and copy this text to the SMS_text buffer
      // ------------------------------------------------------
      p_char = strchr(p_char+1, 0x0a);  // find <LF>
      if (p_char != NULL) {
        // next character after <LF> is the first SMS character
        p_char++; // now we are on the first SMS character 

        // find <CR> as the end of SMS string
        p_char1 = strchr((char *)(p_char), 0x0d);  
        if (p_char1 != NULL) {
          // finish the SMS text string 
          // because string must be finished for right behaviour 
          // of next strcpy() function
          *p_char1 = 0; 
        }
        // in case there is not finish sequence <CR><LF> because the SMS is
        // too long (more then 130 characters) sms text is finished by the 0x00
        // directly in the WaitResp() routine

        // find out length of the SMS (excluding 0x00 termination character)
        len = strlen(p_char);

        if (len < max_SMS_len) {
          // buffer SMS_text has enough place for copying all SMS text
          // so copy whole SMS text
          // from the beginning of the text(=p_char position) 
          // to the end of the string(= p_char1 position)
          strcpy(SMS_text, (char *)(p_char));
        }
        else {
          // buffer SMS_text doesn't have enough place for copying all SMS text
          // so cut SMS text to the (max_SMS_len-1)
          // (max_SMS_len-1) because we need 1 position for the 0x00 as finish 
          // string character
          memcpy(SMS_text, (char *)(p_char), (max_SMS_len-1));
          SMS_text[max_SMS_len] = 0; // finish string
        }
      }
      break;
  }
  SetCommLineStatus(CLS_FREE);
  return (ret_val);
}

 

partizan
Offline
Зарегистрирован: 16.02.2015

del

partizan
Offline
Зарегистрирован: 16.02.2015

del

Serega_mexanik
Offline
Зарегистрирован: 21.12.2014

partizan пишет:

 

Крайние выводы (rx и tx) подключаются к выводам меги. tx - 19, rx - 18

Разобрался, все посадил, все вроде закрутилось

Стартует два примера 

#include <GSM_Shield.h>
//for enable disable debug rem or not the string       #define DEBUG_PRINT
// definition of instance of GSM class
GSM gsm;

void setup()
 {
  Serial.begin(9600);
  Serial.println("system startup" 
  //gsm.InitSerLine(9600);   //initialize serial 1 
  gsm.TurnOn(9600);              //module power on
  //gsm.InitSerLine(9600);   //initialize serial 1 
  gsm.InitParam(PARAM_SET_1);//configure the module  
  gsm.Echo(1);               //enable AT echo 
}

//-------------------------------------------

#include "SIM900.h"
#include <SoftwareSerial.h>
//We don't need the http functions. So we can disable the next line.
//#include "inetGSM.h"
#include "sms.h"
#include "call.h"

//To change pins for Software Serial, use the two lines in GSM.cpp.

//GSM Shield for Arduino
//www.open-electronics.org
//this code is based on the example of Arduino Labs.

//Simple sketch to check if an incoming call is from an authorized
//number and in this case, send to this number an SMS with the value
//of a digital input.

//We have to create the classes for SMSs and calls.
CallGSM call;
SMSGSM sms;

char number[20]="067***-**-**";
byte stat=0;
int value=0;
int pin=1;
char value_str[5];

void setup() 
{
  pinMode(pin,INPUT);
  //Serial connection.
  Serial.begin(9600);
  Serial.println("GSM Shield testing."
  //Start configuration of shield with baudrate.
  //For http uses is raccomanded to use 4800 or slower.
  if (gsm.begin(2400))
    Serial.println("\nstatus=READY");
  else Serial.println("\nstatus=IDLE");
};

Библиотека GSM.h не хочет цепляться, точнее GSMVoiceCall vcs;

не хочеться работать с помощью АТ команд

//----------------------------------

я совсем запутался, как теперь звонить шилдом, СМСсить ? писать в порт АТ ?

 

partizan
Offline
Зарегистрирован: 16.02.2015

Serega_mexanik пишет:

partizan пишет:

 

Крайние выводы (rx и tx) подключаются к выводам меги. tx - 19, rx - 18

Разобрался, все посадил, все вроде закрутилось

Стартует два примера 

...

Библиотека GSM.h не хочет цепляться, точнее GSMVoiceCall vcs;

не хочеться работать с помощью АТ команд

//----------------------------------

я совсем запутался, как теперь звонить шилдом, СМСсить ? писать в порт АТ ?

Какова причина нежелания пользоваться at-командами?

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

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

Serega_mexanik
Offline
Зарегистрирован: 21.12.2014
Не могу понять логику работы, этого бутерброда.

Я использую два пина для связи. Пин 0 и 1 - хардвер порт для связи с ПК, это ясно. Теперь с помощью перемычек 18, 19 - привязываем, я так понимаю еще один хардвер порт -Serial_1, который прописан на плате мега.

Теперь я в Serial1 пишу АТ команды, которые понимает модем. И когда он что-то там отвечает и то, что отвечает, каким-то странным образом, используем.

Поправьте меня, возможно каша в голове...

 

partizan
Offline
Зарегистрирован: 16.02.2015

Serega_mexanik пишет:

Не могу понять логику работы, этого бутерброда.

Я использую два пина для связи. Пин 0 и 1 - хардвер порт для связи с ПК, это ясно. Теперь с помощью перемычек 18, 19 - привязываем, я так понимаю еще один хардвер порт -Serial_1, который прописан на плате мега.

Теперь я в Serial1 пишу АТ команды, которые понимает модем. И когда он что-то там отвечает и то, что отвечает, каким-то странным образом, используем.

Поправьте меня, возможно каша в голове...

 

Так и есть. В конечном итоге мы ему в порт посылаем АТ-Команды и слушаем ответы.

Я только не пойму почему на этих АТ-командах зацикилились: я вызываю процедуры/функции библиотеки GSM_Shield. А она уж сама посылает туда чего надо и слушает ответы :)

Тут загвоздка в основном - правильно проинициализировать GSM модем. И если надо, поправить в функциях по работе с смс АТ-команды (в основном CNMI, CMGD)

Всё остальное желательно по умолчанию.

А да, я для себя ещё доработал функцию удаления СМС

char GSM::DeleteSMS(byte position) 
{
  char ret_val = -1;
  char AlxCmd[64]; // Здесь будем формировать команду удаления. С параметром.

  if (position == 0) return (-3);
  if (CLS_FREE != GetCommLineStatus()) return (ret_val);
  SetCommLineStatus(CLS_ATCMD);
  ret_val = 0; // not deleted yet
  
  //send "AT+CMGD=XY" - where XY = position
  //Serial1.write("AT+CMGD=");
  //Serial1.write((int)position);  
  sprintf(AlxCmd, "AT+CMGD=%d,2", (int)position); // В "родной" версии номер смски некорректно задавался. и я добавил опцию "2"
  Serial1.write(AlxCmd); // Посылаем получившуюся команду.
  Serial1.write("\r");

  // 5000 msec. for initial comm tmout
  // 20 msec. for inter character timeout
  switch (WaitResp(5000, 50, "OK")) {
    case RX_TMOUT_ERR:
      // response was not received in specific time
      ret_val = -2;
      break;

    case RX_FINISHED_STR_RECV:
      // OK was received => SMS deleted
      ret_val = 1;
      break;

    case RX_FINISHED_STR_NOT_RECV:
      // other response: e.g. ERROR => SMS was not deleted
      ret_val = 0;
      break;
  }
  SetCommLineStatus(CLS_FREE);
  return (ret_val);
}

 

DiabloAD
Offline
Зарегистрирован: 18.02.2015

Ребят помогите  arduino-pro-mini-v11 пишет ошибки вывод питания 3.3v с vcc перезаписан. Как избавится от этого?

Serega_mexanik
Offline
Зарегистрирован: 21.12.2014

partizan пишет:

Так и есть. В конечном итоге мы ему в порт посылаем АТ-Команды и слушаем ответы.

Я только не пойму почему на этих АТ-командах зацикилились: я вызываю процедуры/функции библиотеки GSM_Shield. А она уж сама посылает туда чего надо и слушает ответы

Тут загвоздка в основном - правильно проинициализировать GSM модем. И если надо, поправить в функциях по работе с смс АТ-команды (в основном CNMI, CMGD)

Зачем тогда создают SofwareSerialPort(Rx, Tx)? коггда нет возможности использовать программный ?

И если я туда прицеплю еще чего-нибудь например на Сериал порт2 (rx2, tx2); Как это инициализировать и работать с ним ?

partizan
Offline
Зарегистрирован: 16.02.2015

Serega_mexanik пишет:

Зачем тогда создают SofwareSerialPort(Rx, Tx)? коггда нет возможности использовать программный ?

И если я туда прицеплю еще чего-нибудь например на Сериал порт2 (rx2, tx2); Как это инициализировать и работать с ним ?

 

В библиотеке по моей ссылке не используется SofwareSerialPort(Rx, Tx).

Посмотри внимательно - там всё закомментировано. Для общения с жсм модемом используется serial 1.

Использование и инициализация второго порта зависит от того что подключишь туда. Наверное это будут уже другие библиотеки - у них свои инициализации.

Я в своём проекте использовал и жсм модем, два датчика, экранчик двустрочный. Всё инициализуется и работает.

Serega_mexanik
Offline
Зарегистрирован: 21.12.2014

partizan пишет:

использовал и жсм модем, два датчика, экранчик двустрочный. Всё инициализуется и работает.

Пытался посадить 

вот такой

из-за того, что инициализирует 9я нога LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

нужно что-то перепаивать

partizan
Offline
Зарегистрирован: 16.02.2015

Serega_mexanik пишет:

partizan пишет:

использовал и жсм модем, два датчика, экранчик двустрочный. Всё инициализуется и работает.

Пытался посадить 

вот такой

из-за того, что инициализирует 9я нога LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

нужно что-то перепаивать

Посади вместо 9 ноги, на 10 например.

и строку инициализации замени: LiquidCrystal lcd(8, 10, 4, 5, 6, 7);

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

Для экранчика кажется проще

Перепаивать ничего не надо! Просто проводок перевоткнуть

Serega_mexanik
Offline
Зарегистрирован: 21.12.2014

О чудо, модем корректно начал общаться на скорости 2400

void setup() 
{
  /*
pinMode(9, OUTPUT);
digitalWrite(9, HIGH);
delay(500);
digitalWrite(9, LOW);
delay(500); 
Serial.flush();
*/ 
  Serial.begin(9600);
  Serial.println("system startup"); 
  gsm.TurnOn(2400);          //module power on
  gsm.InitParam(PARAM_SET_1);//configure the module  
  gsm.Echo(0);               //enable AT echo 
  
//gsm.IsInitialized(); 
}

 

partizan
Offline
Зарегистрирован: 16.02.2015

Serega_mexanik пишет:

О чудо, модем корректно начал общаться на скорости 2400

 

Должно быть 9600.

Наверное надо зайти терминалом и скинуть модем в заводские настройки.

 

Serega_mexanik
Offline
Зарегистрирован: 21.12.2014

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

// сказал, чтобы вывел на экран и удалил

Received SMS from (sim position: 1)

SMS deleted

//вывел на экран - ничего, но удалил ((

 

partizan
Offline
Зарегистрирован: 16.02.2015

Serega_mexanik пишет:

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

// сказал, чтобы вывел на экран и удалил

Received SMS from (sim position: 1)

SMS deleted

//вывел на экран - ничего, но удалил ((

 

AT&F - сброс в заводские настройки.

По идее надо терминалом подключиться чтобы команды самому писать.

Но  наверное можно в setup() скетча рабочего прописать. Запустить его раз, а потом удалить эту команду.

Serega_mexanik
Offline
Зарегистрирован: 21.12.2014

Терминалом, не получилось. Что ему туда отправлять ? 

AT&F    "AT&F"    'AT&F'   println(AT&F)

//Serial1.write(AT&F)

SendATCmdWaitResp("AT&F")

- тоже не прокатило

partizan
Offline
Зарегистрирован: 16.02.2015

Serega_mexanik пишет:

Терминалом, не получилось. Что ему туда отправлять ? 

AT&F    "AT&F"    'AT&F'   println(AT&F)

Serial1.write("AT&F"); - тоже не прокатило

 

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

Serial1.write("\r");

т.е. должно быть так:

Serial1.write("AT&F");

Serial1.write("\r");

Serega_mexanik
Offline
Зарегистрирован: 21.12.2014
после этой комбинации - все напрочь замерло

gsm.SendATCmdWaitResp("AT&F", 500, 50, "OK", 5);

Serial1.write("AT&F"); Serial1.write("\r");

  Serial.begin(9600);
  Serial.println("system startup"); 
  
  gsm.TurnOn(9600);    
  //gsm.InitParam(PARAM_SET_1);//configure the module  
  gsm.InitParam(PARAM_SET_0);  
  gsm.Echo(0);            
  

 

partizan
Offline
Зарегистрирован: 16.02.2015

Serega_mexanik пишет:

после этой комбинации - все напрочь замерло

gsm.SendATCmdWaitResp("AT&F", 500, 50, "OK", 5);

Serial1.write("AT&F"); Serial1.write("\r");

  Serial.begin(9600);
  Serial.println("system startup"); 
  
  gsm.TurnOn(9600);    
  //gsm.InitParam(PARAM_SET_1);//configure the module  
  gsm.InitParam(PARAM_SET_0);  
  gsm.Echo(0);            

 

Так и должно быть!

сейчас убери эти конманды из скетча и подключайся уже на скорости 9600

partizan
Offline
Зарегистрирован: 16.02.2015

Serega_mexanik пишет:

после этой комбинации - все напрочь замерло

кста вот прога, можно использовать как терминалку:

void setup() 
{
  Serial.begin(9600);
  Serial1.begin(9600);
  delay(1000);
  Serial.println("Initializing...");

}

void loop()  
{
  if(Serial.available())
  {
    char a=Serial.read();
    Serial1.print(a);
//    Serial.print(a);
  }
  
  if(Serial1.available())
  {
    char b=Serial1.read();
    Serial.print(b);
  }
  delay(100);
}

 

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

Serega_mexanik
Offline
Зарегистрирован: 21.12.2014

нет. Не работает. Видать или руки или плата - кривая.

На скорости 2400, принимал, СМС все хорошо. Завтра, просто при включении - отказался. Принимает - пустое СМС. Исправил фукцию GetSMS 

И как отреагировать на СМС

  
    if ((sms_rx != NULL) && (sms_rx[0] != '\0'))
  {
      if ((stroka == "stop") || (stroka == "Stop")) 
         {            
            Serial.print("stroka: ");    Serial.println(stroka);             
            gsm.SendSMS(number_incoming, stroka);            
         }  
         //& stroka.peek() 
    }  

 И сравнить с тем что нужно ?

partizan
Offline
Зарегистрирован: 16.02.2015

Serega_mexanik пишет:

нет. Не работает. Видать или руки или плата - кривая.

На скорости 2400, принимал, СМС все хорошо. Завтра, просто при включении - отказался. Принимает - пустое СМС. Исправил фукцию GetSMS 

И как отреагировать на СМС

..

И сравнить с тем что нужно ?

 

Подключись терминалом и сбрось в заводские настройки.

Скорость по умолчанию - 9600.

Если не так, настрой.

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

Serega_mexanik
Offline
Зарегистрирован: 21.12.2014
 
gsm.InitParam(PARAM_SET_0);

в библиотеке gsm_shield.h пишут, что при вызове верхней строки, он сбрасывает  настройка. через терминал - ничего не получилось. 

сейчас больше думаю в сторону сименса с35... icomsat, хоть и с небольшими глюками, но и так работает