Darasi na 31/31: Auna Zazzabi da Danshi ta hanyar Wi-Fi ta amfani da DHT11 da ESP01 SunFounder Kit
Wannan jagorar aikin yana jagorantar ka ta hanyar gina tsarin kula da zafin jiki da danshi mara waya ta amfani da na'urar ESP8266 (ESP-01) da kuma na'urar DHT11. A ƙarshen wannan, za ka sami na'urar da ke ƙirƙirar sabar gidan yanar gizo nata, wanda zai ba ka damar duba karatun na'urar a lokaci guda akan kowace na'urar da aka haɗa da hanyar sadarwar gida, kamar wayar hannu, kwamfutar hannu, ko kwamfuta. Wannan aiki ne na tushen IoT wanda ke nuna yadda ake haɗa duniyar zahiri ta na'urori masu auna sigina da duniyar dijital ta mu'amalar gidan yanar gizo.
Ƙwarewar da kake koya a nan tana da amfani sosai. Wannan tsarin na iya zama daidaitacce don kewayon aikace-aikace masu amfani, gami da:
- Gina tashar kula da nesa don gidan lambu ko lambu don tabbatar da yanayin girma mai kyau.
- Ƙirƙirar tsarin sarrafa gida mai sauƙi don kula da yanayin yanayi a cikin wani ɗaki na musamman, kamar cellar na giya ko ɗakin jariri.
- Saita na'urar rikodin bayanan muhalli mai rahusa don aikin kimiyya na makaranta.
- Haɓaka tsarin tsaro ko faɗakarwa na asali wanda zai iya sanar da kai game da canjin zafin jiki kwatsam.
Kayan aiki da Abubuwan Haɗi
Don bin wannan aikin, za ka buƙaci waɗannan abubuwan da ke gaba. Abubuwan farko sune na'urar ESP8266 da na'urar DHT11, amma sauran suna da mahimmanci don shirye-shirye da kuma samar da wutar lantarki ga na'urar.
- Na'urar ESP8266 (ESP-01S): Babban microcontroller mai ƙarfin Wi-Fi da aka gina a ciki.
- Na'urar DHT11 na Zafin Jiki da Danshi: Na'urar da ke auna bayanan muhalli.
- Arduino Uno Board (don canjin USB-to-Serial): A cikin wannan aikin, babban allon Arduino ba a yi amfani da shi don ƙarfin sarrafawa ba. A maimakon haka, ana amfani da guntuwar USB-to-serial don shirya na'urar ESP8266.
- Resistor na 330-ohm: Ana amfani da shi don gwajin walƙiya na LED na farko don iyakance wutar lantarki.
- Resistor na 1k-ohm zuwa 10k-ohm: Resistor na pull-up don layin bayanan na'urar DHT11.
- LED da Jumper Wires: Don lokacin gwaji da kuma yin duk haɗin da ake buƙata.
- Breadboard: Don ƙirƙirar haɗin kewaye.
Jagorar Haɗin Waya
Tsarin haɗin waya ana yin shi ne a matakai. Da farko, za mu kafa kewaye na asali don shirya ESP-01. Wannan ya haɗa da amfani da Arduino Uno a matsayin mai shirya. Bidiyon yana nuna wannan tsarin a fili. Muhimman haɗin sune kamar haka:
Don shiga yanayin shirye-shirye, dole ne ka haɗa IO1 (GPIO1) pin zuwa Ground (GND). Wannan yana gaya wa ESP8266 ya jira sabon firmware. Sauran haɗin don shirye-shirye sune:
- VCC (3.3V) zuwa EN (Enable): Wannan yana kunna na'urar.
- GND zuwa GND: Ƙasa ta gama gari don kewaye.
- VCC (5V) zuwa VCC (5V): Don samar da wutar lantarki ga allon mai shirya.
- RX (ESP) zuwa TX (Arduino): Don sadarwar serial daga mai shirya zuwa na'urar.
- TX (ESP) zuwa RX (Arduino): Don sadarwar serial daga na'urar zuwa mai shirya.
- RST (Reset) zuwa GND: Wannan haɗi ne na ɗan lokaci da ake amfani da shi don sake saita na'urar bayan shirye-shirye.
Da zarar an shirya ESP-01, haɗin waya don na'urar yana da sauƙi. Na'urar DHT11 tana buƙatar resistor na pull-up akan layin bayananta don tabbatar da sadarwa mai ƙarfi.
Don saitin na'urar, haɗin waya shine kamar haka:
- DHT11 VCC (Pin 1) zuwa 3.3V: Wutar lantarki don na'urar.
- DHT11 DATA (Pin 2) zuwa GPIO2 (IO2) akan ESP-01: Layin bayanai don karatun na'urar. Resistor na pull-up na 1k-ohm zuwa 10k-ohm ya kamata a haɗa tsakanin wannan layin bayanai da layin wutar lantarki na 3.3V.
- DHT11 GND (Pin 4) zuwa GND: Ƙasa ta gama gari don na'urar.
Shirya Arduino IDE
Don shirya ESP8266, dole ne ka fara ƙara tallafin board ɗinsa zuwa Arduino IDE ɗinka. Ana yin wannan a matakai biyu:
- Ƙara URL na Board Manager: Je zuwa
File > Preferences. A cikin filin "Additional Boards Manager URLs", liƙa wannan URL:http://arduino.esp8266.com/stable/package_esp8266com_index.jsonkuma danna "OK". - Shigar da Kunshin Board na ESP8266: Je zuwa
Tools > Board > Boards Manager.... Bincika "esp8266", nemo "esp8266 by ESP8266 Community", kuma danna "Install". Bayan shigarwa, za ka iya zaɓar board ɗin ta hanyar zuwaTools > Board > ESP8266 Boards > Generic ESP8266 Module.
Shigar da Library na DHT Sensor
Lambar ta dogara da library don mu'amala da na'urar DHT11. Wannan library dole ne a shigar da shi a cikin Arduino IDE ɗinka.
- Je zuwa
Tools > Manage Libraries.... - Bincika "DHT sensor library".
- Nemo library ɗin na Adafruit kuma danna "Install". Wannan library yana sauƙaƙa tsarin karanta bayanai daga na'urar.
Aiki na 1: Gwajin Walƙiya na LED
Kafin shiga cikin na'urar firikwensin, yana da muhimmanci a tabbatar da cewa za ka iya shirya ESP-01 cikin nasara. Ana yin wannan ta hanyar amfani da misalin "Blink" na gargajiya. Bidiyon yana nuna tsarin fitar da compiled binary da kuma amfani da wani fayil na batch daban don kunna shi, wanda shine hanyar da za a bi don USB-to-serial na musamman. Manufar ita ce ganin LED ɗin da ke kan allo yana walƙiya, yana tabbatar da cewa tsarin shirye-shiryen yana aiki. Don kunna modul ɗin bayan shirye-shirye, dole ne ka cire wayar da ke haɗa IO1 zuwa GND sannan ka haɗa fil ɗin RST zuwa GND na ɗan lokaci don sake saita modul ɗin.Aiki na 2: Karanta DHT11 akan Serial Monitor
Da zarar an tabbatar da shirye-shiryen, mataki na gaba shine haɗa firikwensin DHT11 da karanta bayanansa. Wannan aikin yana amfani da misalin DHTtester daga ɗakin karatu na Adafruit DHT sensor. An saita lambar don amfani da fil ɗin da ya dace da nau'in firikwensin. Bayan kunna wannan shirin, za ka iya buɗe Serial Monitor (saita zuwa 9600 baud) don ganin karatun zafin jiki da zafi.
Aiki na 3: Saita Sabar Yanar Gizo
Aiki na ƙarshe ya haɗa komai. An shirya ESP8266 don haɗawa zuwa cibiyar sadarwar Wi-Fi ta gida kuma ya ɗauki nauyin shafin yanar gizo mai sauƙi. Wannan shafin yana nuna karatun zafin jiki da zafi na lokaci-lokaci. Lambar ita ce sigar da aka gyara ta misalin ESP8266 "HelloServer". Bidiyon yana nuna yadda ake samun wannan bayanan ta hanyar shigar da adireshin IP na na'urar ko sunan mDNS (misali, robojaxDHT.local) a cikin burauzar yanar gizo akan kowace na'urar da ke haɗe zuwa wannan cibiyar sadarwa.
Bayanin Lambar
Tun da yake akwai cikakken shirin don saukewa, wannan sashe yana mai da hankali kan mahimman masu canji waɗanda za ka buƙaci gyara don cibiyar sadarwarka da zaɓin ka. Lambar ita ce sigar da aka gyara ta misalin ESP8266 "HelloServer". Babban tsarin ya ƙunshi karanta firikwensin da tsara shafin HTML don nuna bayanan.
Ga mahimman sassan lambar da za ka buƙaci gyara:
// Bayanan Wi-Fi - DOLE KA CANZA WAɗANNAN
const char* ssid = "YourWiFiSSID"; // Sauya da sunan cibiyar sadarwar Wi-Fi
const char* password = "YourWiFiPassword"; // Sauya da kalmar sirri ta Wi-Fi
Wannan shine mafi mahimmancin sashe don canzawa. Masu canji ssid da password dole ne su dace da cibiyar sadarwar Wi-Fi ta gida daidai. Sunan Wi-Fi yana da muhimmanci ga manyan da ƙananan haruffa, don haka tabbatar da shigar da shi daidai.
// Saitin firikwensin DHT11
#define DHTPIN 2 // Fil ɗin dijital da aka haɗa zuwa firikwensin DHT (GPIO2)
#define DHTTYPE DHT11 // Nau'in firikwensin DHT 11
Waɗannan ma'anoni suna saita firikwensin. DHTPIN shine fil ɗin GPIO akan ESP8266 wanda layin bayanan firikwensin ke haɗe (wanda shine GPIO2 a wannan jagorar). DHTTYPE yana bayyana takamaiman nau'in firikwensin. Idan kana amfani da firikwensin DHT22, za ka buƙaci cire sharhi daga layin DHT22 kuma ka sanya sharhi a layin DHT11.
// Masu canji masu iya saitawa
const long interval = 3000; // milliseconds tsakanin karatun firikwensin
char temperature[] = "00.0";
char humidity[] = "00.0";
Masu canji interval yana sarrafa sau nawa ake karanta firikwensin da sabunta shafin yanar gizo. Tsohuwar ita ce 3000 milliseconds (3 seconds). Za ka iya ƙara wannan zuwa ƙima mafi girma kamar 5000 ko 10000 don rage yawan sabuntawa.
Lambar kuma ta ƙunshi aikin da ke tsara karatun zafin jiki. Za ka iya zaɓar nuna zafin jiki a Celsius ko Fahrenheit ta hanyar gyara dabaru a cikin aikin sendTemperature(). Bidiyon yana bayyana cewa an saita mai canji Tvalue don riƙe karatun Celsius, amma za ka iya canza shi don amfani da mai canji na Fahrenheit F maimakon.
Nuna Aikin Kai Tsaye
A cikin bidiyon, an nuna aikin da aka kammala. Bayan an kunna lambar kuma an sake saita modul ɗin, yana haɗawa zuwa cibiyar sadarwar Wi-Fi. Serial Monitor yana nuna matsayin haɗin kai da adireshin IP na na'urar. Ta hanyar shiga wannan adireshin IP a cikin burauzar yanar gizo, za ka iya ganin shafi mai sauƙi wanda ke nuna zafin jiki da zafi na yanzu. Nunin yana nuna karatun yana sabuntawa a lokaci-lokaci. Lokacin da aka dumama firikwensin DHT11 da bindigar zafi, karatun zafin jiki akan shafin yanar gizo yana ƙaruwa daidai. Idan an cire wayar bayanan firikwensin, shafin yana nuna "None" don ƙimar firikwensin, wanda shine fasalin taimako mai amfani don warware matsala.
Babuka
- [00:00] Gabatarwa ga Aikin
- [01:33] Fahimtar ESP8266 da Sabobin Yanar Gizo
- [05:47] Haɗa ESP-01 don Shirye-shirye
- [08:51] Shigar da Tallafin Board na ESP8266 a Arduino IDE
- [11:47] Aiki na 1: Walƙiya LED tare da ESP8266
- [20:28] Haɗa Firikwensin DHT11
- [22:34] Shigar da Ɗakin Karatu na DHT Sensor
- [23:13] Aiki na 2: Karanta DHT11 akan Serial Monitor
- [30:10] Bayanin Lambar don Aikin Sabar Yanar Gizo
- [36:14] Aiki na 3: Kunna Lambar Sabar Yanar Gizo
- [38:42] Nunawa: Duba Zazzabi Ta hanyar Wi-Fi
- [41:43] Ƙarshe da Warware Matsala
/*
* 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
Albarkatun da kuma shafukan da za a duba
Babu kayan aiki tukuna.
Fayiloli📁
Lambar Arduino (.ino)
-
ESP8266_ESP1_DHT111 codes for Lesson 31 of Sunfounder's 3-in-1
ESP8266_ESP1_DHT111_all.zip9.31 MB
Fayil Fritzing
-
DHT11 Humitidy and Temperature Sensor (3 pins)
DHT11 Humitidy and Temperature Sensor (3 pins).fzpz0.20 MB
Jagoran Mai Amfani
-
DHT11 Jagoran Mai Amfani
robojax-DHT11_manual.pdf0.82 MB