Автоответчик с использованием Arduino и GSM модуля

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

Внешний вид автоответчика с использованием Arduino и GSM модуля

В этой статье мы рассмотрим устройство для решения этой проблемы и создадим автоответчик (Automatic Call answering Machine) на основе платы Arduino и GSM модуля. В дальнейшем на это устройство вы можете записать свой голос/ответ и использовать его всегда когда вы не можете/не хотите ответить на звонок по мобильному телефону. Или, к примеру, вы сменили номер телефона, и хотите проинформировать об этом всех, кто звонит вам по старому номеру.

Необходимые компоненты

  1. Плата Arduino Uno.
  2. GSM модуль – Flyscale SIM 900.
  3. Голосовой модуль (Voice Module) ISD 1820.
  4. Адаптер на 12 В для подачи питания на GSM модуль.
  5. Батарейка 9 В для подачи питания на плату Arduino.
  6. Соединительные провода.

Внешний вид компонентов для сборки автоответчика

GSM модуль Fly Scale SIM900

GSM модули часто используются в разнообразных радиоэлектронных проектах для реализации возможностей удаленного доступа. Эти модули могут выполнять те же самые функции как и мобильные телефоны: совершение/прием вызовов, передача/прием SMS, соединение с сетью интернет при помощи технологии GPRS и т.д. Если вы подключите к GSM модулю микрофон и громкоговоритель вы можете превратить его в полноценный мобильный телефон. На нашем сайте вы можете посмотреть все проекты, в которых используется GSM модуль.

Как вы можете видеть на рисунке ниже GSM модуль включает в себя USART adapter (адаптер универсального синхронно-асинхронного приемопередатчика – то есть последовательный порт связи), поэтому его можно подключить к компьютеру с использованием модуля MAX232, или использовать его контакты Tx и Rx для подключения к микроконтроллеру. Также вы можете заметить разъемы MIC+, MIC-, SP+, SP-, к которым можно подключать микрофон и громкоговоритель. Модуль запитывается от адаптера на 12 В с помощью обычного разъема для постоянного тока (DC barrel jack).

Внешний вид GSM модуля Fly Scale SIM900

Вставьте SIM карту в соответствующий слот модуля и подайте питание на него – после этого вы должны заметить как загорится светоиод, сигнализирующий о подаче питания на модуль. После этого подождите около минуты и вы увидите как красный (или другого цвета) светодиод будет мигать один раз в каждые 3 секунды. Это означает что теперь модуль может установить соединение с вашей SIM картой. После этого вы можете подключать модуль к микроконтроллеру/плате Arduino.

Голосовой модуль (Voice Module) ISD 1820

Голосовой модуль ISD 1820 может добавить в ваши проекты голосовые объявления. Модуль способен записывать аудио сигнал в течение 10 секунд и затем воспроизводить его когда потребуется. Модуль включает в себя и микрофон, и динамик (8ohms 0.5watts) и выглядит примерно так, как показано на следующем рисунке.

Внешний вид голосового модуля ISD 1820 Распиновка голосового модуля ISD 1820

Модуль работает от напряжения +5V и может быть запитан с помощью контактов на его левой стороне. Также на нижней стороне модуля есть 3 кнопки с названиями Rec, PlayE и PlayL. Вы можете записать ваш голос нажимая кнопку Rec и затем воспроизвести его используя кнопку PlayE. При нажатии кнопки PlayL голос будет воспроизводиться так долго, как долго вы держите кнопку. Подать питание на модуль можно непосредственно с платы Arduino. В нашем проекте мы будем управлять контактом PLAYE используя контакт D8 платы Arduino. Таким образом, мы сможем воспроизводить записанный голос всегда, когда мы будем обнаруживать входящий звонок на GSM модуль.

Работа схемы

Схема устройства представлена на следующем рисунке.

Схема автоответчика с использованием Arduino и GSM модуля

Как вы можете видеть, мы подали питание на GSM модуль с помощью адаптера на 12V 1A, а на плату Arduino мы подали питание с помощью батарейки 9V, голосовой модуль ISD 1820 запитывается от платы Arduino. Записанный голос с данного модуля (с его контактов динамика) мы можем непосредственно передавать на контакты микрофона GSM модуля.

Плата Arduino и GSM модуль соединены по последовательному каналу связи, контакт Tx модуля подсоединен к контакту 9 платы Arduino, а контакт Rx модуля — к контакту 10 платы Arduino. Это позволит плате Arduino «прослушивать» GSM модуль. Когда на GSM модуль будет поступать входящий звонок плата Arduino будет обнаруживать это. Когда плата Arduino удостоверится в том, что звонок активен, она будет воспроизводить голосовое сообщение с голосового модуля при помощи подачи сигнала высокого уровня на свой контакт 8 в течение 200 мс – таким образом имитируется нажатие кнопки PlayE.

Программирование платы Arduino

Полный код программы приведен в конце статьи, здесь же мы рассмотрим только его наиболее важные фрагменты.

Перед началом программирования платы Arduino нам необходимо скачать библиотеку для работы с GSM модулем (GSM Library) с Github и добавить ее в Arduino IDE (в папку с библиотеками) с помощью Sketch -> Include Library -> Add .Zip file.

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

Мы задействуем последовательную связь на контактах 9 и 10 платы Arduino с помощью следующей команды:

Это стало возможным благодаря использованию нами библиотеки последовательной связи.

Внутри функции setup мы инициализировали последовательную связь с компьютером (для вывода информации в окно монитора последовательной связи) со скоростью 9600 бод/с и последовательную связь с модулем GSM также на скорости 9600 бод/с. На контакт 8 будет подаваться сигнал, инициирующий воспроизведение записанного голосового сообщения с голосового модуля, поэтому устанавливаем его в режим вывода данных.

Следующим этапом мы создадим функцию которая будет считывать данные от GSM модуля и понимать их содержание. Если для этой цели мы используем просто команду вида “gprs.read()”, то мы просто получим десятичные значения в коде ASCII, которые не будут нести никакого смысла для нас.

Поэтому в данной функции мы будем конвертировать эти десятичные значения в строки и объединять их чтобы получить результирующую строку. Окончательная строка будет храниться в переменной Fdata, которую можно будет сравнивать с другими строками.

Следующие строки используются для отладки программы, с помощью этих строк вы можете передавать любые AT команды из монитора последовательной связи (Serial monitor) GSM модулю и смотреть что модуль ответил на них.

Как описывалось ранее, плата Arduino постоянно проверяет принимает ли GSM модуль какие-нибудь звонки. Это можно осуществить с помощью проверки строки “RING” поскольку GSM модуль выдает эту строку каждый раз при входящем звонке. Когда плата Arduino обнаруживает звонок она ждет 5 секунд и затем передает команду “ATA” на GSM модуль, это заставляет GSM модуль ответить на звонок и после ответа на звонок он передает Arduino “OK”. После получения сигнала “OK” (до этого плата Arduino ждет) плата Arduino выдает на контакт 8 сигнал высокого уровня в течение 200 мс чтобы воспроизвести голосовое сообщение с голосового модуля.

Работа проекта

Подайте питание на все элементы проекта. Нажмите кнопку REC на голосовом модуле и запишите сообщение – оно может быть длительностью максимум 10 секунд.

Внешний вид проекта в работе

Теперь загрузите в плату Arduino код программы, приведенный в конце статьи и вставьте SIM карту в GSM модуль. После этого необходимо подождать около 2 минут чтобы GSM модуль установил соединение с сетью вашего сотового оператора. Как только он сделает это красный светодиод будет мигать каждые 3 секунды, что будет свидетельствовать о том, что ваша SIM карта готова к приему вызовов. Теперь вы можете позвонить на эту SIM карту с любого номера и в ответ вы должны услышать записанное вами сообщение после трех продолжительных гудков. Более подробно весь этот процесс можно посмотреть на видео, приведенном в конце статьи.

Исходный код программы

Хотя статья является переводом с другого сайта вы можете задавать вопросы по ней в комментариях – я постараюсь ответить на них потому что я сам стараюсь разобраться во всех проектах, которые я перевожу.

Видео, демонстрирующее работу схемы

(Проголосуй первым!)
Загрузка...
62 просмотров


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *