Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SIM900
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
inventor
Добрый день!

От предыдущего разработчика достался GPS треккер,
не совсем правильно разведеный, разводку чуть изменили,
програму пришлось переписать, при передаче данных через этот модем
обнаружил странные вещи:
1) при включении питания модуля ожидаю Call Ready через несколько секунд, но не все модули выводят это сообшение,
все модули из одной партии
2) При передаче данных на UDP или TCP сервер через какое то время после нормалных передач
передача заканчивается сообщением
+PDP: DEACT, далее через несколько минут передача может проснуться.

CODE

sprintf(str, "AT+CIPSEND=%d\r\n", len);
gprs_send_str(str);
/* Ждем строчки с приглашением */
res = gprs_wait_for_str(">", WAIT_TIME_10SEC);
gprs_flush(GPRS_BUF_IN); /* Затрем приемный */

if (res == RES_OK) {
gprs_send_buf((u8 *) buf, len);
res = gprs_wait_for_str("SEND OK", WAIT_TIME_10SEC * 2);
} else if(res == RES_DEACT) {
gprs_send_str("AT+CGATT?\r\n");
gprs_wait_for_str("+CGATT:", WAIT_TIME_10SEC);
gprs_flush(GPRS_BUF_IN);
}



Кто с таким сталкивался и как с этим бороться?
Aner
У SIM900 какая версия прошивки модуля. Да и на схему взглянуть интересно, может там кучка кривоты.
inventor
Цитата(Aner @ Jul 14 2015, 10:37) *
У SIM900 какая версия прошивки модуля. Да и на схему взглянуть интересно, может там кучка кривоты.

кривоты там достаточно
CADiLO
Ну если учесть что самая большая кривота - несогласованные уровни между модулем и контроллером, то все остальное мелкая фигня.

Какая версия прошивки в модулях?


Интересно что мешало оба стабилизатора запитать от 12 входного, выключать их штатными EN, а ключи выкинуть к ....ням. sm.gif
Владивольт
Цитата(inventor @ Jul 14 2015, 11:23) *
1) при включении питания модуля ожидаю Call Ready через несколько секунд, но не все модули выводят это сообшение,
все модули из одной партии

Версия -- не у всех установлена фиксированная скорость
inventor
Цитата(CADiLO @ Jul 14 2015, 11:26) *
Ну если учесть что самая большая кривота - несогласованные уровни между модулем и контроллером, то все остальное мелкая фигня.

Какая версия прошивки в модулях?


Интересно что мешало оба стабилизатора запитать от 12 входного, выключать их штатными EN, а ключи выкинуть к ....ням. sm.gif

какой командой можно узнать?
Aner
Первую строчку, та что на SIM900 модулях напишите, скажем какая версия.
CADiLO
>>>какой командой можно узнать?

можно без команды - переписать со стикера строчку S2-xxxxx-yyyyy - я скажу кто оно такое

если у всех модулей строка одинаковая, то версия одна и та же, а если разные значения, то говорите все - напишу кто есть кто



>>>Версия -- не у всех установлена фиксированная скорость

была такая мысль, но лучше сначала знать версию фирмваре, чтобы не гадать.
кроме того может быть разная настройка для AT+CIURC



>>>какой командой можно узнать?

а как вы для них программу переписывали не читая документацию ?
inventor
Цитата(Aner @ Jul 14 2015, 11:43) *
Первую строчку, та что на SIM900 модулях напишите, скажем какая версия.

S2-1040S-Z092Z


Цитата(CADiLO @ Jul 14 2015, 11:47) *
а как вы для них программу переписывали не читая документацию ?


А зачем мне знать ВСЕ команды?
Меня интересует исключительно то,
что относится к соединению GPRS и создания UDP клиента
ну а обычные AT команды я из модемов помню.
CADiLO
>>>А зачем мне знать ВСЕ команды?

Можно и азбуку всю не учить sm.gif
А если серьезно, то как минимум ознакомиться со списком нужно обязательно.
Тогда часто 90% вопросов просто не возникнут

S2-1040S-Z092Z - 1137B11SIM900M64_ST это 11 евроверсия
последняя в этом ряду - S2-1040S-Z1K0K = 1137B15SIM900M64_ST

из новейших расширенных последняя апрельская - S2-1040S-Z1K0C = 1137B05SIM900M64_ST_ENHANCE


теперь по исходным вопросам - очень желательно обновиться до последней версии
и далее

1. проверьте чтобы у всех модулей настройки "по умолчанию" были одинаковы
2. обязательно отключайте автоскорость обмена

что касается затыков в GPRS

1. не придерживаемся рекомендаций и последовательностей команд из SIM900_TCPIP_Application Note_V1.02.pdf
2. чудеса у оператора - тоже не последняя причина

inventor
[quote name='CADiLO' date='Jul 14 2015, 12:07' post='1351464']

1. не придерживаемся рекомендаций и последовательностей команд из SIM900_TCPIP_Application Note_V1.02.pdf
CODE
sprintf(str, "AT+CIPSEND=%d\r\n", len);
gprs_send_str(str);
delay_ms(DELAY_CMD_MS); /* Ждем строчки с приглашением */
res = gprs_wait_for_str(">", WAIT_TIME_10SEC);
gprs_flush(GPRS_BUF_IN); /* Затрем приемный */

if (res == RES_OK) {
gprs_send_buf((u8 *) buf, len);
delay_ms(DELAY_CMD_MS);
res = gprs_wait_for_str("SEND OK", WAIT_TIME_10SEC * 2);
} else if(res == RES_DEACT) {
gprs_send_str("AT+CGATT?\r\n");
delay_ms(CONNECT_TIMEOUT);
gprs_wait_for_str("+CGATT:", WAIT_TIME_10SEC);
printf("\nWait for 2 sec\r\n");
gprs_flush(GPRS_BUF_IN);
}


Пардон, а что здесь неправильного?
Я видел в даташитах, что можно следить за DTR/DSR - но они у меня в воздухе висят,
стоит ли сигналы управления потоком перемычками на контроллер кинуть?
CADiLO
здесь неправильного немного, просто телепаты в отпуске....

как минимум я не вижу инициализации

и логи дают не в таком виде - не все знают С или кто на чем там пишет...

поэтому лучше приводить в таком формате

AT+CGATT=1

OK
AT+CLPORT="UDP",03030

OK
AT+CIPCSGP=1,"xxx.xxxxxxxx.xxx"

OK
AT+CIPSTART="UDP","xxx.xxx.xxx.xxx","03031"

OK

CONNECT OK
AT+CIPSEND=13

> \эђg‚
SEND OK

а еще лучше если в начале будут временные метки

вот примерно так

10:30:55 AT+CPOWD=1
10:30:55 OK
10:31:02 ATE1
10:31:03 OK
10:31:03 ATV1
10:31:03 OK
10:31:03 ATE1
10:31:03 OK
10:31:03 AT+IPR=9600
10:31:03 OK
10:31:03 AT+IFC=0,0
10:31:04 OK
10:31:04 AT+VTD=2
10:31:04 OK
inventor
Цитата(CADiLO @ Jul 14 2015, 12:34) *
здесь неправильного немного, просто телепаты в отпуске....

как минимум я не вижу инициализации

и логи дают не в таком виде - не все знают С или кто на чем там пишет...

поэтому лучше приводить в таком формате

AT+CGATT=1

OK
AT+CLPORT="UDP",03030

OK
AT+CIPCSGP=1,"xxx.xxxxxxxx.xxx"

OK
AT+CIPSTART="UDP","xxx.xxx.xxx.xxx","03031"

OK

CONNECT OK
AT+CIPSEND=13

> \эђg‚
SEND OK

а еще лучше если в начале будут временные метки

вот примерно так

10:30:55 AT+CPOWD=1
10:30:55 OK
10:31:02 ATE1
10:31:03 OK
10:31:03 ATV1
10:31:03 OK
10:31:03 ATE1
10:31:03 OK
10:31:03 AT+IPR=9600
10:31:03 OK
10:31:03 AT+IFC=0,0
10:31:04 OK
10:31:04 AT+VTD=2
10:31:04 OK


Понял, у меня в консоль выводит, щас попробую:

Send :ATE0
ATE0

OK
Send :AT+GSMBUSY=1

OK
Send :AT+CSQ

+CSQ: 13,0

OK
Send :AT+COPS?

+COPS: 0,0,"MegaFon RUS"

OK
Send :AT+CIPCSGP=1,"internet","gdata","gdata"

OK
Wait for 2 sec

Send :AT+SAPBR=1,1

OK
Wait for 2 sec

Send :AT+SAPBR=2,1
My IP Addr: 10.188.233.145
GPRS connecting established

Send :AT+CIPSTART="UDP","87.249.0.254","10025"

OK

CONNECT OK

Теперь шлю данные:

Send :AT+CIPSEND=35

>
#12345678abcd«Í
SEND OK res OK
CADiLO
AT+SAPBR - используем только для FTP или HTTP

AT+CIPCSGP - 300 лет тут не нужно

>>>+CSQ: 13,0 - на пределе для GPRS, может рвать связь - желательно CSQ не хуже 18-20

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

программно делаем все по апнотесу - вся последовательность приведена и неоднократно проверена.
если не работает так как написано - пинаем оператора.
inventor
Цитата(CADiLO @ Jul 14 2015, 12:51) *
AT+SAPBR - используем только для FTP или HTTP

AT+CIPCSGP - 300 лет тут не нужно

>>>+CSQ: 13,0 - на пределе для GPRS, может рвать связь - желательно CSQ не хуже 18-20

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

программно делаем все по апнотесу - вся последовательность приведена и неоднократно проверена.
если не работает так как написано - пинаем оператора.

спасиб. даташиты есть у меня
а что за беда в уровнях,
нельзя напрямую ноги на контроллер подавать?
aleksandr-zh
читать даташиты надо... я сейчас тоже чужое железо поднимаю. Сижу и нерусскими словами размовляю. Иногда матом.
То же нет согласования уровней, тоже нет инициализации в полном понимании слова, тоже сокеты специфично сделаны, плюс плата разведена через... ну, вы поняли.
CADiLO
>>>>а что за беда в уровнях, нельзя напрямую ноги на контроллер подавать?

при питании контроллера 3.0 вольта - можно, так как предельный максимум для модуля 3.1 вольта

у вас контроллер запитан 3.3 - через время можете получить кирпич вместо SIM900
и неустановка 1 полевика для согласования обойдется в цену модуля.

поэтому для контроллеров с питанием свыше 3.0 вольта делаем следующее
inventor
Цитата(CADiLO @ Jul 14 2015, 13:37) *
>>>>а что за беда в уровнях, нельзя напрямую ноги на контроллер подавать?

при питании контроллера 3.0 вольта - можно, так как предельный максимум для модуля 3.1 вольта

у вас контроллер запитан 3.3 - через время можете получить кирпич вместо SIM900
и неустановка 1 полевика для согласования обойдется в цену модуля.

поэтому для контроллеров с питанием свыше 3.0 вольта делаем следующее

Понял, спасибо
Aner
QUOTE (inventor @ Jul 14 2015, 13:03) *
спасиб. даташиты есть у меня
а что за беда в уровнях,
нельзя напрямую ноги на контроллер подавать?

можно, если питать контроллер 2.90 ... 3.0 вольт например, а не 3.3 вольт.
TukiTip
Товарищи, подскажите пожалуйста! SIM900R. Подключаюсь к серверу по TCP, отправляю посылку 32 байта, сервер отвечает и модем шлет на МК уведомление "+CIPRXGET=1", проблема в том, что уведомление приходит только один раз, о следующих посылках модем не уведомляет, причем если сделаю реконнект к серверу, то опять первая посылка от сервера доходит, остальные молчат, а отправлять на сервер получается без проблем((( Кто-нибудь сталкивался с таким явлением?
Alex_TAV
Цитата(CADiLO @ Jul 14 2015, 16:37) *
>>>>а что за беда в уровнях, нельзя напрямую ноги на контроллер подавать?

при питании контроллера 3.0 вольта - можно, так как предельный максимум для модуля 3.1 вольта

у вас контроллер запитан 3.3 - через время можете получить кирпич вместо SIM900
и неустановка 1 полевика для согласования обойдется в цену модуля.

поэтому для контроллеров с питанием свыше 3.0 вольта делаем следующее

А обязательно полевик? Диод Шотки(например SS12) нельзя?
Aner
QUOTE (Alex_TAV @ Aug 3 2015, 06:27) *
А обязательно полевик? Диод Шотки(например SS12) нельзя?

... низя ну никак. Но если сильно хоцца, ... то тогда наверное можно, но только для вас исключительно.
Проблема в разном падении на шотки в зависимости от тока потребления, ацп проца если используете, тогда мимо и тд.
Цырен.
Цитата(TukiTip @ Aug 2 2015, 12:09) *
Товарищи, подскажите пожалуйста! SIM900R. Подключаюсь к серверу по TCP, отправляю посылку 32 байта, сервер отвечает и модем шлет на МК уведомление "+CIPRXGET=1", проблема в том, что уведомление приходит только один раз, о следующих посылках модем не уведомляет, причем если сделаю реконнект к серверу, то опять первая посылка от сервера доходит, остальные молчат, а отправлять на сервер получается без проблем((( Кто-нибудь сталкивался с таким явлением?


Пришлите пож. ваш полный АТ-лог (запросы+ответы) на почту bator.batuev собака sim.com
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.