SMS модуль

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

  1. a1000

    a1000 Гуру

    Если кому надо, то нашёл как отключить эхо на модуле. Команда "ATE0\r"
     
    DrProg нравится это.
  2. abdurino

    abdurino Нуб

    Скорость изменяется на Меге
    http://nicuflorica.blogspot.ro/2015/08/modul-gprs-cu-m590-3.html

    У нормального Arduino Uno модуль не работает! как тут писали не ловит сетку. Брал и внешнее питание от переходника - хоть бы хны.
    Работает на Меге и
    отлично работает на китайском(!) Arduino UNO на CH341 чипсете

    отсылаем смс после
    AT+CMGF=1
    AT+CSCS="GSM"

    void send_sms(String phone, String text) {
    mySerial.println("AT+CMGS=\"" + phone + "\"");
    delay(500);
    mySerial.print(text);
    delay(500);
    mySerial.print((char)26);
    readModem();
    delay(500);
    Serial.println("SMS send complete");
    delay(2000);
    }

    Читаем входящие
    AT+CMGR=1
    2,3...
    счётчика нет(?)
     

    Вложения:

  3. abdurino

    abdurino Нуб

    AT+CCLK?
     
  4. Максим B

    Максим B Гуру

    Тоже пришел данный модуль -еще не паял
     
  5. handless

    handless Нуб

    Всем привет. У меня горит только первый светодиод при подключении питания. Когда должен гореть второй?
     
  6. casius

    casius Нуб

    LED1 - горит постоянно.
    LED2 - должен мигать, примерно раз в секунду.
     
  7. handless

    handless Нуб

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

    AT+CMGS="+79057984511"

    > RRR

    >
     
  8. handless

    handless Нуб

    Почему постоянно появляется

    MODEM:STARTUP

    +PBREADY
     
  9. casius

    casius Нуб

    Это инициализация модуля. Если она повторяется по нескольку раз, то проверьте питание оно у вас слабое и не тянет модуль.
     
  10. casius

    casius Нуб

    В конце текста СМС надо добавлять спецсимвол-команду \x1A
     
  11. handless

    handless Нуб

    через пробел?
     
  12. casius

    casius Нуб

    Нет.
     
  13. handless

    handless Нуб

    Спасибо большое! Разобрался с модулем, через usb переходник все функции работают. Попробовал через Ардуино Уно, используя ее как мост (земля и ресет замкнуты) - ни какой реакции. Скорость на модуле установлена 19200, была 57600 при покупке. Питаю модуль отдельно, от юсб. Но при включении-выключении питания в терминал IDЕ приходит MODEM:STARTUP +PBREADY. То есть со скоростью все нормально, данные приходят, но AT не проходит - ни какой реакции. Причем модуль ESP8266 спокойно работал через Ардуину. Возможно это какая-то проблема самой Ардуины? Заказал еще Мегу, но ее ждать месяц.
     
  14. a1000

    a1000 Гуру

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

    void loop()
    {
      if (mySerial.available())
        Serial.write(mySerial.read());
      if (Serial.available())
        mySerial.write(Serial.read());
    }
     
  15. handless

    handless Нуб

    К сожалению не работает и так. В монитор приходит только Goodnight moon! при любых манипуляциях с модулем. Что то с Ардуиной не так.
     
  16. a1000

    a1000 Гуру

    Так что у вас приходит в ответе? MODEM:STARTUP или Goodnight moon ?
     
  17. handless

    handless Нуб

    MODEM:STARTUP приходит если отключить и включить питание модуля. Goodnight moon приходит при подключении питания Ардуино или ресет.
     
  18. handless

    handless Нуб

    Проверочный скетч заработал только с платкой согласования уровней!
     
  19. handless

    handless Нуб

    Кто может обьясните, как таким образом разобрать пришедшее смс. Не пойму как это работает.
    Код (C++):
     if(M590.available() >0)
        {
    //   while(Serial2.available()) Serial.write(Serial2.read());  
         
          inchar=M590.read();
        Serial.write(inchar);
        if (inchar=='#')
        {
          delay(10);
          inchar=M590.read();
          if (inchar=='a')
          {
            delay(10);
           
           inchar=M590.read();
            if (inchar=='0')
            {
              digitalWrite(led1, LOW);
              Serial.println("LED1 off");
            }
            else if (inchar=='1')
            {
              digitalWrite(led1, HIGH);
              Serial.println("LED1 on");
            }
            delay(10);
           
          inchar=M590.read();
            if (inchar=='b')
            {
          inchar=M590.read();
              if (inchar=='0')
              {
                digitalWrite(led2, LOW);
                Serial.println("LED2 off");
              }
              else if (inchar=='1')
              {
                digitalWrite(led2, HIGH);
                Serial.println("LED2 on");
              }
              delay(10);
             
          inchar=M590.read();
              if (inchar=='c')
              {
          inchar=M590.read();
                if (inchar=='0')
                {
                  digitalWrite(led3, LOW);
                  Serial.println("LED3 off");
                }
                else if (inchar=='1')
                {
                  digitalWrite(led3, HIGH);
                  Serial.println("LED3 on");
                }
                delay(10);
             
           inchar=M590.read();
                if (inchar=='d')
                {
           inchar=M590.read();
                  if (inchar=='0')
                  {
                    digitalWrite(led4, LOW);
                    Serial.println("LED4 off");
                  }
                  else if (inchar=='1')
                  {
                    digitalWrite(led4, HIGH);
                    Serial.println("LED4 on");
                  }
                  delay(10);
                }
              }
     
  20. Climber

    Climber Нерд

    Заимел такой модуль)
    Рассказки за вечер.

    Запаять smd компоненты не так и сложно обычным паяльником, но модуль завелся не сразу, самое непонятное это полярность светодиодов.
    Сперва пробовал на китайской уне и ничего не работало. Приходило сообщение MODEM:STARTUP. Подключил внешнее питание от китайского DC-DC преобразователя, но на нем тоже на заработало, стал грешить на приплющенный конденсатор (он такой приехал из Китая, видимо где-то на него наступили:)) Вообщем поменял конденсатор на какой-то поменьше, зато точно исправный. Не работает)
    Менял туда-сюда симки, пробовал разные скорости сериал порта, вообщем ничего не помогает. MODEM:STARTUP и все тут...
    Решил попробовать оригинальную уну, R2 - ничего, точнее все тоже самое - MODEM:STARTUP.
    Ну делать нечего, последний вариант это блок питания от компа (5v 23A), удивительно но все заработало сразу же)
    по итогу
    • на китайской уне с ch340 - работает
    • на оригинальной уне R2 - работает
    • китайский DC-DC преобразователь - шляпа, не тянет. Хотя он вроде на 10А. Замечу что к нему был блок питания на 24в 350ватт, так что проблема точно в DC-DC преобразователе
    • скорость сериал порта по дефолту - 9600бод
    • на вид модуль юзанный :) (новые детали выглядят как-то не так)
    • работает с самой новой симкой билайн 4G+, была куплена 5 часов назад
    • нужно качественное питание модуля
    вот сктеч взятый на просторах интернета
    Код (C++):
    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(2, 3); // RX, TX
    int ch = 0;
    int led = 13;
    String val = "";

    void setup()
    {
      pinMode(led, OUTPUT);
      digitalWrite(led, LOW);
      Serial.begin(9600);  //скорость порта
      Serial.println("GSM tester v1.0");
      mySerial.begin(9600);
      mySerial.println("AT+CLIP=1");  //включаем АОН
      delay(100);
      mySerial.println("AT+CMGF=1");  //режим кодировки СМС - обычный (для англ.)
      delay(100);
      mySerial.println("AT+CSCS=\"GSM\"");  //режим кодировки текста
      delay(100);
      mySerial.println("ATI");
      delay(100);
    }

    void loop()
    {
      if (mySerial.available()) {  //если GSM модуль что-то послал нам, то
        while (mySerial.available()) {  //сохраняем входную строку в переменную val
          ch = mySerial.read();
          val += char(ch);
          delay(10);
        }
        if (val.indexOf("RING") > -1) {  //если звонок обнаружен
          if (val.indexOf("123456789") > -1) {  //если номер звонящего наш. Укажите свой номер без "+"
            Serial.println("--- MASTER RING DETECTED ---");
            mySerial.println("ATH0");  //разрываем связь
            digitalWrite(led, HIGH);  //включаем светодиод на 3 сек
            delay(3000);
            digitalWrite(led, LOW);  //выключаем реле
          }
        } else
          Serial.println(val);  //печатаем в монитор порта пришедшую строку
        val = "";
      }
      if (Serial.available()) {  //если в мониторе порта ввели что-то
        while (Serial.available()) {  //сохраняем строку в переменную val
          ch = Serial.read();
          val += char(ch);
          delay(10);
        }
        //mySerial.println(val);  //передача всех команд, набранных в мониторе порта в GSM модуль
        if (val.indexOf("sendsms") > -1) {  //если увидели команду отправки СМС
          sms(String("hello world"), String("+123456789"));  //отправляем СМС на номер +71234567890
        }
        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);
    }