Мобильный телефон - революционное изобретение века. Он был в первую очередь предназначен для совершения и приема звонков и текстовых сообщений, но стал целым миром после того, как на свет появился смартфон. В этом проекте мы создаем систему домашней автоматизации, в которой можно управлять бытовой техникой, используя простой телефон на базе GSM, просто отправив SMS через свой телефон. В этом проекте не нужен смартфон, просто старый телефон GSM будет включать и выключать любую бытовую электронику из любого места. Вы также можете проверить еще несколько проектов беспроводной домашней автоматизации здесь: домашняя автоматизация с дистанционным ИК-управлением с использованием Arduino, домашняя автоматизация с управлением по Bluetooth вместе с домашней автоматизацией на основе DTMF, домашняя автоматизация с ПК с использованием Arduino.
Рабочее объяснение
В этом проекте Arduino используется для управления всем процессом. Здесь мы использовали беспроводную связь GSM для управления бытовой техникой. Для управления бытовой техникой переменного тока мы отправляем некоторые команды, такие как «# A. свет включен *», «# A. свет выключен *» и так далее. После получения заданных команд от Arduino через GSM, Arduino отправляет сигнал на реле, чтобы включить или выключить бытовую технику с помощью драйвера реле.
Компоненты схемы:
- Arduino UNO
- GSM модуль
- ULN2003
- Реле 5 вольт
- Лампа с держателем
- Соединительные провода
- Хлебная доска
- ЖК-дисплей 16x2
- Источник питания
- Сотовый телефон
Здесь мы использовали префикс в командной строке «#A.». Этот префикс используется для обозначения того, что основная команда идет рядом с ней, а * в конце строки указывает, что сообщение было завершено.
Когда мы отправляем SMS на модуль GSM с мобильного телефона, GSM получает это SMS и отправляет его в Arduino. Теперь Arduino читает это SMS и извлекает основную команду из полученной строки и сохраняет ее в переменной. После этого Arduino сравнивает эту строку с предопределенной строкой. Если совпадение произошло, Arduino отправляет сигнал на реле через драйвер реле для включения и выключения бытовой техники. А относительный результат также выводится на ЖК-дисплей 16x2 с помощью соответствующих команд.
Здесь, в этом проекте, мы использовали 3 лампочки с нулевой мощностью для демонстрации, которая обозначает вентилятор, свет и телевизор.
Ниже приведен список сообщений, которые мы отправляем по SMS, чтобы включить и выключить вентилятор, свет и телевизор:
S.no. |
Сообщение |
Операция |
1 |
# A.fan on * |
Вентилятор включен |
2 |
# A.fan off * |
Вентилятор выключен |
3 |
# A. светится * |
Включить свет |
4 |
# A. выключить свет * |
Выключить свет |
5 |
# A.tv on * |
ТВ ВКЛ |
6 |
# A.tv off * |
ТВ выключен |
7 |
# A.все на * |
Все ВКЛ |
8 |
# A.все выкл * |
Все выключить |
Модуль GSM:
Модуль GSM используется во многих устройствах связи, основанных на технологии GSM (Глобальная система мобильной связи). Он используется для взаимодействия с сетью GSM с помощью компьютера. Модуль GSM понимает только AT-команды и может реагировать соответствующим образом. Самая основная команда - «AT», если GSM отвечает ОК, значит, она работает нормально, в противном случае она отвечает «ERROR». Существуют различные AT-команды, такие как ATA для ответа на звонок, ATD для набора номера, AT + CMGR для чтения сообщения, AT + CMGS для отправки sms и т. Д. После AT-команд должен следовать возврат каретки, т.е. \ r (0D в шестнадцатеричном формате), например «AT + CMGS \ r». Мы можем использовать модуль GSM, используя следующие команды:
ATE0 - для выключения эха
AT + CNMI = 2,2,0,0,0
ATD
AT + CMGF = 1
AT + CMGS = "Мобильный номер"
>> Теперь мы можем написать наше сообщение
>> После написания сообщения
Ctrl + Z отправить команду сообщения (26 в десятичной системе).
ENTER = 0x0d в HEX
SIM900 является полным трехдиапазонным / GPRS, GSM модуль, который обеспечивает GSM / GPRS 850/900/1800 / 1900MHz производительности для передачи голоса, SMS и данных с низким энергопотреблением.
Описание схемы
Подключения этой схемы домашней автоматизации на основе GSM довольно просты, здесь жидкокристаллический дисплей используется для отображения состояния бытовой техники, которая напрямую подключена к 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 3 используются для управления ОСВЕЩЕНИЕМ, ВЕНТИЛЯТОРОМ и ТВ. И реле подключены к контактам 3, 4 и 5 Arduino через драйвер реле ULN2003 для управления ОСВЕЩЕНИЕМ, ВЕНТИЛЯТОРОМ и ТВ соответственно.
Код Описание
В программной части этого проекта, в первую очередь в программировании, мы включаем библиотеку для жидкокристаллического дисплея, а затем мы определяем выводы данных и управления для ЖК-дисплея и бытовой техники.
#включают
После этого последовательная связь инициализируется на скорости 9600 бит / с и дает направление используемому контакту.
void setup () {lcd.begin (16,2); Serial.begin (9600); pinMode (светодиод, ВЫХОД); pinMode (Вентилятор, ВЫХОД); pinMode (Свет, ВЫХОД); pinMode (ТВ, ВЫХОД);
Для последовательного получения данных мы использовали две функции: одна - Serial.available, которая проверяет, поступают ли какие-либо последовательные данные, а другая - Serial.read, которая считывает данные, которые поступают последовательно.
в то время как (Serial.available ()) {char inChar = Serial.read ();
После последовательного получения данных мы сохранили их в строке и ждем Enter.
void serialEvent () {while (Serial.available ()) {if (Serial.find ("# A.")) {digitalWrite (светодиод, ВЫСОКИЙ); задержка (1000); digitalWrite (светодиод, LOW); в то время как (Serial.available ()) {char inChar = Serial.read (); str = inChar; если (inChar == '*') {temp = 1; возвращение; }
Когда приходит Enter, программа начинает сравнивать полученную строку с уже определенной строкой, и если строка соответствует, то выполняется относительная операция с использованием соответствующей команды, указанной в коде.
void check () {if (! (strncmp (str, "tv on", 5))) {digitalWrite (TV, HIGH); lcd.setCursor (13,1); lcd.print («ВКЛ»); задержка (200); } else if (! (strncmp (str, "ТВ выключено", 6))) {digitalWrite (TV, LOW); lcd.setCursor (13,1); lcd.print ("ВЫКЛ"); задержка (200); }