Ẹkọ 31/31: Wọn Iwọn Otutu ati Ọrinrin Lori Wi-Fi nipa lilo DHT11 ati ESP01 SunFounder Kit
Iṣẹ́ àkànṣe yìí máa ṣe ìtọ́sọ́nà rẹ nípa bí o ṣe lè kọ́ ètò ìṣàkóso ìwọ̀n-otútù àti ọ̀rinrin nípa lílo ẹ̀rọ ESP8266 (ESP-01) àti sẹ́nsà DHT11. Ní ìparí, o máa ní ẹ̀rọ tí ó dá web server tirẹ̀, tí yóò jẹ́ kí o lè wo àwọn ìwọ̀n tí ń yí padà lórí ẹ̀rọ èyíkéyìí tí ó so pọ̀ mọ́ nẹ́tíwọ́ọ̀kì rẹ, bíi fóónù, tábíléètì, tàbí kọ̀ǹpútà. Èyí jẹ́ iṣẹ́ àkànṣe IoT ìpìlẹ̀ tí ó fi hàn bí a ṣe lè so àgbáyé àwọn sẹ́nsà pọ̀ mọ́ àgbáyé àwọn ojú-ojú ìwé web.Àwọn ọgbọ́n tí o kọ́ níbí yìí lè ṣe àmúlò fún ọ̀pọ̀lọpọ̀ nǹkan. Ètò yìí gan-an ni a lè yí padà fún ọ̀pọ̀lọpọ̀ àwọn iṣẹ́ tí ó wúlò, bíi:
- Kíkọ́ ibùdó ìṣàkóso tí ó jìnnà fún ilé-ọ̀gbìn tàbí ọgbà láti rí i dájú pé àwọn ipò dídàgbà tó dára wà.
- Ṣíṣe ètò ìṣàkóso ilé tí ó rọrùn láti ṣàkóso ojú-ojú ọjọ́ nínú yàrá pàtó kan, bíi ibi tí wọ́n ti ń tọ́jú wáìnì tàbí yàrá ọmọ ọwọ́.
- Ṣíṣe ètò ìkọ̀wé dídàta ayika tí kò gbowó lórí fún iṣẹ́ ìmọ̀ sáyẹ́ǹsì ilé-ìwé.
- Dídàgbàsókè ètò aabo tàbí ìkìlọ̀ tí ó lè sọ fún ọ nípa àwọn ìyípadà otútù ojijì.
Àwọn Ẹ̀rọ àti Àwọn Ohun Èlò
Láti tẹ̀lé iṣẹ́ àkànṣe yìí, o nílò àwọn ohun èlò wọ̀nyí. Àwọn ohun èlò pàtàkì ni ẹ̀rọ ESP8266 àti sẹ́nsà DHT11, ṣùgbọ́n àwọn yòókù ṣe pàtàkì fún kíkọ́ ètò àti fífi agbára fún ẹ̀rọ náà.
- Ẹ̀rọ ESP8266 (ESP-01S): Ẹ̀rọ microcontroler pàtàkì tí ó ní agbára Wi-Fi nínú rẹ̀.
- Sẹ́nsà DHT11 fún Otútù àti Ọ̀rinrin: Sẹ́nsà tí ó ń wọn ìwọ̀n ayika.
- Arduino Uno Board (fún ìyípadà USB-to-Serial): Nínú iṣẹ́ àkànṣe yìí, a kò lo Arduino board pàtàkì fún agbára ìṣiṣẹ́ rẹ̀. Dípò rẹ̀, a lo ẹ̀yà USB-to-serial rẹ̀ láti kọ́ ètò sínú ẹ̀rọ ESP8266.
- Resistor 330-ohm: Fún ìdánwò LED tí ó kọ́kọ́ ṣe láti dí iye iná mọ́.
- Resistor 1k-ohm sí 10k-ohm: Resistor tí ó ń fa soke fún ìlà dídàta sẹ́nsà DHT11.
- LED àti Jumper Wires: Fún ìpele ìdánwò àti ṣíṣe gbogbo àwọn ìsopọ̀ tí a nílò.
- Breadboard: Fún ṣíṣe àwọn ìsopọ̀ Circuit.
Ìtọ́sọ́nà Ìsopọ̀
Ìsopọ̀ náà ni a ṣe ní àwọn ìpele. Lákọ̀ọ́kọ́, a ó ṣètò Circuit ìpìlẹ̀ láti kọ́ ètò sínú ESP-01. Èyí ní lílo Arduino Uno gẹ́gẹ́ bí olùkọ́ ètò. Fídíò náà fi ètò yìí hàn kedere. Àwọn ìsopọ̀ pàtàkì ni wọ̀nyí:
Láti wọ inú ipo kíkọ́ ètò, o gbọ́dọ̀ so IO1 (GPIO1) pin pọ̀ mọ́ Ground (GND). Èyí sọ fún ESP8266 pé kí ó dúró de firmware tuntun. Àwọn ìsopọ̀ yòókù fún kíkọ́ ètò ni:
- VCC (3.3V) sí EN (Enable): Èyí máa mú ẹ̀rọ náà ṣiṣẹ́.
- GND sí GND: Ilẹ̀ tí ó wọ́pọ̀ fún Circuit.
- VCC (5V) sí VCC (5V): Láti fi agbára fún board olùkọ́ ètò.
- RX (ESP) sí TX (Arduino): Fún ìbánisọ̀rọ̀ serial láti ọ̀dọ̀ olùkọ́ ètò sí ẹ̀rọ náà.
- TX (ESP) sí RX (Arduino): Fún ìbánisọ̀rọ̀ serial láti ọ̀dọ̀ ẹ̀rọ náà sí olùkọ́ ètò.
- RST (Reset) sí GND: Èyí jẹ́ ìsopọ̀ ìgbà díẹ̀ tí a lò láti tun ẹ̀rọ náà bẹ̀rẹ̀ lẹ́yìn kíkọ́ ètò.
Ní kété tí a bá ti kọ́ ètò sínú ESP-01, ìsopọ̀ fún sẹ́nsà náà rọrùn. Sẹ́nsà DHT11 nílò resistor tí ń fa soke lórí ìlà dídàta rẹ̀ láti rí i dájú pé ìbánisọ̀rọ̀ dúró ṣinṣin.
Fún ètò sẹ́nsà, ìsopọ̀ náà ni:
- DHT11 VCC (Pin 1) sí 3.3V: Agbára fún sẹ́nsà.
- DHT11 DATA (Pin 2) sí GPIO2 (IO2) lórí ESP-01: Ìlà dídàta fún àwọn ìwọ̀n sẹ́nsà. Resistor 1k-ohm sí 10k-ohm tí ń fa soke gbọ́dọ̀ so pọ̀ láàárín ìlà dídàta yìí àti ìlà agbára 3.3V.
- DHT11 GND (Pin 4) sí GND: Ilẹ̀ tí ó wọ́pọ̀ fún sẹ́nsà.
Ìmúra Arduino IDE
Láti kọ́ ètò sínú ESP8266, o gbọ́dọ̀ kọ́kọ́ fi àtìlẹ́yìn board rẹ̀ kún Arduino IDE rẹ. Èyí ni a ṣe ní ìpele méjì:
- Fi URL Board Manager kún: Lọ sí
File > Preferences. Nínú pápá "Additional Boards Manager URLs", fi URL yìí síbẹ̀:http://arduino.esp8266.com/stable/package_esp8266com_index.jsonkí o sì tẹ "OK". - Fi Ẹ̀rọ ESP8266 Board sọ̀rọ̀: Lọ sí
Tools > Board > Boards Manager.... Wá "esp8266", rí "esp8266 by ESP8266 Community", kí o sì tẹ "Install". Lẹ́yìn ìfisọ̀rọ̀, o lè yan board náà nípa líloTools > Board > ESP8266 Boards > Generic ESP8266 Module.
Fifi Sọ̀rọ̀ DHT Sensor Library
Kóòdù náà gbára lé library kan láti bá sẹ́nsà DHT11 ṣiṣẹ́. Library yìí gbọ́dọ̀ fi sọ̀rọ̀ sínú Arduino IDE rẹ.
- Lọ sí
Tools > Manage Libraries.... - Wá "DHT sensor library".
- Rí library tí Adafruit ṣe kí o sì tẹ "Install". Library yìí mú kí kíkà dídàta láti ọ̀dọ̀ sẹ́nsà rọrùn.
Iṣẹ́ Àkànṣe 1: Ìdánwò LED Blink
Ṣaaju ki o wọ inú sensori naa, o ṣe pataki lati rii daju pe o le ṣe eto ESP-01 naa ni aṣeyọri. Eyi ni a ṣe pẹlu apẹẹrẹ "Blink" ti a mọ. Fidio naa ṣe afihan ilana ti gbigbe jade kọnputa ti a kojọpọ ati lilo faili batiki ọtọtọ lati fi ina si i, eyiti o jẹ ọna iṣẹ fun eto USB-si-serial kan pato. Ibi-afẹde ni lati rii LED ti o wa lori ọkọ ti o ṣe ina, ti o fi idi rẹ mulẹ pe ẹwọn eto naa n ṣiṣẹ. Lati ṣiṣẹ module naa lẹhin eto, o gbọdọ ge okun waya ti o so IO1 pọ si GND ati lẹhinna so pin RST pọ si GND fun igba diẹ lati tun module naa ṣiṣẹ.
Iṣẹ 2: Kika DHT11 lori Atẹle Serial
Ni kete ti eto naa ba ti fi idi rẹ mulẹ, igbesẹ ti o tẹle ni lati so sensori DHT11 pọ ati ka data rẹ. Iṣẹ yii lo apẹẹrẹ DHTtester lati inu ile-ikawe sensori Adafruit DHT. A ṣe eto koodu naa lati lo pin ti o tọ ati iru sensori. Lẹhin fifi ina si eto yii, o le ṣii Atẹle Serial (ṣeto si 9600 baud) lati rii awọn iwọn otutu ati ọrinrin.
Iṣẹ 3: Ṣeto Olupin Wẹẹbu
Iṣẹ ikẹhin ṣe akojọpọ ohun gbogbo. A ṣe eto ESP8266 lati sopọ si nẹtiwọọki Wi-Fi agbegbe rẹ ati gbalejo oju-iwe wẹẹbu kan ti o rọrun. Oju-iwe yii ṣe afihan awọn iwọn otutu ati ọrinrin laaye. Koodu naa jẹ ẹya ti a yipada ti apẹẹrẹ ESP8266 "HelloServer". Fidio naa ṣe afihan bi o ṣe le wọle si data yii nipa titẹ adiresi IP ẹrọ naa tabi orukọ mDNS rẹ (fun apẹẹrẹ, robojaxDHT.local) sinu ẹrọ aṣàwákiri wẹẹbu lori eyikeyi ẹrọ ti o sopọ si nẹtiwọọki kanna.
Alaye Koodu
Niwọn igba ti a ti wa fun gbigba eto kikun naa silẹ, apakan yii ṣe idojukọ lori awọn oniyipada pataki ti olumulo le ṣeto ti iwọ yoo nilo lati ṣatunṣe fun nẹtiwọọki ati awọn ayanfẹ tirẹ. Koodu naa jẹ ẹya ti a yipada ti apẹẹrẹ ESP8266 "HelloServer". Ọgbọn inu akọkọ jẹ kika sensori ati ṣiṣe ọna kika HTML lati ṣe afihan data naa.
Eyi ni awọn apakan pataki ti koodu ti iwọ yoo nilo lati yipada:
// Awọn iwe-ẹri Wi-Fi - O GBOỌDỌ YI WỌN PADA
const char* ssid = "YourWiFiSSID"; // Rọpo pẹlu orukọ nẹtiwọọki Wi-Fi rẹ
const char* password = "YourWiFiPassword"; // Rọpo pẹlu ọrọ igbaniwọle Wi-Fi rẹ
Eyi ni apakan ti o ṣe pataki julọ lati yipada. Awọn oniyipada ssid ati password gbọdọ ba nẹtiwọọki Wi-Fi agbegbe rẹ mu ni pipe. Orukọ Wi-Fi naa ṣe pataki fun awọn lẹta nla ati kekere, nitorinaa rii daju pe o tẹ ọ sii ni deede.
// Ṣeto sensori DHT11
#define DHTPIN 2 // Pin oni-nọmba ti a so pọ si sensori DHT (GPIO2)
#define DHTTYPE DHT11 // Iru sensori DHT 11
Awọn asọye wọnyi ṣeto sensori naa. DHTPIN jẹ pin GPIO lori ESP8266 ti a so laini data sensori pọ si (eyiti o jẹ GPIO2 ninu itọsọna yii). DHTTYPE ṣalaye awoṣe sensori kan pato. Ti o ba nlo sensori DHT22, iwọ yoo ṣii laini fun DHT22 ati fi ọrọ asọye si laini fun DHT11.
// Awọn oniyipada ti a le ṣeto
const long interval = 3000; // awọn milisekọọndu laarin awọn kika sensori
char temperature[] = "00.0";
char humidity[] = "00.0";
Oniyipada interval n ṣakoso igbohunsafẹfẹ ti a ka sensori ati ti a ṣe imudojuiwọn oju-iwe wẹẹbu. Aiyipada jẹ 3000 milisekọọndu (3 aaya). O le ṣe alekun eyi si iye ti o ga julọ bii 5000 tabi 10000 lati dinku igbohunsafẹfẹ awọn imudojuiwọn.
Koodu naa tun pẹlu iṣẹ kan ti o ṣe ọna kika iwọn otutu. O le yan lati ṣe afihan iwọn otutu ni Celsius tabi Fahrenheit nipa yiyipada ọgbọn inu iṣẹ sendTemperature(). Fidio naa ṣalaye pe a ṣeto oniyipada Tvalue lati mu kika Celsius, ṣugbọn o le yipada lati lo oniyipada Fahrenheit F dipo.
Ifihan Iṣẹ Laaye
Ninu fidio naa, a ṣe afihan iṣẹ ti o pari. Lẹhin ti a ti fi ina si koodu naa ati ti a tun module naa ṣiṣẹ, o sopọ si nẹtiwọọki Wi-Fi. Atẹle Serial ṣe afihan ipo asopọ ati adiresi IP ẹrọ naa. Nipa lilọ kiri si adiresi IP yii ninu ẹrọ aṣàwákiri wẹẹbu, o le rii oju-iwe kan ti o rọrun ti o ṣe afihan otutu ati ọrinrin lọwọlọwọ. Ifihan naa ṣe afihan awọn kika ti n ṣe imudojuiwọn ni akoko gidi. Nigbati a ba fi igbona mu sensori DHT11 pẹlu ibọn igbona, kika otutu lori oju-iwe wẹẹbu naa pọ si ni ibamu. Ti a ba ge okun waya data sensori, oju-iwe naa ṣe afihan "None" fun awọn iye sensori, eyiti o jẹ ẹya iranlọwọ fun wiwa iṣoro.
Awọn ipin
- [00:00] Ifihan si Iṣẹ naa
- [01:33] Loye ESP8266 ati Awọn Olupin Wẹẹbu
- [05:47] So ESP-01 pọ fun Eto
- [08:51] Fi Sọfitiwia Atilẹyin Bọọdi ESP8266 sori Arduino IDE
- [11:47] Iṣẹ 1: Mọ LED kan pẹlu ESP8266
- [20:28] So Sensori DHT11 pọ
- [22:34] Fi Ile-ikawe Sensori DHT sori ẹrọ
- [23:13] Iṣẹ 2: Kika DHT11 lori Atẹle Serial
- [30:10] Alaye Koodu fun Iṣẹ Olupin Wẹẹbu
- [36:14] Iṣẹ 3: Fifa Koodu Olupin Wẹẹbu
- [38:42] Ifihan: Wiwo Otutu Lori Wi-Fi
- [41:43] Ipari ati Wiwa Iṣoro
/*
* 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
Orisun & itọkasi
Ko si awọn orisun sibẹsibẹ.
Fáìlìs📁
Koodu Arduino (.ino)
-
ESP8266_ESP1_DHT111 codes for Lesson 31 of Sunfounder's 3-in-1
ESP8266_ESP1_DHT111_all.zip9.31 MB
Fayile Fritzing
-
DHT11 Humitidy and Temperature Sensor (3 pins)
DHT11 Humitidy and Temperature Sensor (3 pins).fzpz0.20 MB
Iwe Itọsọna Olumulo
-
DHT11 Itọsọna Olumulo
robojax-DHT11_manual.pdf0.82 MB