Беспроводная доска объявлений с использованием GSM и Arduino


Беспроводная доска объявлений, управляемая с помощью GSM, может найти множество применений в современном мире. С помощью данного устройства мы можем высвечивать на экране (например, ЖК дисплея) сообщение из любой точки мира. Все, что нужно будет сделать для этого, отправить SMS с вашего мобильного телефона с необходимыми служебными кодами (суффикс и префикс) перед и после текста SMS.

Внешний вид беспроводной доски объявлений с использованием GSM и Arduino

Описание работы устройства

В этом проекте плата Arduino Uno будет управлять всеми процессами, модуль GSM (SIM900A) будет принимать SMS-сообщения от мобильного телефона, а на экране ЖК дисплея будет отображаться принятое сообщение.

Элементы нашей конструкции

На проектируемую нами доску объявления мы можем передать любое сообщение, например, “#Circuit Digest*”, “#We Welcomes You*” при помощи SMS. В качестве префикса для передаваемого сообщения будем использовать ‘#’ – этот символ будет обозначать начало сообщения. А в качестве суффикса (концевика) сообщения будем использовать символ ‘*’.

Когда мы с помощью мобильного телефона осуществляем передачу SMS, GSM модуль принимает его и передает в Arduino. Плата Arduino извлекает смысловую часть сообщения из принятой строки и сохраняет ее в другой строке. А затем передает эту часть сообщения на ЖК дисплей. Структурная схема работы устройства показана на следующем рисунке.

Структурная схема работы устройства

Принципы работы GSM модуля

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

GSM модуль понимает только AT команды и может на них отвечать. На большинство AT команд модуль отвечает сообщением “OK“ если он выполнил ее успешно, и сообщением “ERROR” если во время выполнения команды произошли какие либо проблемы. Существуют различные AT команды, например, ATA – ответить на звонок, ATD – сделать звонок, AT+CMGR - прочесть сообщение, AT+CMGS – передать SMS сообщение и т.д. AT команды должны заканчиваться символом возврата каретки, то есть \r (0D в шестнадцатеричном формате), например, “AT+CMGS\r”. К примеру, в нашем проекте мы можем использовать следующие AT команды:

ATE0 For echo off
AT+CNMI=2,2,0,0,0 <ENTER> режим автоматического открытия принимаемых сообщений
ATD<Mobile Number>; <ENTER> осуществить вызов (например, ATD+919610126059;\r\n)
AT+CMGF=1 <ENTER> выбор текстового режима
AT+CMGS=”Mobile Number” <ENTER> назначение мобильного номера получателя
>>после этого мы можем написать наше сообщение
>>после написания сообщения
Ctrl+Z команда передачи сообщения (26 в десятичном коде).
ENTER=0x0d в шестнадцатеричном формате

SIM900 представляет собой четырех диапазонный GSM/GPRS модуль, способный функционировать в диапазонах 850/900/1800/1900 МГц в режимах передачи/приема голоса, SMS и данных. Отличается низким энергопотреблением. Внешний вид данного модуля показан на следующем рисунке.

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

Работа схемы

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

Схема беспроводной доски объявлений с использованием GSM и ArduinoЖК дисплей служит для отображения сообщений, принимаемых в SMS. Его контакты данных RS, EN, D4, D5, D6, D7 подсоединены к цифровым контактам Arduino 7, 6, 5, 4, 3, 2. Контакты Rx и Tx GSM модуля непосредственно подсоединены к контактам Tx и Rx платы Arduino. GSM модуль может быть запитан с помощью 12-вольтового адаптера.

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

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

После этого необходимо инициализировать последовательный порт для работы со скоростью 9600 бод/с, задать направление работы для используемых контактов и инициализировать GSM модуль.

Для приема данных по последовательному порту мы будем использовать две функции: Serial.available – которая будет проверять поступили ли какие-нибудь данные по последовательному порту, и Serial.read - которая будет считывать данные, поступившие по последовательному порту.

После приема данных по последовательному порту мы сохраняем их в строке, эту строку проверяем на наличие символов ‘#’ и ‘*’ чтобы найти начало и конец сообщения. Затем очищенное от служебных символов сообщение показывается на ЖК дисплее с использованием команды lcd.print.

В функции ‘gsm_init()’ первым делом проверяется подсоединен ли GSM модуль при помощи передачи ему команды ‘AT’. Если модуль ответил на эту команду ‘OK’ - значит с ним все в порядке. Система будет проверять GSM модуль до тех пор, пока не получит в ответ команду ‘OK’. Затем в GSM модуле происходит отключение режима ECHO (эхо) с помощью команды ATE0 (после выполнения AT-команд будет выводиться только ответ (результат их выполнения).). Затем происходит проверка доступности сети при помощи команды ‘AT+CPIN?’. Если вставленная в модуль карта является SIM-картой и у нее присутствует PIN-код, то модуль формирует ответ +CPIN: READY. Эта проверка будет осуществляться до тех пор пока сеть не будет найдена. Более наглядно все эти процессы можно посмотреть в видео в конце статьи.

Далее приведен полный текст программы.

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

(1 голосов, оценка: 5,00 из 5)
Загрузка...
347 просмотров

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

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