roboforum.ru

Технический форум по робототехнике.

GSM телефон (модуль) для управления и передачи данных

Обсуждение и примеры готовых и самосборных компонент для построения роботов.

GSM телефон (модуль) для управления и передачи данных

Сообщение avr123.nm.ru » 06 апр 2006, 16:34

Этот топик о применении GSM телефона (или модулей)
для управления объектами и передачи данных.

На нашем форуме есть Ed_Gull - человек достаточно опытный в этом деле и похоже готовый поделится знаниями и помочь интересующимся.

По сему прошу задавать вопросы по теме присылать полезные линки.

Например:

-> FAQ по кабелям к сотовым

-> GSM-пейджер контроллер на AVR

-> GSM Охранно-коммуникационный контроллер на MSP430 и модуле СониЕриксон GM47

очень полезны сайты:  Siemens-club.ru  и  AllSiemens.ru

АпНоуты:  33 BASCOM  и  "AVR323 Interfacing GSM modems" Atmel.com

=======

Мой метод исследования того какие AT-команды нужно подать чтоб выполнить то или иное действие с телефоном такой - я запускаю программу "COM Port Toolkit" в режиме лога данных проходящих через COM-порт к которому подключен телефон, и затем запускаю прогу управляющую телефоном - я использую  Siemens Mobile Control (SiMoCo) - и из нее делаю то что мне надо, а в логе данных вижу какие символы нужно передать на разъем телефона чтобы управлять им, и какими символами телефон отвечает.

AT-команды есть во множестве .pdf документах в интенете, в том числе и на русском языке.

Ищутся они в google.com по запросу например AT+CLCC и типу документа .pdf

-> Comparison chart of AT+Ccommands of GSM devices

-> АТ команды для GR47

=======

Мои вопросы:

1) Как включить сотовый телефон SIEMENS (желательно х75) "по кабелю" - т.е. внешним МК.

2) Как определить что при звонке на городской телефон - вызываемый поднял трубку ?  AT+CLCC помогает при звонке на мобильный а на городской нет - в ответе постоянно 0 в той позиции где при звонке на сотовый 0 возникает лишь при ответе вызываемого.

3) Как вы распознаете DTMF - самим МК прграмно или предпочитаете спец. микруху декодер ? Отечественная нормально работает ?
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение avr123.nm.ru » 06 апр 2006, 17:33

Как подать аудио сигнал с телфона (наверно с выхода на динамик гарнитуры) - на МК или на декодер DTMF - какую схему используете вы.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение EdGull » 06 апр 2006, 21:52

Ну начнем помолясь :-)

Для начала дружно бежим на мою страничку специально созданную, вбытность моего пребывания на телесиськах, для таких же страждующих :-) http://bg-lab.narod.ru/FAQ-GSM.html кстати если у модератора есть желание, то ее можно перенести сюда.

1) Как включить сотовый телефон SIEMENS (желательно х75) "по кабелю" - т.е. внешним МК.

Нас этот режим неустраивал по нескольким причинам и поэтому мы его неиспользуем. Мы включаем телефон путем нажания на красную клавишу телефона. Разъем неиспользуем, т.к. не прошел наших испытаний, поэтому подпаиваемся прямо на разъем, а заодно и к данной кнопке.
2) Как определить что при звонке на городской телефон - вызываемый поднял трубку ?
Практически все режимы работы телефона требуют иследований, т.е. то что написано в ДШ это обобщение, которое на практике может фактически работать чуть чуть не так как описано в ДШ. Мы звоним только на сотовые, поэтому мы данный режим не используем. Т.е. я на данный вопрос ответить не могу.
3) Как вы распознаете DTMF - самим МК прграмно или предпочитаете спец. микруху декодер ? Отечественная нормально работает ?

Мы пробывали чуть чуть работать с DTMF, нам очень не понравилось, для него требуется качество сигнала выше среднего. Работали с CM8870 в стандартной схеме включения, дифференциального режима. С отечественной не работали т.к. их не в SMD.
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Сообщение avr123.nm.ru » 07 апр 2006, 10:15

EdGull писал(а):
1) Как включить сотовый телефон SIEMENS (желательно х75) "по кабелю" - т.е. внешним МК.

Нас этот режим неустраивал по нескольким причинам и поэтому мы его неиспользуем.


Понял.  

но если ты знаешь как включить по шнурку - то расскажи пожалуйста.

3) Как вы распознаете DTMF - самим МК прграмно или предпочитаете спец. микруху декодер ?


Мы Работали с CM8870 в стандартной схеме включения, дифференциального режима. [/quote]

т.е. сигнал подавали напрямую к той схеме что в ДШ на CM8870  ?
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение EdGull » 07 апр 2006, 10:28

Включение телефона

Выключенный телефон не принимает АТ-команд. Однако, в сети Вы без труда найдете "волшебную" последовательность из пяти байт, которая приведет к включению выключенного телефона. Вот эти пять байт:

<05> <02> <07> <06> <0C>

В угловых скобках записаны шестнадцатеричные значения каждого байта. Эта "волшебная" последовательность - BFB-команда. BFB-команды (и ответы телефона на них) передаются на скорости 57600 бод. BFB-команды принимаются телефоном даже в выключенном состоянии, если подано напряжение заряда батареи телефона. Но, не все просто... Если телефоны М35 и С45 всегда принимают BFB-команды (было бы подано напряжение заряда батареи), то телефон МЕ45 принимает BFB-команды только в течении первых пятнадцати секунд после подачи напряжения заряда батареи.

Теперь немного о BFB-командах и о "волшебной" последовательности. Первые три байта - это заголовок:
первый байт - тип команды. В нашем случае - команда типа 5.
второй байт - длина команды (заголовок в подсчет длины не входит). В "волшебной" пятибайтной последовательности - байт длины имеет значение 2, да еще три байта заголовка - итого: пять байт.
третий байт представляет собой поразрядное "исключающее ИЛИ" (сложение по модулю два) первого и второго байтов заголовка (5 xor 2 = 7).

Четвертый байт со значением 06 - и есть собственно команда (называется она - "KeyPress"), за которой следует один аргумент: код клавиши, нажатие на которую мы имитируем с помощью команды. Клавишам с цифрами и клавишам с символами "*" и "#" присвоены коды, совпадающие с кодами ASCII соответствующих символов; остальным клавишам присвоены коды от 01h до 0Fh. Шестнадцатеричное значение 0C соответствует в телефоне красной кнопке, которую мы нажимаем пальцем для того, чтобы включить выключенный телефон. Вот, волшебство и рассеялось...

Итак. Для включения телефона необходимо: настроить устройство последовательного обмена, к которому подключен телефон, на скорость 57600 бод; подать на телефон напряжение заряда батареи; в течении первых пятнадцати секунд после этого передать BFB-команду KeyPress: <05> <02> <07> <06> <0C>.

Телефон в ответ на команду возвращает последовательность из четырех байт: <05> <01> <04> <06>, означающую, что команда принята к исполнению (Вы, надеюсь, уже догадались, что первые три байта - это заголовок, а четвертый байт - код принятой к исполнению команды). Ответ телефоном передается все на той же скорости в 57600 бод. И вот, наконец, телефон включается и переходит в режим приема АТ-команд. Следует предостеречь от слишком быстрого снятия напряжения заряда аккумуляторной батареи: если это напряжение снять сразу же, как только получен ответ от телефона об исполнении BFB-команды KeyPress - телефон М35 не включится; следует ввести некоторую задержку перед снятием напряжения заряда.

Телефон включен и готов к приему АТ-команд... Тут не забыть бы, что работали мы с телефоном на скорости 57600, а вот АТ-команды не все телефоны способны принимать на этой скорости (телефон МЕ45 принимает АТ-команды как на скорости 19200, так и на 57600, но телефоны М35 и С45 принимают АТ-команды только на скорости 19200 бод), поэтому скорость обмена снижаем до 19200.

И вот тут-то нас и поджидает "засада" с телефонами 45-ой серии: при включении эти телефоны требуют подтверждения включения, иначе, примерно, через 30 секунд, не дождавшись подтверждения включения, телефон выключится! Ну, не нажимать же на кнопку телефона пальцем, подтверждая включение... Не солидно как-то... А, почему бы не воспользоваться BFB-командой KeyPress? Хорошая мысль, вот только мы работаем с телефоном уже в АТ-режиме. Как из АТ-режима перейти в режим BFB? Для этого есть недокументированная команда AT^SQWE=x, параметр команды (х), обозначает режим работы телефона, в который он переводится этой командой:
AT^SQWE=0
AT-режим (эта команда потребуется для возврата из режима BFB)
AT^SQWE=1
BFB-режим (это - то, что нам сейчас требуется)
AT^SQWE=2
BFC-режим (это - для владельцев телефонов серии выше 45-ой)
AT^SQWE=3
OBEX (это - для людей знающих, что сие означает)

Итак, переводим телефон в режим BFB и получаем ответ:

AT^SQWE=1<0D>

<0D><0A>OK<0D><0A>

Теперь телефон снова работает в режиме BFB (не забыть бы установить скорость обмена на 57600 бод). Снова воспользуемся командой KeyPress, изменив в "волшебной" последовательности последний байт на код клавиши подтверждения включения. В телефонах С45 и МЕ45 эта клавиша имеет один и тот же код - 01. Осталось разобраться со временем подачи этой команды: с одной стороны - телефону необходимо некоторое время для выхода на ожидание подтверждение включения, с другой стороны - если сильно затянуть с подачей команды, то телефон выключится не дождавшись подтверждения включения. Телефоны С45 и МЕ45 в течение 10 секунд после включения питания выходят на ожидание подтверждения включения, и еще 20 секунд ожидают подтверждение - вот во время этих двадцати секунд и необходимо выдать команду подтверждения включения телефона:

<05> <02> <07> <06> <01>

Получаем от телефона ответ о принятии команды на исполнение (<05> <01> <04> <06>) - телефон включен! Телефон-то включен, но необходимо вернуться в АТ-режим... В BFB-режиме, оказывается, можно управлять телефоном и АТ-командами: для этого используются команды BFB с типом команд 6 - заголовок BFB-команды просто предваряет АТ-команду (впрочем, как и ответ телефона). Т.е. для того, чтобы вернуться в АТ-режим, необходимо передать следующую последовательность байт:

<06><0A><0C>AT^SQWE=0<0D>

и получить (если проделали все правильно и без ошибок) следующий ответ:

<06><06><00><0D><0A>OK<0D><0A>

Не забывайте, что все это происходит на скоростях обмена 57600, и, только, приняв последний ответ телефона, можно переключиться на скорость 19200.

Все! Телефон включен и ожидает АТ-команду!
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Сообщение EdGull » 07 апр 2006, 10:30

т.е. сигнал подавали напрямую к той схеме что в ДШ на CM8870  ?

Да, но обращаю еще раз внимание, в дифференциальном режиме.
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Сообщение avr123.nm.ru » 07 апр 2006, 11:35

EdGull писал(а):
т.е. сигнал подавали напрямую к той схеме что в ДШ на CM8870  ?

Да, но обращаю еще раз внимание, в дифференциальном режиме.


а как его получить из недиф. фудио выхода телефона ? схемка какаянить ?  Может лучше схемку прицепить сюда.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение EdGull » 08 апр 2006, 08:07

Вся проблема как раз в том что выход из телефона дифференциальный и если одну ногу динамика гарнитуры закороить на землю и включить 8870 в типовой схеме, то появляются офигенные помехи . К сожалению с наскока схему ненашел, но в ДШ она есть, только надо резисторы расчитать.
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Сообщение avr123.nm.ru » 08 апр 2006, 11:55

EdGull писал(а):Вся проблема как раз в том что выход из телефона дифференциальный


т.е. реально 2 пина на разъеме на динамик ?  т.е. там похоже мотовой УНЧ.

EdGull писал(а):и если одну ногу динамика гарнитуры закороить на землю .


Ну конечно, закорачиваем значит один из плеч УНЧ.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение EdGull » 08 апр 2006, 15:17

совершенно в дырочку :-)
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Сообщение ZERAM » 18 апр 2006, 21:11

очень нужный топ. буду изучать. если возникнут вопросы. буду спрашивать.
--
с Уважением, ZERAM
Аватара пользователя
ZERAM
 
Сообщения: 191
Зарегистрирован: 03 дек 2004, 13:06
Откуда: РБ, г.Уфа
прог. языки: delphi, 1c, php

Сообщение EdGull » 19 апр 2006, 07:21

там на самом деле все просто. главное прочитать список АТ-команд.
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Сообщение avr123.nm.ru » 25 апр 2006, 12:22

EdGull писал(а):Мы пробывали чуть чуть работать с DTMF, нам очень не понравилось, для него требуется качество сигнала выше среднего.


А как же управлять удаленным устройством без DTMF ? в смысле человеку с сотвого телефона поуправлять удаленным GSM-контроллером ?  

sms меня совсем не устраивают.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение EdGull » 25 апр 2006, 12:56

правильно неустраивают :-)
мы используем передачу данных.
сейчас вот поднимаем библиотеки GPRS, UDP уже подняли теперь надо заставить его ходить через прокси (или NAT или SOKS5) и дело в шляпе.
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Сообщение avr123.nm.ru » 25 апр 2006, 14:07

EdGull писал(а):мы используем передачу данных.


тогда повторю вопрос...

как человеку с сотвого телефона поуправлять удаленным GSM-контроллером ?  Только DTMF ?
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

След.

Вернуться в Готовые модули

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6