Съдържание:

WiFi IoT сензор за температура и влажност. Част: 8 IoT, Домашна автоматизация: 9 стъпки
WiFi IoT сензор за температура и влажност. Част: 8 IoT, Домашна автоматизация: 9 стъпки

Видео: WiFi IoT сензор за температура и влажност. Част: 8 IoT, Домашна автоматизация: 9 стъпки

Видео: WiFi IoT сензор за температура и влажност. Част: 8 IoT, Домашна автоматизация: 9 стъпки
Видео: #13 УМНЫЙ ДОМ TUYA wifi / ДАТЧИК ОСВЕЩЕННОСТИ с aliexpress 2024, Ноември
Anonim
WiFi IoT сензор за температура и влажност. Част: 8 IoT, Домашна автоматизация
WiFi IoT сензор за температура и влажност. Част: 8 IoT, Домашна автоматизация

Преамбюл

Тази статия документира практическата здравина и по -нататъшното разработване на по -ранен Instructable: „Pimping“вашето първо IoT WiFi устройство. Част 4: IoT, Домашна автоматизация, включително всички необходими софтуерни функционалности, за да се даде възможност за успешно внедряване в домашна домашна среда.

Въведение

Както бе споменато по -горе, тази инструкция описва обединяването на по -ранен пример за IoT с надежден дизайн на системата, позволяващ успешно справяне с практически случаи на употреба, като например; Катастрофична загуба на мощност, повреда на MQTT Broker, повреда на WiFi N/W, дистанционно преконфигуриране на сензора, конфигурируема стратегия за отчитане за намаляване на мрежовия трафик и калибриране на сензора по поръчка.

Бяха създадени общо 6 изключени устройства (вижте снимка 1 по -горе) и разпределени в дома ми, за да образуват първата ми сензорна мрежа на IoT.

Instructable също така преглежда конвенцията за наименуване на MQTT, използвана в първоначалната поредица от IoT Home Automation, като отстъпва място на по -балансирана, практична структура, позволяваща по -лесно отстраняване на грешки в IoT трафика в среда с множество IoT устройства.

Следват пълни подробности за дизайна на IoT сензора, включително; конструкция, изходен код, стратегия за тестване и OpenHAB конфигурации.

Какви части са ми необходими?

  1. 1 от ESP8266-01,
  2. 2 изключени 1uF електролитни кондензатори,
  3. 3 от 10K резистора,
  4. 1 от резистор 330R,
  5. 1 от диаметър 3 мм. LED,
  6. 1 изключено LD1117-33v, 3v3 LDO VReg. (Фарнел тук),
  7. 1 изключен DHT22 сензор за температура/влажност,
  8. 1 изключен Двоен 4way 0.1 "конектор,
  9. 1 от CAMDENBOSS RX2008/S-5 пластмасов корпус, саксия, ABS, 38 mm, 23 mm (Farnell тук),
  10. 1 изключен DC захранващ конектор, щепсел, 1 A, 2 мм, монтаж на панел (Farnell тук),
  11. 1 изключване на радиатор TO-220 24,4 ° C/W (Farnell тук),
  12. Различни термосвиваеми тръби (жълти, Ebay тук),
  13. IDC лентов кабел с различни дължини,
  14. Радиаторно съединение,
  15. Вероборд,
  16. Устройство за програмиране ESP8266-01. Виж тук; Практична конструкция на верига с лента, стъпка 9 нататък.

Какъв софтуер ми трябва?

  1. Arduino IDE 1.6.9
  2. Arduino IDE, конфигуриран да програмира ESP8266-01. Виж тук; Настройване на Arduino IDE за програмиране на ESP8266-01

Какви инструменти ми трябват?

  1. Поялник,
  2. Свредло и различни накрайници,
  3. Файлове,
  4. Ножовка,
  5. Здрав порок,
  6. Пистолет за горещ въздух,
  7. DMM.

Какви умения са ми необходими?

  1. Минимално разбиране на електрониката,
  2. Познаване на Arduino и неговата IDE,
  3. Основни умения за производство (запояване, рязане, пилене, пробиване и др.),
  4. Малко търпение,
  5. Известно разбиране за вашата домашна мрежа.

Обхванати теми

  1. Преглед на веригата
  2. Преглед на софтуерната система
  3. Преглед на софтуера
  4. Калибриране на сензора
  5. Конвенция за наименуване на теми на MQTT
  6. Конфигурация на OpenHAB
  7. Тестване на дизайна
  8. Заключение
  9. Използвани справки

Връзки за серия

Към част 7: Контролер за изучаване на светлини (преработен). Част 7: IoT, Домашна автоматизация

Към част 9: Мрежов контролер на IoT. Част 9: IoT, Домашна автоматизация

Стъпка 1: Преглед на веригата

Преглед на веригата
Преглед на веригата
Преглед на веригата
Преглед на веригата
Преглед на веригата
Преглед на веригата
Преглед на веригата
Преглед на веригата

Снимка 1 по -горе показва пълната схема на IoT сензора.

В основата на IoT устройството е ESP8266-01, който е свързан към DHT22 сензор за температура/влажност чрез 10K издърпващ резистор към GPIO2. Външен 5v се захранва с включен режим на захранване и се подава към устройството през 2 мм гнездо за монтиране на DC панел и се регулира локално с LD1117-33v, 3v3 LDO регулатор на напрежението, монтиран към външен радиатор с винт и гайка BZP M3.

Дизайнът включва 3 мм червен светодиод, свързан към GPIO0, който се използва за локална индикация за състоянието на IoT устройството по време на стартиране или всяко последващо състояние на грешка. Може да се използва и за идентифициране на устройството чрез ръчно активиране чрез интерфейса openHAB.

Пълният дизайн се вписва добре в ABS саксия, както е показано по -горе на снимка 2 и е поставен специално, за да се гарантира, че сензорът е възможно най -далеч от регулатора, за да се предотврати отклонението поради локални нагряващи ефекти (снимка 7 по -горе).

Платката е едно цяло парче вероборд, изрязано по форма и направено така, че да се побере в кутията (снимка 3 по -горе). Тази платка е закрепена на място с найлонов винт M3 с вдлъбнат найлон и две гайки, които прилепват към долната страна на сензора, като по този начин му позволяват да седи на равна повърхност.

Снимки 4… 6 показват различни състояния на строителството.

Стъпка 2: Преглед на софтуерната система

Преглед на софтуерната система
Преглед на софтуерната система
Преглед на софтуерната система
Преглед на софтуерната система

Това устройство за измерване на температура и влажност на IoT съдържа шест ключови софтуерни компонента, както е показано на снимка 1 по -горе.

SPIFFS

Това е бордовата система за SPI флаш файлове и се използва за съхраняване на следната информация (вижте снимка 2 по-горе);

  • Икони и html „Начална страница за конфигуриране на сензора“: Обслужва се от IoT устройството, когато не може да се свърже с вашата Wi -Fi мрежа на IoT (обикновено поради неправилна информация за защита) и предоставя на потребителя средства за дистанционно конфигуриране на сензора без нужда за препрограмиране или качване на ново SPIFFS съдържание.
  • Информация за сигурност: Тя съдържа информацията, използвана при включване на IoT устройството за свързване към вашата IoT WiFi мрежа и MQTT брокер. Информацията, предоставена чрез „Началната страница за конфигуриране на сензора“, се записва в този файл („secvals.txt“).
  • Информация за калибриране: Информацията, съдържаща се в този файл („calvals.txt“), се използва за калибриране на бордовия сензор за температура/влажност, ако е необходимо. Калибрационните константи могат да бъдат записани само на IoT устройството чрез MQTT команди от MQTT брокер.

Забележка: За първоначално настройване на устройството вижте тук за пълни подробности как да използвате SPIFFS с Arduino IDE.

mDNS сървър

Тази функционалност се активира, когато IoT устройството не успее да се свърже с вашата WiFi мрежа като WiFi станция и вместо това се превърна в WiFi точка за достъп, нещо подобно на домашен WiFi рутер. В случай на такъв рутер обикновено бихте се свързали с него, като въведете IP адреса на нещо като 192.168.1.1 (обикновено отпечатано върху етикет, прикрепен към кутията) директно в URL лентата на браузъра си, след което ще получите страница за вход, за да влезете потребителското име и паролата, за да ви позволи да конфигурирате устройството.

За ESP8266 в режим AP (режим на точка за достъп) устройството по подразбиране е IP адрес 192.168.4.1, но при работещ mDNS сървър трябва само да въведете удобното за хората име „SENSORSVR.local“в URL лентата на браузъра, за да видите „Начална страница за конфигуриране на сензора“.

MQTT клиент

Клиентът MQTT предоставя цялата необходима функционалност на; свържете се с вашия MQTT брокер на IoT мрежа, абонирайте се за избраните от вас теми и публикувайте полезни товари към дадена тема. Накратко, той предоставя основна функционалност на IoT.

HTTP уеб сървър

Както бе споменато по -горе, ако IoT устройството не може да се свърже с WiFi мрежата, чийто SSID, P/W и т.н. е дефиниран във файла за информация за сигурността, съхраняван в SPIFFS, устройството ще стане точка за достъп. След като се свържете с WiFi мрежата, предоставена от точката за достъп, наличието на HTTP уеб сървър ви позволява директно да се свържете с устройството и да промените конфигурацията му чрез използването на HTTP уеб браузър, чиято цел е да обслужва „Началната страница за конфигуриране на сензора“Уеб страница на страница, която също се съхранява в SPIFFS.

WiFi станция

Тази функционалност дава на IoT устройството възможност да се свърже с домашна WiFi мрежа, използвайки параметрите във файла с информация за сигурността, без това вашето IoT устройство няма да може да се абонира/публикува в MQTT Broker

WiFi точка за достъп

Възможността да се превърнете в WiFi точка за достъп е средство, чрез което IoT устройството ви позволява да се свързвате с него и да правите промени в конфигурацията чрез WiFi станция и браузър (като например Safari на Apple iPad).

Тази точка за достъп излъчва SSID = "SENSOR" + последните 6 цифри от MAC адреса на IoT устройството. Паролата за тази затворена мрежа се нарича „PASSWORD“с въображение

Стъпка 3: Преглед на софтуера

Преглед на софтуера
Преглед на софтуера
Преглед на софтуера
Преглед на софтуера

PreambleTo успешно компилиране на този изходен код ще ви трябват следните допълнителни библиотеки;

PubSubClient.h

  • От: Ник О'Лиъри
  • Предназначение: Позволява на устройството да публикува или да се абонира за теми за MQTT с даден брокер
  • От:

DHT.h

  • От: Adafruit
  • Предназначение: Библиотека за DHT сензор за температура/влажност
  • От:

Преглед на кода

Софтуерът използва машината на състоянието, както е показано на снимка 1 по-горе (пълно копие на източника, дадено по-долу). Има 5 основни състояния, както е показано по -долу;

  • В НЕГО

    Това състояние на инициализация е първото състояние, въведено след включване

  • НОКОНФИГ

    Това състояние се въвежда, ако след включване бъде открит невалиден или липсващ файл secvals.txt

  • В ЧАКА НА СЕВ

    Това състояние е преходно, въведено, докато няма WiFi мрежова връзка

  • ЧАКАЩ MQTT

    Това състояние е преходно, въведено след свързване на WiFi мрежа и докато няма връзка с MQTT брокер в тази мрежа

  • АКТИВЕН

    Това е нормалното работно състояние, въведено, след като се установи както Wi -Fi мрежова връзка, така и връзка с MQTT брокер. Именно в това състояние температурата и влажността на сензора се публикуват в MQTT Broker

Събитията, контролиращи преходите между състояния, са описани на снимка 1 по -горе. Преходите между състояния също се управляват от следните параметри на SecVals;

  • 1 -ви MQTT брокерски IP адрес. В пунктирана десетична форма AAA. BBB. CCC. DDD
  • 2 -ро порт за брокер на MQTT. Под цяло число.
  • Третият MQTT брокер се опитва да направи връзка, преди да премине от режим STA към режим AP. Под цяло число.
  • 4 -ти SSID на WiFi мрежата. Текст в свободна форма.
  • 5 -та парола за WiFi мрежа. Текст в свободна форма.

Както бе споменато по -горе, ако IoT устройството не може да се свърже като WiFi станция към WiFi мрежата, чиито SSID и P/W са дефинирани в secvals.txt, държан в SPIFFS, IoT устройството ще стане точка за достъп. След като бъде свързан с тази точка за достъп, той ще обслужва „Началната страница за конфигуриране на сензора“, както е показано по -горе на снимка 2 (чрез въвеждане на „SENSORSVR.local“или 192.168.4.1 в адресната лента на браузъра ви). Тази начална страница позволява преконфигуриране на сензора чрез HTTP браузър.

Отдалечен достъп, докато е в състояние АКТИВ

След като се свържете с MQTT Broker, също е възможно както повторно калибриране, така и преконфигуриране на устройството чрез публикации на теми на MQTT. Файлът calvals.txt има R/W достъп, а secvals.txt има достъп само за запис.

Отстраняване на грешки от потребителя

По време на зареждащата последователност светодиодът на IoT устройството дава следната обратна връзка за отстраняване на грешки

  • 1 Кратка флаш: Няма файл за конфигуриране, намиращ се в SPIFFS (secvals.txt)
  • 2 Кратки мигания: IoT устройството се опитва да се свърже с WiFi мрежа
  • Непрекъснато осветяване: IoT устройството се опитва да се свърже с MQTT Broker
  • Изключено: Устройството е активно
  • Забележка 1: „Началната страница за конфигуриране на сензора“не използва защитени гнезда и следователно разчита сигурността на вашата мрежа.
  • Забележка 2: За да програмирате всяко IoT устройство, низът MQTT ще изисква редактиране преди изтеглянето. Това е така, защото номерът на сензора е вграден в темата за низ на MQTT. т.е. „WFD/THSen/100/HumdStatus/1“за моите 6 устройства те са номерирани съответно 1… 6.

Стъпка 4: Калибриране на сензора

Калибриране на сензора
Калибриране на сензора
Калибриране на сензора
Калибриране на сензора

Когато IoT устройството се включи, като част от последователността за зареждане файл, наречен „cavals.txt“, се чете от SPIFFS. Съдържанието на този файл е калибриращи константи, както е посочено по -горе на снимка 1. Тези калибриращи константи се използват за регулиране на показанията, получени от сензора, за да ги приведат в съответствие с референтно устройство. Има още една стойност, която определя стратегия за отчитане на устройството и е описана по -долу заедно с процедурата, следвана за калибриране на сензорите.

Стратегия за отчитане Този параметър определя как дистанционният сензор отчита всякакви промени в параметрите на околната среда, локални за него. Ако е избрана стойност 0, дистанционният сензор ще публикува всяка промяна, която вижда в стойностите на температурата или влажността всеки път, когато сензорът се отчете (приблизително на всеки 10 секунди). Всяка друга стойност ще забави публикуването на промяна с 1 … 60 минути. Промяната на този параметър позволява оптимизиране на мрежовия трафик на MQTT.

Калибриране на температурата

За да калибрират сензорите, те бяха поставени в непосредствена близост един до друг, както е показано по -горе на снимка 2. Покрай тях поставих DMM с прикачена калибрирана термодвойка (Fluke 87 V) и след това наблюдавах изходите от всяко устройство чрез температурата на OpenHAB страница с тенденции в рамките на един ден, за да получите добра промяна на температурата. Отбелязах както статичното отместване (повишена нула „C“), така и скоростта на промяна на всяко устройство (усилване или наклон на графиката „M“) спрямо тази на стойността, идваща от калибрираната термодвойка. След това изчислих простата връзка y = mx+c (установих, че тя е достатъчно линейна, за да бъде близко приближение до графика с права линия) и програмирах всички необходими корекции в калибриращите константи чрез MQTTSpy.

След това устройствата бяха наблюдавани за още 24 часа, за да се гарантира, че калибрирането е успешно. Показател за това бяха следите от температура на страницата с тенденции на температурата на OpenHAB, всички бяха почти една върху друга.

Разбира се, ако се интересувате само от сближаване на температурата, можете да оставите всички стойности за калибриране по подразбиране.

Калибриране на влажността

Тъй като нямам средства за точно записване или дори контрол на локалната влажност на околната среда, за калибриране на сензорите, използвах подобен подход, както по -горе, като поставих всички устройства в непосредствена близост (снимка 2) и просто следя изхода им чрез OpenHAB Страница за влажност. След това избрах устройство №1 като еталон за калибриране и калибрирах всички устройства спрямо това.

Стъпка 5: Конвенция за наименуване на теми на MQTT

Конвенция за наименуване на теми на MQTT
Конвенция за наименуване на теми на MQTT
Конвенция за наименуване на теми на MQTT
Конвенция за наименуване на теми на MQTT

След много опити и грешки се спрях на конвенцията за именуване на темата, очертана на снимка 1 по -горе.

А именно „AccessMethod/DeviceType/WhichDevice/Action/SubDevice“

Това не е перфектно, но позволява да се прилагат полезни филтри, за да се видят всички изходи на сензора за дадена параметрична стойност, като по този начин позволява лесно сравнение, както на снимка 2 по -горе с MQTTSpy. Той също така поддържа разумно разширяемо логическо групиране на функционалността в рамките на дадено IoT устройство.

При внедряването на тези теми в софтуера използвах твърдо кодирани низове теми с фиксирани, вградени числови идентификатори за всяко устройство, за разлика от динамичното генериране на темите по време на изпълнение, за да се спести RAM и да се поддържа висока производителност.

Забележка: Ако не сте сигурни как да използвате MQTTSpy, вижте тук „Настройка на MQTT брокер. Част 2: IoT, Домашна автоматизация

Стъпка 6: Конфигурация на OpenHAB

Конфигурация на OpenHAB
Конфигурация на OpenHAB
Конфигурация на OpenHAB
Конфигурация на OpenHAB
Конфигурация на OpenHAB
Конфигурация на OpenHAB

Промених конфигурацията на OpenHAB, дадена в по -ранния ми Instructable (тук) и добавих в отделни записи за;

  • Гараж,
  • Зала,
  • Хол,
  • Кухня
  • Спалня за гости
  • Главна спалня

В картата на сайта вижте снимка 1 по -горе.

За всеки от тези записи добавих отделни карти на сайта, излагащи локални стойности на околната среда (Вижте снимка 2 по -горе);

  • Температура
  • Влажност
  • Топлинен индекс

Включих и превключвател за управление на локалния светодиод, монтиран в сензора.

Снимки 3… 5 показват отделни следи на живо за период от 24 часа за температура, влажност и RSSI (Индикация за силата на получения сигнал, основно мярка за това колко добре сензорът може да види WiFi мрежата).

На снимка 6 е даден пример за дългосрочна тенденция на влажност за период от една седмица.

Забележка 1: Ако не сте сигурни как да използвате OpenHAB, вижте тук „Настройка и конфигуриране на OpenHAB. Част 6: IoT, Домашна автоматизация

Забележка 2: По -долу е дадено копие на променената карта на сайта, файлове с правила и елементи, икони и т.н.

Стъпка 7: Тестване на дизайна

Тестване на дизайна
Тестване на дизайна
Тестване на дизайна
Тестване на дизайна

В по -голямата си част тествах IoT устройството през MQTT връзката с MQTT Spy, наблюдавайки изходния сигнал и отстраняването на грешки в трафика по серийния интерфейс. Това ми позволи да упражня всички налични абонирани теми и да проверя публикуваните отговори. Въпреки че това беше постигнато ръчно и понякога стана малко досадно, това позволи 100% покритие.

Основната машина на състоянието обаче се оказа малко трудна за тестване, тъй като разчиташе на наличието или отсъствието на WiFi мрежа, достъпът до която изисква специфични набори от параметри. Просто не беше практично да се използва домашната мрежа за това.

За да заобиколя този проблем, създадох свой собствен набор от фиктивни мрежи, използвайки ESP8266-01, конфигуриран като точки за достъп (снимка 1) със SSID на „DummyNet1“и „DummyNet2“съответно. Използването на схемата на снимка 2 над светодиода даде индикация дали IoT устройство е свързано към него. Въпреки че това не беше идеално решение за тестване (т.е. всяка от тези фиктивни WiFi мрежи не съдържаше MQTT сървър), беше възможно да се тества напълно машината на състоянието.

Включих копие на изходния код по -долу.

Стъпка 8: Заключение

Общ

Софтуерът в устройствата за интернет на нещата работи надеждно в продължение на много месеци, възстановявайки се от прекъсвания на домакинството (основно причинени от мен). Като цяло те са доста здрави устройства, които дават последователни и точни данни.

Подобрения

При разработването на софтуерни процедури за четене и писане в SPIFFS написах код, който отзад може да е малко по -напреднал, отколкото съм предполагал, използвайки указатели за празнота, преработка и указатели към указатели. Въпреки че е много гъвкав и върши добре работата, следващия път може да използвам JSON нещо по линия на ConfigFile.ino, за да го опростя малко.

  • Arduino GIT HUB Core

    https://github.com/esp8266/Arduino

  • Източник на ConfigFile.ino

    https://github.com/esp8266/Arduino/tree/master/libraries/esp8266/examples/ConfigFile

Списък с желания

Възнамерявах да използвам mDNS клиент за свързване с брокера, но библиотеката беше твърде нестабилна. Ето защо е необходимо да се посочи IP адресът на MQTT Broker вместо „MQTTSVR.local“. Ако mDNS библиотеката стане по -стабилна в бъдеще, ще добавя тази възможност към устройството.

Би било хубаво да има средство за точно наблюдение и контрол на влажността на околната среда, за да се калибрират сензорите срещу. Въпреки това, посоченият метод на калибриране дава добри относителни показания и изглежда сравнително точен в съответствие със спецификацията в техническия лист DHT22.

И накрая, като се има предвид сложността на софтуера, открих, че тества напълно кода, след като голяма промяна отнема време. Може да обмисля автоматизирано тестване на по -късна дата.

Стъпка 9: Използвани справки

Използвах следните източници, за да събера този Instructable заедно;

PubSubClient.h

  • От: Ник О'Лиъри
  • От:

DHT.h

  • От: Adafruit
  • От:

Информационен лист за DHT22

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