SMS модуль

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

  1. a1000

    a1000 Гуру

    Обмен информацией между модулем и ардуиной не такой уж и объёмный. Сколько там занимают АТ команды и ответы на них. Почти ничего. Так-что скорость здесь не критична. Модуль дольше обрабатывает команды. А вот чем меньше скорость обмена, тем меньше вероятность сбоев от помех и всяких наводок. По моему мнению снижение скорости не только не повредит, но и будет полезным.
     
  2. dwk26111974

    dwk26111974 Гик

    Спасибо за ответ.Значит я на верном пути)))
     
  3. DrProg

    DrProg Вечный нерд

    Опыт работы с UART говорит об обратном, низкие скорости сбоят сильнее средних (порядка 19200), во всяком случае на МК с частотами 16МГц.
     
  4. Onkel

    Onkel Гуру

    очень спорное, неоднозначное и в общем неверное утверждение. Один частный случай (что с вами произошло) не является доказательством.
     
  5. DrProg

    DrProg Вечный нерд

    Погуглил на эту тему, нашел похожие наблюдения когда при высокой частоте МК низкая скорость UART работает нестабильно. Но до конца не понял почему именно.
     
  6. Onkel

    Onkel Гуру

    в хороших (а атмел - хорошие) мк при любой скорости на любой частоте мк при кратности частоты кварца частоте выборки модуля (а при низкой скорости usart всегда) usart мк все работает стабильно. Погуглив на темы "опровержение теории Эйнштейна" или "опровержение теории Дарвина", и даже "опровержение таблицы умножения" любой может найти якобы аргументы в пользу этого антинаучного треша.
     
  7. брр...
    вы вообще про какой уарт? программный или аппаратный?
    или каждый уже себе вживил блок телепатии на ардуине??

    аппаратный на любых скоростях работает стабильно, программный на любых скоростях работает не стабильно.
     
    Кирилл_К нравится это.
  8. Onkel

    Onkel Гуру

    отнюдь. Если кварц имеет некратную частоте выборок usart частоту, то не при любых. Ну usart-то конечно работает стабильно, но на левой, нестандартной частоте. А программный, если частота таймера четко равна частоте выборок usartа, работает абсолютно стабильно. Пуркуа бы не па? По крайней мере тот программный uart, который я делаю для себя.
    Но вообще -то речь про аппаратный.
     
  9. тут конечно микроконтроллер виноват и интерфейс, что кварц нестабилен.

    и от кварца частота таймера конечно не зависит.
     
    CryNET нравится это.
  10. Onkel

    Onkel Гуру

    речь не о стабильности, а о невозможности ТОЧНО выбрать частоту usart
    поясню:
    UBRR = ( F /( B * 16 ) ) - 1
    Где:

    • F — тактовая частота, на которой работает микроконтроллер avr, например 11059200 для кварца 11.0592 МГц
    • B — требуемая скорость, например 115200 (бит/с)
    так вот не для любой частоты кварца можно точно выбрать требуюмую скорость B

    Зависит, не зря же я написал:
     
    Последнее редактирование: 8 фев 2016
  11. omadonex

    omadonex Нерд

  12. это называется подгон фактов.

    вот для сравнения
    http://vk.com/video-102194992_171785954
     
    Последнее редактирование: 11 фев 2016
  13. Cjl

    Cjl Нуб

    Модуль получил, запитал через понижающий dc-dc на чипе mp2307 (самый маленький который, еще меньше, чем mp1584). Взял мощный БП 12V / 3A, снижаю до 4.1V. Модуль включается, звонок на него проходит, но в терминале на любые команды в ответ реакция есть, но крякозябрами. Перебрал все скорости - ситуация не меняется. Очень редко проскакивают осмысленные куски типа "ING", "RROR", "+PBR"

    Грешу на то, что RX и TX напрямую в uno идут, без I2C преобразователя. Но видел, что у многих работает и так. Через usb-ttl пока не пробовал, под рукой нет.
    У кого-нибудь есть идеи, как чинить?
    [​IMG]
     
    Последнее редактирование: 14 фев 2016
  14. Vladis_a

    Vladis_a Гик

    На модуле есть контакт 5В. Туда надо подать именно 5В, дальше через диод напряжение еще снизится. Ну и подключение RX TX проверьте. У меня такое было, когда контакт нормальный отсутствовал. Чуть не забыл - скорость порта тоже надо выяснить, и правильно выставить в скетче.
     
  15. Cjl

    Cjl Нуб

    Как я понял, подавать 5V через диод или сразу 4.1-4.2V - без разницы. Для надежности, подал ровно 5V, эффект тот же. Звонки идут, но на любых скоростях в ответ крякозябры. Складывается впечатление, что проблема не с питанием (модуль стартует, звонки на него идут, реакция какая-то на команды присутствует), а именно со скоростями и rx-tx входами.
    Vladis_a, у вас rx/tx напрямую в дуину идут или через согласование уровней?
     
    Последнее редактирование: 14 фев 2016
  16. Vladis_a

    Vladis_a Гик

    Какая скорость у Вашего модуля? Дорожки платы при пайке не повредили часом?
     
  17. программный сериал на 115200 ??
     
  18. Vladis_a

    Vladis_a Гик

    Напрямую. Но я пока и проект свой не закончил. Никак с ошибкой в скетче разобраться не могу.
     
  19. Cjl

    Cjl Нуб

    Дорожки целые (вроде бы;)).
    Использую этот скетч. Сериал с компом - 19200, сериалы с модемом перебираю все, после заливки в дуину перезагружаю модуль, ситуация одинаковая.
    Код (C++):
    #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());
    }
     
  20. Vladis_a

    Vladis_a Гик

    А что модуль выдает на эту команду AT+IPR? Знак вопроса должен быть в команде.