Съдържание:

Проект EF230 Smart Home: 7 стъпки
Проект EF230 Smart Home: 7 стъпки

Видео: Проект EF230 Smart Home: 7 стъпки

Видео: Проект EF230 Smart Home: 7 стъпки
Видео: Python Rover EF230 Project 2024, Юли
Anonim
Проект за интелигентен дом EF230
Проект за интелигентен дом EF230

Необходими части и материали:

  • 1 Arduino MKR 1000
  • 3 дъски
  • 2 мини фотоелемента
  • 1 NPN транзистори
  • 1 Мини превключвател на захранването
  • 1 LED - RGB (4 зъба)
  • 1 светодиод (цвят по ваш избор)
  • 1 диод 1N4148
  • 1 10K ома резистори
  • 5 100 ома резистор
  • 1 Температурен сензор TMP36
  • 1 DAGU 48: 1 Ratio Gearmotor
  • 25 джъмперни проводници
  • USB кабел
  • Програма MATLAB
  • Експериментално ръководство на SIK за дъската Arduino 101/Genuino 101 - Връзка към ръководството за експерименти на SIK

Този проект описва концептуалния дизайн на система за интелигентен дом, която ще използва данни, за да помогне на собствениците на жилища да оптимизират използването на енергия и сигурността си. Той включва светлинен сензор за включване на външни светлини през нощта, светлинен сензор за сигурност и температурен сензор и вентилатор за контрол на вътрешната температура.

Стъпка 1: LED чувствителен светодиод

  • Светлочувствителната LED настройка е предназначена да представлява външните светлини в къща, която се включва през нощта.
  • Когато мини фотоклетката усети намалено количество светлина, светодиодът ще светне.
  • За интелигентния дом това има енергийни и сигурни последици. Той ще спести енергия, като остави светлините изключени през деня и ще осигури повишена сигурност през нощта.
  • Точното окабеляване и настройка за тази част от проекта можете да намерите в експеримент 7 в Ръководството за експерименти на SIK.

Стъпка 2: Мини превключвател на захранването

  • Превключвателят е първата стъпка в процеса на сигурност на интелигентния дом.
  • Когато е включен, превключвателят ще инициира отговор, който пита потребителя дали желае да влезе в режим „Домашен“или „Отсъстващ“.
  • Ако е избран режим „У дома“, сигурността се счита за дезактивирана, но избирането на режим „Отсъствие“ще активира системата за сигурност.
  • Кабелите за тази част от проекта могат да бъдат намерени в експеримент 6 в Ръководството за експеримента. За целите на интелигентния дом, светодиодите и техните свързващи проводници, открити в експеримент 6, не е необходимо да се включват.

Стъпка 3: Втора фотоклетка

Втора фотоклетка
Втора фотоклетка
  • Втората фотоклетка служи като сензор за движение за системата за сигурност на интелигентния дом.
  • Сензорът се използва само когато системата е поставена в режим „Отсъствие“, както е описано в предишната стъпка.
  • Ако фотоклетката усети намаляване на количеството светлина, която получава, тя разпознава това като движение вътре в къщата.
  • Настройката за тази част от проекта може да бъде намерена в експеримент 7 в Ръководството за експерименти на SIK. Въпреки това, само фотоклетката и нейните свързващи проводници трябва да бъдат включени в окабеляването.

Стъпка 4: RGB LED

  • RGB LED се използва заедно с мини превключвателя на захранването и втората фотоклетка за системата за сигурност на интелигентния дом.
  • Трите различни цвята се използват като индикатори за обитателя на интелигентния дом.
  • Когато системата е поставена в режим „Начало“, светодиодът става син. Когато системата е поставена в режим „Отсъствие“, светодиодът свети в зелено. Когато фотоклетката, използвана като сензор за движение, се задейства, светлината мига в червено.
  • Кабелите за RGB LED могат да бъдат намерени в експеримент 3 от Ръководството за експерименти на SIK.

Стъпка 5: Температурен сензор

  • Температурният сензор е основна част от спестяването на енергия в интелигентния дом.
  • Жителят може да въведе желана температура за дома си, когато интелигентният дом се използва.
  • Температурният сензор е начинът, по който системата знае колко далеч е действителната температура от желаната температура.
  • Настройките за температурния сензор могат да бъдат намерени в експеримент 9 от Ръководството за експерименти на SIK.

Стъпка 6: DAGU Gearmotor

DAGU Gearmotor
DAGU Gearmotor
  • Моторът позволява на интелигентния дом да регулира температурата в къщата въз основа на желаната температура и показанията на температурния сензор.
  • Действайки като променливотоков уред в дома, моторът ще се върти с различни скорости в зависимост от това колко по -висока е действителната температура от желаната температура. Колкото по -голяма е разликата, толкова по -бързо се върти моторът.
  • Окабеляването на двигателя може да бъде намерено в Ръководството за експеримента в експеримент 11.

Стъпка 7: Код

  • Кодът за интелигентния дом включва множество потребителски интерфейси, които позволяват на обитателя лесно да разбере как работи и лесно да промени настройките.
  • Със системата за интелигентен дом, жителят ще получи предупреждение и имейл, ако сензорът за движение е изключен, докато те са далеч.
  • Единствената промяна, която трябва да се направи, е да вмъкнете информацията за имейла на изпращача и имейл адреса на получателя.

изчисти а; ясно s; ясно m; clc; затвори всички; % Изчистване на променливите arduino и servo, така че да могат да се предефинират всеки път, така че кодът да работи ефективно ("clear m" е необходимо, за да може един от циклите while да функционира правилно) a = arduino (); % Задайте променливата arduino

s = серво (a, 'D6'); % Задайте променливата на серво

% Инициализиране на имейл променливи за предупредителни имейли на системата за сигурност

имейли = {'вмъкни адрес на получател'}; % Масив от имейли, на които да се изпраща имейла за сигурност

% Настройки за предпочитания за имейл, необходими за използване на Gmail за изпращане на поща

setpref ('Интернет', 'E_mail', 'имейл адрес на изпращача');

setpref ('Internet', 'SMTP_Username', 'потребителско име на изпращача');

setpref ('Интернет', 'SMTP_Password', 'парола на изпращача');

реквизит = java.lang. System.getProperties;

props.setProperty ('mail.smtp.auth', 'вярно');

props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465');

% Тема и текстови променливи на имейла

subj = 'Сигнал за нарушителя в дома ви';

text = 'Здравейте, Това е вашата система за сигурност Smart Home, която ви информира, че е открито движение извън дома ви. Предприехме необходимите мерки и се свързахме с органите за вас. Пази се.';

докато е вярно

prompt = {'Въведете желаната домашна температура (между 65F и 85F):'}; % Подкани за менюто за въвеждане от потребителя

dlgtitle = 'Избор на температура'; % Заглавие за менюто за въвеждане от потребителя

dims = [1 30]; % Размери за менюто за въвеждане от потребителя

definput = {'72'}; % Вход по подразбиране, който се показва при първото отваряне на менюто

tempsel_array = inputdlg (подкана, dlgtitle, dims, definput); % Изскачащо меню за въвеждане от потребителя, което ще запише въведеното число в масив

if ~ isempty (tempsel_array) % Ако масивът НЕ е празен

tempsel_char = cell2mat (tempsel_array); % Конвертиране на масива в символен низ

tempsel = str2double (tempsel_char); % Преобразувайте символния низ в числа

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Запишете избраната температура във вашия канал ThingSpeak

break % Прекъсване от цикъла while, така че менюто да не се появява няколко пъти

else % Ако потребителят кликне върху отмени вместо да въведе температура

msg1 = msgbox ('Не е избрана температура, по подразбиране 85F', 'Внимание!'); % Съобщение, което се показва на потребителя след натискане на отмени

waitfor (msg1); % Изчакайте полето със съобщение да се затвори, преди да продължите

tempsel = 85; % Задайте температурата на това, което е посочено в полето за съобщения

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Запишете избраната температура във вашия канал ThingSpeak

break % Прекъсване от цикъла while, така че менюто да не се появява няколко пъти

край

край

докато е вярно

chID = 745517; % ThingSpeak ИД на канал

writeKey = 'G9XOQTP8KOVSCT0N'; % Ключ за достъп до канала ThingSpeak

% Инициализиране на сензори за извличане на данни

tempread = readVoltage (a, 'A3'); % Прочетете напрежението на температурния сензор

lightl1 = readVoltage (a, 'A2'); % Ниво на осветеност на фоторезистора към червения светодиод

lightl2 = readVoltage (a, 'A5'); % Ниво на светлина за фоторезистора, който отива в системата за сигурност

switchv = readVoltage (a, 'A0'); % Стойност за превключвателя

% Конвертирайте температурните данни от напрежение в градуси по Фаренхайт

tempC = (tempread - 0.5) * 100; % Преобразуване на напрежението в температура в Целзий

tempF = (tempC * 9/5) + 32; % Преобразуване на температурата в Целзий в температура в Фаренхайт

% Инициализирайте номерата на пиновете за многоцветния светодиод

redp = 'D9'; % ПИН за червена светлина от LED

greenp = 'D10'; % ПИН за зелена светлина от LED

bluep = 'D11'; % ПИН за синя светлина от LED

ако tempsel <tempF % Ако избраната температура е по -голяма от стайната

writePosition (s, 1); % Servo ще започне да се движи

пауза (10) % Servo ще продължи да се върти за 10 секунди, за да покаже, че AC ще се изключи след определено време

writePosition (s, 0); % Изключете вентилатора с цел продължаване на кода без включен вентилатор

tempsel = 150; % Променете стойността на температурата, за да излезете от контура след изключване на вентилатора, отново само с цел продължаване на кода

край

ако lightl1 <= 3 % Ако първият фоторезистор открие ниско ниво на осветеност

writeDigitalPin (a, 'A1', 1); % Включете червения светодиод, който представлява външни светлини

else % Ако нивото на светлината отново е високо

writeDigitalPin (a, 'A1', 0); % Изключете червения светодиод, когато нивото на светлината отново е достатъчно високо

край

ако switchv> 3 % Ако превключвателят е включен

A = съществува ('m', 'var'); % Проверете за съществуването на променлива „m“, това ще инициализира цикъла while и ще позволи да се прекъсне, когато е избран елемент от менюто (ето защо трябва да се направи изчистване на m в началото на кода)

докато A == 0 % Loop ще се изпълнява, докато не съществува променлива 'm'

menutext = 'В кой режим на защита искате да влезете?'; % Текст за изскачащото меню за защита

choices = {'Home', 'Away'}; % Избор за изскачащото меню за защита

m = меню (текст на менюто, избор); % Изскачащо меню за режимите на системата за сигурност

break % Гарантира, че цикълът while е прекъснат, така че менюто да не се появява няколко пъти

край

ако m == 1 % Ако е избран режим „Начало“

writeDigitalPin (a, bluep, 1); % Включете само синя светлина в светодиода за промяна на цвета

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

elseif m == 2 % Ако е избран режим „Отсъствие“

writeDigitalPin (a, bluep, 0);

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 1); % Включете само зелената светлина в светодиода за промяна на цвета

if lightl2 <= 3 % Ако нивото на светлината във втория фоторезистор е ниско, представляващо движение, открито от системата за сигурност

sendmail (имейли, subj, текст); % Изпращане на имейл с предварително определени имейл свойства writeDigitalPin (a, greenp, 0); % Мигащ червен цвят се включва и изключва 2 пъти

writeDigitalPin (a, redp, 1);

пауза (0,3)

writeDigitalPin (a, redp, 0);

пауза (0,3)

writeDigitalPin (a, redp, 1);

пауза (0,3)

writeDigitalPin (a, redp, 0);

пауза (0,3)

writeDigitalPin (a, redp, 1); % Завършете с непрекъснато червено след мигане, за да покажете, че има движение, докато нивото на светлината се върне нагоре

msg2 = msgbox ('Нарушител е открит от системата за сигурност, имейл е изпратен до собствениците на жилища, за да ги информира.', 'ВНИМАНИЕ!'); % Поле за съобщения, за да информира потребителя за движение и да информира за изпратения имейл waitfor (msg2) % Изчакайте полето със съобщение да се затвори, преди да продължите

иначе

writeDigitalPin (a, greenp, 1); % След като нивото на светлината се повиши отново, ще се върне към зелено

край

край

elseif switchv <3.3 % Ако превключвателят е изключен

writeDigitalPin (a, bluep, 0); % Изключете напълно светодиода, за да покажете, че системата за сигурност е изключена

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

край

край

Препоръчано: