Перейти к содержанию
    

SIM900 возвращает эхом любую команду и не реагирует на нее

Здравствуйте.

 

Не могу запустить модуль на основе SIM900 от EFcom. Приобрел тут: http://www.elecfreaks.com/store/gprsgsm-mo...-por-p-450.html

Для связи с модулем использую мелкое USB-> UART устройство на CP2102: http://elecfreaks.com/store/download/datas.../USB/CP2102.pdf

 

Дело в том, что модуль возвращяет мне любую команду (эхо), которую я посылаю и никак на эту команду не реагирует. В то же время, модуль присылает мне "NORMAL POWER DOWN" когда я выключаю его кнопкой PWR. Более того, работает видимо и Autobauding, т.к. я могу принять "NORMAL POWER DOWN" на любом бод-рейте, если до выключения модуля что-то посылал.

 

Если до включения модуля я настрою виртуальный КОМ-порт на 115200, то при включении модуля я получаю 49 49 49 49 FE FE FE FE, что и должно быть по даташиту. Но блин, я могу писать что угодно - в ответ приходят только эхо команд... как будто RX замыкается на TX.

 

Схемка на CP2102 работает на 3.3 В, имеет подтяжку к 3.3 В на своём RX. SIM900 модуль работает на 5.2 В... это конечно фигово, но коммуникация должна все равно идти, правильно ? Кстати, сеть модуль тоже не находит, но мне сейчас коммуникацию наладить.

 

Помогите пожалуйста...

post-56395-1364052912_thumb.jpg

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да вот проверьте, иногда встречается... Вот как вы сделали соединение Rx->Tx; Tx->Rx, так как в даташите SIMCOMa?

Или Rx->Rx; Tx->Tx?

SIM900 модуль НЕ работает на 5.2 В! Это входное, на SIM900 модуле должно быть 4.0...4.2 Вольта на Vbat.

Те пинычто на плате - (RS вход/выход) RxD/TxD подтянуты резисторами к входному ( у вас это 5.2Вольта ).

От ваших CP2102 входных уровней 3.3 Вольта должен работать.

Внутренний RS ( на выводах SIM900) привязан к Vext ~2.85 Вольта, там больше чем 3.0 Вольта не должно быть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...Его RS вход/выход подтянут резисторами к входному ( у вас это 5.2Вольта ) От входных уровней 3.3 Вольта должен работать...
Тут смотря как CP2102 подключена, она и 5В может в ТХ отдать!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Vassabi, Aner,

Спасибо, попробую поменять завтра RX с TX. Я соединял TX -> RX ; RX -> TX. Подозреваю, что соединил правильно.

 

По поводу питания там вообще странно - стоит линейный регулятор вроде. Я подаю питане на модуль от адаптера 5В (5.5 без нагрузки). Почему они настроили выход регулятора (MIC29302WU) на 5.2 вольта - неясно. По даташиту 4.8 макс.

 

Надо бы мне как-то понизить напряжение адаптера... Единственное, что мне доступно - это впаять диодов последовательно :)

Вот, что они сами пишут про модуль:

Ну что за фигня, 5 вольт или 3,1-4,8 .....

post-56395-1364064246_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если соединили так => TX -> RX ; RX -> TX. Тогда правильно, менять не стоит. Если ничего не получите, тогда у вас путаница где RX а где TX. Проверьте, на самом SIM900 модуле должно быть 4.0...4.2 Вольта на Vbat. Если там 5 Вольт и более, тогда проблема пробоя выходного каскада и как следствие проблемы в работе. Без сим картры, антенны, и при правильном подключении у SIM900 сначала идёт тест режимов, периферии и тп, по завершении ~1...1.5сек должен постоянно светить светодиод status, моргать netlight. Тогда можно двигаться дальше. Это есть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С терминалом "Terminal v1.9b" не работал, но судя по картинке (по эху), смею предположить что Вы забыли про 0x0D (\r) в конце каждой комманды.

Изменено пользователем alexdos

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Aner, alexados,

 

Спасибо ! Заработало наконец-то. Я выставил отображение символов в терминале (Terminal v1.9b) на HEX и сам замкнул TX и RX, без мудуля. Оказалось, что, несмотря на настройки, не посылается /r. Поставил Realterm, который не видел виртуальный КОМ-порт. Обновил китайские драйвера на драйвера от производителя (SiLabs) и, о чудо, заработало. Я прям рад, спасибо еще раз :)

 

по завершении ~1...1.5сек должен постоянно светить светодиод status, моргать netlight. Тогда можно двигаться дальше. Это есть?

да.

Наверняка у меня будут еще вопросы... пока что, я подам нормальную напругу на модуль, чтобы не запороть.

post-56395-1364118210_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте, возможно я немного не по теме, прошу не банить сразу, просто у меня тоже такой модуль , я себе дома на нем сделал сигнализацию, ну на ардуино и сим900 , у меня проблема такая, как только я отключаю его от питания он теряет все настройки, приходится заново заливать на МК прошивку и на сим900 тоже, но если не отключать его все нормально. Батарейку в него я вставил, про AT&W и другие команды тоже знаю.. если кто то разбирается я скину вам код.

Заранее спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что в сим900 заливаете? Да и по подробнее как на ардуино реализовали. Может ваша программа в озу крутиться?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что в сим900 заливаете? Да и поподробнее как на ардуино ревлизовали. Может ваша программа в озу крутиться?

#include <SoftwareSerial.h>

SoftwareSerial gprsSerial(7, 8);

void setup()

{

gprsSerial.begin(19200);

pinMode(13, OUTPUT);

pinMode(12, OUTPUT);

pinMode(11, OUTPUT);

pinMode(10, OUTPUT);

 

// Настраиваем приём сообщений с других устройств

// Между командами даём время на их обработку

gprsSerial.write("AT+CMGF=1\r");

delay(300);

 

gprsSerial.write("AT+IFC=1, 1\r");

delay(300);

gprsSerial.write("AT+CPBS=\"SM\"\r");

delay(300);

gprsSerial.write("AT+CNMI=1,2,2,1,0\r");

delay(500);

}

 

String currStr = "";

// Переменная принимает значение True, если текущая строка является сообщением

boolean isStringMessage = false;

 

void loop()

{

 

if (!gprsSerial.available())

return;

 

char currSymb = gprsSerial.read();

if ('\r' == currSymb) {

if (isStringMessage) {

//если текущая строка - SMS-сообщение,

//отреагируем на него соответствующим образом

if (!currStr.compareTo("On")) {

digitalWrite(13, HIGH);

digitalWrite(11, 1);

delay(400);

digitalWrite(11, 0);

delay(400);

digitalWrite(11, 1);

delay(400);

digitalWrite(11, 0);

delay(400);

digitalWrite(11, 1);

delay(400);

digitalWrite(11, 0);

} else if (!currStr.compareTo("Off")) {

digitalWrite(13, LOW);

} else if (!currStr.compareTo("On1")) {

digitalWrite(12, HIGH);

} else if (!currStr.compareTo("Off1")) {

digitalWrite(12, LOW);

}

isStringMessage = false;

} else {

if (currStr.startsWith("+CMT")) {

//если текущая строка начинается с "+CMT",

//то следующая строка является сообщением

isStringMessage = true;

}

}

currStr = "";

} else if ('\n' != currSymb) {

currStr += String(currSymb);

}

}

 

вот все с комментами как есть.

 

Заливаю "ат" команды через сериал ардуиновский. ответы тоже приходят, все работает, но стоит отключить модуль.. именно модуль! все перестает работать ((

забыл добавить ) я использую gprs шидд. там джамперы для sSerial.

Изменено пользователем David_Ali

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

О ну все, написал по другому все заработало ) если кому будет интересно скину свой проект )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...