SMS модуль

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

  1. Process0169

    Process0169 Нуб

    Победил через ардуину.
    003.JPG
    Вопрос остается. Терминалы все в какой-то своей кодировке вещают :(
    Хотелось бы через usb-ttl тоже общаться. Как ??
     
  2. AndWS

    AndWS Нуб

    Подключаю через СР2102. Использую Terminal V1.9
    Только так удалось изменить первоначальную скорость на 9600 (AT+IPR=9600$0D)
    $0D надо вводить в конце каждой команды.
     
  3. MilkyWay

    MilkyWay Нерд

    Купи любой нормальный шилд например на
    http://amperka.ru или на http://adafruit.com.
    Просто используй толко команды для СМС.
     
  4. ostrov

    ostrov Гуру

    За 150 рублей такие шилды можно купить? Или вы читаете только первое сообщение из 15 страниц?
     
  5. MilkyWay

    MilkyWay Нерд

    Можно за 50-60р купить чип у китайцев дапаять кое чего и нормально. Я так делал с SIM808 отлично всё работает!
     
  6. ArcticBear

    ArcticBear Нерд

    Где то встречал код, где красиво было реализовано получение serial rx без delay

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

    ArcticBear Нерд

    нашел решение


    Код (C++):
    char ch;
    while(gsmSerial.available())
    {
    ch = gsmSerial.read();
    if(ch == '\r') continue;
    if(ch == '\n') { GotLine(line); line = ""; }
    else
        line += ch;
    }
    я не автор но работает отлично.
     
  8. ostrov

    ostrov Гуру

    Это то же самое только для короткой строки. Если же в ней больше 5-8 символов, то без delay(200) получите огрызок. Ну или скорость порта увеличить раз в несколько.
     
  9. ArcticBear

    ArcticBear Нерд

    Разве чтение не из буфера происходит? На сколько я понимаю, данные приходят в буфер, а мы читаем из буфера. Если так то причем тут скорость порта?
     
  10. ostrov

    ostrov Гуру

    Для этого и delay(200) чтобы данные успели попасть в буфер. Принимать из буфера начинает сразу после первого байта и выкачивает то что успело туда попасть, причем быстрее чем попадает новое, затем решает что прием закончен и все остальное откусывается.
     
  11. ArcticBear

    ArcticBear Нерд

    у меня m590 почему то криво работает. поэтому я и начал искать варианты и причины.

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

    ostrov Гуру

    Скорость порта какую ставили? И еще непропайка очень часто глючит вот так, пройдитесь по контактам еще разок.
     
  13. ArcticBear

    ArcticBear Нерд

    38400 на software serial, но на 9600 аналогично.
    с usb ttl все команды залетают отлично, а через скетч - как повезет.
    например AT+CSQ в сетапе никогда не работает, куда бы ее не ставил, но внутри loop легко сработает с первого раза. я не пойму что за аномалии.

    буду проверять спасибо
     
  14. ostrov

    ostrov Гуру

    Может команду до запуска порта отправляете? )
     
  15. ArcticBear

    ArcticBear Нерд

    Код (C++):
    gsmSerial.println("AT+CLIP=1");
      delay(300);
      gsmSerial.println("AT+CMGF=1");
      delay(300);
      gsmSerial.println("AT+CSCS=\"GSM\"");
      delay(300);
      gsmSerial.println("AT+CPBS=\"SM\"");
      delay(300);
    Код (C++):
    AT+CLIP=1
    OK
    AT+CMGF=1
    OK
    AT+CSCS="GSM"
    OK
    AT+CPBS="SM
    если сделать
    gsmSerial.println("AT+CSQ");

    то будет AT+CS

    но если внутри кода сделать gsmSerial.println("AT+CSQ"); то едет отлично
     
  16. ArcticBear

    ArcticBear Нерд

    подскажите, не смог нагуглить, можно ли отправить смс сразу на несколько номеров за один раз? как это делается в телефоне? или же все равно нужно этот процесс делать много раз по 1 номеру за раз, и между ними я так понял еще и выжидать время ...
     
  17. a1000

    a1000 Гуру

    На сколько я понимаю - телефон так и делает, запускает процесс отправки несколько раз. Просто для пользователя это автоматизированно. Здесь эту автоматизацию делаете вы сами.
     
  18. ArcticBear

    ArcticBear Нерд

    А как вычислить сколько времени нужно ждать между этими отправками? Только методом подбора?
    Подряд отправить я так понял нельзя, получается какая то каша и он плюет ошибку ERROR.

    Методом подбора найти интервал через который он хавает их все?
     
  19. ostrov

    ostrov Гуру

    Главное чтобы успевало отправить раньше, чем накидывает. Попробуйте 500мс между отправками для начала.
     
  20. Pashekka

    Pashekka Нуб

    Приобрел вот этот модуль http://s.aliexpress.com/zy2MZNvU, запитал от отдельного БП, стабильно SIM работает только от 5 вольт, хотя написано Рабочее напряжение: 3.7-4.2 В 2, менее 5 вольт теряется симка. Уровни согласованы плохо, жду из поднебесной плату согласования. Возникает один вопрос плата на 5 - 3.3 а на SIM 2.85 ,как с этим быть? Пока отвечает через раз, а то и 10 с кракозябрами.