Съдържание:

Монитор за температура и влажност: 6 стъпки (със снимки)
Монитор за температура и влажност: 6 стъпки (със снимки)

Видео: Монитор за температура и влажност: 6 стъпки (със снимки)

Видео: Монитор за температура и влажност: 6 стъпки (със снимки)
Видео: Zigbee сензор за светлина, температура и влажност с екран с електронно мастило Moes 2024, Ноември
Anonim
Монитор за температура и влажност
Монитор за температура и влажност
Монитор за температура и влажност
Монитор за температура и влажност

В тази инструкция ще ви покажа как да направите свой собствен монитор за температура и влажност във вашата всекидневна. Устройството също така разполага с WiFi възможности, с цел регистриране на данните на отдалечен сървър (например Raspberry Pi) и достъп до тях по -късно чрез прост уеб интерфейс.

Основните части на устройството са микроконтролер ESP8266, сензор за температура и влажност на DHT11 и LCD с 16x4 знака. Проектът е изцяло с отворен код, така че не се колебайте да изтеглите схемите, оформлението на платката и файловете за дизайн на кутията и да направите каквито и да е промени.

Стъпка 1: Инструменти и части

Инструменти и части
Инструменти и части
Инструменти и части
Инструменти и части
Инструменти и части
Инструменти и части
Инструменти и части
Инструменти и части

За да изградите монитора, ще ви трябват следните части:

1 x ESP-12F [2 €]-Доколкото знам ESP-12E и ESP-12F са основно идентични, с тази разлика, че ESP-12F има по-добра антена.

1 x DHT11 датчик за температура и влажност [0,80 €] - DHT22 също ще работи, но ще трябва да се направят някои промени в 3D модела на корпуса, DHT22 също е малко по -скъп.

1 x 16x4 символен LCD 5V [3.30 €] - Да, ще ви е необходим 5V такъв, тъй като печатната платка е проектирана така, че LCD ще се захранва директно от 5V, а не от регулатора на напрежението. Това беше направено, за да се намали натоварването на регулатора на напрежението, но и защото 5V дисплеите са по -евтини. Но не се притеснявайте, въпреки че ESP8266 работи на 3.3V, той все още ще работи добре.

1 x LD1117V33 SMD регулатор на напрежението, известен също като LD33 (пакет SOT223) [0,80 €]

1 x 100nF керамичен SMD кондензатор (пакет 0603)

1 x 10uF танталов SMD кондензатор (пакет 3528)

1 x 10K SMD резистор (пакет 0805)

1 x 10K тримерно гърне (през отвор)

1 x 47Ω SMD резистор (пакет 0805) - Това е само за ограничаване на тока, който отива към подсветката на LCD. Не се колебайте да експериментирате с различни стойности на съпротивление и да изберете интензитета, който предпочитате.

1 x SMD Momentary Switch [0.80 €] - Конкретното, което използвах, е това, но можете да използвате всеки моментен превключвател, който искате със същия отпечатък. Също така успях да намеря същите ключове на eBay за по -малко, като получих повече от един.

1 x 5,5x2,1 мм DC жак (монтаж на панел) [0,50 €] - Този, който използвах, има диаметър на изрязване на панела 8 мм и дължина 9 мм. Тя може лесно да бъде намерена в eBay, като потърсите „DC Jack Jack“(вижте приложената снимка).

1 x 2,54 мм (100 мили) 40-пинов мъжки щифт (през отвор)

1 x 2,54 мм (100 мили) 40-пинов обработен женски щифт (през отвор)

1 x 2,54 мм (100 мили) джъмпер - Същият е като този, използван на дънните платки на компютъра.

4 x M3 8 мм болта

4 x M3 4x4mm резбовани вложки - Те могат лесно да бъдат намерени, като потърсите „M3 медни месингови вложки за пресоване M3“в eBay (вижте приложената снимка).

4 x M2 12 мм болта

4 x M2 гайки

1 x USB Type A до 5.5x2.1mm DC щепселен кабел [1.5 €] - Това ще позволи да захранвате вашето устройство или от стандартно зарядно устройство за телефон, или почти от всеки компютър с USB порт. Устройството извлича само 300mA най -лошия случай и средно 250mA, така че дори USB 2.0 порт ще се справи.

1 x печатна платка - Дебелината на платката не е критична, така че просто отидете за 1,6 мм, което обикновено е най -евтиният вариант при повечето производители на печатни платки.

3 x парчета жила (около 60 мм всяка)

3 x парчета тръби с радиатор (около 10 мм всяка)

И следните инструменти:

Поялник

USB към сериен конвертор - Това ще ви е необходимо за програмиране на ESP8266 на платката.

Отвертка Phillips и/или шестостен ключ - в зависимост от вида на винтовете, които ще използвате.

3D принтер - Ако нямате достъп до 3D принтер, винаги можете да използвате обща пластмасова кутия за проекти и сами да направите изрезите с Dremel. Минималните вътрешни размери за такава кутия трябва да бъдат 24 мм височина, 94 мм дължина и 66 мм ширина. Също така ще трябва да използвате 8 мм M2 стойки за монтаж на LCD.

Dremel - Необходим е само ако не отидете на 3D отпечатания корпус.

Стъпка 2: Създаване на печатни платки

Изработка на печатни платки
Изработка на печатни платки
Изработка на печатни платки
Изработка на печатни платки
Изработка на печатни платки
Изработка на печатни платки

Първата стъпка е да направите PCB. Можете да направите това, като го ецветете сами или просто отидете на уебсайта на любимия си производител на печатни платки и направете поръчка. Ако не планирате да правите промени в оформлението на дъската, можете просто да вземете ZIP файла, съдържащ прикачени към тази стъпка гербер файлове, и да го изпратите директно на производителя. Ако обаче искате да направите промени, схемите на KiCAD и файловете с оформление на платката могат да бъдат намерени тук.

След като хванете ръцете си върху дъските, е време да запоите компонентите. Това трябва да е доста ясно, но трябва да се отбележат няколко неща. Първо, все още не пристъпвайте към запояване на печатната платка на LCD заглавието, това ще трябва да стане по време на окончателното сглобяване поради начина, по който е проектиран корпусът. Ако правите свое собствено заграждение, не се колебайте да пренебрегнете този съвет.

Конекторът U3 е мястото, където ще бъде свързан сензорът DHT11. В идеалния случай за тази цел трябва да използвате 90 ° ъглова обработена женска щифтова глава. Но ако ви харесвам, не можете да намерите такъв, просто вземете прав и го огънете сами. Ако направите по -късно, проводниците на DHT11 също ще бъдат малко къси, така че ще трябва да запоите някои разширения. Разстоянието между заглавката на щифта и сензора след свързване трябва да бъде приблизително 5 мм.

Причината, поради която искате да използвате механично обработен щифт, е, че дупките са по -малки в сравнение с обикновените женски щифтове. Така че проводниците на сензора могат да седят плътно, създавайки стабилна връзка. Но можете също така да опитате запояване на DHT11 върху парче мъжка заглавка и да го свържете по този начин към обикновена ъглова женска щифтова глава, която трябва да работи също толкова добре.

Стъпка 3: Създаване на корпуса

Изработка на кутията
Изработка на кутията
Изработка на кутията
Изработка на кутията
Изработка на кутията
Изработка на кутията
Изработка на кутията
Изработка на кутията

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

И двете части могат да бъдат отпечатани със стандартна дюза 0,4 мм на височина на слоя 0,2 мм, като в моя случай времето за печат беше около 4 часа за двете части заедно. Капакът не изисква никакви опори основната част на корпуса, но това е необходимо, главно за частта под гнездата за винтове. След отпечатването бъдете много внимателни с премахването на опорите, успях да счупя едно от стойките за LCD дисплея, докато го правех, и трябваше да го залепя отново със суперлепило.

Корпусът е проектиран на FreeCAD, така че ако искате да направите някакви промени, той трябва да бъде доста ясен. STL файловете за отпечатване на кутията, както и дизайнерските файлове на FreeCAD могат да бъдат намерени на Thingiverse.

Стъпка 4: Сглобяване на монитора

С отпечатания корпус е време да сглобите всичко. Първо поставете LCD дисплея в кутията и го плъзнете наляво, така че ще има празнина между него и отвора за сензора.

Образ
Образ

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

Образ
Образ

След това натиснете сензора в отвора, плъзнете LCD дисплея на място и поставете печатната платка върху заглавката на щифта. Сега фиксирайте LCD дисплея на място с помощта на гайки и болтове М2 и запояйте платката върху щифта.

Образ
Образ

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

Образ
Образ

Последната стъпка е да инсталирате металните вложки с резба, така че капакът да може да се завинтва с болтове М3. За тази цел ще трябва да използвате своя поялник, за да ги загреете, така че да могат да бъдат избутани в отворите. Можете да разгледате тази инструкция, ако имате нужда от повече информация за добавяне на метални нишки към вашите 3D разпечатки.

Образ
Образ

Стъпка 5: Настройка на сървъра

Настройка на сървъра
Настройка на сървъра

Преди да качите фърмуера в ESP8266, трябва да направите още едно нещо, което е настройването на сървър за регистриране на данните, получени от устройството. За тази цел можете да използвате почти всяка Linux машина, която искате, от Raspberry Pi във вашата частна мрежа до капчица DigitalOcean. Отидох с по -късно, но процесът е почти същият, независимо какво избирате.

Инсталиране на Apache, MySQL (MariaDB) и PHP

Първо трябва да настроим LAMP или с други думи да инсталираме Apache, MySQL (MariaDB) и PHP на сървъра. За целта ще трябва да използвате мениджъра на пакети на вашия дистрибутор, за пример ще използвам apt, който е мениджърът на пакети, използван от почти всеки дистрибутор, базиран на Debian, включително Raspbian.

sudo apt актуализация

sudo apt инсталирате apache2 mysql-сървър mysql-клиент php libapache2-mod-php php-mysql

След като това стане, ако поставите IP адреса на вашия сървър в адресната лента на браузъра си, трябва да можете да видите страницата по подразбиране на Apache.

Настройване на базата данни

Сега имаме нужда от база данни за регистриране на данните. Първо, свържете се с MySQL като root, като стартирате, sudo mysql

И създайте базата данни и потребител с достъп до нея, както следва, СЪЗДАЙТЕ „сензори“

ИЗПОЛЗВАЙТЕ „сензори“; CREATE TABLE `temperature` (` id` bigint (20) NOT NULL AUTO_INCREMENT, `client_id` smallint (6) NOT NULL,` value` smallint (6) NOT NULL, `created_at 'timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (` id`)) ДВИГАТЕЛ = InnoDB; СЪЗДАЙТЕ ТАБЛИЦА `влажност` (` id` bigint (20) NOT NULL AUTO_INCREMENT, `client_id` smallint (6) NOT NULL,` value` smallint (6) NOT NULL, `created_at 'timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (` id`)) ДВИГАТЕЛ = InnoDB; CREATE USER '[потребителско име]'@'localhost' ИДЕНТИФИЦИРАНО ОТ '[парола]'; ПРЕДОСТАВЕТЕ ВСИЧКИ ПРИВИЛЕГИИ НА 'сензори'.* НА 'сензори'@'localhost'; ИЗХОД

Не забравяйте да замените [потребителско име] и [парола] с действителното потребителско име и парола за потребителя на MySQL, който харесвате. Също така ги запишете, защото ще ви трябват за следващата стъпка.

Конфигуриране на скриптове за регистриране и уеб интерфейс

Преминете към директорията/var/www/html, която е коренът на документа на виртуалния хост по подразбиране на Apache, изтрийте HTML файла, който съдържа уеб страницата по подразбиране и изтеглете скриптовете за регистриране и уеб интерфейс вътре в нея.

cd/var/www/html

sudo rm index.html sudo wget https://raw.githubusercontent.com/magkopian/esp-arduino-temp-monitor/master/server/log.php sudo wget https://raw.githubusercontent.com/magkopian/esp- arduino-temp-monitor/master/server/index.php

Сега редактирайте скрипта за регистриране с помощта на nano, sudo nano log.php

Ще трябва да замените [потребителското име] и [паролата] с потребителското име и паролата за потребителя на MySQL, който сте създали в предишната стъпка. Също така, заменете [клиентския ключ] с уникален низ и го отбележете. Това ще се използва като парола, за да може мониторът да се удостоверява със сървъра.

И накрая, редактирайте index.php с nano, sudo nano index.php

и заменете [потребителското име] и [паролата] с потребителското име и паролата за потребителя на MySQL, както направихте със скрипта за регистриране.

Настройване на HTTPS (по избор)

Това може да е по избор, но ако връзката между ESP8266 и сървъра е през Интернет, силно се препоръчва да използвате някакво криптиране.

За съжаление, не можете просто да продължите напред и да използвате нещо като Let’s Encrypt за получаване на сертификат. Това е така, защото поне по време на писането, HTTP клиентската библиотека за ESP8266 все още изисква пръстовият отпечатък на сертификата да бъде предоставен като втори аргумент при извикване на http.begin (). Това означава, че ако използвате нещо като Let’s Encrypt, ще трябва да обновявате фърмуера на чипа на всеки 3 месеца, за да актуализирате пръстовия отпечатък на сертификата след всяко подновяване.

Един начин да заобиколите това би било да се генерира самоподписан сертификат, който изтича след много дълго време (например 10 години) и да се запази скриптът за регистриране на неговия собствен виртуален хост със собствен поддомейн. По този начин можете да имате уеб интерфейс за достъп до данните в отделен поддомейн, който ще използва подходящ сертификат от доверен орган. Използването на самоподписан сертификат в този случай не е проблем със сигурността, тъй като пръстовият отпечатък на сертификата, който еднозначно го идентифицира, ще бъде кодиран твърдо във фърмуера и сертификатът ще се използва само от ESP8266.

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

sudo openssl req -x509 -nodes -days 3650 -wkey rsa: 2048 -keyout /etc/ssl/private/sensors.key -out /etc/ssl/certs/sensors.crt

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

След това създайте нова конфигурация на виртуален хост, sudo nano /etc/apache2/sites-available/sensors-ssl.conf

със следното съдържание, Име на сървъра [поддомен] DocumentRoot/var/www/сензори SSLEngine ON SSLCertificateKeyFile /etc/ssl/private/sensors.key SSLCertificateFile /etc/ssl/certs/sensors.crt Опции +FollowSymlinks -Indexes AllowOverride All ErrorLog $ error-ssl.log CustomLog $ {APACHE_LOG_DIR} /sensors-access-ssl.log комбинирано

Отново, не забравяйте да замените [поддомейна] със същия поддомейн, който сте използвали със сертификата. В този момент ще трябва да деактивирате виртуалния хост по подразбиране на Apache, sudo a2dissite 000-default

променете името на основната директория на документа, sudo mv/var/www/html/var/www/сензори

и накрая активирайте новия виртуален хост и рестартирайте Apache, sudo a2ensite сензори-ssl

sudo systemctl рестартирайте apache2

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

openssl x509 -noout -fingerprint -sha1 -inform pem -in /etc/ssl/certs/sensors.crt

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

Сега, ако не искате да използвате самоподписан сертификат за настройка на уеб интерфейса, нов поддомейн и създаване на нова конфигурация на виртуален хост, sudo nano /etc/apache2/sites-available/sensors-web-ssl.conf

със следното съдържание, Име на сървъра [поддомейн] DocumentRoot/var/www/сензори #SSLEngine ON #SSLCertificateFile /etc/letsencrypt/live/[subdomain]/cert.pem #SSLCertificateKeyFile /etc/letsencrypt/live/[Subdomaincise /letsencrypt/live/ [поддомейн]

Не забравяйте да замените [поддомейна] с поддомейна, който сте настроили за уеб интерфейса. След това активирайте новия виртуален хост, рестартирайте Apache, инсталирайте certbot и получете сертификат за новия поддомейн от Let's Encrypt, sudo a2ensite сензори-web-ssl

sudo systemctl рестартирайте apache2 sudo apt актуализация sudo apt инсталирайте certbot sudo certbot certonly --apache -d [поддомейн]

След получаване на сертификата редактирайте отново конфигурацията на виртуалния хост, за да декомментирате редовете SSLEngine, SSLCertificateFile, SSLCertificateKeyFile и SSLCertificateChainFile и рестартирайте Apache.

И сега можете да използвате първия поддомейн, който използва самоподписания сертификат за изпращане на данните от ESP8266 до сървъра, докато използвате втория за достъп до уеб интерфейса от вашия браузър. Certbot също ще се погрижи за автоматично подновяване на сертификата Let's Encrypt на всеки 3 месеца, като използва системния таймер, който трябва да бъде активиран по подразбиране.

Стъпка 6: Програмиране на ESP8266

Програмиране на ESP8266
Програмиране на ESP8266

И накрая, остава само да заредите фърмуера на микроконтролера. За да направите това, изтеглете изходния код за фърмуера от тук и го отворете с помощта на Arduino IDE. Ще трябва да замените [SSID] и [Парола] с действителния SSID и парола за вашата WiFi мрежа. Също така ще трябва да замените [Client ID] и [Client Key] при извикването на функцията sprintf с тези, които сте използвали в PHP скрипта на сървъра. И накрая, ще трябва да замените [Host] с името на домейна или IP адреса на сървъра. Ако използвате HTTPS, ще трябва също да предоставите пръстовия отпечатък на вашия сертификат като втори аргумент при извикването на функцията на http.begin (). Обясних как да получа пръстов отпечатък на сертификата в раздела „Настройка на HTTPS“на предишната стъпка.

След това, ако още не сте го направили, ще трябва да инсталирате основния пакет на общността ESP8266, като използвате мениджъра на борда на Arduino IDE. След като това стане, изберете NodeMCU 1.0 (ESP-12E модул) от менюто на дъските. След това ще трябва да инсталирате библиотеката SimpleDHT с помощта на библиотечния мениджър. Накрая натиснете бутона Verify в горния ляв ъгъл на вашия IDE прозорец, за да се уверите, че кодът се компилира без грешки.

И сега най -накрая е време да запишете фърмуера на микроконтролера. За да направите това, преместете джъмпера JP1 вдясно, така че GPIO0 на ESP8266 ще бъде свързан към земята, което ще позволи режима на програмиране. След това свържете USB към сериен преобразувател, като използвате джъмперни проводници към заглавката за програмиране, обозначена като P1. Пин 1 на заглавката за програмиране е заземен, щифт 2 е приемният щифт на ESP8266 и щифт 3 на предаването. Нуждаете се от получаването на ESP8266, за да преминете към предаването на вашия USB към сериен преобразувател, предаването към приемането и разбира се земята към земята.

И накрая, захранвайте устройството с 5V, като използвате USB към DC жак кабел и свържете USB към сериен конвертор към вашия компютър. Вече трябва да можете да видите виртуалния сериен порт, където е свързан ESP8266, веднага щом отворите менюто с инструменти на вашата IDE. Сега просто натиснете бутона Качване и това е всичко! Ако всичко се случи според очакванията, трябва да можете да видите показанията за температура и влажност на LCD дисплея на устройството. След като ESP8266 се свърже с вашата мрежа и започне да комуникира със сървъра, текущата дата и час също трябва да се покажат на дисплея.

След няколко часа, когато сървърът ще събере добро количество данни, би трябвало да можете да видите диаграмите за температурата и влажността, като посетите http (s): // [host] /index.php?client_id= [client id]. Където [хост] е или IP адресът на вашия сървър или поддомейна, който използвате за уеб интерфейса, и [клиентски идентификатор] клиентският идентификатор на устройството, който, ако го оставите на стойността му по подразбиране, трябва да бъде 1.

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