Сабақ 31/31: DHT11 және ESP01 SunFounder жинағын пайдаланып Wi-Fi арқылы температура мен ылғалдылықты өлшеу
Бұл жоба нұсқаулығы ESP8266 (ESP-01) модулі мен DHT11 сенсорын пайдаланып сымсыз температура мен ылғалдылық мониторинг жүйесін құруды көрсетеді. Соңында сізде өз веб-серверін жасайтын құрылғы болады, бұл жергілікті желіге қосылған кез келген құрылғыдан (смартфон, планшет немесе компьютер) нақты уақыттағы сенсор көрсеткіштерін көруге мүмкіндік береді. Бұл сенсорлардың физикалық әлемін веб-интерфейстердің цифрлық әлемімен байланыстыруды көрсететін негізгі IoT жобасы болып табылады.
Мұнда үйренетін дағдылар өте ауқымды қолданылады. Бұл нақты қондырғыны кең ауқымды практикалық қолданыстарға бейімдеуге болады, соның ішінде:
- Оңтайлы өсу жағдайларын қамтамасыз ету үшін жылыжай немесе бақша үшін қашықтан бақылау станциясын құру.
- Белгілі бір бөлмедегі, мысалы, шарап жертөлесіндегі немесе нәресте бөлмесіндегі климатты бақылау үшін қарапайым үй автоматтандыру жүйесін жасау.
- Мектептегі ғылыми жоба үшін арзан қоршаған орта деректерін тіркегішін орнату.
- Кенеттен температура өзгерістері туралы хабарлай алатын қарапайым қауіпсіздік немесе ескерту жүйесін әзірлеу.
Аппараттық құралдар мен компоненттер
Осы жобаны орындау үшін сізге келесі компоненттер қажет болады. Негізгі компоненттер - ESP8266 модулі мен DHT11 сенсоры, ал қалғандары модульді бағдарламалау және қуаттандыру үшін қажет.
- ESP8266 (ESP-01S) модулі: Кірістірілген Wi-Fi мүмкіндігі бар негізгі микроконтроллер.
- DHT11 температура мен ылғалдылық сенсоры: Қоршаған орта деректерін өлшейтін сенсор.
- Arduino Uno тақтасы (USB-сериялық түрлендіру үшін): Бұл жобада негізгі Arduino тақтасы оның өңдеу қуаты үшін пайдаланылмайды. Оның орнына USB-сериялық чипі ESP8266 модулін бағдарламалау үшін қолданылады.
- 330 Ом резистор: Токты шектеу үшін бастапқы LED жыпылықтау сынағы үшін қолданылады.
- 1кОм-нан 10кОм-ға дейінгі резистор: DHT11 сенсорының деректер желісі үшін жоғары тарту резисторы.
- LED және түйістіргіш сымдар: Сынақ кезеңі және барлық қажетті қосылымдарды жасау үшін.
- Макет тақтасы: Тізбек қосылымдарын жасау үшін.
Сым қосу нұсқаулығы
Сым қосу процесі кезеңдермен жүзеге асырылады. Алдымен ESP-01 бағдарламалау үшін негізгі тізбекті орнатамыз. Бұл Arduino Uno-ны бағдарламашы ретінде пайдалануды қамтиды. Бейне бұл қондырғыны анық көрсетеді. Негізгі қосылымдар келесідей:
Бағдарламалау режиміне өту үшін IO1 (GPIO1) түйреуішін Ground (GND) қосулы қосу керек. Бұл ESP8266-ға жаңа микробағдарламаны күту керектігін айтады. Бағдарламалау үшін қалған қосылымдар:
- VCC (3.3V) - EN (Enable): Бұл модульді қосады.
- GND - GND: Тізбек үшін ортақ жер.
- VCC (5V) - VCC (5V): Бағдарламашы тақтасын қуаттандыру үшін.
- RX (ESP) - TX (Arduino): Бағдарламашыдан модульге сериялық байланыс үшін.
- TX (ESP) - RX (Arduino): Модульден бағдарламашыға сериялық байланыс үшін.
- RST (Reset) - GND: Бұл бағдарламалаудан кейін модульді қалпына келтіру үшін қолданылатын уақытша қосылым.
ESP-01 бағдарламаланғаннан кейін сенсорға сым қосу қарапайым. DHT11 сенсоры тұрақты байланысты қамтамасыз ету үшін оның деректер желісінде жоғары тарту резисторын қажет етеді.
Сенсор қондырғысы үшін сым қосу келесідей:
- DHT11 VCC (1-түйреуіш) - 3.3V: Сенсорға қуат.
- DHT11 DATA (2-түйреуіш) - ESP-01 GPIO2 (IO2): Сенсор көрсеткіштері үшін деректер желісі. Осы деректер желісі мен 3.3V қуат желісі арасында 1кОм-нан 10кОм-ға дейінгі жоғары тарту резисторы қосылуы керек.
- DHT11 GND (4-түйреуіш) - GND: Сенсор үшін ортақ жер.
Arduino IDE дайындау
ESP8266 бағдарламалау үшін алдымен оның тақта қолдауын Arduino IDE-ге қосу керек. Бұл екі қадаммен орындалады:
- Тақта менеджерінің URL мекенжайын қосу:
File > Preferencesбөліміне өтіңіз. "Additional Boards Manager URLs" өрісіне келесі URL мекенжайын қойыңыз:http://arduino.esp8266.com/stable/package_esp8266com_index.jsonжәне "OK" түймесін басыңыз. - ESP8266 тақта пакетін орнату:
Tools > Board > Boards Manager...бөліміне өтіңіз. "esp8266" іздеңіз, "esp8266 by ESP8266 Community" тауып, "Install" түймесін басыңыз. Орнатқаннан кейінTools > Board > ESP8266 Boards > Generic ESP8266 Moduleбөліміне өтіп, тақтаны таңдауға болады.
DHT сенсор кітапханасын орнату
Код DHT11 сенсорымен байланысу үшін кітапханаға сүйенеді. Бұл кітапхана Arduino IDE-ге орнатылуы керек.
Tools > Manage Libraries...бөліміне өтіңіз.- "DHT sensor library" іздеңіз.
- Adafruit кітапханасын тауып, "Install" түймесін басыңыз. Бұл кітапхана сенсордан деректерді оқу процесін жеңілдетеді.
1-жоба: LED жыпылықтау сынағы
Сенсорға кіріспес бұрын, ESP-01 бағдарламалауға сәтті болатыныңызды тексеру өте маңызды. Бұл классикалық «Blink» мысалымен жасалады. Бейнеде құрастырылған екілік файлды экспорттау және оны жазу үшін бөлек пакеттік файлды пайдалану процесі көрсетілген, бұл арнайы USB-ден-сериялық қондырғыға арналған айналма жол. Мақсат - платадағы жарықдиодтың жыпылықтауын көру, бағдарламалау тізбегінің жұмыс істеп тұрғанын растау. Бағдарламалаудан кейін модульді іске қосу үшін IO1-ді GND-ге қосатын сымды ажыратып, содан кейін модульді қалпына келтіру үшін RST түйреуішін GND-ге қысқа уақыт қосу керек.
Жоба 2: DHT11-ді сериялық мониторда оқу
Бағдарламалау расталғаннан кейін, келесі қадам - DHT11 сенсорын қосу және оның деректерін оқу. Бұл жоба Adafruit DHT сенсор кітапханасындағы DHTtester мысалын пайдаланады. Код дұрыс түйреуіш пен сенсор түрін пайдалану үшін конфигурацияланған. Бұл бағдарламаны жазғаннан кейін, температура мен ылғалдылық көрсеткіштерін көру үшін сериялық мониторды (9600 бодқа орнатылған) ашуға болады.
Жоба 3: Веб-серверді орнату
Соңғы жоба бәрін біріктіреді. ESP8266 жергілікті Wi-Fi желіңізге қосылуға және қарапайым веб-парақшаны орналастыруға бағдарламаланған. Бұл парақша ағымдағы температура мен ылғалдылық көрсеткіштерін көрсетеді. Код ESP8266 «HelloServer» мысалының өзгертілген нұсқасы. Бейне осы деректерге құрылғының IP мекенжайын немесе оның mDNS атын (мысалы, robojaxDHT.local) сол желіге қосылған кез келген құрылғының веб-браузеріне енгізу арқылы қол жеткізуді көрсетеді.
Кодты түсіндіру
Толық бағдарлама жүктеуге қолжетімді болғандықтан, бұл бөлім өз желіңіз бен қалауларыңызға сәйкестендіру үшін реттеуіңіз қажет негізгі пайдаланушы конфигурациялайтын айнымалыларға бағытталған. Код ESP8266 «HelloServer» мысалының өзгертілген нұсқасы. Негізгі логика сенсорды оқу және деректерді көрсету үшін HTML парақшасын пішімдеуді қамтиды.
Міне, өзгертуіңіз қажет кодтың маңызды бөліктері:
// Wi-Fi тіркелгі деректері - СІЗ БҰЛАРДЫ ӨЗГЕРТУІҢІЗ КЕРЕК
const char* ssid = "YourWiFiSSID"; // Wi-Fi желі атыңызбен ауыстырыңыз
const char* password = "YourWiFiPassword"; // Wi-Fi құпия сөзіңізбен ауыстырыңыз
Бұл өзгертуге ең маңызды бөлім. ssid және password айнымалылары жергілікті Wi-Fi желіңізге дәл сәйкес келуі керек. Wi-Fi атауы әріптердің регистріне сезімтал, сондықтан оны дұрыс енгізгеніңізге көз жеткізіңіз.
// DHT11 сенсор конфигурациясы
#define DHTPIN 2 // DHT сенсорына қосылған цифрлық түйреуіш (GPIO2)
#define DHTTYPE DHT11 // DHT 11 сенсор түрі
Бұл анықтамалар сенсорды орнатады. DHTPIN - ESP8266-дағы сенсордың деректер желісі қосылған GPIO түйреуіші (бұл нұсқаулықта GPIO2). DHTTYPE нақты сенсор үлгісін анықтайды. Егер сіз DHT22 сенсорын пайдалансаңыз, DHT22 үшін жолдың алдындағы белгіні алып тастап, DHT11 үшін жолды түсіндірмеге айналдыруыңыз керек.
// Конфигурацияланатын айнымалылар
const long interval = 3000; // сенсор көрсеткіштері арасындағы миллисекундтар
char temperature[] = "00.0";
char humidity[] = "00.0";
interval айнымалысы сенсордың қаншалықты жиі оқылатынын және веб-парақшаның жаңартылуын бақылайды. Әдепкі мән - 3000 миллисекунд (3 секунд). Жаңарту жиілігін азайту үшін оны 5000 немесе 10000 сияқты жоғары мәнге арттыруға болады.
Код сонымен қатар температура көрсеткішін пішімдейтін функцияны қамтиды. sendTemperature() функциясындағы логиканы өзгерту арқылы температураны Цельсий немесе Фаренгейт градусында көрсетуді таңдай аласыз. Бейне Tvalue айнымалысы Цельсий көрсеткішін сақтауға орнатылғанын түсіндіреді, бірақ оны Фаренгейт айнымалысы F орнына пайдалану үшін өзгертуге болады.
Тірі жоба демонстрациясы
Бейнеде аяқталған жоба көрсетілген. Код жазылып, модуль қалпына келтірілгеннен кейін, ол Wi-Fi желісіне қосылады. Сериялық монитор қосылу күйін және құрылғының IP мекенжайын көрсетеді. Веб-браузерде осы IP мекенжайына өту арқылы ағымдағы температура мен ылғалдылықты көрсететін қарапайым парақшаны көре аласыз. Демонстрация көрсеткіштердің нақты уақытта жаңартылып тұрғанын көрсетеді. DHT11 сенсоры ыстық ауамен қыздырылғанда, веб-парақшадағы температура көрсеткіші сәйкесінше артады. Егер сенсордың деректер сымы ажыратылса, парақша сенсор мәндері үшін «None» көрсетеді, бұл ақаулықтарды жоюға көмектесетін пайдалы мүмкіндік.
Тараулар
- [00:00] Жобаға кіріспе
- [01:33] ESP8266 және веб-серверлерді түсіну
- [05:47] Бағдарламалау үшін ESP-01 қосылу схемасы
- [08:51] Arduino IDE-де ESP8266 плата қолдауын орнату
- [11:47] Жоба 1: ESP8266-мен жарықдиодты жыпылықтату
- [20:28] DHT11 сенсорын қосу схемасы
- [22:34] DHT сенсор кітапханасын орнату
- [23:13] Жоба 2: DHT11-ді сериялық мониторда оқу
- [30:10] Веб-сервер жобасы үшін кодты түсіндіру
- [36:14] Жоба 3: Веб-сервер кодын жазу
- [38:42] Демонстрация: Wi-Fi арқылы температураны көру
- [41:43] Қорытынды және ақаулықтарды жою
/*
* Display temperature using DHT11, DHT22 with NodeMCU ESP8266
* over WiFi in local network on computer o mobile devices
*
* Written by Ahmad Shamshiri on Sep 27, 2019
* in Ajax, Ontario, Canada
* Watch video instruciton for this video: https://youtu.be/1A4-6hDARQc
*
* I have combined DHT library of Adafruit with ESP8266 WebServer both links
* Adafruit DHT library on GitHub: https://github.com/adafruit/DHT-sensor-library
* and
* ESP8266 on GitHub : https://github.com/esp8266/Arduino
* Download and resource page https://robojax.com/RJT614
*
Get this code and other Arduono codes from Robojax.com
* Code is available at https://robojax.com/RJT614
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const int refresh=3;//3 seconds
// DHT settings starts
#include "DHT.h"
#define DHTPIN 2 // what digital pin we're connected to
// Uncomment whatever type you're using!
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);
float tValue, hValue;//
char *simipleName="robojaxDHT";//android
// ****** DHT settings end (Robojax.com )
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#ifndef STASSID
#define STASSID "Robojax" // Your WiFi SSID
#define STAPSK "100%Right" //Your WiFi password
#endif
const char* ssid = STASSID;
const char* password = STAPSK;
ESP8266WebServer server(80);
void sendTemp() {
String page = "<!DOCTYPE html>";
page +=" <meta http-equiv='refresh' content='";
page += String(refresh);// how often temperature is read
page +="'/>";
page +="<html dir=\"rtl\">";
page +="<body>";
page +="<h1>رطوبت و حرارت توسط دی اچ تی</h1>";
page +="<p style=\"font-size:150px;\">حرارت<br/>";
page +="<span style=\"color:red; font-size:150px;\">";
page += String(tValue, 2);
page +="°C</p>";
page +="<p style=\"font-size:150px;\">رطوبت<br/>";
page +="<span style=\"color:red; font-size:150px;\">";
page += String(hValue, 2);
page +="%</p>";
page +="</body>";
page +="</html>";
server.send(200, "text/html",page);
}
void handleNotFound() {
String message = "File Not Found";
message += "URI: ";
message += server.uri();
message += "Method: ";
message += (server.method() == HTTP_GET) ? "GET" : "POST";
message += "Arguments: ";
message += server.args();
message += "";
for (uint8_t i = 0; i < server.args(); i++) {
message += " " + server.argName(i) + ": " + server.arg(i) + "";
}
server.send(404, "text/plain", message);
}
void setup(void) {
// Robojax.com code for ESP8266 and DHT11 DHT22
dht.begin();
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
if (WiFi.status() == WL_CONNECTED)
{
uint8_t macAddr[6];
WiFi.macAddress(macAddr);
Serial.printf("Connected, mac address: %02x:%02x:%02x:%02x:%02x:%02x", macAddr[0], macAddr[1], macAddr[2], macAddr[3], macAddr[4], macAddr[5]);
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
if (MDNS.begin(simipleName)) {
Serial.print("or view http://");
Serial.println(simipleName);
}
server.on("/", sendTemp);
server.on("/inline", []() {
server.send(200, "text/plain", "this works as well");
});
server.onNotFound(handleNotFound);
server.begin();
Serial.println("HTTP server started");
}
void loop(void) {
// Robojax.com code for ESP8266 and DHT11 DHT22
server.handleClient();
MDNS.update();//multicast DNS
float c = dht.readTemperature();// Read temperature as Celsius (the default)
float h = dht.readHumidity();// Reading humidity
float f = dht.readTemperature(true);// Read temperature as Fahrenheit (isFahrenheit = true)
Serial.print(c);
Serial.println(F("°C "));
tValue =c;//save temperature for display
hValue =h;//save humidity for display
delay(300);// change this to larger value (1000 or more) if you don't need very often reading
// Robojax.com code for ESP8266 and DHT11 DHT22
}
Common Course Links
Common Course Files
Ресурстар мен сілтемелер
Әлі ресурстар жоқ.
Файлдар📁
Arduino коды (.ino)
-
ESP8266_ESP1_DHT111 codes for Lesson 31 of Sunfounder's 3-in-1
ESP8266_ESP1_DHT111_all.zip9.31 MB
Fritzing файлы
-
DHT11 Humitidy and Temperature Sensor (3 pins)
DHT11 Humitidy and Temperature Sensor (3 pins).fzpz0.20 MB
Пайдаланушының нұсқаулығы
-
DHT11 пайдаланушы нұсқаулығы
robojax-DHT11_manual.pdf0.82 MB