Съдържание:
- Консумативи
- Стъпка 1: Необходим софтуер
- Стъпка 2: Донесете сензорни данни към Raspberry Pi с помощта на Simulink
- Стъпка 3: Показване на сензорни данни на 8x8 LED матрица
- Стъпка 4: Проектирайте алгоритъм в Simulink, за да решите дали вътрешната влажност е „добра“, „лоша“или „грозна“
- Стъпка 5: Влезте в климатичните данни на закрито и категоризираните данни в облака
- Стъпка 6: Заключение
Видео: Система за вътрешен мониторинг на климата на базата на Raspberry Pi: 6 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
Прочетете този блог и изградете своя собствена система, така че да можете да получавате сигнали, когато стаята ви е твърде суха или влажна.
Какво е система за мониторинг на климата в помещенията и защо се нуждаем от такава?
Системите за вътрешен мониторинг на климата осигуряват бърз поглед към ключовите статистически данни, свързани с климата, като температура и относителна влажност. Възможността да виждате тези статистически данни и да получавате сигнали на телефона си, когато стаята е твърде влажна или суха, може да бъде много полезно. Използвайки сигналите, можете да предприемете бързи необходими действия, за да постигнете максимален комфорт в стаята, като включите нагревателя или отворите прозорците. В този проект ще видим как да използваме Simulink за:
1) въведете статистически данни за климата (температура, относителна влажност и налягане) от Sense HAT в към Raspberry Pi
2) покажете измерените данни на 8x8 LED матрицата на Sense HAT
3) проектирайте алгоритъм, за да решите дали влажността в помещенията е „добра“, „лоша“или „грозна“.
4) регистрирайте данните в облака и изпратете сигнал, ако данните са категоризирани „грозни“(твърде влажни или сухи).
Консумативи
Raspberry Pi 3 Модел B
Raspberry Pi Sense ШАПКА
Стъпка 1: Необходим софтуер
Нуждаете се от MATLAB, Simulink и изберете добавки, за да следвате и изградите своя собствена система за мониторинг на климата в помещенията.
Отворете MATLAB с администраторски достъп (Щракнете с десния бутон върху иконата MATLAB и изберете Изпълни като администратор). Изберете Добавки от лентата с инструменти на MATLAB и щракнете върху Получаване на добавки.
Потърсете тук пакетите за поддръжка с имената им, изброени по -долу, и ги „Добавете“.
а. Пакет за поддръжка на MATLAB за хардуер на Raspberry Pi: Придобивайте входове и изпращайте изходи към Raspberry Pi платки и свързани устройства
б. Пакет за поддръжка на Simulink за хардуер на Raspberry Pi: Стартирайте модели Simulink на платки Raspberry Pi
° С. RPi_Indoor_Climate_Monitoring_System: Примерни модели, необходими за този проект
Забележка - По време на инсталацията следвайте инструкциите на екрана, за да настроите своя Pi да работи с MATLAB и Simulink.
Стъпка 2: Донесете сензорни данни към Raspberry Pi с помощта на Simulink
За тези, които не са запознати със Simulink, това е графична среда за програмиране, която се използва за моделиране и симулиране на динамични системи. След като сте проектирали алгоритъма си в Simulink, можете автоматично да генерирате код и да го вградите в Raspberry Pi или друг хардуер.
Въведете следното в командния прозорец на MATLAB, за да отворите първия примерен модел. Ще използваме този модел, за да внесем данни за температура, налягане и относителна влажност в Raspberry Pi.
> rpiSenseHatBringSensorData
Блоковете LPS25H Pressure Sensor и HTS221 Sensor Humidity Sensor са от библиотеката Sense HAT под Simulink Support Package за хардуерни библиотеки на Raspberry Pi.
Блоковете на обхвата са от библиотеката Sinks в библиотеките на Simulink. За да сте сигурни, че вашият модел е конфигуриран правилно, щракнете върху иконата на зъбно колело във вашия модел Simulink. Придвижете се до Хардуерно внедряване> Настройки на хардуерната платка> Целеви хардуерни ресурси.
Забележка - Не е необходимо да конфигурирате, ако сте следвали инструкциите за настройка, докато инсталирате пакета за поддръжка на Simulink за Raspberry Pi. Адресът на устройството се попълва автоматично до този на вашия Pi.
Уверете се, че адресът на устройството тук съвпада с IP адреса, който чувате, когато Pi се стартира. Може да се наложи да включите отново вашия Pi със слушалки, свързани към жака, за да чуете адреса на устройството.
Щракнете върху OK и натиснете бутона Run, както е показано по -долу. Уверете се, че вашият Pi е физически свързан към компютъра чрез USB кабел или е в същата Wi-Fi мрежа като вашия компютър.
Когато натиснете бутона Run в External режим, Simulink автоматично генерира C код, еквивалентен на вашия модел и изтегля изпълним файл в Raspberry Pi. И двата блока на обхвата са конфигурирани да се отварят, след като моделът започне да работи. Когато Simulink приключи с разгръщането на кода в Raspberry Pi, ще видите данните за налягането, температурата и относителната влажност на обхвата, както е показано по -долу.
Забележка - Кодът работи на Raspberry Pi и вие преглеждате действителните сигнали през блоковете на обхвата на Simulink, точно както бихте направили, ако имате осцилоскоп, свързан към самия хардуер. Стойността на температурата от двата сензора е малко по -далеч един от друг. Чувствайте се свободни да изберете този, който отразява по -отблизо действителната температура в стаята ви и да го използвате в следващите раздели. Във всички тестове с Sense HAT, които имахме, температурните стойности на сензора за влажност на HTS221 бяха по -близки до действителната температура в помещението. С това видяхме основите как да въведем сензорни данни от Sense HAT в Raspberry Pi.
Стъпка 3: Показване на сензорни данни на 8x8 LED матрица
В този раздел ще видим как частта от визуалния дисплей на този проект е добавена към последния модел. Елементите Sense HAT, които се използват в този раздел, са сензор за влажност (за получаване на относителна влажност и температура), сензор за налягане, LED матрица и джойстик. Джойстикът се използва за избор на сензор, който искаме да покажем.
За да отворите следващия примерен модел, въведете следното в командния прозорец MATLAB.
> rpiSenseHatDisplay
Блокът на джойстика е от библиотеката Sense HAT. Той ни помага да внесем данните за джойстика в Raspberry Pi, точно както блоковете от сензори за налягане и влажност направиха в предишния пример. Засега използваме блока Test Comfort, за да покажем „добро“(когато стойността на блока е 1) на LED матрицата. Той ще показва „лошо“, когато стойността на блока е 2 или „грозно“, когато стойността е 3 или 4. В следващия раздел ще видим действителния алгоритъм, който решава дали вътрешната влажност е добра, лоша или грозна. Нека разгледаме блока Selector, като кликнете два пъти върху него. Функционалните блокове MATLAB се използват за интегриране на кода MATLAB във вашия модел Simulink. В този случай въвеждаме SelectorFcn, даден по -долу.
функция [стойност, състояние] = SelectorFcn (JoyStickIn, налягане, влажност, температура, ihval)
постоянен JoyStickCount
ако е празен (JoyStickCount)
JoyStickCount = 1;
край
ако JoyStickIn == 1
JoyStickCount = JoyStickCount + 1;
ако JoyStickCount == 6
JoyStickCount = 1;
край
край
превключете JoyStickCount
случай 1 % Температура на дисплея в C
стойност = темп;
Състояние = 1;
случай 2 % Дисплейно налягане в атм
стойност = налягане/1013,25;
Състояние = 2;
корпус 3 % Показва относителна влажност в %
стойност = влажност;
Състояние = 3;
корпус 4 % Температура на показване в F.
стойност = temp*(9/5) +32;
Състояние = 4;
калъф 5 % Дисплей Добър/Лош/Грозен
стойност = ihval;
Състояние = 5;
в противен случай % Не показва/Показва 0
стойност = 0;
Състояние = 6;
край
Операторите за превключване обикновено се използват като механизъм за контрол на избора. В нашия случай искаме входът на джойстика да бъде контролът за избор и да избираме следващите данни, които да се показват при всяко натискане на бутона на джойстика. За тази цел ние създаваме цикъл if, който увеличава променливата JoyStickCount с всяко натискане на бутон (стойността на JoyStickIn е 1, ако има натискане на бутон). В същия цикъл, за да сме сигурни, че се движим само между петте опции, дадени по -горе, добавихме друго условие, което нулира стойността на променливата на 1. Използвайки това, ние избираме коя стойност ще се показва на LED матрицата. Случай 1 ще бъде по подразбиране, тъй като дефинираме JoyStickCount да започне от 1, а това означава, че LED матрицата ще показва температурата в Целзий. Променливата State се използва от блока с данни за превъртане, за да разбере коя стойност на сензора се показва в момента и каква единица трябва да се покаже. Сега, когато знаем как да изберем подходящия сензор за показване, нека да разгледаме как работи действителният дисплей.
Показване на символи и числа
За да се показва на Sense HAT LED матрица, ние създадохме 8x8 матрици за:
1) всички числа (0-9)
2) всички единици (° C, A, % и ° F)
3) десетична точка
4) азбуки от думите добър, лош и грозен.
Тези 8x8 матрици бяха използвани като вход за 8x8 RGB LED Matrix блок. Този блок свети светодиодите, съответстващи на онези елементи на матрицата, които имат стойност 1, както е показано по -долу.
Превъртане на текста
Блокът с данни за превъртане в нашия модел превърта през низове, които могат да бъдат с дължина до 6 знака. Стойността 6 беше избрана, тъй като това е най -дългият низ, който ще изведем в този проект, например 23.8 ° C или 99.1 ° F. Обърнете внимание, тук ° C се счита за един знак. Същата идея може да бъде разширена и за превъртане на низове с други дължини.
Ето един GIF, който показва как работи -
www.element14.com/community/videos/29400/l/gif
За да покажем низ от 6 знака всеки на матрицата 8x8, се нуждаем от изображение с размер 8x48 общо. За да покажем низ, който е дълъг максимум 4 знака, ще трябва да създадем матрица 8x32. Сега нека видим всичко бездействие, като натиснете бутона Run. Дисплеят по подразбиране на LED матрицата е стойността на температурата в ° C. Блокът Scope ще покаже състоянието и стойността от блока Selector. Натиснете бутона на джойстика на Sense HAT и задръжте за секунда, за да проверите дали стойността се променя към следващия изход на сензора, и повторете този процес, докато достигне стойност на състояние 5. За да наблюдавате алгоритъма, който преминава през всички случаи на категоризация на влажността в помещенията, променете стойността на блока Test Comfort на произволно число между 1 до 4. Забележете как промяната на стойността на блок в модела Simulink незабавно променя начина, по който кодът се държи на хардуера. Това може да бъде полезно в ситуации, в които човек иска да промени поведението на кода от отдалечено място. С това видяхме ключовите елементи зад аспекта на визуализацията на системата за мониторинг на климата. В следващия раздел ще научим как да завършим нашата система за мониторинг на климата в помещенията.
Стъпка 4: Проектирайте алгоритъм в Simulink, за да решите дали вътрешната влажност е „добра“, „лоша“или „грозна“
За да разберете дали стаята ви е прекалено влажна/суха или да знаете кое ниво на влажност в помещението се счита за удобно, има няколко метода. Използвайки тази статия, ние установихме крива на площ, за да свържем вътрешната относителна влажност и външната температура, както е показано по -горе.
Всяка относителна влажност в тази зона означава, че стаята ви е в удобна обстановка. Например, ако външната температура е -30 ° F, тогава всяка относителна влажност под 15% е приемлива. По същия начин, ако външната температура е 60 ° F, тогава всяка относителна влажност под 50% е приемлива. За да категоризирате вътрешната влажност в максимален комфорт (добър), среден комфорт (лош) или твърде влажен/сух (грозен), се нуждаете от външна температура и относителна влажност. Видяхме как да внесем относителна влажност в Raspberry Pi. Така че, нека се съсредоточим върху повишаването на външната температура. Въведете следното в командния прозорец на MATLAB, за да отворите модела:
> rpiOutdoorWeatherData
Блокът WeatherData се използва за въвеждане на външна температура на вашия град (в K) чрез https://openweathermap.org/. За да конфигурирате този блок, имате нужда от API ключ от уебсайта. След като създадете своя безплатен акаунт на този уебсайт, отидете на страницата на вашия акаунт. Разделът API ключове, показан по -долу, ви дава ключа.
Блокът WeatherData се нуждае от въвеждане на името на вашия град в определен формат. Посетете тази страница и въведете името на вашия град, след това символа запетая, последван от 2 букви за обозначаване на държава. Примери - Natick, САЩ и Chennai, IN. Ако търсенето върне резултат за вашия град, използвайте го в блока WeatherData в този конкретен формат. В случай, че вашият град е недостъпен, използвайте съседен град, чиито метеорологични условия са по -близки до вашите. Сега щракнете двукратно върху блока WeatherData и въведете името на вашия град и вашия API ключ от уебсайта.
Натиснете Run на този модел Simulink, за да проверите дали блокът може да внесе температурата на вашия град в Raspberry Pi. Нека сега да видим алгоритъма, който решава дали вътрешната влажност е добра, лоша или грозна. Въведете следното в командния прозорец на MATLAB, за да отворите следващия пример:
> rpisenseHatIHval
Може би сте забелязали, че блокът Test Comfort от предишния модел липсва и нов блок, наречен FindRoom Comfort, осигурява блока ihval към Selector. Щракнете двукратно върху този блок, за да го отворите и изследвате.
Използваме блока WeatherData, за да внесем външна температура. Подсистемата „Ограничения на влажността“представлява таблицата на относителната влажност спрямо външната температура, която видяхме по -горе. В зависимост от външната температура тя ще изведе каква трябва да бъде граничната стойност на максималната влажност. Нека отворим функционалния блок DecideIH MATLAB, като кликнете два пъти върху него.
Ако стойността на относителната влажност надвишава границата на максимална влажност, тогава знакът ще бъде положителен въз основа на начина, по който изваждаме данните, което означава, че стаята е твърде влажна. Извеждаме 3 (грозно) за този сценарий. Причината за използването на числа вместо низове е, че е лесно да се показва на графики и да се създават сигнали от. Останалите класификации във функцията MATLAB се основават на произволни критерии, които измислихме. Когато разликата е по -малка от 10, тя се категоризира като максимален комфорт, а когато е по -малка от 20, това е среден комфорт и над това е твърде сухо. Не се колебайте да стартирате този модел и да проверите нивото на комфорт в стаята си.
Стъпка 5: Влезте в климатичните данни на закрито и категоризираните данни в облака
В този следващ раздел ще видим как да регистрираме данни в облака. За да отворите този пример, въведете следното в командния прозорец на MATLAB.
> rpiSenseHatLogData
В този модел частта от дисплея на предишния примерен модел е целенасочено премахната, тъй като не се нуждаем от системата за наблюдение, за да показва статистиката, докато регистрира данни и изпраща сигнали. Използваме ThingSpeak, безплатна IoT платформа с отворен код, която включва анализи на MATLAB, за аспекта на регистрирането на данни. Избрахме ThingSpeak, тъй като има директни начини да програмираме Raspberry Pi и други евтини хардуерни платки за изпращане на данни към ThingSpeak с помощта на Simulink. Блокът ThingSpeak Write е от пакета за поддръжка на Simulink за хардуерна библиотека на Raspberry Pi и може да бъде конфигуриран с помощта на API API Key от вашия канал ThingSpeak. Подробни инструкции за това как да създадете канала са дадени по -долу. За непрекъснато регистриране на данни в облака, искате вашият Pi да работи независимо от Simulink. За целта можете да натиснете бутона „Разгръщане към хардуер“във вашия модел Simulink.
Създайте свой собствен канал ThingSpeak
Тези, които нямат акаунт, могат да се регистрират на уебсайта на ThingSpeak. Ако имате акаунт в MathWorks, автоматично имате акаунт в ThingSpeak.
- След като сте влезли, можете да създадете канал, като отидете в Канали> Моите канали и щракнете върху Нов канал.
- Всичко, от което се нуждаете, е име за канала и имена на полетата, които ще регистрирате, както е показано по -долу.
- Опцията Показване на местоположението на канала се нуждае от географската ширина и дължина на вашия град като вход и може да покаже местоположението вътре в канала на карта. (Примерните стойности, използвани тук, са за Natick, MA)
- След това натиснете Save Channel, за да завършите създаването на вашия канал.
4а. Предупреждение, ако данните са категоризирани „Грозни“
За да завършим нашата система за наблюдение на климата в помещенията, трябва да видим как да получаваме сигнали въз основа на облачни данни. Това е от решаващо значение, тъй като без него няма да можете да предприемете необходимите действия за промяна на нивото на комфорт в стаята. В този раздел ще видим как да получите известие на телефона си, когато данните в облака показват, че стаята е твърде влажна или суха. Ще постигнем това, като използваме две услуги: IFTTT Webhooks и ThingSpeak TimeControl. IFTTT (съкращение Ако това, тогава онова) е онлайн услуга, която може да обработва събития и да задейства действия въз основа на събитията.
Стъпки за настройка на IFTTT Webhooks
Забележка: Опитайте тези на компютър за най -добри резултати.
1) Създайте акаунт на ifttt.com (ако нямате такъв) и създайте нов аплет от страницата My Applets.
2) Щракнете върху синия бутон „това“, за да изберете услугата за задействане.
3) Потърсете и изберете Webhooks като услуга.
4) Изберете Получаване на уеб заявка и посочете име за събитието.
5) Изберете създаване на тригер.
6) Изберете „това“на следващата страница и потърсете известия.
7) Изберете изпращане на известие от приложението IFTTT.
8) Въведете името на събитието, което сте създали в Стъпка 2 на IFTTT и изберете създаване на действие.
9) Продължете, докато стигнете до последната стъпка, прегледайте и натиснете край.
10) Отидете на https://ifttt.com/maker_webhooks и щракнете върху бутона Настройки в горната част на страницата.
11) Отидете на URL адреса в раздела Информация за акаунта.
12) Въведете името на вашето събитие тук и кликнете върху „Тествайте го“.
13) Копирайте URL адреса на последния ред за бъдеща употреба (с ключа).
Стъпки за настройка на ThingSpeak TimeControl
1) Изберете Приложения> MATLAB анализ
2) Щракнете върху New на следващата страница и изберете Trigger Email from IFTTT и щракнете върху Create.
Важните части тук в кода на шаблона са:
Идентификатор на канал - Въведете вашия канал ThingSpeak, който има информацията за „вентила за вътрешна влажност“.
IFTTTURL - Въведете URL адреса, копиран от предишния раздел Стъпка 13.
readAPIKey - Въведете ключ на секцията ThingSpeak Channel. Action - този, който действа върху последната стойност. Променете го на следното, за да задействате сигнали.
3) На уебсайта на ThingSpeak щракнете върху Приложения> TimeControl.
4) Изберете Повтарящо се и изберете времева честота.
5) Щракнете върху Save TimeControl.
Сега MATLAB Analysis се изпълнява автоматично на всеки половин час и изпраща задействане към услугата IFTTT Webhooks, ако стойността е по -голяма или равна на 3. Тогава телефонното приложение IFTTT ще предупреди потребителя с известие, както е показано в началото на този раздел.
Стъпка 6: Заключение
С това видяхме всички важни аспекти как да изградите своя собствена система за мониторинг на климата. В този проект видяхме как Simulink може да се използва за -
- програмирайте Raspberry Pi, за да въведете данни от Sense HAT. Открояване - Визуализирайте данните в Simulink, тъй като кодът все още работи на Raspberry Pi.
- изграждане на визуален дисплей на системата за мониторинг на климата в помещенията. Открояване - Променете начина, по който кодът ви се държи на хардуера от Simulink.
- проектирайте алгоритъма на системата за мониторинг на климата в помещенията.
- регистрирайте данните от Raspberry Pi в облака и създавайте сигнали от регистрираните данни.
Какви са някои от промените, които бихте направили в тази система за мониторинг на климата в помещенията? Моля, споделете вашите предложения чрез коментари.
Препоръчано:
Raspberry Pi Вътрешна система за мониторинг и контрол на климата: 6 стъпки
Raspberry Pi Вътрешна система за мониторинг и контрол на климата: Хората искат да се чувстват комфортно в къщата си. Тъй като климатът в нашия район може да не ни подхожда, ние използваме много уреди за поддържане на здравословна вътрешна среда: нагревател, охладител на въздуха, овлажнител, изсушител, пречиствател и т.н. В днешно време е комуникация
Безплатна автоматична система за ръчно измиване на базата на Raspberry Pi за Covid-19: 4 стъпки
Безплатна автоматична система за ръчно измиване на базата на Raspberry Pi за Covid-19: Това е проста система за ръчно пране, използваща сензори за пир и Raspberry pi дъска. Това приложение е предназначено главно за хигиенни цели. Моделът може да бъде поставен на обществени места, болници, молове и др
Автоматична система за преминаване на железопътни линии, използваща вградена платформа на базата на Arduino: 9 стъпки
Автоматична система за железопътни пресичания, използваща вградена платформа Arduino: Коледа е само след седмица! Всички са заети с празненствата и получаването на подаръци, които, между другото, стават все по-трудни за получаване с безкрайни възможности навсякъде около нас. Какво ще кажете за класически подарък и добавете нотка на „Направи си сам“към
Поливна система на базата на Arduino: 8 стъпки
Напоителна система, базирана на Arduino: Contextualização O Brasil está entre os países com maior área irrigada do planeta e em cinco anos esta área pode crescer 65%, segundo estudo da Organização das Nações Unidas para a Alimentação e a Agricultura (FAO) Възможност за директора и
Индукционен металдетектор на базата на Arduino на базата на DIY: 5 стъпки
DIY Ардуино базиран импулсен метален детектор: Това е сравнително прост металдетектор с отлични характеристики