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

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

Автоматизация дома с использованием GSM и Arduino: внешний вид конструкции

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

Плата Arduino Uno
Источник питания
ЖК дисплей 16х2
GSM модуль
ULN2003
Реле на 5 В
Электрические лампочки с держателями (патронами)
Соединительные провода
Макетная плата
Мобильный телефон

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

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

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

В нашем проекте мы в SMS сообщениях будем использовать префикс “#A.” чтобы идентифицировать начало команды, а в конце сообщения будем использовать суффикс (концевик) “*“ чтобы идентифицировать конец команды.

Когда мы передаем SMS с мобильного телефона, GSM модуль принимает его и передает на плату Arduino. Плата Arduino принимает это сообщение, извлекает из него значащую часть и сохраняет ее в строковой переменной. После этого Arduino сравнивает эту строку с заранее определенными строками (шаблонами) для управления электронными устройствами. Если строки совпадают, то Arduino выдает команду через реле на включение/выключение соответствующего устройства и высвечивает на ЖК дисплее результат операции.
В нашем проекте для демонстрации мы использовали 3 электрические лампочки, которые условно будут обозначать вентилятор, свет и телевизор.

В следующей таблице приведен список сообщений, передаваемых с помощью SMS, для включения/выключения вентилятора, света и телевизора.

S.no. Message Operation
1 #A.fan on* Fan ON
2 #A.fan off* Fan OFF
3 #A.light on* Light ON
4 #A.light off* Light OFF
5 #A.tv on* TV ON
6 #A.tv off* TV Off
7 #A.all on* All ON
8 #A.all off* All OFF

Принципы работы 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

ЖК дисплей используется для отображения статуса операций и подключен к плате Arduino в 4-битном режиме. Контакты ЖК дисплея RS, EN, D4, D5, D6, D7 подсоединены к цифровым контактам Arduino 6, 7, 8, 9, 10, 11. Контакты Rx и Tx GSM непосредственно подключены к контактам Tx и Rx Arduino. GSM запитывается с помощью 12-вольтового адаптера. Три реле на 5 Вольт типа SPDT используются для управления света, вентилятора и телевизора. Реле подсоединены к контактам Arduino 3, 4 и 5 через драйвер реле ULN2003.

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

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

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

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

После приема данных по последовательному порту мы значащую часть SMS сообщения сохраняем в строковой переменной.

Затем в программе происходит сравнение этой строки с образцами строк и если фиксируется совпадение, то выдается команда на включение/выключение соответствующего устройства.

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

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

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


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

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