Оглавление:

Проект умного дома EF230: 7 шагов
Проект умного дома EF230: 7 шагов

Видео: Проект умного дома EF230: 7 шагов

Видео: Проект умного дома EF230: 7 шагов
Видео: Проект "Умный дом" 2024, Июль
Anonim
Проект умного дома EF230
Проект умного дома EF230

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

  • 1 Ардуино MKR 1000
  • 3 макета
  • 2 мини-фотоэлемента
  • 1 NPN транзисторы
  • 1 мини-выключатель питания
  • 1 светодиод - RGB (4 контакта)
  • 1 светодиод (цвет на ваш выбор)
  • 1 диод 1N4148
  • 1 резистор 10 кОм
  • 5 Резистор 100 Ом
  • 1 датчик температуры TMP36
  • 1 DAGU мотор-редуктор с передаточным отношением 48: 1
  • 25 перемычек
  • Шнур USB
  • Программа MATLAB
  • Руководство по экспериментам SIK для платы Arduino 101 / Genuino 101 - Ссылка на руководство по экспериментам SIK

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

Шаг 1: светочувствительный светодиод

  • Светочувствительная светодиодная установка предназначена для представления уличного света в доме, включающегося в ночное время.
  • Когда мини-фотоэлемент обнаруживает уменьшенное количество света, загорается светодиод.
  • Для умного дома это имеет значение для энергии и безопасности. Это позволит сэкономить электроэнергию, не выключая свет в течение дня, и обеспечит повышенную безопасность в ночное время.
  • Точное подключение и настройку для этой части проекта можно найти в эксперименте 7 в Руководстве по экспериментам SIK.

Шаг 2: мини-выключатель питания

  • Коммутатор - это первый шаг в обеспечении безопасности умного дома.
  • При включении коммутатор инициирует ответ, спрашивающий пользователя, хотят ли они войти в режим «Домой» или «В гостях».
  • Если выбран режим «Дом», охрана считается снятой с охраны, но при выборе режима «В гостях» система безопасности будет поставлена на охрану.
  • Подключение к этой части проекта можно найти в эксперименте 6 в Руководстве по экспериментам. Для умного дома светодиоды и их соединительные провода, найденные в эксперименте 6, включать не нужно.

Шаг 3: второй фотоэлемент

Второй фотоэлемент
Второй фотоэлемент
  • Второй фотоэлемент служит датчиком движения для системы безопасности умного дома.
  • Датчик используется только тогда, когда система переведена в режим «Нет на месте», как описано в предыдущем шаге.
  • Если фотоэлемент испытывает уменьшение количества света, которое он получает, он распознает это как движение внутри дома.
  • Настройку для этой части проекта можно найти в эксперименте 7 в SIK Experiment Guide. Однако в проводку необходимо включить только фотоэлемент и его соединительные провода.

Шаг 4: светодиод RGB

  • Светодиод RGB используется вместе с мини-выключателем питания и вторым фотоэлементом для системы безопасности умного дома.
  • Три разных цвета используются в качестве индикаторов для жителя умного дома.
  • Когда система переведена в режим «Домой», светодиод становится синим. Когда система находится в режиме «Нет на месте», светодиод становится зеленым. Когда фотоэлемент, используемый в качестве датчика движения, срабатывает, свет мигает красным.
  • Подключение светодиода RGB можно найти в эксперименте 3 Руководства по экспериментам SIK.

Шаг 5: Датчик температуры

  • Датчик температуры играет важную роль в экономии энергии в умном доме.
  • Житель может ввести желаемую температуру для своего дома, когда умный дом используется.
  • С помощью датчика температуры система определяет, насколько фактическая температура отличается от желаемой.
  • Настройку для датчика температуры можно найти в эксперименте 9 Руководства по экспериментам SIK.

Шаг 6: мотор-редуктор DAGU

Мотор-редуктор DAGU
Мотор-редуктор DAGU
  • Мотор позволяет умному дому регулировать температуру в доме исходя из заданной температуры и показаний датчика температуры.
  • Действуя как блок переменного тока в доме, двигатель будет вращаться с разными скоростями в зависимости от того, насколько фактическая температура выше заданной. Чем выше разница, тем быстрее крутится мотор.
  • Электропроводку двигателя можно найти в Руководстве по эксперименту в рамках эксперимента 11.

Шаг 7: Код

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

очистить; очистить s; чистый м; clc; закрыть все; % Очистите переменные arduino и servo, чтобы их можно было переопределять каждый раз, чтобы код работал эффективно (для правильной работы одного из циклов while необходимо «очистить m») a = arduino (); % Установить переменную arduino

s = сервопривод (a, 'D6'); % Установите сервопеременную

% Инициализировать переменные электронной почты для электронной почты с предупреждением системы безопасности

emails = {'вставить адрес получателя'}; % Массив электронных писем, на которые будет отправлено защитное письмо

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

setpref ('Интернет', 'E_mail', 'адрес электронной почты отправителя');

setpref ('Интернет', 'SMTP_Username', 'имя пользователя отправителя');

setpref ('Интернет', 'SMTP_Password', 'пароль отправителя');

props = 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 = 'Здравствуйте! Это система безопасности вашего Умного дома, информирующая вас о том, что за пределами вашего дома было обнаружено движение. Мы приняли необходимые меры и связались для вас с властями. Оставайтесь в безопасности. ';

пока правда

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, 'Поля', 1); % Запишите выбранную температуру в свой канал ThingSpeak

break% Прервать цикл while, чтобы меню не всплывало несколько раз

else% Если пользователь нажимает кнопку "Отмена" вместо ввода температуры

msg1 = msgbox ('Температура не выбрана, по умолчанию 85F', 'Предупреждение!'); % Сообщение, отображаемое пользователю после нажатия кнопки "Отмена"

waitfor (msg1); % Дождитесь закрытия окна сообщения, прежде чем продолжить

tempsel = 85; % Установите температуру, указанную в окне сообщения.

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Поля', 1); % Запишите выбранную температуру в свой канал ThingSpeak

break% Прервать цикл while, чтобы меню не всплывало несколько раз

конец

конец

пока правда

chID = 745517; % ThingSpeak ID канала

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'; % Контакт для красного свечения светодиода

greenp = 'D10'; % Контакт для зеленого свечения светодиода

bluep = 'D11'; % Пин для синего света от светодиода

if tempsel <tempF% Если выбранная температура выше комнатной

writePosition (s, 1); % Сервопривод начнет движение

pause (10)% Сервопривод будет продолжать вращаться в течение 10 секунд, чтобы показать, что кондиционер выключится через заданное время.

writePosition (s, 0); % Выключите вентилятор, чтобы продолжить код без включения вентилятора

tempsel = 150; % Измените значение температуры, чтобы выйти из цикла после выключения вентилятора, опять же просто с целью продолжения кода

конец

if lightl1 <= 3% Если первый фоторезистор обнаруживает низкий уровень освещенности

writeDigitalPin (a, 'A1', 1); % Включите красный светодиод, обозначающий наружное освещение.

else% Если уровень освещенности снова высокий

writeDigitalPin (a, 'A1', 0); % Выключите красный светодиод, когда уровень освещения снова станет достаточно высоким.

конец

если switchv> 3% Если переключатель включен

A = существует ('м', 'вар'); % Проверьте наличие переменной 'm', это инициализирует цикл while и позволит прервать его, когда выбран пункт меню (вот почему очистить m необходимо в начале кода)

в то время как A == 0% Цикл будет выполняться до тех пор, пока не будет существовать переменная 'm'

menutext = 'В какой режим безопасности вы хотите войти?'; % Текст для всплывающего меню безопасности

choices = {'Дома', 'В гостях'}; % Выбор для всплывающего меню безопасности

m = меню (текст меню, варианты выбора); % Всплывающее меню для режимов системы безопасности

break% Гарантирует, что цикл while разорван, поэтому меню не будет появляться несколько раз

конец

if m == 1% Если выбран режим 'Home'

writeDigitalPin (a, синий, 1); % Включите только синий свет в светодиоде, меняющем цвет

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

elseif m == 2% Если выбран режим «Нет на месте»

writeDigitalPin (a, голубой, 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, голубой, 0); % Полностью выключите светодиод, чтобы показать, что система безопасности выключена.

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

конец

конец

Рекомендуемые: