SMS модуль

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

  1. DrProg

    DrProg Вечный нерд

    Начиная подозревать антену. Должна ли быть связь между центральной жилой и оплеткой? Прибор показывает, что она есть.
    [​IMG]
     
    ИгорьК нравится это.
  2. Gurevich

    Gurevich Нуб

    Всем привет! Столкнулся с такой же проблемой - пришел из Китая подобный модуль. Пытаюсь заставить его работать - пока без толку((( Уже перепаял контакты - диодик тупил.
    По поводу антенны - не думаю, что оплетка должна контактировать с жилой, т.к. жила - это волновод, а оплетка - экран. По крайней мере у меня антенка аккуратненько сделана.
     
  3. Gurevich

    Gurevich Нуб

    Модуль вышел на связь с ардуинкой, но пока нет сигнала. Подключил так же, как описано в статье: http://2150692.ru/component/content...ka-sms-cherez-arduino-i-gsm-modul-neoway-m590 Моргает с периодичностью раз в секунду диод led 2 (который рядом с симкой). Проблема может быть из-за оператора связи (из-за рабочей частоты, т.к. M590 работает только на 900 и 1800 МГц) или симки. Или как всегда - плохой контакт)
     
  4. DrProg

    DrProg Вечный нерд

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

    Вот что вычитал:
    Все сотовые операторы (МТС, Билайн, Мегафон) вещают на частотах 900МГц и 1800МГц.
    В зависимости от местности они могут вещать:
    - на 900МГц
    - на 1800МГц
    - на 900МГц и 1800МГц одновременно

    Как правило, частота сети выглядит так:
    - МТС, Билайн в городе - 900МГц
    - Мегафон в городе - 1800МГц
    - МТС, Билайн, Мегафон в области - 900МГц

    Вот хороший скетч, позволяет вводить команды с терминала, очень удобно:
    Код (Text):
    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(2, 3); // RX, TX
    void setup()
    {
      Serial.begin(19200);  //Скорость порта для связи Arduino с компьютером
      Serial.println("Goodnight moon!");
      mySerial.begin(19200);  //Скорость порта для связи Arduino с GSM модулем
      mySerial.println("AT");
    }

    void loop()
    {
      if (mySerial.available())
        Serial.write(mySerial.read());
      if (Serial.available())
        mySerial.write(Serial.read());
    }
     
    Последнее редактирование: 31 авг 2015
    Ermine882 и ИгорьК нравится это.
  5. DrProg

    DrProg Вечный нерд

    Начало передавать мне СМСки. Не знаю само заработало или от моих пинков. Для начала сделал:
    at+cscs="GSM"
    потому что стояло не пойми что, потом проверил:
    at+xbandsel?
    убедился что работают обе частоты. Странно что не работает описанная в мануале команда at+cops, она вроде бы полезна. И наконец проверил сигнал при помощи:
    at+csq
    Но почему то осталось ощущение, что прием сильно хрупкий, буквально сдвинешь на полметра модем и уже не ловит. При установке важно убедиться, что место рыбное.

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

    Код (Text):
    void sms(String text, String phone)  //процедура отправки СМС
    {
      Serial.println("SMS send started");
      mySerial.println("AT+CMGS=\"" + phone + "\"");
      delay(500);
      mySerial.print(text);
      delay(500);
      mySerial.print((char)26);
      delay(500);
      Serial.println("SMS send complete");
      delay(2000);
    }
     
    Ermine882 и ИгорьК нравится это.
  6. DrProg

    DrProg Вечный нерд

    Опять перестал находить сеть. :mad:

    Бьюсь вторые сутки, не могу найти причину и зависимость. То работает, то нет. На том же самом месте, с той же симмкой, с тем же скетчем ардуино, и никакой связи с реальностью. Похоже, в данном случае этот тот самый "китай" который ассоциируется с плохим качеством.

    И вообще, почему на плате 50% пустого места? Кто печатную плат рисовал, китайские школьники? Ррррррр!
     
    ИгорьК нравится это.
  7. DrProg

    DrProg Вечный нерд

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

    Вскоре, если не возникнет новых проблем, подготовлю отчет с примерами.
     
    Последнее редактирование: 1 сен 2015
    ИгорьК нравится это.
  8. Максим B

    Максим B Гуру

    и на wiki можно будет оформить, а я все жду ваших решений проблем.
     
  9. DrProg

    DrProg Вечный нерд

    Да, обязательно распишу, может быть сегодня вечером. Теперь можно за относительно недорого отправлять смски от Ардуины, а так же управлять ей дистанционными командами, в том числе звонками (бесплатно).
     
    ИгорьК нравится это.
  10. DrProg

    DrProg Вечный нерд

    Итак, краткие итоги исследования и освоения бюджетного SMS модуля на базе Neoway M590.

    Задачи перед модулем ставились такие:
    1. Уметь отправлять СМС на заданный номер по какому либо событию.
    2. Уметь принимать СМС и опознавать от кого оно (свой-чужой).
    3. Уметь выполнять действия на основе текстовых команд присланных в СМС.
    Все это модуль успешно умеет делать, плюс определять факт входящего звонка, к чему тоже можно привязать любое действие.

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

    Код (Text):
    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(2, 3);          // RX, TX
    int ch = 0;
    String val = "";
    #define MASTER "+7XXXXXXXXXX"          //укажите  телефон хозяина


    void setup()
    {
      Serial.begin(9600);                  //подключаем порт компьютера
      Serial.println("GSM Neoway M590 example");
      mySerial.begin(19200);                //подключаем порт модема (при других скоростях не отвечает)
      mySerial.println("ATI");              //вывести в терминал иноформацию о модеме
      delay(100);
      mySerial.println("AT+CSQ");          //вывести в терминал уровень сигнала (если 99, то связи нет)
      delay(100);
      mySerial.println("AT+CLIP=1");        //включаем АОН
      delay(100);
      mySerial.println("AT+CMGF=1");        //режим кодировки СМС - обычный (для англ.)
      delay(100);
      mySerial.println("AT+CSCS=\"GSM\"");  //режим кодировки текста
      delay(100);
      mySerial.println("AT+CNMI=2,2");      //отображение смс в терминале сразу после приема (без этого сообщения молча падают в память)
    }

    void loop()
    {
      if (mySerial.available()) {          //есть данные от GSM модуля
        delay(200);                        //выждем, чтобы строка успела попасть в порт целиком раньше чем будет считана
        while (mySerial.available()) {      //сохраняем входную строку в переменную val
          ch = mySerial.read();
          val += char(ch);
          delay(10);
        }
        Serial.println(val);                    // дублируем сообщение в терминал

        //----------------------- определение факта приема СМС и сравнение номера(ов) с заданным(и)
        if (val.indexOf("+CMT") > -1) {          //если обнаружен СМС (для определения звонка вместо "+CMT" вписать "RING", трубку он не берет, но реагировать на факт звонка можно)
          if (val.indexOf(MASTER) > -1) {        //если СМС от хозяина
            Serial.println("--- MASTER SMS DETECTED ---");
          } else {
            Serial.println("NO MASTER SMS");
          }

          //----------------------- поиск кодового слова в СМС (вообще эту часть надо поместить внутрь предыдущей, но если использовать кодовое слово не совпадающее с сообщениями модема, то не обязательно)
          if (val.indexOf("sendme") > -1) {      // если обнаружено кодовое слово
            Serial.println("send you ok");      // сообщаем об этом в терминал (если нужно)
            sms("yes sir!", MASTER);            // отвечаем смской
          } else {                              // если другое слово или вообще пустое сообщение
            Serial.println("no send you");
            sms("no sir!", MASTER);
          }
          val = "";
        }
      }
    }

    void sms(String text, String phone)  //процедура отправки СМС
    {
      Serial.println("SMS send started");
      mySerial.println("AT+CMGS=\"" + phone + "\"");
      delay(500);
      mySerial.print(text);
      delay(500);
      mySerial.print((char)26);
      delay(500);
      Serial.println("SMS send complete");
      delay(2000);
    }
    Немного о подключении. Несмотря на то, что в даташите рекомендовано напряжение 3,3В на RXD, в реальности же он вполне стабильно работает на стандартных 5В, что подтверждают другие владельцы девайса. Поэтому можно подключать не мудря схемами: +5В питание, земля, RXD, TXD.

    [​IMG]

    В меру сил отвечу на вопросы.
     
    Последнее редактирование: 1 сен 2015
    Alex_KAN, dwk26111974, Vladis_a и 4 другим нравится это.
  11. DrProg

    DrProg Вечный нерд

    Несмотря на то, судя по отзывам, что никому это не интересно, я выкладываю видео с демонстрацией работы:

     
    Последнее редактирование: 2 сен 2015
    Alex_KAN, Ermine882, Ромаха и 3 другим нравится это.
  12. ИгорьК

    ИгорьК Гуру

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

    Unixon Оракул Модератор

    Не успел придумать толковый отзыв, поэтому одна благодарность и один вопрос. Во-первых, хотел сказать спасибо, что разобрались, теперь понятно, что это можно закупать. Что весьма забавно, на AliExpress модули M590 отдельно стоят дороже, чем весь этот конструктор в комплекте. Ну а вопрос такой: не хотите ли вы под этот модуль сделать компактную плату или интегрировать его сразу в ардуину?
     
    Максим B нравится это.
  14. DrProg

    DrProg Вечный нерд

    Кстати, думал об этом, потому как данную плату рисовали китайские школьницы ночью после уборки риса. Более того, в недрах интернета находил фотографии модуля на базе М590 размером чуть больше чем он сам. Значит это не только реально, но и существует в природе. Однако в продаже найти не удалось, поэтому желание сделать компактную модель осталось.

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

    [​IMG]
     
    Последнее редактирование: 3 сен 2015
    ИгорьК нравится это.
  15. alecs.83

    alecs.83 Нуб

  16. alecs.83

    alecs.83 Нуб

  17. DrProg

    DrProg Вечный нерд

    ИгорьК нравится это.
  18. Onkel

    Onkel Гуру

    ну simcom в таких штуках брэнд.
     
  19. vlm

    vlm Нуб

    [QUOTE="DrProg,[/QUOTE]
    Спасибо большущее разжованность, отлично все расписано .Внесу свои 5 коп, никак не хотел работать ни на каких скоростях порта, на команды не отвечал хотя в порт корокозяблы писал , пробовал менять скорость безполезно:( . Подключил через преобразователь uart -usb и на скорости 115200 только через putty начал откликатся. В итоге заработал нормально только переключением скорости на 9600 в том же putty командой AT+IPR=9600.
     
  20. a1000

    a1000 Гуру

    Тоже хочу поблагодарить за проведённую работу и подробный отчёт. Приобрёл и себе такой-же девайс. Благодаря данному топику запустил без проблем, как от ардуинки так и от ПК. Планирую выписать ещё один и приспособить для удалённого управления и контроля с помощью СМС. Мучает один вопрос. В телефоне, при переполнении памяти, СМС перестают приниматься. А как организовано тут? Судя по отчётам СМС тоже сохраняются. Не остановится-ли модуль при заполнении памяти?