Raadi Koodka

Cashirka 31/31: Qiyaas Heerkulka iyo Qoyaanka Wi-Fi iyadoo la isticmaalayo DHT11 iyo ESP01 SunFounder Kit

Cashirka 31/31: Qiyaas Heerkulka iyo Qoyaanka Wi-Fi iyadoo la isticmaalayo DHT11 iyo ESP01 SunFounder Kit

Hagaha mashruucani wuxuu ku tusinayaa sida loo dhiso nidaam kormeerid heerkulka iyo qoyaanka wireless ah adigoo isticmaalaya module-ka ESP8266 (ESP-01) iyo sensor-ka DHT11. Markaad dhammaystirto, waxaad yeelan doontaa qalab sameeya server-kiisa web-ga oo u oggolaanaya inaad ku aragto akhrinta sensor-ka waqtiga-real ee qalab kasta oo ku xiran shabakadaada gudaha, sida taleefanka casriga ah, tablet-ka, ama kombiyuutarka. Kani waa mashruuc aasaasi ah oo IoT ah kaas oo muujinaya sida loo isku xiro adduunka jirka ee sensor-ka iyo adduunka dhijitaalka ah ee interfaces-ka web-ga.

Module-ka ESP8266 ESP01

Xirfadaha aad halkan ku baranaysid aad bay u wareegi karaan. Qaabkan saxda ah waxaa loo habeyn karaa codsiyo wax ku ool ah oo kala duwan, oo ay ku jiraan:

  • Dhismaha xarun kormeerid fog oo loogu talagalay aqalka lagu beerto ama beerta si loo hubiyo xaaladaha koritaanka ee ugu fiican.
  • Abuurista nidaam otomaatig ah oo guriga ah si loo kormeero cimilada qol gaar ah, sida qolka khamriga ama qolka ilmaha.
  • Dejinta qalab diiwaangelin xogta deegaanka oo qiimo jaban ah mashruuc sayniska dugsiga.
  • Horumarinta nidaam ammaan ama digniin aasaasi ah oo kuu sheegi kara isbeddelada heerkulka ee degdega ah.

Qalabka iyo Qaybaha

Si aad ula socotid mashruucan, waxaad u baahan doontaa qaybaha soo socda. Qaybaha ugu muhiimsan waa module-ka ESP8266 iyo sensor-ka DHT11, laakiin kuwa kale waxay lama huraan u yihiin barnaamijynta iyo tamarta module-ka.

  • Module-ka ESP8266 (ESP-01S): Microcontroller-ka xudunta u ah oo leh awood Wi-Fi ku dhex dhisan.
  • Sensor-ka Heerkulka iyo Qoyaanka DHT11: Sensor-ka cabbira xogta deegaanka.
  • Board-ka Arduino Uno (loo isticmaalo beddelka USB-ilaa-Serial): Mashruucan, board-ka Arduino ee ugu weyn looma isticmaalo awoodda habaynta. Taa beddelkeeda, chip-kiisa USB-ilaa-serial ayaa loo isticmaalaa in lagu barnaamijyo module-ka ESP8266.
  • Resistor-ka 330-ohm: Waxaa loo isticmaalaa tijaabada LED-ka ee bilowga ah si loo xaddido hadda.
  • Resistor-ka 1k-ohm ilaa 10k-ohm: Resistor kor-u-jiid ah oo loogu talagalay khadka xogta ee sensor-ka DHT11.
  • LED iyo fiilooyinka Jumper: Waqtiga tijaabada iyo samaynta dhammaan xiriirada lagama maarmaanka ah.
  • Breadboard: Si loo sameeyo xiriirada wareegga.

Hagaha Xiridda

Xiridda esp8266 ESP01 iyo DHT11 ee casharka 31 ee koorsada 3-ee-1 Sunfounder

Habka xiridda waxaa lagu sameeyaa heerar. Marka hore, waxaanu dejin doonaa wareegga aasaasiga ah si loo barnaamijyo ESP-01. Tani waxay ku lug leedahay isticmaalka Arduino Uno sida barnaamijyaha. Fiidiyowgu wuxuu si cad u muujinayaa qaabkan. Xiriirada muhiimka ah waa kuwan soo socda:

Si aad u gasho qaabka barnaamijynta, waa inaad ku xirtaa IO1 (GPIO1) pin-ka Dhulka (GND). Tani waxay u sheegaysaa ESP8266 inuu sugayo firmware cusub. Xiriirada kale ee barnaamijynta waa:

  • VCC (3.3V) ilaa EN (Enable): Tani waxay awood siisaa module-ka.
  • GND ilaa GND: Dhul wadaag ah oo loogu talagalay wareegga.
  • VCC (5V) ilaa VCC (5V): Si loo awood siiyo board-ka barnaamijyaha.
  • RX (ESP) ilaa TX (Arduino): Isgaarsiin taxane ah oo ka imanaysa barnaamijyaha ilaa module-ka.
  • TX (ESP) ilaa RX (Arduino): Isgaarsiin taxane ah oo ka imanaysa module-ka ilaa barnaamijyaha.
  • RST (Reset) ilaa GND: Kani waa xiriir ku meel gaar ah oo loo isticmaalo in module-ka dib loogu celiyo ka dib barnaamijynta.

Marka ESP-01 la barnaamijyo, xiridda sensor-ka waa mid toos ah. Sensor-ka DHT11 wuxuu u baahan yahay resistor kor-u-jiid ah oo ku yaal khadkiisa xogta si loo hubiyo isgaarsiin deggan.

Qaabka sensor-ka, xirirku waa sida soo socota:

  • DHT11 VCC (Pin 1) ilaa 3.3V: Awoodda sensor-ka.
  • DHT11 DATA (Pin 2) ilaa GPIO2 (IO2) ee ESP-01: Khadka xogta ee akhrinta sensor-ka. Resistor kor-u-jiid ah oo 1k-ohm ilaa 10k-ohm ah waa inuu ku xirnaadaa inta u dhaxaysa khadkan xogta iyo khadka awoodda 3.3V.
  • DHT11 GND (Pin 4) ilaa GND: Dhul wadaag ah oo loogu talagalay sensor-ka.

Diyaarinta Arduino IDE

Si aad u barnaamijyo ESP8266, waa inaad marka hore ku darto taageerada board-kiisa Arduino IDE-gaaga. Tani waxay ku samaysmaa laba tillaabo:

  1. Ku dar URL-ka Maareeyaha Board-ka: Tag File > Preferences. Galka "Additional Boards Manager URLs", ku xaji URL-ka soo socda: http://arduino.esp8266.com/stable/package_esp8266com_index.json oo guji "OK".
  2. Ku rakib Baakadka Board-ka ESP8266: Tag Tools > Board > Boards Manager.... Raadi "esp8266", hel "esp8266 by ESP8266 Community", oo guji "Install". Ka dib rakibaadda, waxaad dooran kartaa board-ka adigoo tagaya Tools > Board > ESP8266 Boards > Generic ESP8266 Module.

Ku Rakibidda Maktabadda Sensor-ka DHT

Koodhku wuxuu ku tiirsan yahay maktabad si uu ula xiriiro sensor-ka DHT11. Maktabadan waa in lagu rakibaa Arduino IDE-gaaga.

  1. Tag Tools > Manage Libraries....
  2. Raadi "DHT sensor library".
  3. Hel maktabadda Adafruit oo guji "Install". Maktabadani waxay fududaysaa habka akhrinta xogta sensor-ka.

Mashruuca 1: Tijaabada LED Blink

Ka hor inta aan u dhex galno sensor-ka, waxaa muhiim ah inaad xaqiijiso inaad si guul leh u program-gelin karto ESP-01. Tan waxaa lagu sameeyaa tusaalaha caadiga ah ee "Blink". Fiidiyowgu wuxuu muujinayaa habka loo soo saaro binary-ga la isku daray iyo isticmaalka faylka gooni ah ee batch si loo flash-geliyo, taas oo ah xal u ah qaabka USB-to-serial-ka gaarka ah. Ujeedadu waa inaad aragto LED-ka ku jira gudaha oo shiimaya, taas oo xaqiijinaysa in silsiladda program-ku shaqeyneyso. Si aad module-ka ugu shubto ka dib program-ka, waa inaad goysaa siliga ku xira IO1 ilaa GND ka dibna si ku meel gaar ah ugu xirtaa pin-ka RST ilaa GND si aad module-ka u reset-geliso.

Mashruuca 2: Akhrinta DHT11 ee Kormeerka Serial-ka

Marka program-ku la xaqiijiyo, talaabada xigta waa inaad ku xirto sensor-ka DHT11 oo aad akhrido xogtiisa. Mashruucani wuxuu isticmaalaa tusaalaha DHTtester ee ka yimid maktabadda sensor-ka DHT ee Adafruit. Koodhku wuxuu loo habeeyay inuu isticmaalo pin-ka saxda ah iyo nooca sensor-ka. Ka dib markaad flash-geliso barnaamijkan, waxaad furi kartaa Kormeeraha Serial-ka (oo lagu dejiyay 9600 baud) si aad u aragto akhrinta heerkulka iyo qoyaanka.

Mashruuca 3: Dejinta Server-ka Web-ka

Mashruuca ugu dambeeya wuxuu isku darayaa wax kasta. ESP8266 waxaa loo program-geliyay inuu ku xirmo shabakaddaada Wi-Fi-ga maxalliga ah oo uu martigeliyo bog web oo fudud. Boggani wuxuu soo bandhigayaa akhrinta heerkulka iyo qoyaanka ee tooska ah. Koodhku waa nooc laga beddelay tusaalaha "HelloServer" ee ESP8266. Fiidiyowgu wuxuu muujinayaa sida loo helo xogtan adoo galiya cinwaanka IP-ga ee qalabka ama magaciisa mDNS (tusaale, robojaxDHT.local) gudaha browser-ka web-ka ee qalab kasta oo ku xiran isla shabakadda.

Sharaxaadda Koodhka

Maadaama barnaamijka buuxa uu diyaar u yahay in la soo dejiyo, qaybtani waxay diiradda saaraysaa doorsoomayaasha muhiimka ah ee isticmaaluhu beddeli karo ee aad u baahan doonto inaad ku hagaajiso shabakaddaada iyo doorashooyinkaaga. Koodhku waa nooc laga beddelay tusaalaha "HelloServer" ee ESP8266. Mantiqa asaasiga ah wuxuu ku lug leeyahay akhrinta sensor-ka iyo qaabaynta bog HTML ah si loo muujiyo xogta.

Waa kuwan qaybaha muhiimka ah ee koodhka ee aad u baahan doonto inaad beddesho:

// Wi-Fi credentials - WAA IN AAD BADDESHO KUWAN
const char* ssid = "YourWiFiSSID"; // Ku beddel magaca shabakaddaada Wi-Fi
const char* password = "YourWiFiPassword"; // Ku beddel erayga sirta ah ee Wi-Fi-gaaga

Kani waa qaybta ugu muhiimsan ee la beddelo. Doorsoomayaasha ssid iyo password waa inay si sax ah u dhigmaan shabakaddaada Wi-Fi-ga maxalliga ah. Magaca Wi-Fi-ga wuxuu xasaasi u yahay xarfaha, marka hubi inaad si sax ah u gasho.

// Qaabaynta sensor-ka DHT11
#define DHTPIN 2     // Pin-ka dijitaalka ah ee ku xiran sensor-ka DHT (GPIO2)
#define DHTTYPE DHT11   // Nooca sensor-ka DHT 11

Qeexitaannadani waxay dejiyaan sensor-ka. DHTPIN waa pin-ka GPIO ee ESP8266 ee khadka xogta ee sensor-ku ku xiran yahay (kaas oo ah GPIO2 hagahan). DHTTYPE wuxuu qeexayaa nooca gaarka ah ee sensor-ka. Haddii aad isticmaalaysid sensor-ka DHT22, waxaad furi lahayd khadka DHT22 oo aad ka faafin lahayd khadka DHT11.

// Doorsoomayaal la beddeli karo
const long interval = 3000; // millisekenooyin u dhexeeya akhrinta sensor-ka
char temperature[] = "00.0";
char humidity[] = "00.0";

Doorsoomaha interval wuxuu xakameeyaa inta jeer ee sensor-ka la akhriyo oo bogga web-ka la cusboonaysiiyo. Kan asaasiga ah waa 3000 millisekeno (3 ilbiriqsi). Waxaad kordhin kartaa qiime sare sida 5000 ama 10000 si aad u yarayso inta jeer ee cusboonaysiinta.

Koodhku wuxuu kaloo ku darayaa shaqo qaabaysa akhrinta heerkulka. Waxaad dooran kartaa inaad ku muujiso heerkulka Celsius ama Fahrenheit adoo beddelaya mantiqa ku jira shaqada sendTemperature(). Fiidiyowgu wuxuu sharxayaa in doorsoomaha Tvalue loo dejiyay inuu hayo akhrinta Celsius, laakiin waxaad beddeli kartaa si aad u isticmaasho doorsoomaha Fahrenheit F halkii.

Muuujinta Mashruuca Tooska ah

Fiidiyowga, mashruuca dhammaystiran waa la muujiyay. Ka dib marka koodhka la flash-geliyo oo module-ka la reset-geliyo, wuxuu ku xirmaa shabakadda Wi-Fi-ga. Kormeeraha Serial-ka wuxuu soo bandhigayaa xaaladda xiridda iyo cinwaanka IP-ga ee qalabka. Adoo u gudbaya cinwaankan IP-ga gudaha browser-ka web-ka, waxaad arki kartaa bog fudud oo muujinaya heerkulka iyo qoyaanka hadda jira. Muujintu waxay tusinaysaa akhrinta oo si toos ah u cusboonaysiineysa. Marka sensor-ka DHT11 lagu kululeeyo qalab kululayn ah, akhrinta heerkulka ee bogga web-ka ayaa si waafaqsan u kordheysa. Haddii khadka xogta ee sensor-ka la gooyo, boggu wuxuu muujinayaa "None" qiimaha sensor-ka, taas oo ah astaan faa'iido leh oo caawinaysa cilad-baadhista.

Cutubyada

  • [00:00] Hordhaca Mashruuca
  • [01:33] Fahamka ESP8266 iyo Server-yada Web-ka
  • [05:47] Ku xiridda ESP-01 si loo program-geliyo
  • [08:51] Rakibidda Taageerada Board-ka ESP8266 ee Arduino IDE
  • [11:47] Mashruuca 1: Shiimaynta LED-ka ee ESP8266
  • [20:28] Ku xiridda Sensor-ka DHT11
  • [22:34] Rakibidda Maktabadda Sensor-ka DHT
  • [23:13] Mashruuca 2: Akhrinta DHT11 ee Kormeerka Serial-ka
  • [30:10] Sharaxaadda Koodhka ee Mashruuca Server-ka Web-ka
  • [36:14] Mashruuca 3: Flash-gelinta Koodhka Server-ka Web-ka
  • [38:42] Muujin: Daawashada Heerkulka Wi-Fi-ga Dhexdiisa
  • [41:43] Gunaanad iyo Cilad-baadhis

Sawirro

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
Luqadda: 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
}

Kheyraadka & Tixraacyada

Wali wax kaydsan ah oo weli ma jiro.

Faylasha📁

Koodhka Arduino (.ino)

Faylka Fritzing

Buugga Isticmaalaha