Мобилният телефон е революционно изобретение на века. Той е предназначен предимно за извършване и получаване на обаждания и текстови съобщения, но се превърна в целия свят, след като смартфонът се появи в картината. В този проект ние изграждаме система за домашна автоматизация, където човек може да управлява домакинските уреди, използвайки простия GSM базиран телефон, само като изпраща SMS чрез неговия телефон. В този проект не е необходим интелигентен телефон, а само старият GSM телефон ще работи за включване и изключване на всякакви домашни електронни уреди от всяко място. Можете също да проверите още някои проекти за безжична домашна автоматизация тук: IR дистанционно управлявана домашна автоматизация с помощта на Arduino, Bluetooth контролирана домашна автоматизация заедно с DTMF базирана домашна автоматизация, PC контролирана домашна автоматизация с помощта на Arduino.
Работно обяснение
В този проект Arduino се използва за контрол на целия процес. Тук използвахме GSM безжична комуникация за управление на домакински уреди. Изпращаме някои команди като „# A.light on *”, „# A.light off *” и така нататък за управление на битови уреди с променлив ток. След получаване на дадени команди от Arduino чрез GSM, Arduino изпраща сигнал към релета, за да включва или изключва домашните уреди с помощта на драйвер за реле.
Компоненти на веригата:
- Arduino UNO
- GSM модул
- ULN2003
- Реле 5 волта
- Крушка с държач
- Свързващи проводници
- Дъска за хляб
- 16x2 LCD
- Захранване
- Мобилен телефон
Тук използвахме префикс в командния низ, който е „#A.“. Този префикс се използва, за да идентифицира, че основната команда идва до нея и * в края на низа показва, че съобщението е приключило.
Когато изпращаме SMS към GSM модул от Mobile, тогава GSM получава този SMS и го изпраща на Arduino. Сега Arduino чете този SMS и извлича основната команда от получения низ и съхранява в променлива. След това Arduino сравнява този низ с предварително дефиниран низ. Ако се случи съвпадение, Arduino изпраща сигнал към релето чрез драйвер за реле за включване и изключване на домашните уреди. И относителният резултат също отпечатва на LCD 16x2 с помощта на подходящи команди.
Тук в този проект ние използвахме 3 нулева вата крушка за демонстрация, която показва вентилатор, светлина и телевизор.
По-долу е списъкът със съобщения, които изпращаме чрез SMS за включване и изключване на вентилатора, осветлението и телевизора:
S. No. |
Съобщение |
Операция |
1 |
# A.fan на * |
Включен вентилатор |
2 |
# A.fan изключен * |
ВЕНТИЛАТОР ИЗКЛЮЧЕН |
3 |
# A. светлина на * |
Светлината ВКЛ |
4 |
# A. светлина изключена * |
Загасена светлина |
5 |
# A.tv на * |
Включен телевизор |
6 |
# A.tv изключен * |
Изключен телевизор |
7 |
# A.всички на * |
Всички включени |
8 |
# A.всички * |
Всички ИЗКЛЮЧЕНИ |
GSM модул:
GSM модулът се използва в много комуникационни устройства, базирани на технологията GSM (Глобална система за мобилни комуникации). Използва се за взаимодействие с GSM мрежа с помощта на компютър. GSM модулът разбира само AT команди и може да реагира съответно. Най-основната команда е "AT", ако GSM отговори ОК, тогава работи добре, в противен случай отговаря с "ГРЕШКА". Има различни AT команди като ATA за отговор на повикване, ATD за набиране на повикване, AT + CMGR за четене на съобщението, AT + CMGS за изпращане на sms и т.н. AT командите трябва да бъдат последвани от Carriage return, т.е. \ 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 е пълен Quad-бандов GSM / GPRS модул, който осигурява GSM / GPRS 850/900/1800 / 1900MHz производителност за пренос на глас, SMS и данни с ниска консумация на енергия.
Описание на веригата
Връзките на тази схема за домашна автоматизация, базирана на GSM, са доста прости, тук течнокристалният дисплей се използва за показване на състоянието на домакинските уреди, който е директно свързан към arduino в 4-битов режим. Пиновете за данни на LCD, а именно RS, EN, D4, D5, D6, D7, са свързани към ардуино цифров пин номер 6, 7, 8, 9, 10, 11. А Rx и Tx щифтът на GSM модула е директно свързан към Tx и Rx щифт на Arduino съответно. А GSM модулът се захранва чрез 12-волтов адаптер. 5 волта SPDT 3 релета се използват за управление на LIGHT, FAN и TV. А релетата са свързани към arduino пин номер 3, 4 и 5 чрез реле драйвер ULN2003 за управление на LIGHT, FAN и TV съответно.
Код Описание
При програмирането на част от този проект, преди всичко в програмирането, ние включваме библиотека за дисплей с течни кристали и след това определяме данни и контролни щифтове за LCD и домакински уреди.
#include
След това серийната комуникация се инициализира при 9600 bps и дава посока на използвания щифт.
void setup () {lcd.begin (16,2); Serial.begin (9600); pinMode (led, OUTPUT); pinMode (Вентилатор, ИЗХОД); pinMode (Light, OUTPUT); pinMode (TV, OUTPUT);
За серийно получаване на данни използвахме две функции, едната е Serial.available, която проверява дали идват някакви серийни данни, а другата е Serial.read, която чете данните, които идват последователно.
докато (Serial.available ()) {char inChar = Serial.read ();
След като получаваме данни последователно, ние ги съхраняваме в низ и след това изчакваме Enter.
void serialEvent () {while (Serial.available ()) {if (Serial.find ("# A.")) {digitalWrite (led, HIGH); забавяне (1000); digitalWrite (led, 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 ("ON"); забавяне (200); } иначе ако (! (strncmp (str, "tv off", 6))) {digitalWrite (TV, LOW); lcd.setCursor (13,1); lcd.print ("OFF"); забавяне (200); }