Оглавление:

Система умного дома Arduino: 7 шагов
Система умного дома Arduino: 7 шагов

Видео: Система умного дома Arduino: 7 шагов

Видео: Система умного дома Arduino: 7 шагов
Видео: Общие сведения о системе "Умный дом" на Arduino (Smart Home) - Центр РАЗУМ Омск 2024, Июнь
Anonim
Система умного дома Arduino
Система умного дома Arduino
Система умного дома Arduino
Система умного дома Arduino

В этом руководстве мы покажем вам, как создать свою собственную систему умного дома с помощью конструктора приложений MATLAB с доской Sparkfun Red. Это руководство можно использовать, чтобы помочь получить базовое представление о конструкторе приложений MATLAB, а также об использовании фоторезистора, серводвигателя и датчика движения PIR.

Шаг 1. Для начала: материалы

Для этого проекта требуются следующие материалы:

- Arduino Uno (для этого проекта мы использовали плату Sparkfun Red)

- Один фоторезистор

- Один мини-серводвигатель

- Один серводвигатель непрерывного действия

- Один датчик движения PIR

- Один датчик температуры

- 2 светодиода

- Провода и резисторы по мере необходимости

Шаг 2: Шаг 2: подход к решению проблемы

Основной целью этого проекта было создание простой в использовании системы умного дома путем кодирования платы Arduino Uno с помощью MATLAB. Сначала мы подумали о том, чтобы просто работать с датчиком температуры и влажности, однако, если бы мы остались с этими двумя датчиками, нашу систему умного дома было бы нелегко продать широкой аудитории. Мы решили, что хотим создать общую энергетическую систему умного дома, которая будет работать как умный термостат и система безопасности. Наконец, мы хотели работать с MATLAB's AppDesigner, чтобы пользователь мог легко изменять умный дом по своему усмотрению.

Шаг 3: Шаг 3: Настройка графического интерфейса и основного потока кода

Шаг 3: Настройка графического интерфейса и основного потока кода
Шаг 3: Настройка графического интерфейса и основного потока кода

Для начала вам нужно открыть MATLABs AppDesigner и разместить следующее:

Два числовых поля редактирования для ввода пороговых значений температуры и холода.

Кнопка для отпирания двери

И четыре индикаторные лампы для камина, двери, вентилятора и прожектора.

Две метки для связи с пользователем.

В этом проекте нам стало проще работать с глобальными переменными и функцией запуска внутри дизайнера. Вам понадобятся эти переменные в функции запуска:

глобальный

a = arduino ('COM3', 'uno', 'Библиотеки', 'Сервопривод'); global s global p global hotUI global coldUI global unlock global temp global curr_temp global int_light

Прямо сейчас у нас есть только присвоение переменной a, чтобы ваш компьютер мог читать Arduino. COM3 может отличаться в зависимости от того, какой порт может использовать ваш компьютер.

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

Примечание. Мы не давали никаких инструкций по подключению системы. Мы ссылались на руководство, прилагаемое к плате SparkFun Red.

Шаг 4: Шаг 3: Настройка системы термостата

Шаг 3: Настройка системы термостата
Шаг 3: Настройка системы термостата
Шаг 3: Настройка системы термостата
Шаг 3: Настройка системы термостата

Термостат работает следующим образом:

Пользователь будет вводить, какую температуру он считает слишком горячей или слишком холодной. Как только термометр снимает показания, если в доме слишком холодно, то «камин» (красный светодиод) включается и нагревает дом. Если в доме слишком жарко, то включится «вентилятор» (серводвигатель непрерывного действия), охлаждающий дом.

Чтобы закодировать систему термостата:

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

p = 'A0'% Вывод фоторезистора

volt = readVoltage (a, temp); celc = (вольт-0,5). * 100; curr_temp = celc * 9/5 + 32; app. Label_4. Text = num2str (curr_temp); % Номер метки может изменить паузу (10); % Может захотите поменять !!!!!

Затем мы завершим систему термостата в свойстве Timer.

глобальный curr_temp

global coldUI global глобальный hotUI, если curr_temp hotUI app. FanStateLamp. Color = [0,47 0,67 0,19]; % Включает зеленый индикатор графического интерфейса пользователя writePWMDutyCycle (a, 'D11',.9)% Следующие три строки кода запускают паузу сервовентилятора (10) writePWMDutyCycle (a, 'D11',.0) else app. FireplaceStateLamp. Color = [0,90 0,90 0,90]; % Это выключает все лампы графического интерфейса и камин app. FanStateLamp. Color = [0.9 0.9 0.9]; writeDigitalPin (a, 'D13', 0); конец

Шаг 5: Шаг 4: Настройка дверной системы

Шаг 4: Настройка дверной системы
Шаг 4: Настройка дверной системы

Функция двери работает следующим образом:

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

Чтобы настроить серводвигатель и фоторезистор:

Чтобы закодировать дверную систему:

Мы начнем с функции запуска, чтобы снять начальные показания освещенности.

s = servo (a, 'D9')% Контакт может измениться в зависимости от проводки

app. Label_4. Text = 'Откройте дверь, чтобы откалибровать систему'; пауза (15); % Это дает пользователю время открыть дверь int_light = readVoltage (a, p); app. Label_4. Text = 'Вы можете убрать палец';

Далее мы завершим код в свойстве Timer.

глобальная разблокировка

global int_light global s global a% Получить текущее значение освещенности для сравнения curr_light = readVoltage (a, p); % - Блокировка двери - если int_light <curr_light writePosition (s, 1)% Позиции сервопривода могут отличаться в зависимости от паузы двигателя (0,5); app. DoorStateLamp. Color = [0,47 0,67 0,19]; end% - Unlock Door - если unlock == 1234 пауза (0.5); writePosition (s,.52) app. DoorStateLamp. Color = [0,85 0,33 0,10]; конец

Наконец, мы создадим обратный вызов кнопки разблокировки. Как только пользователь нажимает кнопку разблокировки, глобальной переменной unlock будет присвоен номер, который может завершить последний оператор if в свойстве Timer.

глобальная разблокировка

разблокировка = 1234;

Шаг 6: Шаг 6: Настройка системы прожектора

Шаг 6: Настройка системы прожектора
Шаг 6: Настройка системы прожектора

Функция прожектора работает следующим образом:

Когда вы запускаете код MATLAB, датчик движения PIR начнет обнаруживать движение. Как только он обнаруживает какой-либо тип движения, он отключает сигнал питания. Как только этот сигнал будет отключен, за пределами дома включится световой поток.

Чтобы настроить систему прожектора:

Чтобы закодировать систему прожектора:

На этот раз мы можем перейти к свойству Timer, потому что нам не нужно писать никаких дополнительных переменных.

human_detected = readDigitalPin (а, 'D2'); % Pin может измениться в зависимости от конфигурации, если human_detected == 0 writeDigitalPin (a, 'D7', 1)% Pin может изменить app. FloodLightStateLamp. Color = [0,47 0,67 0,19]; elseif human_detected == 1 app. FloodLightStateLamp. Color = [0,9 0,9 0,9]; writeDigitalPin (a, 'D7', 0) конец

Шаг 7: Заключение

Теперь, когда у вас есть черновик вашего графического интерфейса с конструктором приложений и ваш код для Arduino, вы готовы внести свои собственные изменения или подключить Arduino - и вперед!

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