Съдържание:

Система за интелигентен дом Arduino: 7 стъпки
Система за интелигентен дом Arduino: 7 стъпки

Видео: Система за интелигентен дом Arduino: 7 стъпки

Видео: Система за интелигентен дом Arduino: 7 стъпки
Видео: Мини ПК на Intel N100 - AC8-N, мощная безвентиляторная платформа, установка Home Assistant OS 2024, Ноември
Anonim
Система за интелигентен дом Arduino
Система за интелигентен дом Arduino
Система за интелигентен дом Arduino
Система за интелигентен дом Arduino

В тази инструкция ще ви покажем как да създадете своя собствена система за интелигентен дом с дизайнера на приложения на MATLAB с дъска Sparkfun Red. Този Instructable може да се използва, за да се придобие базова представа за дизайнера на приложения на MATLAB, както и да се използва фоторезистор, сервомотор и PIR сензор за движение.

Стъпка 1: За да започнете: Материали

Този проект изисква следните материали:

- Arduino Uno (За този проект използвахме червена дъска Sparkfun)

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

- Един мини-серво мотор

- Един непрекъснат серво мотор

- Един PIR сензор за движение

- Един температурен сензор

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

- проводници и резистори, ако е необходимо

Стъпка 2: Стъпка 2: Приближаване на проблема за решаване

Основната цел на този проект беше да се създаде лесна за използване система за интелигентен дом чрез кодиране на дъска Arduino Uno с MATLAB. Първо си помислихме да работим само със сензор за температура и влажност, но ако останем с тези два сензора, нашата система за интелигентен дом няма да бъде лесно продаваема за широката аудитория. Решихме, че искаме да създадем цялостна енергийна система за интелигентен дом, която да работи като интелигентен термостат и система за сигурност. И накрая, искахме да работим с AppDesigner на MATLAB, за да може потребителят лесно да променя интелигентния дом, както пожелае.

Стъпка 3: Стъпка 3: Конфигуриране на GUI и основен поток на кода

Стъпка 3: Конфигуриране на GUI и основен поток на кода
Стъпка 3: Конфигуриране на GUI и основен поток на кода

За да започнете, ще трябва да отворите MATLABs AppDesigner и да поставите следното:

Две цифрови полета за редактиране за вход за горещ и студен праг

Бутон за отключване на вратата

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

Два етикета за комуникация с потребителя.

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

глобален а

a = arduino ('COM3', 'uno', 'Библиотеки', 'Servo'); global s global p global hotUI глобално coldUI глобално отключване global temp глобално curr_temp глобално int_light

В момента имаме само присвояване на променливата, така че компютърът ви да може да чете 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

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

Стъпка 5: Стъпка 4: Настройване на системата на вратата

Стъпка 4: Настройване на системата за врати
Стъпка 4: Настройване на системата за врати

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

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

За да конфигурирате серво мотора и фоторезистора:

За да кодирате системата на вратите:

Ще започнем в рамките на функцията за стартиране, за да вземем първоначалните показания за светлина.

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

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]; край % - Отключване на вратата - ако отключване == 1234 пауза (0,5); writePosition (s,.52) app. DoorStateLamp. Color = [0,85 0,33 0,10]; край

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

глобално отключване

отключване = 1234;

Стъпка 6: Стъпка 6: Настройка на системата за осветление на прожекторите

Стъпка 6: Настройване на системата за осветление на прожекторите
Стъпка 6: Настройване на системата за осветление на прожекторите

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

Когато стартирате кода MATLAB, сензорът за движение PIR ще започне да открива движение. След като открие някакъв вид движение, той ще прекъсне сигнала за захранване. След като този сигнал бъде прекъснат, светлината за наводнение ще се включи извън дома.

За да конфигурирате системата за осветление:

За да кодирате системата за осветление:

Този път можем да преминем към свойството Timer, защото не е необходимо да пишем допълнителни променливи.

human_detected = readDigitalPin (a, '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: Заключение

Сега, когато имате проект на вашия GUI с App Designer и вашия код за Arduino, вие сте готови да направите свои собствени редакции или да включите вашия Arduino и да продължите!

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