Somo la 31/31: Pima Halijoto na Unyevu Kupitia Wi-Fi kwa kutumia DHT11 na ESP01 SunFounder Kit
Mwongozo huu wa mradi unakuelekeza katika kujenga mfumo wa ufuatiliaji wa joto na unyevu usiotumia waya kwa kutumia moduli ya ESP8266 (ESP-01) na sensa ya DHT11. Kufikia mwisho, utakuwa na kifaa kinachounda seva yake ya wavuti, kinachokuruhusu kuona usomaji wa sensa kwa wakati halisi kwenye kifaa chochote kilichounganishwa kwenye mtandao wako wa ndani, kama simu mahiri, kompyuta kibao, au kompyuta. Huu ni mradi wa msingi wa IoT unaoonyesha jinsi ya kuunganisha ulimwengu wa kimwili wa sensa na ulimwengu wa kidijitali wa violesura vya wavuti.
Ujuzi utakaoupata hapa unahamishika kwa urahisi. Mpangilio huu hasa unaweza kubadilishwa kwa matumizi mbalimbali ya vitendo, ikijumuisha:
- Kujenga kituo cha ufuatiliaji wa mbali kwa chafu au bustani ili kuhakikisha hali bora za ukuaji.
- Kuunda mfumo rahisi wa otomatiki wa nyumbani ili kufuatilia hali ya hewa katika chumba maalum, kama pishi la mvinyo au chumba cha mtoto mchanga.
- Kuanzisha kirekodi cha data cha mazingira cha gharama nafuu kwa mradi wa sayansi wa shule.
- Kuendeleza mfumo wa msingi wa usalama au tahadhari unaoweza kukuarifu kuhusu mabadiliko ya ghafla ya joto.
Vifaa na Vipengele
Ili kufuata mradi huu, utahitaji vipengele vifuatavyo. Vipengele vikuu ni moduli ya ESP8266 na sensa ya DHT11, lakini vingine ni muhimu kwa kupanga programu na kuwasha moduli.
- Moduli ya ESP8266 (ESP-01S): Kidhibiti kikuu cha micro kilicho na uwezo wa Wi-Fi uliojengewa ndani.
- Sensa ya Joto na Unyevu ya DHT11: Sensa inayopima data ya mazingira.
- Bodi ya Arduino Uno (kwa ubadilishaji wa USB-hadi-Serial): Katika mradi huu, bodi kuu ya Arduino haitumiwi kwa uwezo wake wa kuchakata. Badala yake, chipu yake ya USB-hadi-serial inatumiwa kupanga programu ya moduli ya ESP8266.
- Kipinga cha 330-ohm: Kinatumika kwa jaribio la awali la kumulika kwa LED ili kupunguza mkondo.
- Kipinga cha 1k-ohm hadi 10k-ohm: Kipinga cha kuvuta-juu kwa mstari wa data wa sensa ya DHT11.
- LED na Waya za Kurukia: Kwa awamu ya majaribio na kufanya miunganisho yote muhimu.
- Breadboard: Kwa kuunda miunganisho ya saketi.
Mwongozo wa Uunganishaji wa Waya
Mchakato wa uunganishaji wa waya unafanywa kwa hatua. Kwanza, tutaweka saketi ya msingi ili kupanga programu ya ESP-01. Hii inahusisha kutumia Arduino Uno kama kipanga programu. Video inaonyesha mpangilio huu kwa uwazi. Miunganisho muhimu ni kama ifuatavyo:
Ili kuingia katika hali ya kupanga programu, lazima uunganishe pini ya IO1 (GPIO1) kwenye Ground (GND). Hii inamwambia ESP8266 isubiri firmware mpya. Miunganisho mingine ya kupanga programu ni:
- VCC (3.3V) hadi EN (Enable): Hii inaiwezesha moduli.
- GND hadi GND: Ardhi ya pamoja kwa saketi.
- VCC (5V) hadi VCC (5V): Kuwasha bodi ya kipanga programu.
- RX (ESP) hadi TX (Arduino): Kwa mawasiliano ya serial kutoka kwa kipanga programu hadi moduli.
- TX (ESP) hadi RX (Arduino): Kwa mawasiliano ya serial kutoka moduli hadi kipanga programu.
- RST (Reset) hadi GND: Huu ni muunganisho wa muda unaotumika kuweka upya moduli baada ya kupanga programu.
Mara tu ESP-01 inapopangwa programu, uunganishaji wa waya wa sensa ni rahisi. Sensa ya DHT11 inahitaji kipinga cha kuvuta-juu kwenye mstari wake wa data ili kuhakikisha mawasiliano thabiti.
Kwa mpangilio wa sensa, uunganishaji wa waya ni kama ifuatavyo:
- DHT11 VCC (Pini 1) hadi 3.3V: Nguvu kwa sensa.
- DHT11 DATA (Pini 2) hadi GPIO2 (IO2) kwenye ESP-01: Mstari wa data kwa usomaji wa sensa. Kipinga cha kuvuta-juu cha 1k-ohm hadi 10k-ohm kinapaswa kuunganishwa kati ya mstari huu wa data na mstari wa nguvu wa 3.3V.
- DHT11 GND (Pini 4) hadi GND: Ardhi ya pamoja kwa sensa.
Kuandaa Arduino IDE
Ili kupanga programu ya ESP8266, lazima kwanza uongeze usaidizi wa bodi yake kwenye Arduino IDE yako. Hii inafanywa kwa hatua mbili:
- Ongeza URL ya Meneja wa Bodi: Nenda kwenye
File > Preferences. Katika sehemu ya "Additional Boards Manager URLs", bandika URL ifuatayo:http://arduino.esp8266.com/stable/package_esp8266com_index.jsonna ubofye "OK". - Sakinisha Kifurushi cha Bodi ya ESP8266: Nenda kwenye
Tools > Board > Boards Manager.... Tafuta "esp8266", pata "esp8266 by ESP8266 Community", na ubofye "Install". Baada ya usakinishaji, unaweza kuchagua bodi kwa kwenda kwenyeTools > Board > ESP8266 Boards > Generic ESP8266 Module.
Kusakinisha Maktaba ya Sensa ya DHT
Msimbo unategemea maktaba ya kuunganisha na sensa ya DHT11. Maktaba hii lazima isakinishwe kwenye Arduino IDE yako.
- Nenda kwenye
Tools > Manage Libraries.... - Tafuta "DHT sensor library".
- Pata maktaba ya Adafruit na ubofye "Install". Maktaba hii inarahisisha mchakato wa kusoma data kutoka kwa sensa.
Mradi 1: Jaribio la Kumulika kwa LED
Kabla ya kuzama kwenye sensa, ni muhimu kuhakikisha kuwa unaweza kupanga ESP-01 kwa mafanikio. Hii inafanywa kwa mfano wa kawaida wa "Blink". Video inaonyesha mchakato wa kupeleka binary iliyokusanywa na kutumia faili tofauti ya batch kuiflasha, ambayo ni njia mbadala ya usanidi maalum wa USB-to-serial. Lengo ni kuona LED iliyojengewa ndani ikimulika, ikithibitisha kuwa mnyororo wa upangaji unafanya kazi. Ili kuendesha moduli baada ya kupanga, lazima uondoe waya inayounganisha IO1 na GND kisha uunganishe pin ya RST kwa GND kwa muda mfupi ili kuweka upya moduli.
Mradi wa 2: Kusoma DHT11 kwenye Serial Monitor
Mara tu upangaji unapothibitishwa, hatua inayofuata ni kuunganisha sensa ya DHT11 na kusoma data yake. Mradi huu unatumia mfano wa DHTtester kutoka kwenye maktaba ya sensa ya Adafruit DHT. Msimbo umeundwa kutumia pin sahihi na aina sahihi ya sensa. Baada ya kuflasha programu hii, unaweza kufungua Serial Monitor (iliyowekwa kwa 9600 baud) kuona usomaji wa joto na unyevu.
Mradi wa 3: Kuanzisha Seva ya Wavuti
Mradi wa mwisho unachanganya kila kitu. ESP8266 imepangwa kuungana na mtandao wako wa Wi-Fi wa ndani na kuweka ukurasa rahisi wa wavuti. Ukurasa huu unaonyesha usomaji wa moja kwa moja wa joto na unyevu. Msimbo ni toleo lililobadilishwa la mfano wa "HelloServer" wa ESP8266. Video inaonyesha jinsi ya kufikia data hii kwa kuingiza anwani ya IP ya kifaa au jina lake la mDNS (kwa mfano, robojaxDHT.local) kwenye kivinjari cha wavuti kwenye kifaa chochote kilichounganishwa kwenye mtandao huo.
Maelezo ya Msimbo
Kwa kuwa programu kamili inapatikana kwa kupakuliwa, sehemu hii inazingatia vigezo muhimu vinavyoweza kubadilishwa na mtumiaji ambavyo utahitaji kurekebisha kwa mtandao wako na mapendeleo yako. Msimbo ni toleo lililobadilishwa la mfano wa "HelloServer" wa ESP8266. Mantiki kuu inahusisha kusoma sensa na kuunda ukurasa wa HTML kuonyesha data.
Hapa kuna sehemu muhimu za msimbo ambazo utahitaji kubadilisha:
// Wi-Fi credentials - LAZIMA UBADILISHE HIZI
const char* ssid = "YourWiFiSSID"; // Badilisha na jina la mtandao wako wa Wi-Fi
const char* password = "YourWiFiPassword"; // Badilisha na nenosiri lako la Wi-Fi
Hii ndiyo sehemu muhimu zaidi ya kubadilisha. Vigezo vya ssid na password lazima vilingane na mtandao wako wa Wi-Fi wa ndani haswa. Jina la Wi-Fi ni nyeti kwa herufi kubwa na ndogo, kwa hivyo hakikisha umeliingiza kwa usahihi.
// Usanidi wa sensa ya DHT11
#define DHTPIN 2 // Pin ya dijiti iliyounganishwa na sensa ya DHT (GPIO2)
#define DHTTYPE DHT11 // Aina ya sensa DHT 11
Ufafanuzi huu unaweka sensa. DHTPIN ni pin ya GPIO kwenye ESP8266 ambayo mstari wa data wa sensa umeunganishwa (ambayo ni GPIO2 katika mwongozo huu). DHTTYPE inafafanua mfano maalum wa sensa. Ikiwa ungetumia sensa ya DHT22, ungeondoa alama ya maelezo kwenye mstari wa DHT22 na kuweka alama ya maelezo kwenye ile ya DHT11.
// Vigezo vinavyoweza kubadilishwa
const long interval = 3000; // milliseconds kati ya usomaji wa sensa
char temperature[] = "00.0";
char humidity[] = "00.0";
Kigezo cha interval kinadhibiti mara ngapi sensa inasomwa na ukurasa wa wavuti unasasishwa. Chaguo-msingi ni milliseconds 3000 (sekunde 3). Unaweza kuongeza hii kwa thamani ya juu kama 5000 au 10000 ili kupunguza mzunguko wa sasisho.
Msimbo pia unajumuisha kazi inayounda usomaji wa joto. Unaweza kuchagua kuonyesha joto kwa Selsiasi au Fahrenheit kwa kubadilisha mantiki katika kazi ya sendTemperature(). Video inaeleza kuwa kigezo Tvalue kimewekwa kushikilia usomaji wa Selsiasi, lakini unaweza kubadilisha kutumia kigezo cha Fahrenheit F badala yake.
Maonyesho ya Mradi wa Moja kwa Moja
Katika video, mradi uliokamilika unaonyeshwa. Baada ya msimbo kuflashwa na moduli kuwekwa upya, inaungana na mtandao wa Wi-Fi. Serial Monitor inaonyesha hali ya muunganisho na anwani ya IP ya kifaa. Kwa kufikia anwani hii ya IP kwenye kivinjari cha wavuti, unaweza kuona ukurasa rahisi unaoonyesha joto na unyevu wa sasa. Maonyesho yanaonyesha usomaji ukisasishwa kwa wakati halisi. Wakati sensa ya DHT11 inapokanzwa kwa bunduki ya joto, usomaji wa joto kwenye ukurasa wa wavuti unaongezeka ipasavyo. Ikiwa waya ya data ya sensa imekatwa, ukurasa unaonyesha "None" kwa thamani za sensa, ambayo ni kipengele muhimu cha utatuzi wa shida.
Sura
- [00:00] Utangulizi wa Mradi
- [01:33] Kuelewa ESP8266 na Seva za Wavuti
- [05:47] Kuunganisha ESP-01 kwa Upangaji
- [08:51] Kusakinisha Msaada wa Bodi ya ESP8266 kwenye Arduino IDE
- [11:47] Mradi wa 1: Kumulika LED na ESP8266
- [20:28] Kuunganisha Sensa ya DHT11
- [22:34] Kusakinisha Maktaba ya Sensa ya DHT
- [23:13] Mradi wa 2: Kusoma DHT11 kwenye Serial Monitor
- [30:10] Maelezo ya Msimbo kwa Mradi wa Seva ya Wavuti
- [36:14] Mradi wa 3: Kuflasha Msimbo wa Seva ya Wavuti
- [38:42] Maonyesho: Kuangalia Joto Kupitia Wi-Fi
- [41:43] Hitimisho na Utatuzi wa Shida
/*
* 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
Resurser och referenser
Inga resurser än.
Filer📁
Arduino-kod (.ino)
-
ESP8266_ESP1_DHT111 codes for Lesson 31 of Sunfounder's 3-in-1
ESP8266_ESP1_DHT111_all.zip9.31 MB
Fritzing-fil
-
DHT11 Humitidy and Temperature Sensor (3 pins)
DHT11 Humitidy and Temperature Sensor (3 pins).fzpz0.20 MB
Användarhandbok
-
DHT11 Användarmanual
robojax-DHT11_manual.pdf0.82 MB