проблема с SoftwareSerial и GSM модулем А6

knack
knack аватар
Offline
Зарегистрирован: 27.03.2012

Один х... пропадает связь, причем с рандомной переодичностью :(

rrr111
Offline
Зарегистрирован: 04.10.2016

knack пишет:
Один х... пропадает связь, причем с рандомной переодичностью :(

У меня не зависал больше... Отвечает стабильно...

knack
knack аватар
Offline
Зарегистрирован: 27.03.2012

Выложите свой скетч.

rrr111
Offline
Зарегистрирован: 04.10.2016

knack пишет:
Выложите свой скетч.

#include <AltSoftSerial.h> //8,9 rx,tx
const int nN = 1;///количество номеров////////////////////////////////////////////////////////////////////
char* trueNum[] = {
  "+79xxxxxxxxx"//,//1
  //"+7919209хххх" //2
};
const char* Name[] = {
  "KOL-VO: "//,
  //"Petya, "
};

String val = "";
String str = "";
boolean ok = false;

////////////////////////////
unsigned long delayPing = 0;
boolean boolPing = true;

/////////////////////////////////////////////////////


volatile float A=7.20;           
volatile float A_celoe=0.00;
volatile float kol_A=0.00;


volatile float R=5.15;        
volatile float R_celoe=0.00;
volatile float kol_R=0.00;
///////////////////////////////////////////////////




AltSoftSerial altSerial;

void setup() {
  Serial.begin(9600);

  do {
    altSerial.begin(115200);
    delay(200);
    altSerial.println("ATZ+IPR=9600");
    delay(500);
    altSerial.end();
    delay(200);
    altSerial.begin(9600);
    delay(200);
    altSerial.println("ATE 0");//отключаем эхо

    delay(200);
    altSerial.println("AT");
    delay(200);
    str = "";
    while (altSerial.available())
    {
      char ch = altSerial.read();
      str += ch;
      delay(5);
    }
    if (str.indexOf("OK") > -1) {
      ok = true;
      Serial.println("IPR:9600 OK");
          delay(200);
          altSerial.println("AT+CNMI=2,2");
          delay(200);
          altSerial.println("AT+CMGF=1");
          delay(200);
    }
    else {
      altSerial.end(); delay(500); ok = false;
      Serial.println("IPR not 9600");
    }
  } while (ok==false);
  delay(5000);

  //////////////////////////////////////////////////////////////////
  attachInterrupt(1, blink_A, RISING);
  attachInterrupt(0, blink_R, RISING); 
  //////////////////////////////////////////////////////////////////     
}
       
void loop() {

  ///если что то пришло, читаем
  if (altSerial.available()) {
    delay(5);
    char ch = altSerial.read();
    val += char(ch);
  }

  for (int i = 0; i < nN; i++) { 
    
    if (val.indexOf(trueNum[i]) > -1 && val.indexOf("sendme") > -1) {
      Serial.write("nashe sms");
      Serial.println(val);
      smsSend(trueNum[i], String(Name[i]) + "A= " + String(A) + ",   r=" + String(R));
       }
 
    }
/////////////////////////////////////
 //затираем переменную после отправки смс////
  if (val.indexOf("CMGS:") > -1) {
    val = "";
  }
  //оживляем модуль, если он уснул
////////////////////////////////////////////////////////
if(millis() - delayPing > 900000)
{
if (boolPing == true)
{
altSerial.println("AT");
boolPing = false; 
}  
if (val.indexOf("OK") > -1)
{
 boolPing = true; 
 delayPing = millis();
 val=""; 
 }
 }
 
 if(millis() - delayPing > 905000)
 {
  altSerial.end();
  altSerial.begin(9600);
  boolPing = true; }
 }
///////////////////////////////////////////////////////////////////// 

void smsSend(char tel[12], String text){
    altSerial.print("AT+CMGS=\"");
    delay(200);
    for(int i = 0; i < 12; i++)altSerial.write(tel[i]);
    delay(300);
    altSerial.print(char(34));
    delay(200);
    altSerial.write(0x0D);
    delay(100);
    altSerial.print(text);
    delay(300);
    altSerial.println(char(26));
    delay(50);
    val = "";
    delay(50);
    Serial.println("sms otpravleno");
}



////////////////////////////////////////////////////////////////////

void blink_A()

{
  delay(100);
  if (digitalRead(3) == HIGH)
  {
kol_A+=1.00;

A= A_celoe+kol_A/10.00;     
if (kol_A == 10.00)             
{
  kol_A=0.00;
  A_celoe++;
}
Serial.print ("A ="); 
Serial.println(A);
  }
}

void blink_R()
{
  delay(100);
  if (digitalRead(2) == HIGH)
  {
kol_R+=1.00;

R= R_celoe+kol_R/10.00;  
if (kol_R == 10.00)            
{
  kol_R=0.00;
  R_celoe++;
}
Serial.print ("R ="); 
Serial.println(R);
  }
}

 

knack
knack аватар
Offline
Зарегистрирован: 27.03.2012

rrr111 пишет:
knack пишет:
Один х... пропадает связь, причем с рандомной переодичностью :(

У меня не зависал больше... Отвечает стабильно...

Перемычку gpo1 и 5v осталавили?
Подтянул gpo1 к 5 v и вроде второй день стабильно.

knack
knack аватар
Offline
Зарегистрирован: 27.03.2012

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

rrr111
Offline
Зарегистрирован: 04.10.2016

knack пишет:
rrr111 пишет:
knack пишет:
Один х... пропадает связь, причем с рандомной переодичностью :(

У меня не зависал больше... Отвечает стабильно...

Перемычку gpo1 и 5v осталавили?
Подтянул gpo1 к 5 v и вроде второй день стабильно.

В воздухе висит.
По поводу второго вопроса - стабильно переключается, все нормально.
Единственное сейчас у меня проблема с счетчиком количества - как отстроиться от дребезга при использовании блинк (при невозможности использовать делай) - пока не разобрался. С отправкой СМС сейчас все стабильно, тьфу тьфу

knack
knack аватар
Offline
Зарегистрирован: 27.03.2012

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

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

rrr111
Offline
Зарегистрирован: 04.10.2016

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

knack
knack аватар
Offline
Зарегистрирован: 27.03.2012

Если обесточить модуль и потом включить и не перезагружать ардуину и не цеплять после монитор порта ( а то ардуина перезагрузится), то приём СМС будет принимать не в текстовом режиме. В сетапе комманда, не срабатывает. Кстати, модуль может отвечать на АТ Ок, а СМС не получать. Что то из сетапа дёргать надо чтоб приём СМС работал.

knack
knack аватар
Offline
Зарегистрирован: 27.03.2012

okta пишет:

knack пишет:

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

Принимает максимум до 5 звонков за сутки и отправляет SMS 1-2 раза в неделю. GPIO1 висит в воздухе.

rrr111 пишет:

okta, на хардварном сериале через SoftWareSerial работает или без библиотеки просто через сериал?

просто через сериал.

Кстати, судя по тому, что после перезагрузки ардуины, модуль начинает отвечать, есть вероятность, что слетают какие-то настройки, которые делаете в сетапе (например, установка скорости). Проверить предположение не могу - нет свободного модуля сейчас.


Если есть возможность выложите пожалуйста свой скетч.

rrr111
Offline
Зарегистрирован: 04.10.2016

knack пишет:
Если обесточить модуль и потом включить и не перезагружать ардуину и не цеплять после монитор порта ( а то ардуина перезагрузится), то приём СМС будет принимать не в текстовом режиме. В сетапе комманда, не срабатывает. Кстати, модуль может отвечать на АТ Ок, а СМС не получать. Что то из сетапа дёргать надо чтоб приём СМС работал.

Несколько раз отключал gsm-модуль совместно с ардуино от сети - получал стабильно ответы (после добавления "дергания" модуля)...

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

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

char MASTER[]="7хххххххххх";
int x=5;
int y=3;
void setup() {
 Serial.begin(115200);
 delay(300);
 Serial.println("AT+CMGF=1");
 delay(2000);
 Serial.print("AT+CMGS=\"");
 Serial.print(MASTER);
 Serial.write(0x22);//хз что за строка
 Serial.write(0x0D);//хз что за строка
 Serial.write(0x0A);//хз что за строка
 delay(2000);
 Serial.print("x=");
 delay(500);
 Serial.println(x);
 delay(500);
 Serial.print("y=");
 delay(500);
 Serial.print(y);
 delay(500);
 Serial.println(char(26));
}
void loop() {
  

}

 

knack
knack аватар
Offline
Зарегистрирован: 27.03.2012

Вы в сетапе смс отправляете? Затея? у вас ардуина ребутится постоянно?

Так скетч на альте и на аппаратном ничем отличатся не будут, просто не переключать скорости на 115200 и работать и строки типа altSerial.println(); поменять на Serial.println();ну и естественно с 8,9 на 0,1 пины перекинуть.

rrr111
Offline
Зарегистрирован: 04.10.2016

knack пишет:

Вы в сетапе смс отправляете? Затея? у вас ардуина ребутится постоянно?

Так скетч на альте и на аппаратном ничем отличатся не будут, просто не переключать скорости на 115200 и работать и строки типа altSerial.println(); поменять на Serial.println();ну и естественно с 8,9 на 0,1 пины перекинуть.

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

Насчет "просто вставить вместо альтсериал просто сериал" у меня не удалось добиться успеха. Где-то, видимо, я косячил в скетче при сравнении условий (текст и номер)

Sergy1222
Offline
Зарегистрирован: 05.10.2016

Попробовал SIM800L, без проблем работает на 9600, при подаче питания сам включается, только запарно подключать :)

Если новый А6 не заработает, буду переходить на сим..

mooorder
Offline
Зарегистрирован: 06.02.2017

А для преобразования уровней (RX TX) при подключении SIM800 не подойдет такой конвертер https://ru.aliexpress.com/item/IIC-I2C-Logic-Level-Converter-Bi-Directional-Module-5V-to-3-3V-For-Arduino/32587758762.html?spm=2114.13010608.0.0.2vWW2R

?

Sergy1222
Offline
Зарегистрирован: 05.10.2016

Да, должен подойти, много где встречал подключение через такой.

rrr111
Offline
Зарегистрирован: 04.10.2016

https://github.com/skorokithakis/A6lib

Нашёл вот такую информацию, вроде как для модуля А6 как раз, пока что сам не разбирался .

V-max VL
Offline
Зарегистрирован: 22.04.2016

Вот как раз про такой я и говорил. Само то. 

novak
Offline
Зарегистрирован: 25.02.2017

У меня проблемы с модулем A6 были изза недостатка питания, часто перегружался при попытке позвонить или отправить СМС. Завёл внешнее до 3А стабильно работает.

rrr111
Offline
Зарегистрирован: 04.10.2016

novak пишет:

У меня проблемы с модулем A6 были изза недостатка питания, часто перегружался при попытке позвонить или отправить СМС. Завёл внешнее до 3А стабильно работает.


Через какую библиотеку скетч написан? Через альтсофтсериал? Можно посмотреть на ваш скетч?

novak
Offline
Зарегистрирован: 25.02.2017

Через SoftwareSerial, на 2 и 3 пине т.к. на них есть прерывния в UNO, нужно для корректной работы софтсериала. Код сырой очень. Скажу только что модуль A6 автоматически сам подстраивает скорость сериала достаточно передать несколько AT подряд. Смотреть код ф-ции waitConnect().

 

#include <Bounce.h>
#include <SoftwareSerial.h>

#define BUTTON_SMS  5
#define BUTTON_DIAL 6
#define LED_STATUS 13

SoftwareSerial mySerial(2, 3); // RX, TX
Bounce bouncerSMS = Bounce(BUTTON_SMS,10);
Bounce bouncerDIAL = Bounce(BUTTON_DIAL,10);

int i=0;
 
// Массив режимов работы светодиода
word modes[] = {
   0B0000000000000000, //Светодиод выключен
   0B1111111111111111, //Горит постоянно
   0B0000111100001111, //Мигание по 0.5 сек
   0B0000000100000001, //Короткая вспышка раз в секунду
   0B0000010100000101, //Две короткие вспышки раз в секунду
   0B0001010100010101, //Три короткие вспышки раз в секунду
   0B0101010101010101, //Частые короткие вспышки (4 раза в секунду)
   0B0000000000000001,  //Короткая вспышка раз в 2 секунды
   0B0000000000000101 //Две короткие вспышки раз в 2 секунды
};

uint32_t msblink = 0;
uint32_t msAT = 0;
uint8_t  blink_loop = 0;
word  blink_mode = 0;
uint8_t  modes_count = 0;

void setup() {
  // Инициализируем цифровой вход/выход в режиме выхода.
  // Выход 13 на большинстве плат Arduino подключен к светодиоду на плате.
  pinMode(LED_STATUS, OUTPUT);
  //определяем режимы работы пинов
  pinMode(BUTTON_SMS,INPUT);
  digitalWrite(BUTTON_SMS, HIGH); // включить подтягивающий резистор    
  pinMode(BUTTON_DIAL,INPUT);
  digitalWrite(BUTTON_DIAL, HIGH); // включить подтягивающий резистор    
  
  Serial.begin(9600);  //Скорость порта для связи Arduino с компьютером
  Serial.println("Start module");
  
  mySerial.begin(9600);  //Скорость порта для связи Arduino с GSM модулем

  waitConnect();
  Serial.println("to GSM connected");
  waitRegistration();
  Serial.println("GSM registration");

  
  mySerial.println("AT+CMGF=1");
  delay(200); // даём время на усваивание команды
  mySerial.println("AT+CNMI=2,2");
  delay(200); // даём время на усваивание команды
  blink_mode = modes[7];
}
 
 
void loop() {
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
  
  //если сменилось состояние кнопки
  if ( bouncerSMS.update() ) {
    //если считано значение 1
    if ( bouncerSMS.read() == LOW) {
      blink_mode = modes[8];
      Serial.println("BUTTON ON");
      sendTextMessage();
    }
    else
    {
      blink_mode = modes[7];
      Serial.println("BUTTON OFF");
    }
  }  

  //если сменилось состояние кнопки DIAL
  if ( bouncerDIAL.update() ) {
    //если считано значение 1
    if ( bouncerDIAL.read() == LOW) {
      dialTo();
    }
  }  

  BlinkRefresh();
}
void sendTextMessage() {
   // Устанавливаем адресата: телефонный номер в международном формате
   mySerial.print("AT+CMGS="); // send the SMS the number
   mySerial.print((char)34); // передача в порт символа "
   mySerial.print("+38063XXXXXXX"); // передача номера телефона
   mySerial.print((char)34); // передача в порт символа "
   mySerial.print((char)13);
   while(mySerial.available())
   {
      Serial.write(mySerial.read());
   }  
   delay(1000);
    //     \" - это  enter?
    mySerial.println("Ura!!!"); // передача текста сообщения
   delay(500);
   mySerial.print((char)26); // передача ^Z
   mySerial.print((char)13);
}
void dialTo()
{
   mySerial.print("ATD"); // send the SMS the number
   mySerial.print("+38063XXXXXXX"); // передача номера телефона
   mySerial.print((char)13);
}
//----------------------------------------------------------------------------------
void BlinkRefresh()
{
   uint32_t ms = millis();
// Событие срабатывающее каждые 125 мс   
   if( ( ms - msblink ) > 125|| ms < msblink ){
       msblink = ms;
// Режим светодиода ищем по битовой маске       
       if(  blink_mode & 1<<(blink_loop&0x0F) ) digitalWrite(LED_STATUS, HIGH); 
       else  digitalWrite(LED_STATUS, LOW);
       blink_loop++;    
    }  
}
//----------------------------------------------------------------------------------
void waitConnect() {
  blink_mode = modes[6];
  int countok = 0;
  String str;
  while(countok<5) //ждём пять ОК
  {  
    uint32_t ms = millis();
    // Событие срабатывающее каждые 500 мс   
    if( ( ms - msAT ) > 500|| ms < msAT )
    {
      msAT = ms;
      //посылаем команду
//      Serial.println(">>AT");
      mySerial.println("AT");
      str = "";
      delay(100); //Ждём ответа
      while(mySerial.available())
      {
        char ch=mySerial.read();
        str+=ch;
      } 
//      Serial.println("C>");
//      Serial.println(str);
      if(str.indexOf(F("OK"))>-1)
        countok++;
      else
        countok = 0;
    }
    BlinkRefresh();
  }  
  blink_mode = modes[0];
}
//----------------------------------------------------------------------------------
void waitRegistration() {
  blink_mode = modes[6];
  bool ok = false;
  String str;
  while(!ok)
  {  
    uint32_t ms = millis();
    // Событие срабатывающее каждые 500 мс   
    if( ( ms - msAT ) > 500|| ms < msAT )
    {
      msAT = ms;
      //посылаем команду
      Serial.println(">>AT+CREG?");
      mySerial.println("AT+CREG?");
      delay(100); //Ждём ответа
      str = "";
      while(mySerial.available())
      {
        char ch=mySerial.read();
        str+=ch;
      } 
      Serial.println("R>");
      Serial.println(str);
      if(str.indexOf(F("+CREG:"))>-1)
        ok=true;
    }
    BlinkRefresh();
  }  
  blink_mode = modes[0];
}
//----------------------------------------------------------------------------------

 

captain666
Offline
Зарегистрирован: 03.03.2017

Доброго времени суток!

Прошу помощи - тестировал модуль А6 (в моем случае куплен A6-mini). И не разобравшись подключил его к RX TX платы Arduino. После чего залил скетч, не отключая А6.

Теперь модуль не отвечает ни на какие команды. Сейчас подключил его к конвертору USB to TTL - только подмигивает мне периодически синим диодом и все. Никаких ответов в сериал не получаю от него.

Что мне можете посоветовать, гуру?

toc
Offline
Зарегистрирован: 09.02.2013

captain666, до этого проишествия модуль а6 отвечал?
Если нет, можно попробовать поменять местами rx,tx. Я для таких экспериментов использую мегу, модуль а6 подключаю на второй сериал.

toc
Offline
Зарегистрирован: 09.02.2013

>>строки типа altSerial.println(); поменять на Serial.println();

knack, c дефайном же легче и надёжней!

в начале скетча:
#define gsm Serial
//SoftwareSerial mySerial(2, 3);
//#define gsm mySerial

в скeтче:
gsm.println();

captain666
Offline
Зарегистрирован: 03.03.2017

toc пишет:
captain666, до этого проишествия модуль а6 отвечал?

Да, отвечал.

toc пишет:
можно попробовать поменять местами rx,tx.

менял...

Сейчас подключил на UNO к 8 и 9 - пробую достучаться с помощью AltSoftSerial... пока без результата...

knack
knack аватар
Offline
Зарегистрирован: 27.03.2012

подключил через мультик, 80мА в пике.

Iguana
Offline
Зарегистрирован: 22.02.2016

Кто работает с модулем - как ресетите? Я пытался сделать от пина ардуино - не получается. И напрямую, и через транзистор, и через оптрон.

CYITEP_BAC9I
Offline
Зарегистрирован: 21.10.2016

всем таки здравствуйте. Допустил ту же ошибку что и captain666.  Забыл отсоединить от rx  tx пинов дуни про мини. результат тот же. модуль регистрируется в сети норм. На него можно даже позвонить, в мониторе порта пишет  RING/  все путем кроме того что перестал отвечать на любые команды AT(((((. За это время не нашлось лекарства от этой неприятности? модуль подключен напрямую к  usb  через конвертер. Нормально регистрируется в сети, скорость порта 115200. 

Может есть какаято возможность сбросить на заводские настройки?

Zero Tolerance
Offline
Зарегистрирован: 10.08.2017

Использовал приведенный в данной теме код для "передергивания" модуля в Setup()'е, он действительно помогает и теперь модуль отечает без мусорных символов, однако вместе с этим, я не могу ему отправлять команды, длинее трех символов. Все, что я отправляю, обрезается и отправляются только три первых символа.

Penumbra
Offline
Зарегистрирован: 06.08.2017

отправляйте комманды с помощью 

int8_t sendATcommand(char* ATcommand, char* expected_answer, unsigned int timeout)
{
  uint8_t x = 0,  answer = 0, t = 0;
  char response[150];
  unsigned long previous;

  memset(response, '\0', 150);    // Initialize the string
  delay(100);
  while ( gsm.available() > 0) gsm.read();   // Clean the input buffer
  gsm.println(ATcommand);    // Send the AT command
  x = 0;
  previous = millis();
  // this loop waits for the answer
  do {
    if (gsm.available() != 0)
    {
      // if there are data in the UART input buffer, reads it and checks for the asnwer
      response[x] = gsm.read();
      //Serial.print(response[x]);
      x++;
      // check if the desired answer  is in the response of the module
      if (strstr(response, expected_answer) != NULL)
      {
        answer = 1;
      }
    }
  }
  // Waits for the asnwer with time out
  while ((answer == 0) && ((millis() - previous) < timeout));
  Serial.println(response);
  return answer;
}

юзать 

 AAn = sendATcommand("ATZ", "OK", 1000);

и будет вам счастье...

Logik
Offline
Зарегистрирован: 05.08.2014

Penumbra пишет:

и будет вам счастье...

Счастье с delay(100); в коде и блокирующим вызовом не бывает.

b707
Онлайн
Зарегистрирован: 26.05.2017

Logik пишет:

Счастье с delay(100); в коде и блокирующим вызовом не бывает.

Penumbra - фиксированный буфер в 150 байт в процедуре - это тоже мрак. Представьте, что будет, если каждая процедура будет требовать своего буфера.... .

b707
Онлайн
Зарегистрирован: 26.05.2017

Zero Tolerance пишет:

Использовал приведенный в данной теме код для "передергивания" модуля в Setup()'е, он действительно помогает и теперь модуль отечает без мусорных символов, однако вместе с этим, я не могу ему отправлять команды, длинее трех символов. Все, что я отправляю, обрезается и отправляются только три первых символа.

приведите код, которым отправляете

Mikl
Offline
Зарегистрирован: 29.08.2017

Доброго дня, комрады! Сразу скажу, что не силен в программировании, поэтому не судите строго! Вопрос по модулю А6 и подключению к ардуино. Прочитал всю ветку, в силу отсутствию знаний не смог найти ответ на свой вопрос. Проблема следующая. Подключил А6  к ардуино уно RX-TX TX-RX (0, 1) землю к земле, на VCC дал 6В. Заливаю следующий скетч в ардуино

 char phone_no[]="+7911.............";
 
void setup()
{
Serial.begin(115200);  
delay(200);
Serial.println("AT");
delay(1000);
Serial.print("ATD");
Serial.println(phone_no);
//Serial.println(";");
delay(10000);
Serial.println("ATH");
}
 
void loop()
{
}

И все работает!!! Звонок идет.

Потом заливаю следующий скетч

#include <SoftwareSerial.h>
SoftwareSerial gprsSerial(0, 1);
 
 
int greenPin = 4;
int yellowPin = 11;
 
void setup()
{
    gprsSerial.begin(115200);
    pinMode(greenPin, OUTPUT);
    pinMode(yellowPin, OUTPUT);
 
    
    gprsSerial.print("AT+CMGF=1\r");
    delay(300);
    gprsSerial.print("AT+IFC=1, 1\r");
    delay(300);
    gprsSerial.print("AT+CPBS=\"SM\"\r");
    delay(300);
    gprsSerial.print("AT+CNMI=1,2,2,1,0\r");
    delay(500);
}
 
String currStr = "";
 
boolean isStringMessage = false;
 
void loop()
{
    if (!gprsSerial.available())
        return;
 
    char currSymb = gprsSerial.read();    
    if ('\r' == currSymb) {
        if (isStringMessage) {
            //если текущая строка - SMS-сообщение,
            //отреагируем на него соответствующим образом
            if (!currStr.compareTo("Green on")) {
                digitalWrite(greenPin, HIGH);
            } else if (!currStr.compareTo("Green off")) {
                digitalWrite(greenPin, LOW);
            } else if (!currStr.compareTo("Yellow on")) {
               digitalWrite(yellowPin, HIGH);
            } else if (!currStr.compareTo("Yellow off")) {
               digitalWrite(yellowPin, LOW);
            }
            isStringMessage = false;
        } else {
            if (currStr.startsWith("+CMT")) {
                //если текущая строка начинается с "+CMT",
                //то следующая строка является сообщением
                isStringMessage = true;
            }
        }
        currStr = "";
    } else if ('\n' != currSymb) {
        currStr += String(currSymb);
    }
}
 
И нифига. ((( Сразу скажу, этот скетч я скачал с нета. Опробовал его на SIM 800, все работает. При этом видно что А6 работает RX и TX мигают при загрузки, при отправки смс видно что сила тока потребляемого подскакивает, ТХ на ардуино четко мигает один раз (как я понимаю, это означает что ардуино получило что-то от А6). Подключаю так: откидываю 0, 1 от ардуино, заливаю, подключаю обатно, включаю девайс, перезагружаю ардуино.
   Помогите разобраться!
andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Ошибка в 7 строке

1 правильно вставьте код
2 тут не любят помогать по коду который автор не понимает
3 опишите нормально симптомы что не работает - если не сможете - проще закажите готовый

Mikl
Offline
Зарегистрирован: 29.08.2017

Доброго вечера!

 

andycat пишет:
Ошибка в 7 строке 1 правильно вставьте код 2 тут не любят помогать по коду который автор не понимает 3 опишите нормально симптомы что не работает - если не сможете - проще закажите готовый

Согласен что в программировании не силен, к сожалению! Но не совсем я в нем ноль, в общих чертах понимаю что к чему!

Не могу понять, что не так в 7 строке. Код работает с SIM 800 без проблем. Не работает с А6. Вот в чем проблема.

Спасибо.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Эх....про 7 строку это образно, невозможно указать на ошибку если вы код не правильно вставили в свое сообщение на форуме

Mikl
Offline
Зарегистрирован: 29.08.2017

Доброе утро! А как правильно?

b707
Онлайн
Зарегистрирован: 26.05.2017

Mikl пишет:

Доброе утро! А как правильно?

Поднимите глаза чуть выше - в шапке есть тема "Вставка программного кода в форум"

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

Mikl
Offline
Зарегистрирован: 29.08.2017

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

ygalax
Offline
Зарегистрирован: 20.03.2019

Модуль А6 GSM вопрос есть ли в нем внутренний таймер? может ли он сам себя перезагружать по времени?

b707
Онлайн
Зарегистрирован: 26.05.2017

ygalax пишет:

Модуль А6 GSM вопрос есть ли в нем внутренний таймер? может ли он сам себя перезагружать по времени?

науке такие примеры неизвестны

С другой стороны - зачем ему самому перезагружаться? Вы ж его без ардуины все равно использовать не станете