SMS модуль

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

  1. DrProg

    DrProg Вечный нерд

    Не припомню чтобы мы с тобой на брудершафт пили. Пусть вообще забанят, если то что я пишу всех раздражает кроме вас двоих. Если нет, то игнор никто не отменял еще.
     
  2. Pavlovsm

    Pavlovsm Нуб

    test_points1-300x220.jpg 1440585632.jpg День добрый .Нашел в закромах стаарый телефон Минифон от Мегафон. Стал с ним разбираться. Все контакты нашел RX TX (Заклеены бумажкой). Аппарат (как, кстати, и «бабушкофон») произведен для Мегафона китайской компанией Umeox, модель называется V158 и построена на супер-дешевой платформе Infineon ULC2 (чип модели 7880), ноги которой растут в старые-старые Сименсы.Работу консоли можно проверять в любом терминале (скорость 115200, параметры 8N1) – телефон должен откликаться на AT. Это я нашел в интете.

    Можно ли этот телефон подвесить к ардуино уно как смс модем.Подойдет ли библиотека к нему.Получается смс модем со своим аварийным питанием.
    И сильно не смейтесть я только как три дня участвую в проекте с ардуино.Поэтому ищю любую информацию.
     

    Вложения:

    Последнее редактирование: 1 фев 2016
  3. Pavlovsm

    Pavlovsm Нуб

    Если не получиться придеться разоряться на --популярный GSM модуль на SIM900A с держателем SIM карты с антенной на винтовом разъеме SMA и всей обвязкой на плате. Прошивка1137B03SIM900A64_ST_ENHANCE firmware в России рекомендуют прошить прошивку от SIM900 - статьи есть в интернете. цена 1550 рублей.

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

    Вложения:

  4. dwk26111974

    dwk26111974 Гик

    Уважаемые амперщики! Наконец то пришел долгожданный модуль NEOWAY M590(собрал по схеме как описал DrProg в этой ветке форума-спасибо ему огромное!) единственное заменил светодиоды на стандартные 3в, подал отдельное питание -5в -БП держит 2,5А. Что наблюдаем ЛЕД1-горит постоянно, что вполне логично, ЛЕД2 мигает 1 раз/сек, при чем без разницы-с симкой или без. Вставил СИМ -Теле2 (новую) - позвонил на номер СИМ- и о ЧУДО - пошли гудки!!! ,но ЛЕД2 -как мигал так и мигает (никаких изменений!). Замерил напряжение на контактах:
    TX-2.85 V: RX=0 Вопросы: правильно ли реагирует ЛЕД2 ? (по логике, он должен как то частоту мигания изменять, если нет -то зачем он тогда нужен?) и можно ли по указанной ситуации сказать, что модуль собран верно и рабочий? К Ардуино ещё не подключал, тк только жду её прибытия. Заранее благодарен!
     
  5.  
    Vladis_a нравится это.
  6. Vladis_a

    Vladis_a Гик

    Доброго дня всем! Благодаря стараниям DrProg и Пушной звер сделал трекер на основе модулей GSM Neoway M590 и GPS Ublox Neo6M. Полностью рабочий скетч разместил здесь http://forum.amperka.ru/threads/Мотосигнализация.6787/page-2#post-63074
    Если что, сильно не ругайте, я всего лишь новичок. :)
     
    DrProg нравится это.
  7. a1000

    a1000 Гуру

    Всё у вас правильно. ЛЕД1 индикатор питания. Мигание ЛЕД2 показывает, что модуль вошёл в рабочий режим, или что-то типа того. Ни на какие другие действия (регистрация в сети, входящие звонки или СМС и прочее) светодиоды не реагируют. Всё дальнейшее общение происходит по UART. Тестером на RX и TX вы ничего не поймаете. То, что у вас пошли гудки при звонке на модуль, говорит о том, что он собран правильно и функционирует. Пока нет ардуинки подключите модуль к компьютеру через переходник USB-UART и через гипертерминал поиграйтесь с модулем АТ командами. Это позволит подробнее изучить АТ команды, что в последствии облегчит вам жизнь при написании скетчей для ардуинки.
     
  8. HappyDevil

    HappyDevil Нуб

    Всем привет! Вопрос такой Вот этот скетч работает, но не принимает AT команды с терминала и не выдает ответ.
    Код (C++):
    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(2, 3); // RX, TX
    int ch = 0;
    int led = 13;
    String val = "";

    void setup() {
      delay(2000);  //время на инициализацию модуля
      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);
    }

    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("71234567890") > -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("+71234567890"));  //отправляем СМС на номер +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);
    }

    А этот код работает с АТ командами, но он без функционала)

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

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

    Как их объединить грамотно? чтобы работал функционал первого скетча, и с терминала принимал/отвечал на АТ команды как во втором скетче?
     
  9. CryNET

    CryNET Гик

    HappyDevil, а скорость проверили? В одном примере 9600, а в другом 19200 (может вы про это и забыли и шлете на другой скорости данные?)


    Код (C++):
    if (mySerial.available()) {  //если GSM модуль что-то послал нам, то
        while (mySerial.available()) {  //сохраняем входную строку в переменную val
          ch = mySerial.read();
          val += char(ch);
          delay(10); //???
        }
    зачем delay(10) ?
     
  10. HappyDevil

    HappyDevil Нуб

    Одна скорость обмена ПК с ардуиной, а вторая скорость обмена ардуины с модулем) думаю там всё нормально. Модем выдаёт рЭди и звонки принимает, только в первом скетче не всегда выдаёт Мастер ринг детектед, хотя гудки идут. Кладёшь трубку на телефоне и на терминале появляется Ноу Карер(нет ответа вроде)
     
  11. CryNET

    CryNET Гик

  12. Vladis_a

    Vladis_a Гик

  13. a1000

    a1000 Гуру

    Как-бы не совсем так. ПК вы подключаете по аппаратному UART, и скорость обмена соответственно выставляете в строке
    Код (C++):
    Serial.begin(9600);
    Модуль вы подключаете к программному UART, и скорость обмена выставляете строкой
    Код (C++):
    mySerial.begin(9600)
    Теперь посмотрите на приведенные вами скетчи. В первом скорость обмена с модулем 9600, а во втором 19200. У модуля скорость обмена по UART не плавающая а чётко определённая (её, к стати, тоже можно поменять). Если скорость обмена ардуины и модуля не совпадают, то передача данных будет со сбоями или вообще не будет осуществляться. Если второй скетч у вас работает без сбоев, то в первом выставьте в строке
    Код (C++):
    mySerial.begin(9600)
    скорость 19200 и всё должно заработать.
     
  14. CryNET

    CryNET Гик

    а модуль то на 9600 работает скорости? Я думаю нет. Как писали выше, раз рабочий пример работает на 19200, то модуль работает на 19200, а вы пытаетесь на 9600.
     
  15. у них скорость рандомна, по умолчанию должна быть 115200, но не обязательно
    сменить скорость можно командой AT+IPR=9600
     
  16. a1000

    a1000 Гуру

    я вписывал у китайцев три модуля. Брал у разных продавцов в разное время. Два пришли с установленной скоростью 9600. Третий, на вид явно б/у , с какой-то другой. Сильно разбираться не стал, установил 9600 и пользовался дальше без проблем.
     
  17. и?? модули БУ, в них что угодно настроено может быть.
    у меня были на 9600, 115200 и 38400

    по умолчанию в новых модулях 115200, если там 9600 значит скорость уже ктото менял.
     
  18. a1000

    a1000 Гуру

    Вот и я о том. Друзья китайцы могут прислать что угодно.
     
  19. HappyDevil

    HappyDevil Нуб

    Большое спасибо за ответы. Скорость сам выставлял ему 19200, заново проверю везде и исправлю)
    А вообще думаю везде 9600 выставить чтобы путаницы не было.
     
  20. CryNET

    CryNET Гик

    Если скорость не критична, то можете, т.к. разница в скорости между 9600 и 19200 - в 2 раза соответственно. И т.д.