Avr подключить к телефону
Необходимые компоненты
Аппаратное обеспечение
- Микроконтроллер ATmega16 (купить на AliExpress).
- GSM модуль (SIM900 или любой другой) (купить на AliExpress).
- Программатор AVR-ISP (купить на AliExpress), USBASP (купить на AliExpress) или другой подобный.
- Адаптер на 12В.
- JHD_162ALCD (ЖК дисплей 16x2) (купить на AliExpress).
- Кнопки.
- Резисторы 10 кОм (купить на AliExpress).
- Потенциометр (купить на AliExpress).
- 10 пиновый FRC кабель.
- Источник питания с напряжением 5 Вольт
Программное обеспечение
CodeVisionAVR (или другое подобное, например, Atmel Studio)
SinaProg – для загрузки программы в микроконтроллер ATmega8 с помощью программатора USBASP. Можно использовать и другую аналогичную программу.
Общие принципы работы GSM модуля
GSM модуль можно использовать даже без микроконтроллера, используя для управления им набор команд управления модемом (AT commands). Как показано на приведенном рисунке GSM модуль имеет в своем составе адаптер последовательного синхронного/асинхронного порта (USART), поэтому он может быть напрямую соединен с компьютером при помощи модуля MAX232. А с использованием контактов Tx (передача) и Rx (прием) его можно подсоединить к микроконтроллеру. Также на плате GSM модуля вы можете видеть другие контакты, такие как MIC+, MIC-, SP+, SP- которые используются для подключения микрофона или громокоговорителя. GSM модуль можно запитать с помощью адаптера на 12В используя разъем для постоянного тока.
Вставьте вашу SIM карту в соответствующий слот модуля и подайте питание, при этом на плате должен загореться светодиод, свидетельствующий о подаче питания. Потом подождите минуту или чуть больше, вы увидите как красный (может использоваться и другой цвет) светодиод будет мигать каждые 3 секунды. Это будет означать что ваш модуль готов к установлению соединения используя вашу SIM карту. После этого вы можете подсоединить к нему сотовый телефон или микроконтроллер.
Управление GSM модулем с использованием набора команд управления модемом (AT commands)
Управлять GSM модулем можно единственным способом – используя набор команд управления модемом (AT commands). К примеру, если вы хотите узнать активен ли ваш GSM модуль вы передаете на него команду “AT” и модуль должен ответить на нее “OK”.
Весь список команд управления модемом (AT commands) можно найти в соответствующих справочниках (он весьма обширен), здесь же в нижеприведенной таблице вы можете увидеть наиболее часто используемые (востребованные) из этих команд.
Работа схемы
Схема соединений устройства на макетной плате приведена на следующем рисунке.
В схеме необходимо сделать следующие соединения:
1. Tx и Rx GSM модуля to Rx (Pin14) и Tx (Pin15) микроконтроллера Atmega16 соответственно.
2. Кнопки to PD5 (Pin19) and PD6 (Pin20).
3. Соединения с ЖК дисплеем:
• RS - PA 0
• R/W - PA1
• EN - PA2
• D4 - PA4
• D5 - PA5
• D6 - PA6
• D7 - PA7
Создание проекта для Atmega16 в программной среде CodeVision
Необходимо выполнить следующую последовательность действий.
Шаг 1. Откройте CodeVision, выберите в ней пункт меню File -> New -> Project. В появившемся диалоговом окне нажмите Yes.
Шаг 2. Откроется CodeWizard. Кликните в ней на первой опции, то есть AT90, затем нажмите OK.
Шаг 3. Выберите свой микроконтроллер, в нашем случае им будет Atmega16L.
Шаг 4. Кликните на USART. Выберите передатчик и приемник кликнув по ним как показано на рисунке.
Шаг 5: Кликните на "Alphanumeric LCD" и выберите "Enable Alphanumeric LCD support" как показано на рисунке.
Шаг 6: Выберите пункт меню Program -> Generate, Save and Exit. На этом этапе можно сказать, что половина работы уже выполнена. Но если кто не хочет использовать CodeVision то, разумеется, всю эту часть кода можно запрограммировать и вручную.
Шаг 7. Создайте новую папку на рабочем столе чтобы записывать туда наши файлы.
У нас будет 3 диалоговых окна (будут появляться последовательно одно за другим) для сохранения наших файлов.
Сделайте то же самое (что и на представленном рисунке) с двумя другими диалоговыми окнами – то есть сохраните предлагаемые ими файлы.
После этого рабочая область программы будет выглядеть следующим образом:
Теперь мы должны написать только часть кода, отвечающую за взаимодействие с модулем GSM.
Исходный код программы на языке С (Си) с пояснениями
В рассматриваемом нами способе создания программы все заголовочные файлы должны автоматически прикрепиться к проекту за исключением того что необходимо будет вручную подключить заголовочный файл delay.h и объявить все переменные. Полный текст программы будет приведен в конце статьи, здесь же будет дано пояснение лишь отдельных фрагментов программы.
В конце прошлой статьи писал о том, что получилось создать интерфейс для Android и в этой статье попробую описать этот процесс. Почему попробую, потому что опыта в создании приложений под Android у меня практически нет и на самом деле, мало что смогу доступно объяснить. Ну всё довольно отмазываться пора переходить к делу.
Для начала качаем и устанавливаем Android Studio, о том как это сделать в интернете достаточно материала. После того как среда разработки установлена, создаём новый проект согласно скриншотам.
После того как проект создан, первым делом изменяем AndroidManifest, добавив в него две строчки, запрашивающие разрешение.
Далее, в activity_my создаём несколько кнопок, присваиваем им id и назначаем методы, которые будут вызываться при нажатии.
Вот как это выглядит на экране.
Кнопки можно назвать как угодно.
Осталось самое интересное — научиться устанавливать соединение по bluetooth и обрабатывать нажатие кнопок.
В начале прошлой статьи писал о том, что когда покупал bluetooth модуль еще не знал куда его применить, но точно знал, что такая вещь в хозяйстве пригодиться. Прошло чуть времени и применение ему нашлось. В общем, есть у меня один проект, в котором МК управляет шаговыми двигателями, находиться всё это добро на балконе. Зимой на балконе холодно и неинтересно, поэтому отлаживать его удобнее из теплой комнаты, вот для этих целей и применил данный модуль.
Идея проекта: спроектировать устройство на базе микроконтроллера AVR для управления готовым GSM модулем (я выбрал модуль TC35 от SIEMENS, но можно использовать любой другой, если используется связь через последовательный порт RS232). Устройство должно быть компактным, минимально простым и надёжным.
Общая схема системы:
Для контроллера была выпилена такая платка:
Времени было много, поэтому в последствии я заказал платы у китайцев:
А когда с железом было закончено, следом пошёл процесс программирования. Всё написано на Си под AVR Studio 4.19. Полный проект выкладываю в конце статьи, если кому интересен полный код. Но пока поговорим об общении с GSM модулем.
Для большей понятности кода приведу заголовки:
Запись строк или отдельных символов в буфер производилась обычными функциями:
А отправка производится через обработчик прерывания:
Теперь для отправки нужно записать нужную команду в буфер (включая конечный символ \n), а затем включить прерывания опустошения регистра отправки (UDR):
Теперь о получении команд с модуля.
Модуль отправляет множество команд. Например, OK, RING, ERROR…
Иногда нужно, чтобы при получении команды контроллер смог опознать её и выполнить какое-то действие. Например, получен входящий звонок. Модуль при этом отправляет в контроллер:
В зависимости от настроек модуля, может отправлять ещё и номер того, кто звонит. Пока нет никакой программы, контроллер ничего с этим сделать не сможет (в лучшем случае) или (в худшем) сделает что не то, а то и вовсе зависнет (не сможет выйти из прерывания).
Требования к коду обработки:
1. Минимальное количество времени на сохранение полученных команд. Никаких задержек в программе прерывания быть не должно. Потом уже с полученным массивом будем делать что угодно.
2. Сохранение всех полученных команд в одном буфере. Для разделения отдельных будем использовать символ $.
3. Распознавание распространенных команд в числовые коды. Например, OK будет 1, ERROR — 4, RING — 2.
Приведу заголовки из предыдущей статьи с поправками:
Пишем обработчик прерывания приёма данных:
Теперь у нас все команды записаны в буфере. Можно в свободное время проверить переменную mess и если она не равна нулю — запустить обработчик команды. В самом проекте были добавлены команды для LCD экрана. Здесь я их пропущу за ненадобностью.
Полученные символы мы пропускаем через мясорубку. Делаем XOR операцию. Получаем таким образом уникальный код (не уверен на счёт уникальности, но пока не подводило). R^I^N^G нам даст 0x12. O^K даст 0x04. Этот код и количество символов (в команде) сохранены в переменных com_detect (глобальная) и count. Теперь запустим обработчик:
Распознали команду. Количество символов я ввёл для надёжности на случай если в длинной команде XOR код совпадёт. Распознаваемые команды можно добавлять. Нужно только подсчитать (или макросом) XOR код желаемой команды и присвоить ей цифру.
Так можно обрабатывать разные полученные команды.
Настало время рассказать про то, как очень полезно можно применить старенький мобильный телефон.
В данной статье речь будет идти о мобильном телефоне производства компании Siemens. Серия телефонов подойдет от Siemens С35 до Siemens M55. Так же возможен вариант работы с другими мобильными телефонами, других производителей те же Nokia, Ericsson. Основным требованием к телефону остается возможность подключить дата-кабель, обычно большинство телефонов подключались через конвертер на RS232 (COM порт персонального компьютера), то есть телефон должен работать по протоколу UART.
В интернет можно найти кучу устройств основанных на работе с мобильным телефоном, начиная от систем сигнализации (некоторые даже могут дозваниваться и передавать звук, некоторые даже видео для сетей 3G например). Прошивки правда люди не очень охотно открывают, видимо думают что сколотят состояние на продаже такой прошивки. Одним словом - капитализм V1.1. (звериный оскал).
Я в своё время купил на караваевых дачах для экспериментов Siemens C45 аж за 120 грн :-)
Скорость на которой точно работают мобильные телефоны компании Siemens составляет 19 200 бод.
Распиновка соединительного гнезда мобильного телефона показано на рисунке ниже:
Назначение выводов:
1 - земля
2 - сигнал наличия зарядного устройства
3 -
4 -
5 - отправка данных (TX)
6 - прием данных (RX)
7 -
8 -
9 - земля микрофона
10 - микрофон
11 - земля наушников
12 - вывод звука на наушники
Собственно я пользовался только тремя выводами: минус и контакты передачи/приема данных.
ВАЖНО: при подключении ноги микроконтроллера с выводом информации на вход мобильного телефона обязательно необходимо установить стабилитрон на 3Вольта, так как мобильный телефон принимает только 3 Вольта, если дать больше будет глючить и подвисать или вообще перестанет работать.
Схема подключения:
Для того чтобы была возможность работать с телефоном через так называемые AT команды его надо инициализировать, заодно таким образом можна проверить работоспособность самого телефона.
AT команды были разработаны специально для мобильный модулей GSM, AT комманды для телефонов Siemens в PDF формате.
Благо с форматом PDU работаю все без исключения телефоны.
Ниже представлен код программы которая выполняет отправку смс 1 раз в 2 минуты.
В одно время необходимо тестировал для данное устройство для вывода из рабочего режима вражеского мобильного телефона. Программа рассчитана на работу
Проблемы, которые возникли:
Не могу понять по каким причинам телефон перестал нормально реагировать на посылку AT команд.
Отправляю проверочную команду AT в ответ получаю ответ в виде моей команды "AT" и через 10-15 секунд слово "Error". Теоретически это означает что телефон не хочет работать с AT командами. Возникает вопрос, почему так случилось. До этого все работало отлично. Может кто сталкивался с такой проблемой, огромная просьба отписаться.
Не отсылается смс Siemens c45
Пробовал отсылать PDU часть как текстом так и в HEX формате, непомогает. Посоветуйте в какую сторону копать, если тема, конечно, еще жива!
Я думаю что проблема именно в
Заработало! Я отправлял
Ну вот и гуд! Что вообще
Ну вот и гуд! Что вообще собирал? или так поиграться?
Собирал что-то типа GSM
Собирал что-то типа GSM сигнализации.(на PIC18F2550) Пока планы - научить отправлять и принимать смс.
Отправлять научил. Учу принимать :)
Сейчас думаю как организовать парсинг ответа модема. Впринципе просто баловство, чтоб вечером не скучать..
Так а ты на PIC-ах только
Так а ты на PIC-ах только собирал?
Конвертирование из PDU в текст уже сделал. Там алгоритм немного туповатый.
Сам лично работал только с
Сам лично работал только с пиками. Так повелось. Валяются в ящике несколько штук. делаю на пике чтобы извести :).
Сделал, но не тестировал.
Сделал, но не тестировал. Формат PDU однозначно делали наркоманы-садисты.
Читайте также: