Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: brown, ivan_fd  
Форум Picbasic.ru » Электроника » Умный дом » Управление по GSM каналу (Взаимодействие МК и GSM устройств.)
Управление по GSM каналу
ADMIN Дата: Пт, 18.04.2008, 02:49  |                                                                                                                Сообщение # 46
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Quote
Кое что сварганил. За основу взял устройство http://gsmhorn.narod.ru/index.html
Хотел сделать чтобы ответ был при неудачном запуске двигателя и два ответа при удачном запуске, но так девайс работает не всегда, может и не позвонить при неудачном запуске. Схему на компе не рисовал, скажу только, что зажигание - А2, стартер - А3, поворотники - А1, вход имульсов с тахометра - А4. В1 и В2 - чтение-выдача команд телефона. Кварц 4 Мгц. На машину пока не ставил девайс, экспериментирую с макетом на столе. Питать телефон и девайс предполагаю от КР 1156 ЕУ5.
Не оставляет мысль собрать девайс с подключением через оптроны к кнопкам телефона. Что-то подсказывает, что так будет надёжнее.
С уважением, Сергей.
Прикрепления: gsm.asm(17Kb)

Все это интересно, конечно, но программа на basic была бы наглядней.

Quote
Привет всем. Почитал тему - очень хорошая и интересная, но почему то затухает (наверно все знают как писать на барсике проги или жалко поделиться схемами и хотябы куском программы ) Я сам недавно начал изучать BASIC , вот скидал мотажку с LCD и начну потихоньку мучать. Сигнализация не важно какая , дом-гараж-дача-авто главное чтобы все заработало. Вот прикрепляю кусок проги которую можно перелапатить. Кто что думает?
А учиться лучше на практике и пока без асма и си - сам паять люблю.
Прикрепления: ms-proton.bas(11Kb)

Файл отсутствует

petser888 Дата: Пн, 21.04.2008, 13:04  |                                                                                                                Сообщение # 47
Группа: Пользователи
Ранг:  Новенький
Сообщений: 17
Репутация: 0   ±
Замечания:   ±
На сайте с 04.01.2008

Статус: Offline

Файл опять прикрепил. Начал пробовать програмировать на РВР и протоне . На протоне как то сходу заработал дисплей . да и АТ команды намного легче в телефон посылать, пробывал звонить ( эксперемент провожу с siemensом sl45 и c62, первый работает на скорости 19200 а другой только на 115200 и не копейки ниже - а в РВР такой скорости ненашел).
Прикрепления: sms-proton.bas (11.2 Kb)


сваять можно все - была бы цель
petser888 Дата: Пн, 21.04.2008, 13:12  |                                                                                                                Сообщение # 48
Группа: Пользователи
Ранг:  Новенький
Сообщений: 17
Репутация: 0   ±
Замечания:   ±
На сайте с 04.01.2008

Статус: Offline

не пойму почему не прикрепляется? Переименовал без черточки.
Прикрепления: proton.txt (10.9 Kb)


сваять можно все - была бы цель
Сообщение отредактировал petser888 - Пн, 21.04.2008, 13:20
ADMIN Дата: Пт, 25.04.2008, 02:32  |                                                                                                                Сообщение # 49
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Текст кода можно заключить в
Code
....
и привести здесь или мне на почту отправить, я размещу.
petser888 Дата: Сб, 03.05.2008, 21:54  |                                                                                                                Сообщение # 50
Группа: Пользователи
Ранг:  Новенький
Сообщений: 17
Репутация: 0   ±
Замечания:   ±
На сайте с 04.01.2008

Статус: Offline

В "Code" не влезает в лимиты, вот покопался и нашел ссылку
http://www.maxim-ic.com/appnotes.cfm/an_pk/3297
а там и текст на протоне
http://www.maxim-ic.com/images....1.0.bas
Она измеряет температуру и напряжения и шлет СМС в текстовом режиме.


сваять можно все - была бы цель
ADMIN Дата: Пн, 05.05.2008, 03:14  |                                                                                                                Сообщение # 51
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Вот это уже что-то!
ЯНДЕКС Дата: 05.05.2008
brown Дата: Ср, 14.05.2008, 03:29  |                                                                                                                Сообщение # 52
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 333
Репутация: 12   ±
Замечания:   ±
На сайте с 18.09.2007

Статус: Offline

Спасибо petser888 за ссылки-теперь есть от чего начать плясать. А то просмотрел книгу по АТ-
командам и ни фига не понял.

Есть вопросы по листингу проги:
HSEROUT ["AT" ,13]
HSEROUT ["AT+CMGF=1" ,13]
HSEROUT [13]
HSEROUT [26] ' this is ASCII for Ctrl+Z
13 и 26 это что коды ASCII? Для чего они нужны?

Вопрос по мобиле Семён М65- поддержка АТ-команд? Согласование лог. уровней с ПИКом?


Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
petser888 Дата: Сб, 24.05.2008, 19:43  |                                                                                                                Сообщение # 53
Группа: Пользователи
Ранг:  Новенький
Сообщений: 17
Репутация: 0   ±
Замечания:   ±
На сайте с 04.01.2008

Статус: Offline

Давно здесь небыл, работа и работа на воздухе, ну вот хоть пообсуждать с кем есть.
Brown :
HSEROUT ["AT" ,13] ' ----- AT - инициализация модема , ответ должен ОК, а 13 это CR - ввод команды.
HSEROUT ["AT+CMGF=1" ,13] ' AT+CMGF=1 - передача СМС в текстовом режиме, правда сименсы работают только в PDU.
HSEROUT [13]
HSEROUT [26] ' this is ASCII for Ctrl+Z ' - Ctrl+Z это и есть 26 - означает окончание строки.
13 и 26 это что коды ASCII? Для чего они нужны?

Есть еще 10 это LF (Line feed) - для сименсов оно не нужно, но для других может понадобится.
М65 все АТ команды держит на скорости 115200 , даташита нет но лучше проверять прогой SiMoCo.(у меня есть ДШ на 55й)
Уровни с пиком (RX-TX) согласую через резисторы 330-510 Ом - никаких проблем с разными мобилами.
Еще у 65 5,6,7 пин желательно через резистор 82 Ома подать на землю чтобы он опознал внешнее подключение. Но это не всем моделям обязательно(я пробывал наглухо тоже ничего).


сваять можно все - была бы цель
brown Дата: Вт, 03.06.2008, 03:56  |                                                                                                                Сообщение # 54
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 333
Репутация: 12   ±
Замечания:   ±
На сайте с 18.09.2007

Статус: Offline

Ещё раз спасибо petser888 за полезную инфу!
Разбираюсь с этой темой практически с нуля,так что извините за вопросы "чайника":

Для передачи данных на телефон используется формат команды HSEROUT по умолчанию - 8N1 ?

Я так понял, что можно подавать АТ-команды (для проверки и отработки) через дата-кабель
телефона посредством проги HyperTerminal?


Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
petser888 Дата: Вт, 03.06.2008, 20:26  |                                                                                                                Сообщение # 55
Группа: Пользователи
Ранг:  Новенький
Сообщений: 17
Репутация: 0   ±
Замечания:   ±
На сайте с 04.01.2008

Статус: Offline

Привет BROWN.
Посредсвам обычного шнура: СОМ (RX-TX pin) - MAX232 - разьем телефона и программы "SiMoCo"-в инете она есть.
Так эта прога Simens Mobile Control(у меня версия 2.2.8) мало того что русифицированна она работает с сименсами по 75 серию включителено со встроенными в нее АТ командами , да и терминалка там есть сразу все видешь пишешь команду и видешь что отвечает телефон(из нее очень просто позвонить, послать или прочитать из памяти СМС).


сваять можно все - была бы цель
brown Дата: Вт, 10.06.2008, 03:32  |                                                                                                                Сообщение # 56
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 333
Репутация: 12   ±
Замечания:   ±
На сайте с 18.09.2007

Статус: Offline

Привет petser888.
Установил себе версию 2.2.9 - хорошая программуля!
Попробывал команду AT+CMSS=1 (отправка СМС №1 из памяти SIM по указаному там номеру)
и AT+CMSS=1, № телефона. Все прошло успешно.
В принципе этих команд достаточно для простой GSM сигнализации. По свободе надо будет опробывать
на железе.


Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
petser888 Дата: Чт, 12.06.2008, 10:45  |                                                                                                                Сообщение # 57
Группа: Пользователи
Ранг:  Новенький
Сообщений: 17
Репутация: 0   ±
Замечания:   ±
На сайте с 04.01.2008

Статус: Offline

Да , это работает нормально только нужно следить за свободными ячейками СМС на симке и вовремя их подтирать чтобы свободные были, а то нужная СМС перепишется( подтирать ячейки в каждом программном програмном цикле - симку быстро запороть можно) . Я храню СМС в PDU формате в МК и посылаю AT+CMGS=56 .

сваять можно все - была бы цель
ADMIN Дата: Пт, 13.06.2008, 10:05  |                                                                                                                Сообщение # 58
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

А кто про PDU может внятно разъяснить?
petser888 Дата: Пт, 13.06.2008, 13:56  |                                                                                                                Сообщение # 59
Группа: Пользователи
Ранг:  Новенький
Сообщений: 17
Репутация: 0   ±
Замечания:   ±
На сайте с 04.01.2008

Статус: Offline

Кодировку PDU наверно кто то придумал на больную голову, уж очень она заморочена. Про нее полно описания, на IXBT.com (не помню где) описано все по русски "Отправка коротких сообщений (SMS) через сотовый телефон, подключенный к компьютеру". Попробую опять прикрепить HTML and txt.

Добавлено (13.06.2008, 7:56:02)
---------------------------------------------
Вроде бы прикрепился но по дороге все руские буквы что-то сожрало, вот здесь в виде текста:
Отправка коротких сообщений (SMS) через сотовый телефон, подключенный к компьютеру

Недавно я приобрел телефон Ericsson R320s. В комплекте поставлялось стандартное программное обеспечение, которое, как выяснилось, не было приспособлено для отправки русскоязычных коротких сообщений (SMS). И я решил написать программу отправки сообщений в кодировке UCS-2 (кириллические сообщения отправляются именно в нем). Кодировка сообщения описана в стандарте ETSI GSM 03.38, а структура в ETSI GSM 03.40, хотя большую часть информации я получил из руководства разработчика, написанного Siemens для владельцев S-серии телефонов "sms_pdumode.pdf".

Существует 2 типа сообщений: текстовые и PDU (Protocol Data Unit). В общем, это одно и то же, просто в режиме отправки текстовых сообщений Вы не сможете передавать русские буквы и, вообще, буквы не английского алфавита (греческие и др.), поскольку программное обеспечение телефона не будет их преобразовывать в формат PDU. Поэтому сразу начнем рассмотрение передачи сообщений в режиме PDU.

Будем различать принятые и исходящие сообщения.

Формат принятого сообщения:
1-12 байт 1 байт 2-12 байт 1 байт 1 байт 7 байт 1 байт 0-140 байт
SCA PDU-type OA PID DCS SCTS UDL UD

Биты поля PDU-type называются так:
RP UDHI SRI MMS MTI
биты 7 6 5 4 3 2 1 0

Поле MTI должно быть таким: бит 0 = 0, бит 1 = 0.

Формат исходящего сообщения:
1-12 байт 1 байт 1 байт 2-12 байт 1 байт 1 байт 0, 1 или 7 байт 1 байт 0-140 бай
SCA PDU-type MR DA PID DCS VP UDL UD

Биты поля PDU-type называются так:
RP UDHI SRR VPF RD MTI
биты 7 6 5 4 3 2 1 0

MTI должно быть таким: бит 0 = 1, бит 1 = 0.

Все неиспользуемые биты нужно установить в 0.

Названия и назначение полей:
SCA номер SMSC (СМС-сервером)
PDU-type поле данных протокола
MR количество успешно переданых (0..255) сообщений с телефона
OA телефон отправителя
DA телефон получателя
PID идентификатор протокола: указывает SMSC, как обрабатывать сообщение
DCS схема кодирования данных в поле данных
SCTS время получения сообщения SMS-сервером
VP время действия сообщения (если сообщение не будет получено абонентом в течение этого времени, SMSC его не будет передавать)
UDL длина поля данных
UD поле данных
RP указывает на наличие поля ответа
UDHI указывает на наличие заголовка в поле UD
SRI требование принимающегополучить статус сообщения
SRR требование отправителя получить статус сообщения
VPF флаг наличия поля VP
MMS количество неотправленных сообщений в SMSC
RD удалить дубликаты
MTI тип сообщения: если 00 - входящее, 01 - исходящее

Важно!

Все поля подразумевают то, что они шестнадцатиричные (кроме битовых). Но в телефон они отправляются в виде символов. Т.е. если поле имеет значение 41H, то передаются два символа: 34H ("4") и 31H ("1").
SCA
Длина поля - 1 байт Тип номера - 1 байт Номер от 0 до 6 байт
Длина содержит байт, указывающий длину номера SMSC + 1 байт типа этого номера.
Тип номера может быть или 81H - национальный, или 91H - международный. Но лучше использовать 91H с нашими Московскими операторами.
Поле номера кодируется следующим образом: каждая пара цифр меняется местами. Если количество цифр нечетно, тогда в конец номера дописывается 0xF.

Например, для Московского БИЛАЙН'а номер SMSC: +790173100 Поле SCA будет выглядеть так: 069197103701F0

Если параметр длина поля = 0, тогда телефон должен взять номер SMS из своих настроек. А поскольку уверенным в правильности этого номера быть нельзя, как, впрочем, и в том, что Ваша модель телефона сработает именно так, лучше всегда здесь указывать номер SMSC.
PDU
RP: установим его в 0
UDHI: установим его в 0
SRI: (устанавливаетя в SMSC)
SRR:=Установим в 0
VPF: Установим в 00
MMS: (устанавливается в SMSC)
RD: Установим=в 0
MTI: Описано выше

Поле MR формируется в SMSC, но нужно что-либо там хранить, например 0x0.
OA и DA

Формируются аналогично полю SCA.

Пример:

Если нужно записать национальный номер (в Москве сообщение по такому номеру не дойдет), 1234567 преобразуется в 0781214365F7.
PID
Сообщает транспортному уровню, какой протокол высшего уровня должен обрабатывать это сообщение.
Некоторые возможности:
00H: обычное сообщение
41H: замещать сообщение типа 1
42H: замещать сообщение типа 2
43H: замещать сообщение типа 3
......
47H: замещать сообщение типа 7
DCS

Фактически нужны только два варианта поля+флажок вывода на экран:
80H: кодировка UCS2 (70 знаков);
00H: кодировка 7-бит (160 знаков, но не кириллическая).

Если при этом указать, что старший полубайт равен FH, то сообщение будет выводиться сразу на экран, как в старой системе БИ+GSM (т.н. Flash-SMS). Причем сообщение будет отображаться на экране независимо от кодировки, если Ваш аппарат поддерживает UCS2 (например, Нокия Логоменеджер не умеет отправлять Flash-SMS на русском языке).

Т.е. для Flash-SMS:
F8H: кодировка UCS2 (70 знаков);
F0H: кодировка 7-бит (160 знаков, но не кириллическая).
UDL

Длина поля данных в байтах. Собственно, если сообщение состоит из одного символа UCS2, то его длина - 2 байта, а если из одного символа в 7-битной кодировке - один байт.
UD

Начнем с UCS2. Сама кодировка повторяет Unicode. Т.е. для английских символов просто однобайтовой кодировки добавляется байт 00H. Для русских (те, что начинаются с C0H в Windows-кодировке) можно создать такое правило:

Из байта вычитается C0H и прибавляется 410H (кроме букв "ё" и "Ё", которые в Unicode имеют коды 0451H и 0401H соответственно). Точное описание кодировок можно увидеть здесь: http://www.webclub.ru/content/markup_refs/article-40.html

7-битная кодировка. Английские буквы этой кодировки по кодам не отличаются от восьмибитной. Русских букв нет.

Упаковка 160 символов в 140 байт производится следующим образом.

Первый байт записывается так:

старший бит берется из младшего бита 2-го байта, 7 остальных бит - биты первого символа.

Второй байт записывается так:

два старших бита берутся из младших разрядов 3-го байта, а шесть младших - из оставшихся битов второго символа и т.д.

Пример: кодирование слова hellohello

Семибитная запись 10 букв:
h e l l o h e l l o
68 65 68 68 6F 68 65 68 68 6F
1101000 1100101 1101100 1101100 1101111 1101000 1100101 1101100 1101100 1101111

Девять восьмибитных байтов со словом hellohello:
1 1101000 00 110010 100 11011 1111 1101 01000 110 100101 11 1101100 1 1 1101100 110111
E8 32 9B FD 46 97 D9 EC 37

В следующей таблице представлена псевдорусская кодировка, которую я предлагаю для телефонов, не поддерживающих кириллицу.
А Б В Г Д Е Ё Ж З и й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
A 6 B G D E Й * З u щ K L M H O P P C T Y F X _ _ W _ _ Ы Ь _ _ _
41 36 42 05 06 45 C9 2A 33 75 F9 4B 08 4D 48 4F 0B 50 43 54 59 0F 58 57 626C 62

Такая кодировка позволяет отображать на экранах аппаратов Motorola, Siemens (модели младше S25) и других, не понимающих формат UCS2, почти русские сообщения. К сожалению, не все символы русского языка можно передать таким кодом.

Как передать или принять сообщение через телефон

Для этого Ваш телефон должен поддерживать AT+C команды. Описание практически всех команд Вы можете просмотреть в руководстве Siemens для владельцев S-серии телефонов , я же приведу только те из них, которые нужны для отправки и приема сообщений.
Передача сообщения:

В COM-порт, к которому подключен телефон, нужно отправить строчку: "AT+CMGS", дождаться отклика в виде символа ">" и передать сформированное сообщение в COM-порт. Если передача информации в телефон происходит успешно, то телефон откликнется строкой "OK".

Второй вариант: используем команды передачи сообщения из памяти телефона. Т.е. выбираем в качестве памяти хранения SIM, записываем в память сообщение, получаем номер этого сообщения в памяти, передаем сообщение с этим номером в эфир и стираем его из памяти. Этот вариант я использовал при отладке своей программы и до сих пор применяю для отправки сообщений не UCS2 (может быть, именно поэтому такие сообщения передаются неустойчиво).

Каждая строчка, переданная в телефон, должна оканчиваться символом 26H.

Описание команд Вы можете найти здесь.

Пример формирования сообщения.
069197103701F001000B919710276338F60008020410:
06=05 для номера SMSC + 1 байт интернациональности SMSC
91=интернациональность SMSC
97103701F0=+790173100 плюс признак окончания номера F
01=PDU Type:
MTI=01 -> исходящий SMS
00=MR - параметр, который устанавливается в SMSC
0B=длина номера получателя-1 (10 знаков в номере)
91=интернациональность получателя
9710276338F6=+79017236836 - номер получателя
00=PID идентификатор номера протокола, если не равен 0, то должен быть равен 41..47 для того, чтобы замещать сообщения с теми же номерами протокола (как в БИ+!!!)
08=DCS схема кодирования данных: кириллическое сообщение
02=длина сообщения
0410=сообщение: "А"

Передаем его на телефон в терминальной программе:
AT+CMGS
Ш 069197103701F001000B919710276338F60008020410
OK
Прикрепления: comp-sms-1-.txt (9.0 Kb) · comp-sms.txt (9.0 Kb)


сваять можно все - была бы цель
brown Дата: Вт, 24.06.2008, 03:09  |                                                                                                                Сообщение # 60
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 333
Репутация: 12   ±
Замечания:   ±
На сайте с 18.09.2007

Статус: Offline

Посмотрел передачу про незаконное прослушивание и напомнило, что нужно задать вопрос:

К примеру - сработала сигнализация, пришло СМС, что сработал датчик на входной двери.
Нужно прослушать охраняемый обьект. Звоним на ТЛФ. МК дает команду поднять трубку.
Есть ли АТ-команды соответствующие?


Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
Форум Picbasic.ru » Электроника » Умный дом » Управление по GSM каналу (Взаимодействие МК и GSM устройств.)
Поиск: