Siemens MC35i + USB 3G модем
23600
20
Приветствую всех!

У меня есть задача передать данные с контроллера ATMega чарез RS-232 в GSM/GPRS модем Siemens MC35i. С этим проблем нет, т.к. написал строку в программе микроконтроллера printf("ATD+7913XXXXXXX;\r\n"); и модем позвонил мне! Значит с обменом все ОК!

Далее мне эти данные нужны в моем компьютере.

Вопрос: как лучше всего их получать удаленно?

Мои идеи:

1.) СМС на E-Mail. (нестабильность доставки, сложность получения из почты, дорого. Я это реализовал: не нравится)

2.) GPRS. (Нестабильность коннекта, дешево. Довольно сложно реализовать, т.к. в модеме нет встроенного TCP/IP стека и изобретать интернет для АТМеги нет особого желания!)

3.) CSD. С этим все понятно! Позвонил. Что послал на КОМ порт на одном модеме - то и вылетело из КОМ порта другого модема. (Или я не прав?)

Вопрос в следующем: можно ли создать CSD соединение с USB 3g модемом? Не охота мне покупать дорогой терминал с RS-232. Смогу ли я читать данные с виртуального COM порта, который создал драйвер модема HUAWEI? Если знаете спецфорумы, можеле линком кинуть.

Заранее спасибо.
voron-itc
можно ли создать CSD соединение с USB 3g модемом?
Странный вопрос для человека столь тонко описавшего проблему. CSD доступно для модемов, не для всех конечно, часто лечится сменой firmware. Далее, CSD доступно не у всех операторов, это не лечится.
Казинака
Сегодня сконнектил MC35i и Nokia N82+bluetooth(модем сел на виртуальный COM3).
Комментировать не буду, все на скрине. Провозился 2 часа. Работает без проблем и без ошибок!
Надеюсь Хуавеи тоже так умеют! ) Просто не люблю деньги тратить зря, а то куплю модем, а он и не заработает!
Казинака
Ну вот, я так и думал! Хуавэй е1550 от мтс всякую фигню пишет в терминал!
Он соединяется с SIemens MC35i, и терминал переходит в режим передачи данных, а УСБ модем НЕТ и продолжает гнать всячину всякую в терминал (см. скрин приложенный).

Почему он не переключается в режим передачи данных после коннекта????
Может какая команда нужна дополнительно???
voron-itc
at
OK
ati
Manufacturer: huawei
Model: E1550
Revision: 11.608.12.00.143
IMEI: 353142032617303
+GCAP: +CGSM,+DS,+ES

OK
atd8913........
NO CARRIER

Я у себя попробовал-работает.
pwl
Попробуй перед этим вот эту команду (Как отключить CD-ROM и флешку модема) AT^U2DIAG=0
взято отсюда:http://www.coliseus.net/usb-modems/24-off-cdrom-flesh-modem.html
Я у себя это сделал, но команду не помню - по-моему эта
voron-itc
Может услугу надо подключить у МТС? Мобильный офис вроде называется, точно уже не помню...
voron-itc
Ага, точно Мобильный офис
пы.сы. Я бы дизайнеру-идеологу сайта МТС руки бы отрубил, ну ничего найти невозможно...
Казинака
Симки и услуги 100% работают, я же проверил на N82. Там все идеально!!!!

Сименс звонит нокии, нокия берет трубку автоматом и пишет в терминал CONNECT 9600 и переходит в режим передачи данных. Я на одном терминале пишу, на тругом вылазит вся писанина. Все ок.

С ХУавеем, как бы не начать материться, сименс ему звонит, он автоматом берет трубку и они соединяются. В терминале сименса пишется: CONNECT 9600/RLP, а в терминале Хуавея НИЧЕРТА! Только комманды сами переодически в терминал прут ^rssi:20 или ^boot_и_какие-то_цифры. Если в терминале сименса жму кнопку, то на том конце какие-то движения есть плюёт в хуавеевском терминале фразами типа DWORD_0C0000000000..., но явно не то, что я нажимал.

То-Есть хуавей НЕ ПЕРЕХОДИТ в режим передачи данных, а должен автоматом после соединения, как сименс.

Носители в модеме только что отключал, не помогло!!! :хммм::хммм::хммм:

ati
Manufacturer: huawei
Model: E1550
Revision: 11.608.12.00.143
IMEI: 359124037XXXXXX
+GCAP: +CGSM,+DS,+ES
pwl
OK
atd8913........
NO CARRIER

Я у себя попробовал-работает.
Странно как у вас работает, если модуль ПОТЕРЯЛ НЕСУЩУЮ (no carrier)??? :улыб:
voron-itc
Может ты не тот ком порт смотришь?
pwl
+100500!!!!!!!!!!! :agree: :bottle: :friends:

ПередохнУть походу надо!!!! )))))

Ребят, спасибо огромное!!!!!!

:live:
voron-itc
А не проще ли использовать недорогой wismo228 или ещё более дешевый sim900?
ru54
Этот на халяву достался! ) Если бы покупал, то со встроенным TCP/IP стеком! ) + Промышленное исполнение.

+++ Хорошие модемы.
ru54
А где брать этот SIM900? А припаять его получиться(паяльной станции нет)?
SergeiCh
Дешевле чем готовый, но обвязку делать к нему надо!
Лучший вариант: Черная коробка, вход, питание, симка, антенна. )

У меня нет хорошего инструмента, только паяльник и более-менее освоеная ЛУТ технология (ну еще имеется мультиметр, осциллограф) и самому паять мелкие модули проблематично. Есть фотка самоделки какой на SIM900 или WISMO 228?
voron-itc
У SIM900D шаг площадок контактных 1.5 мм. Если SOIC паяете, то и с этими модулями проблем не должно возникнуть. Внешних компонентов минимум.
SergeiCh
Если не 80ти ВТ паяльник с жалом в 6-7мм то проблем возникнуть не должно.
voron-itc
У меня возникла похожая задача. Соединиться с компа, в котором USB-модем Huawei E150 с GSM-модемом Teleofis. Это та же хрень, что и Siemens MC35i. И ни черта у меня не получается.
Голосовые функции активированы. Звонок идет, а соединения нет. Использую порт модема, а не интерфейса. Да оба пробовал.
Если набрать в терминале модема обычную команду дозвона
ATD8928*******

Ответ практически сразу "NO CARRIER"
Если же набрать с точкой с запятой (выход в командный режим после набора)
ATD8928*******;

Модем пишет "OK", дозванивается, на втором модеме трубка снимается, загорается диод установки соединения, но в терминале никаких "CONNECT/9600" не пишется. На команду "ATO" (выход в режим передачи данных) пишет "ERROR". И вообще, сам звонок происходит в голосовом формате. Если, к примеру, позвонить на обычный телефон, то на экране телефона написано "голосовой вызов", а не "передача данных", как должно быть. Подскажите, как у вас получилось?
PythonJ
В Siemens MC35i команда дозвона без точки-запятой - это дозвон по протоколу CSD, передача данных. Он не подключен по умолчанию во всех операторах, в МТС например отключен. Команда с точкой-запятой - это и есть "обычная команда дозвона" в голосовом режиме. И после установки соединения тоже ничего не пишется.

Теперь моя проблемма:
(очень схожая с тем, о чем писал топикстартер)
- микроконтроллер Atmega8,
- GSM-модем Siemens MC35i,
- микросхема MAX232, кварцевый резонатор 12МГц.

Задача: по команде микроконтроллера модем должен позвонить на указанный номер.

Детально: в микроконтроллер зашита АТ-комманда для модема. Через микросхему МАХ232 подключаюсь к СОМ-порту, и вижу, что АТ-команды проходят как и должно, - не крокозябрами а нормальным текстом, с заданными интервалами, на частоте 9600, каждая с новой строки.
Подключаю модем к СОМ-порту, вбиваю через гипертерминал те же АТ-комманды и вижу, что модем на них реагирует корректно.
Подключаю микроконтроллер к модему через МАХ232, и... облом.

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

Код прошивки, последний абзац: сначала задержка 7 сек., потом комманда АТ, потом варианты дозвона - через плюсик (выход на международный уровень) и без плюса, с пробелом после ATD и без, с разными вариантами перехода на новую строку. Звонки разделены паузами по 7 секунд, которых модему хватит чтобы установить соединение, а мне - чтобы сбросить.
Кроме того, в другом варианте прошивки я задавал прерывания через Wizzard (Interrupt Rx, Tx).
Программу собрал с использованием Code Vision AVR, фьюзы выставленны под внешний кварц.

Показать спойлер
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x4D;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
while (1)
{
// Place your code here
delay_ms(7000);
printf("\r\nAT\r\n");
delay_ms(7000);
printf("\r\nATD **********;\r\n");
delay_ms(7000);
printf("ATD **********;\r\n");
delay_ms(7000);
printf("ATD +**********;\r\n");
delay_ms(7000);
printf("ATD+**********;\r\n");
delay_ms(7000);
printf("ATD+**********; \r \n");
delay_ms(7000);
printf("ATD+**********;\n");
delay_ms(7000);
};
}
Показать спойлер