Bincika Lambar

Darasi na 31/31: Auna Zazzabi da Danshi ta hanyar Wi-Fi ta amfani da DHT11 da ESP01 SunFounder Kit

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.
Na'urar ESP8266 ESP01

Ƙ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

Haɗin waya na esp8266 ESP01 da DHT11 don darasi na 31 Sunfounder 3-in-1 course

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:

  1. Ƙ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.json kuma danna "OK".
  2. 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 zuwa Tools > 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.

  1. Je zuwa Tools > Manage Libraries....
  2. Bincika "DHT sensor library".
  3. 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

Hotuna

ESP8266 ESP01 module
ESP8266 ESP01 module
ESP8266 ESP01 and DHT11 wiring for lesson 31 Sunfounder 3-in-1 course
ESP8266 ESP01 and DHT11 wiring for lesson 31 Sunfounder 3-in-1 course
895-Lesson 31/31: DHT11 and ESP01 over WiFi code
Harshe: C++

 /*
 * 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>&#1585;&#1591;&#1608;&#1576;&#1578; &#1608; &#1581;&#1585;&#1575;&#1585;&#1578; &#1578;&#1608;&#1587;&#1591; &#1583;&#1740; &#1575;&#1670; &#1578;&#1740;</h1>";
      
  page +="<p style=\"font-size:150px;\">&#1581;&#1585;&#1575;&#1585;&#1578;<br/>";  
  page +="<span style=\"color:red; font-size:150px;\">";
  page += String(tValue, 2);
  page +="&#176C</p>";

  page +="<p style=\"font-size:150px;\">&#1585;&#1591;&#1608;&#1576;&#1578;<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
}

Albarkatun da kuma shafukan da za a duba

Babu kayan aiki tukuna.

Fayiloli📁

Lambar Arduino (.ino)

Fayil Fritzing

Jagoran Mai Amfani