SMS модуль

Тема в разделе "Посоветуйте детальки", создана пользователем DrProg, 2 авг 2015.

  1. Developer-RU

    Developer-RU Гик

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

    Если за определенное вознаграждение -- напишем перепроверим... там возни на пол часа - пару часов со всеми епромами и т.п.

    я просто так понимаю для коммерческих целей....

    скайп мой p.masyukov
    viber +79517956505
     
  2. buktopz

    buktopz Нерд

    хорошо, договоримся
     
  3. Developer-RU

    Developer-RU Гик

    я пока не сплю... отпишись..
     
  4. RRR111

    RRR111 Нерд

    Добрый день!
    Я так понимаю, здесь речь идет уже не только об одном gsm модуля, в связи с этим решил добавить свой вопрос именно в эту тему, дабы не плодить аналогичные..
    Кто-нибудь пользовался модулем "А6 от Ai Thinker" ?
    Пытаюсь запрограммировать его через Serial (через 0,1 пины ардуино rx, tx) без использования библиотеки SoftwareSerial. Т. к. в интернете вычитал о нестабильности работы данной библиотеки на высокой скорости (у данного gsm модуля скорость "вшита" 115200).
    Отправлять смс получается, а вот с приемом проблема: отправляю на модуль смс и оно доставляется (в телефоне пишет, что смс доставлена), в мониторе порта тоже видит и читает текст смс, звонки также принимает стабильно. Но вот выполнить действие на ардуино какое-либо при некоторых условиях при получении смс - не получается.. Подскажите, пожалуйста, в чем "фишка" этого модуля (или нюанс написания на него скетча)?
    скетч для анализа работы прилагаю:
    Код (C++):
    char MASTER[] = "7960*******";
    int x = 5;
    int y = 3;
    int ch = 0;
    String val = "";
    int ledpin=13;

    void setup()
    {
      delay(3000);
      Serial.begin(115200);
      delay(300);
      delay (300);
      Serial.println("AT+CLIP=1");// вкл АОН
      //delay (300);
      //Serial.println("AT+CMGR=1");// читаем смс//НА ЭТО ВЫВОДИТ ERROR321
      delay (300);
      //Serial.println("AT+CSCS=\"GSM\"");//режим кодировки текста//НА ЭТО ВЫВОДИТ ERROR321
      delay (300);
      Serial.println("AT+CNMI=2,2");
      delay(2000);
      pinMode(ledpin, OUTPUT);

    }

    void loop()
    {
      //===================================================================
       if (Serial.available())//если что-то пришло на GSM модуль
      {
        pinMode (ledpin, HIGH);
       delay(2000);//выдержка времени, чтобы вся инфа успела придти на модуль прежде чем мы начнем его анализировать и успеть увидеть загоревшийся светодиод
       
        while (Serial.available())
        {
        ch = Serial.read();
        val += char (ch); // присваиваем переменной val
        delay(20);
         }
      if (val.indexOf("+CMT") > -1 && val.indexOf("79*********") > -1 && val.indexOf("123") > -1)
    {
    pinMode (ledpin, LOW);
    }
        }
    }

     
     
  5. Developer-RU

    Developer-RU Гик

    Код (C++):
    char MASTER[]="7960*******";
    int x =5;
    int y =3;
    int ch =0;
    String val ="";
    int ledpin=13;

    void setup()
    {
      pinMode (ledpin, OUTPUT);
      delay(3000);
      Serial.begin(115200);
      delay(300);
      delay (300);
      Serial.println("AT+CLIP=1");// вкл АОН
    //delay (300);
    //Serial.println("AT+CMGR=1");// читаем смс//НА ЭТО ВЫВОДИТ ERROR321
      delay (300);
    //Serial.println("AT+CSCS=\"GSM\"");//режим кодировки текста//НА ЭТО ВЫВОДИТ ERROR321
      delay (300);
      Serial.println("AT+CNMI=2,2");
      delay(2000);
      pinMode(ledpin, OUTPUT);

    }

    void loop()
    {
    //===================================================================
       if(Serial.available())//если что-то пришло на GSM модуль
    {
        pinMode (ledpin, HIGH);
       delay(2000);//выдержка времени, чтобы вся инфа успела придти на модуль прежде чем мы начнем его анализировать и успеть увидеть загоревшийся светодиод
       while(Serial.available())
       {
        ch = Serial.read();
        val +=char(ch);// присваиваем переменной val
        delay(20);
         }
    if(val.indexOf("+CMT")>-1&& val.indexOf("79*********")>-1&& val.indexOf("123")>-1)
    {
    digitalWrite(ledpin, LOW);
    }
       }
    }
    Смотри внимательно... и не копируй куски -- пиши сам и почитай основы программирования хотя бы....
     
  6. RRR111

    RRR111 Нерд

    Спасибо большое за ответ!
    Я как раз только "почитаю основы", прошу за глупые ошибки не судить строго.
    Да, серьезная ошибка pinMode вместо требуемого digitalWrite..
    Но и сейчас, после этой поправки, "не заработало"... Подскажите, пожалуйста, в чем еще ошибка? Для анализа в чем глупость новичка прикрепляю правленный скетч

    Код (C++):
    char MASTER[]="7960*******";
    int x =5;
    int y =3;
    int ch =0;
    String val ="";
    int ledpin=13;

    void setup()
    {
      pinMode (ledpin, OUTPUT);
      delay(3000);
      Serial.begin(115200);
      delay(300);
      delay (300);
      Serial.println("AT+CLIP=1");// вкл АОН
      delay (300);
      Serial.println("AT+CNMI=2,2");
      delay(2000);

    }

    void loop()
    {

       if(Serial.available())//если что-то пришло на GSM модуль
    {
        digitalWrite (ledpin, HIGH);
       delay(2000);//выдержка времени, чтобы вся инфа успела придти на модуль прежде чем мы начнем его анализировать и успеть увидеть загоревшийся светодиод
       while(Serial.available())
       {
        ch = Serial.read();
        val +=char(ch);// присваиваем переменной val
        delay(20);
         }
    if(val.indexOf("+CMT")>-1&& val.indexOf("79*********")>-1&& val.indexOf("123")>-1)
    {
    digitalWrite(ledpin, LOW);
    }
    }
    }
     
  7. Developer-RU

    Developer-RU Гик

  8. Bulatovor

    Bulatovor Нуб

    бдля начала упрощайте раз Вы только начинаете. Мне помогает. Например оставьте условие if(val.indexOf("+CMT")>-1) и помигайте только по приходу смс, а потом добавляйте условия отбора по номеру, а потом по тексту сообщения
    А еще у Вас не вижу обнуления значения val - уже при загрузке модуля в строке куча мусора и строка удлиняется, удлиняется до переполнения . добавьте в loop val ="";
     
  9. RRR111

    RRR111 Нерд

    Developer-RU, спасибо за ссылку, я видел это. Но по поводу приема/отправки смс там ничего не сказано..
    Bulatovor, я упростил уже до минимума (см. скетч)... Но диод так и не загорается...


    Код (C++):
    int x = 5;
    int y = 3;
    int ch = 0;
    String val = "";
    int ledpin=13;

    void setup()
    {
      delay(3000);
      Serial.begin(115200);
      delay(300);
      Serial.println("AT+CMGF=1");//режим кодировки смс, если вставить лишнее отправляет в смс
      delay (300);
      Serial.println("AT+CLIP=1");// вкл АОН
      Serial.println("AT+CMGL=1");// читает смс
      //delay (300);
      //Serial.println("AT+CMGR=1");// читаем смс//НА ЭТО ВЫВОДИТ ERROR
      delay (300);
      //Serial.println("AT+CSCS=\"GSM\"");//режим кодировки текста//НА ЭТО ВЫВОДИТ ERROR
      delay (300);
      Serial.println("AT+CNMI=2,2");
      delay(2000);
      pinMode(ledpin, OUTPUT);
    }

    void loop()
    {
      if (Serial.available())//если что-то пришло на GSM модуль
      {
        delay(200);
        digitalWrite (ledpin, HIGH);
       delay(200);
      }
    }
     
    Последнее редактирование: 17 ноя 2016
  10. Bulatovor

    Bulatovor Нуб

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

    RRR111 Нерд

    Подключаю:
    rx<0 -> u_txd
    tx>1 -> u_rxd

    Земли объединяю.
    на gsm модуле перемычка: vcc-pwr

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

    Bulatovor Нуб

    может в данном модуле это не нужно, но в моем китайце(A6 mini) он на замыкание pwr не реагирует(где-то читал что кто-то его замыкает с VCC а у кого то требует замыкания на 2 секунды только после подачи питания). У меня модуль оживает если после подачи питания его сбросить подав на секунду на контакт RST землю
     
  13. slawiks2017

    slawiks2017 Нуб

    Скажите пожалуйста, кто-нибудь пробовал работу GPRS? У меня все проходит хорошо до получения IP. IP получает а вот дальше ни по TCP ни по FTP ничего не проходит....
     
  14. xruyn

    xruyn Нуб

    Ребят. Может кто-нибудь помочь - очень нужны полные размеры (габаритные, места выводов колодки, маркировки на плате и прочее) такого модуля. Хочу вытравить печатку пока он едет из Китая) Буду очень благодарен
     
  15. Airbus

    Airbus Радиохулиган Модератор

    Какие нафиг там размеры?Все паяется на плате.Соединение с внешним миром через пины PLS.Что вытравливать то собираетесь?
     
  16. xruyn

    xruyn Нуб

    Травить плату для gsm сигналки.
     
  17. xruyn

    xruyn Нуб

    Это конечно здорово. Но 1) модуль не тот; 2) по фотке как-то проблемно размеры вычислить.
     
  18. Airbus

    Airbus Радиохулиган Модератор

    Схема есть как будете присобачивать модуль?Или на коленке будете делать?Что конкретно интересует?У меня есть модуль отдельно от платы могу глянуть но не понял пока что и куда вы хотите травить и паять.
     
  19. xruyn

    xruyn Нуб

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