Съдържание:
- Стъпка 1: Инструменти и части
- Стъпка 2: Създаване на печатни платки
- Стъпка 3: Създаване на корпуса
- Стъпка 4: Сглобяване на монитора
- Стъпка 5: Настройка на сървъра
- Стъпка 6: Програмиране на ESP8266
Видео: Монитор за температура и влажност: 6 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:54
В тази инструкция ще ви покажа как да направите свой собствен монитор за температура и влажност във вашата всекидневна. Устройството също така разполага с 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
И накрая, остава само да заредите фърмуера на микроконтролера. За да направите това, изтеглете изходния код за фърмуера от тук и го отворете с помощта на 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.
Препоръчано:
Монитор за температура, влажност - Arduino Mega + Ethernet W5100: 5 стъпки
Монитор за температура, влажност - Arduino Mega + Ethernet W5100: Модул 1 - FLAT - хардуер: Arduino Mega 2560 Wiznet W5100 Ethernet щит 8x DS18B20 температурен сензор на шината OneWire - разделен на 4 шини OneWire (2,4,1,1) 2x цифрова температура и сензор за влажност DHT22 (AM2302) 1x температура и влажност
Лесен BLE с много ниска мощност в Arduino, част 2 - Монитор за температура/влажност - Rev 3: 7 стъпки
Лесен BLE с много ниска мощност в Arduino, част 2 - Монитор за температура/влажност - Ред. 3: Актуализация: 23 ноември 2020 г. - Първа подмяна на 2 x AAA батерии от 15 януари 2019 г., т.е. 22 месеца за 2xAAA алкални Актуализация: 7 април 2019 г. - Ред. 3 на lp_BLE_TempHumidity, добавя графики за дата/час, използвайки pfodApp V3.0.362+и автоматично регулиране, когато
Автоматизиране на оранжерия с LoRa! (Част 1) -- Сензори (температура, влажност, влажност на почвата): 5 стъпки
Автоматизиране на оранжерия с LoRa! (Част 1) || Сензори (температура, влажност, влажност на почвата): В този проект ще ви покажа как автоматизирах оранжерия. Това означава, че ще ви покажа как построих оранжерията и как свързах електрониката за захранване и автоматизация. Също така ще ви покажа как да програмирате Arduino платка, която използва L
Монитор за качество на въздуха с MQ135 и външен сензор за температура и влажност над MQTT: 4 стъпки
Монитор за качество на въздуха с MQ135 и външен сензор за температура и влажност над MQTT: Това е за тестови цели
Монитор за стайна температура и влажност: 6 стъпки
Монитор за стайна температура и влажност: Моят проект, QTempair, измерва стайната температура, влажността и качеството на въздуха. Този проект чете данни от сензорите, изпраща тези данни в базата данни и тези данни ще бъдат показани на уебсайт. Можете да запишете температура в настройките на