Оглавление:

Система мониторинга внутреннего климата на базе Raspberry Pi: 6 шагов
Система мониторинга внутреннего климата на базе Raspberry Pi: 6 шагов

Видео: Система мониторинга внутреннего климата на базе Raspberry Pi: 6 шагов

Видео: Система мониторинга внутреннего климата на базе Raspberry Pi: 6 шагов
Видео: Собираем данные в умном доме по протоколу MQTT 2024, Ноябрь
Anonim
Система мониторинга внутреннего климата на базе Raspberry Pi
Система мониторинга внутреннего климата на базе Raspberry Pi

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

Что такое система мониторинга климата в помещении и зачем она нам нужна?

Системы мониторинга микроклимата в помещениях позволяют быстро просматривать ключевые статистические данные, связанные с климатом, такие как температура и относительная влажность. Возможность просматривать эту статистику и получать оповещения на свой телефон, когда в комнате слишком влажно или сухо, может быть очень полезной. С помощью предупреждений вы можете быстро предпринять необходимые действия для достижения максимального комфорта в комнате, включив обогреватель или открыв окна. В этом проекте мы увидим, как использовать Simulink для:

1) перенесите статистику климата (температуру, относительную влажность и давление) из Sense HAT в Raspberry Pi

2) отображение измеренных данных на светодиодной матрице 8x8 Sense HAT

3) разработать алгоритм определения влажности в помещении «Хорошая», «Плохая» или «Уродливая».

4) зарегистрируйте данные в облаке и отправьте предупреждение, если данные относятся к категории «Уродливые» (слишком влажные или сухие).

Запасы

Raspberry Pi 3 Модель B

Шляпа Raspberry Pi Sense

Шаг 1. Требуется программное обеспечение

Требуется программное обеспечение
Требуется программное обеспечение

Вам нужны MATLAB, Simulink и выбранные надстройки, чтобы продолжить и построить свою собственную систему мониторинга климата в помещении.

Откройте MATLAB с доступом администратора (щелкните правой кнопкой мыши значок MATLAB и выберите Запуск от имени администратора). Выберите Add-Ons из панели инструментов MATLAB и нажмите Get Add-Ons.

Найдите здесь пакеты поддержки, названия которых указаны ниже, и нажмите «Добавить».

а. Пакет поддержки MATLAB для оборудования Raspberry Pi: получение входных данных и отправка выходных данных на платы Raspberry Pi и подключенные устройства

б. Пакет поддержки Simulink для оборудования Raspberry Pi: запускайте модели Simulink на платах Raspberry Pi

c. RPi_Indoor_Climate_Monitoring_System: Примеры моделей, необходимых для этого проекта

Примечание. Во время установки следуйте инструкциям на экране, чтобы настроить Pi для работы с MATLAB и Simulink.

Шаг 2: перенесите данные датчика в Raspberry Pi с помощью Simulink

Перенести данные датчика в Raspberry Pi с помощью Simulink
Перенести данные датчика в Raspberry Pi с помощью Simulink

Для тех, кто не знаком с Simulink, это графическая среда программирования, которая используется для моделирования и моделирования динамических систем. После того, как вы разработали свой алгоритм в Simulink, вы можете автоматически сгенерировать код и встроить его в Raspberry Pi или другое оборудование.

Введите следующее в командном окне MATLAB, чтобы открыть первую примерную модель. Мы будем использовать эту модель для переноса данных о температуре, давлении и относительной влажности в Raspberry Pi.

> rpiSenseHatBringSensorData

Блоки Датчик давления LPS25H и Датчик влажности HTS221 взяты из библиотеки Sense HAT в пакете поддержки Simulink для библиотек оборудования Raspberry Pi.

Блоки области видимости взяты из библиотеки Sinks в библиотеках Simulink. Чтобы гарантировать, что ваша модель настроена правильно, щелкните значок шестеренки в вашей модели Simulink. Перейдите в раздел «Аппаратная реализация»> «Настройки аппаратной платы»> «Целевые аппаратные ресурсы».

Примечание. Вам не нужно настраивать, если вы следовали инструкциям по установке при установке пакета поддержки Simulink для Raspberry Pi. Адрес устройства автоматически подставляется в адрес вашего Pi.

Убедитесь, что адрес устройства здесь соответствует IP-адресу, который вы слышите при загрузке Pi. Возможно, вам придется повторно включить Pi с помощью наушников, подключенных к разъему, чтобы услышать адрес устройства.

Щелкните OK и нажмите кнопку Run, как показано ниже. Убедитесь, что ваш Pi физически подключен к ПК через USB-кабель или находится в той же сети Wi-Fi, что и ваш компьютер.

Когда вы нажимаете кнопку Run во внешнем режиме, Simulink автоматически генерирует код C, эквивалентный вашей модели, и загружает исполняемый файл в Raspberry Pi. Оба блока области видимости настроены на открытие после запуска модели. Когда Simulink завершит развертывание кода на Raspberry Pi, вы увидите данные о давлении, температуре и относительной влажности на осциллографах, как показано ниже.

Примечание. Код работает на Raspberry Pi, и вы просматриваете фактические сигналы через блоки осциллографа Simulink, как если бы у вас был осциллограф, подключенный к самому оборудованию. Значения температуры от двух датчиков немного отличаются друг от друга. Не стесняйтесь выбирать тот, который более точно отражает реальную температуру в вашей комнате, и используйте его в следующих разделах. Во всех тестах с Sense HAT, которые у нас были, значения температуры датчика влажности HTS221 были ближе к реальной температуре в помещении. На этом мы познакомились с основами переноса данных датчиков из Sense HAT в Raspberry Pi.

Шаг 3. Отображение данных датчика на светодиодной матрице 8x8

Отображение данных датчика на светодиодной матрице 8x8
Отображение данных датчика на светодиодной матрице 8x8
Отображение данных датчика на светодиодной матрице 8x8
Отображение данных датчика на светодиодной матрице 8x8

В этом разделе мы увидим, как часть визуального отображения этого проекта была добавлена к последней модели. В этом разделе используются элементы Sense HAT: датчик влажности (для получения относительной влажности и температуры), датчик давления, светодиодная матрица и джойстик. Джойстик используется для выбора датчика, который мы хотим отобразить.

Чтобы открыть следующий пример модели, введите следующее в Командном окне MATLAB.

> rpiSenseHatDisplay

Блок «Джойстик» взят из библиотеки Sense HAT. Это помогает нам передать данные джойстика в Raspberry Pi, как это делали блоки датчиков давления и влажности в предыдущем примере. На данный момент мы используем блок Test Comfort для отображения «хорошо» (когда значение блока равно 1) на светодиодной матрице. Будет отображаться «плохо», если значение блока равно 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

case 1% Отображение температуры в C

значение = темп;

Состояние = 1;

case 2% Отображение давления в атм.

значение = давление / 1013,25;

Состояние = 2;

case 3% Отображение относительной влажности в%

значение = влажность;

Состояние = 3;

case 4% Отображение температуры в F

значение = темп * (9/5) +32;

Состояние = 4;

case 5% Дисплей Хороший / Плохой / Уродливый

значение = ihval;

Состояние = 5;

в противном случае% Не отображать / Отображать 0

значение = 0;

Состояние = 6;

конец

Операторы switch-case обычно используются в качестве механизма управления выбором. В нашем случае мы хотим, чтобы вход джойстика был элементом управления выбора, и выбирали следующие данные, которые будут отображаться при каждом нажатии кнопки джойстика. Для этого мы настраиваем цикл if, который увеличивает переменную JoyStickCount при каждом нажатии кнопки (значение JoyStickIn равно 1, если есть нажатие кнопки). В том же цикле, чтобы гарантировать, что мы только циклически переключаемся между пятью опциями, приведенными выше, мы добавили еще одно условие, которое сбрасывает значение переменной на 1. Используя это, мы выбираем, какое значение будет отображаться на светодиодной матрице. Случай 1 будет значением по умолчанию, поскольку мы определяем, что JoyStickCount начинается с 1, и это означает, что светодиодная матрица будет отображать температуру в градусах Цельсия. Переменная State используется блоком данных Scroll, чтобы понять, какое значение датчика отображается в настоящее время и какие единицы измерения должны отображаться. Теперь, когда мы знаем, как правильно выбрать датчик для отображения, давайте посмотрим, как работает фактический дисплей.

Отображение символов и чисел

Для отображения на светодиодной матрице Sense HAT мы создали матрицы 8x8 для:

1) все числа (0-9)

2) все единицы (° C, A,% и ° F)

3) десятичная точка

4) алфавиты от слов хороший, плохой и некрасивый.

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

Прокрутка текста

Блок данных Scroll в нашей модели прокручивает строки длиной до 6 символов. Было выбрано значение 6, так как это самая длинная строка, которую мы будем выводить в этом проекте, например, 23,8 ° C или 99,1 ° F. Обратите внимание, здесь ° C считается одним символом. Ту же идею можно распространить и на строки прокрутки другой длины.

Вот GIF, который показывает, как это работает -

www.element14.com/community/videos/29400/l/gif

Чтобы отобразить строку из 6 символов каждая на матрице 8x8, нам нужно изображение размером 8x48 в сумме. Чтобы отобразить строку длиной не более 4 символов, нам нужно создать матрицу 8x32. Теперь давайте посмотрим, как все это бездействует, нажав кнопку «Выполнить». По умолчанию на светодиодной матрице отображается значение температуры в ° C. Блок Scope покажет состояние и значение из блока Selector. Нажмите кнопку-джойстик на Sense HAT и удерживайте в течение секунды, чтобы убедиться, что значение изменилось на следующий выход датчика, и повторяйте этот процесс, пока не достигнет значения State, равного 5. Чтобы наблюдать за переключением алгоритма во всех случаях категоризации влажности в помещении, измените значение блока Test Comfort на любое число от 1 до 4. Обратите внимание, как изменение значения блока в модели Simulink немедленно меняет способ поведения кода на оборудовании. Это может быть полезно в ситуациях, когда кто-то хочет изменить поведение кода из удаленного места. При этом мы увидели ключевые элементы, лежащие в основе аспекта визуализации системы мониторинга климата. В следующем разделе мы узнаем, как дополнить нашу систему мониторинга микроклимата в помещении.

Шаг 4. Разработайте алгоритм в Simulink, чтобы определить, является ли влажность в помещении «хорошей», «плохой» или «некрасивой»

Разработайте алгоритм в Simulink, чтобы определить, является ли влажность в помещении «хорошей», «плохой» или «некрасивой»
Разработайте алгоритм в Simulink, чтобы определить, является ли влажность в помещении «хорошей», «плохой» или «некрасивой»

Чтобы понять, является ли ваша комната слишком влажной / сухой, или узнать, какой уровень влажности в помещении считается комфортным, существует несколько методов. Используя эту статью, мы построили кривую площади, чтобы связать относительную влажность в помещении и температуру наружного воздуха, как показано выше.

Любое значение относительной влажности в этой области означает, что в вашей комнате комфортные условия. Например, если температура наружного воздуха составляет -30 ° F, приемлемо любое значение относительной влажности ниже 15%. Аналогичным образом, если температура наружного воздуха составляет 60 ° F, допустима относительная влажность ниже 50%. Чтобы разделить влажность в помещении на максимальный комфорт (хороший), средний комфорт (плохой) или слишком влажный / сухой (уродливый), вам нужны температура наружного воздуха и относительная влажность. Мы видели, как повысить относительную влажность в Raspberry Pi. Итак, давайте сосредоточимся на достижении наружной температуры. Введите следующее в командном окне MATLAB, чтобы открыть модель:

> rpiOutdoorWeatherData

Блок WeatherData используется для вывода внешней температуры вашего города (в K) с помощью https://openweathermap.org/. Для настройки этого блока вам понадобится API-ключ с сайта. После создания бесплатной учетной записи на этом веб-сайте перейдите на страницу своей учетной записи. Вкладка ключей API, показанная ниже, дает вам ключ.

Блок WeatherData требует ввода названия вашего города в определенном формате. Посетите эту страницу и введите название города, затем запятую и 2 буквы, обозначающие страну. Примеры - Натик, США и Ченнаи, Индиана. Если поиск возвращает результат для вашего города, используйте его в блоке 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 взят из пакета поддержки Simulink для аппаратной библиотеки Raspberry Pi и может быть настроен с помощью ключа API записи из вашего канала ThingSpeak. Подробные инструкции по созданию канала приведены ниже. Чтобы постоянно регистрировать данные в облаке, вы хотите, чтобы ваш Pi работал независимо от Simulink. Для этого вы можете нажать кнопку «Deploy to Hardware» в вашей модели Simulink.

Создайте свой собственный канал ThingSpeak

Те, у кого нет учетной записи, могут зарегистрироваться на веб-сайте ThingSpeak. Если у вас есть учетная запись MathWorks, у вас автоматически будет учетная запись ThingSpeak.

  • После входа в систему вы можете создать канал, перейдя в «Каналы»> «Мои каналы» и нажав «Новый канал».
  • Все, что вам нужно, это имя канала и имена полей, которые вы собираетесь регистрировать, как показано ниже.
  • Параметр «Показать местоположение канала» требует ввода широты и долготы вашего города и может отображать местоположение внутри канала на карте. (Используемые здесь примеры значений относятся к Натику, Массачусетс)
  • Затем нажмите «Сохранить канал», чтобы завершить создание канала.

4а. Оповещать, если данные относятся к категории «уродливых»

Чтобы завершить нашу систему мониторинга климата в помещении, мы должны узнать, как получать предупреждения на основе облачных данных. Это очень важно, потому что без него вы не сможете предпринять необходимые действия для изменения уровня комфорта в помещении. В этом разделе мы увидим, как получать уведомление на свой телефон, когда облачные данные указывают на то, что в комнате слишком влажно или сухо. Мы добьемся этого с помощью двух сервисов: IFTTT Webhooks и ThingSpeak TimeControl. IFTTT (расшифровывается как «Если это, то это») - это онлайн-сервис, который может обрабатывать события и запускать действия на основе событий.

Шаги по настройке IFTTT Webhooks

Примечание: попробуйте их на компьютере для достижения наилучших результатов.

1) Создайте учетную запись на ifttt.com (если у вас ее нет) и создайте новый апплет на странице «Мои апплеты».

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) Нажмите «Создать» на следующей странице, выберите «Запуск электронной почты из IFTTT» и нажмите «Создать».

Важными частями кода шаблона являются:

Идентификатор канала - введите свой канал ThingSpeak, который содержит информацию о влажности в помещении.

IFTTTURL - введите URL-адрес, скопированный из предыдущего раздела Шаг 13.

readAPIKey - введите ключ раздела ThingSpeak Channel. Action - тот, который действует на последнее значение. Измените его на следующее, чтобы запускать предупреждения.

3) На веб-сайте ThingSpeak щелкните Приложения> TimeControl.

4) Выберите «Повторяющийся» и выберите периодичность.

5) Щелкните Сохранить TimeControl.

Теперь MATLAB Analysis запускается автоматически каждые полчаса и отправляет триггер в службу IFTTT Webhooks, если значение больше или равно 3. Затем телефонное приложение IFTTT предупредит пользователя уведомлением, как показано в начале этого раздела.

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

Таким образом, мы рассмотрели все важные аспекты построения вашей собственной системы мониторинга климата. В этом проекте мы увидели, как Simulink можно использовать для -

  • запрограммируйте Raspberry Pi для передачи данных из Sense HAT. Выделите - визуализируйте данные в Simulink, поскольку код все еще работает на Raspberry Pi.
  • построить визуальный дисплей системы мониторинга микроклимата в помещении. Выделите - измените способ поведения вашего кода на оборудовании из Simulink.
  • разработать алгоритм системы мониторинга микроклимата в помещении.
  • записывать данные с Raspberry Pi в облако и создавать оповещения из зарегистрированных данных.

Какие изменения вы бы внесли в эту систему мониторинга микроклимата в помещении? Пожалуйста, поделитесь своими предложениями в комментариях.

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