Наверняка у многих дома завалялся старый сименс с монохромным экраном. Выкидывать его вроде жалко, но в то же время для звонков его использовать не хочется. Такому телефону можно найти применение, например в GSM сигнализациях или использовать его в качестве GPRS модема ,а так же забивать гвозди и колоть орехи. Под катом пойдет рассказ о подключении такого телефона к микроконтроллеру AVR  и работы с ним. Все что здесь написано справедливо для модели A60 (т.к. проверялось на нём).  Но я думаю что работать будет с большинством телефонов Siemens.

Ыыы!

Во время экспериментов ни один телефон не пострадал :)
Для начала немного теории. Для обмена информацией с внешним миром у телефона существует последовательный интерфейс (читай UART). Чтобы приказать телефону сделать что-то (позвонить, отправить смс итд) нужно отправить ему соответствующую команду по этому интерфейсу. Обмен информацией  может происходить на разных скоростях т.к. у телефона есть автодетект скорости. Я вполне успешно работал на скоростях 9600, 19200, 56000 и 115200.  Команд для управления телефоном ОЧЕНЬ много, но обычно хватает лишь нескольких. Вообще очень удобно изучать эти команды подключив телефон к ком порту компьютера и через терминальную программу экспериментировать. Напрямую к COM порту конечно же подключать нельзя, нужно использовать преобразователь логических уровней. Максимальное напряжение которое можно подать на вход телефона — 3.3 вольта. Об этом следует помнить иначе есть риск спалить телефон. Поэтому юзаем резисторный делитель или резистор и стабилитрон (если это необходимо). К микроконтроллеру я подключал  свой мобильник так

Важно знать что ввод команды должен заканчиваться символом перевода строки! Я убил почти 20 минут  пока понял, что популярная программа Terminal, не добавляет этот символ к введенной команде после нажатия кнопки Send. Поэтому команды лучше писать в самом нижнем текстовом поле, и перевод строки делать вручную. Теперь перейдем непосредственно к командам:

AT — простейшая команда. Не делает абсолютно ничего. Этакий nop. Если телефон исправен и правильно подключен, то после ввода этой команды и нажатия enter аппарат должен ответить OK.
ATD x ; — Заставляет телефон набрать номер x. Если звонок не состоялся (например нет сигнала базовой станции) то телефон отвечает NO DIALTONE.
AT+CPAS — эта команда нужна для того чтобы узнать состояние телефона в определённый момент времени. На эту команду телефон отвечает +CPAS: х где х код состояния. Х может принимать несколько значений: 0 — Телефон в режиме ожидания звонка, 3 — входящий звонок, 4 — идёт разговор. Эта команда полезна когда требуется знать взял ли абонент трубку после того как мы набрал его номер командой ATD.
ATA — принять вызов. После её выполнения телефон «берёт трубку». Если подпаяться к выводам гарнитуры, то вполне можно передавать какую либо аудиоинформацию звонящему. Кстати сам факт звонка легко определить. Телефон во время звонка периодически посылает слово RING.
AT+CHUP — Отклонить вызов. Эквивалент нажатия красной трубки на клавиатуре аппарата.
AT+CLCC — Позволяет узнать номер вызываемого абонента.  Бывает полезно когда нужно принимать звонки только от определённого номера или от группы номеров. Естественно использовать эту команду имеет смысл только после получения RING от телефона.  В противном случае телефон просто ответит ОК и всё.
AT+CBC — запрос уровня заряда батареи телефона. Телефон ответит строкой вида
+CBC: х где х уровень заряда умножив на 100 можно получить эту величину в процентах.

Теперь самое интересное, и пожалуй самое часто используемое — работа с СМС сообщениями. Начнем с отправки. Перед отправкой, смс сообщения должны быть перекодированы в хитрый формат PDU. Сообщение в этом формате уже содержит номер получателя, текст сообщения и немного служебной информации: кодировка, длинна сообщения, номер смс центра итд. Пока я постигал устройство этого формата, я пришел к выводу что он был придуман наркоманами под какой-то необычайно ядрёной травой. Его описывать тут я не буду, так как для перекодировки я написал небольшую программу:

Если кому интересно описание PDU формата — внизу странички есть пара дельных ссылок.  Работа с программой предельно проста: Вводим номер получателя и текст смс, жмем кнопку и получаем готовую смску в нужном нам формате. Размер ограничен 70 символами, но я думаю, что для сигнализации например, этого достаточно.
AT+CMGS=<длинна сообщения в формате PDU>  — команда отправляющая СМС
После отправки этой команды нужно передать символ перевода строки. Телефон ответит символом «>». Теперь можно передавать непосредственно сообщение.  Сообщение должно заканчиваться символом с кодом 0x1A.
Hint: Чтобы ввести этот символ в терминал нужно нажать ctrl+z
AT+CNMI=1,1 — команда включает отображение номера пришедшей СМСки. Это очень удобно т.к. будем знать когда сообщение пришло и плюс его номер для того чтоб прочитать или удалить сообщение. После выполнения этой команды, телефон после получения сообщения будет выдавать строку вида +CMTI: «MT», <номер смски> Этот номер мы будем использовать в следующих двух командах.
AT+CMGR=<номер смски> — выдает смс сообщение с заданным номером. Телефон передаст две строки:
+CMGR: <статус>,,<длинна PDU>
<Сообщение в PDU формате>
Статус может быть двух видов: 0 — непрочитанное сообщение, 1 — прочитанное сообщение.
AT+CMGD=<номер смски> Удаление смски из памяти телефона.

Пишем софт
Софт для управления мобильником ничего хитрого из себя не представляет. Инициализируем UART и передаем через него нужные команды или получаем их от телефона. Я написал демонстрационный пример который отсылает смску при включении контроллера.

И что дальше?
А теперь можно сделать на основе этого мобильника что угодно! Можно сотворить удалённое управление нагрузками по СМС, охрану для гаража, подслушивающее устройство включаемое удалённо да и еще много чего была бы только фантазия.

Ссылки
Демонстрационный пример
Моя прога для создания сообщений в формате PDU
PDUspy — отличная программа для работы с PDU форматом.
АТ команды телефонов сименс S35i,C35i, M35i (основные команды будут работать во всех моделях)
Про PDU формат