کوډ ولټوئ

درس ۳۱/۳۱: اندازه‌گیری دما او رطوبت د Wi-Fi له لارې د DHT11 او ESP01 SunFounder کټ په کارولو سره

درس ۳۱/۳۱: اندازه‌گیری دما او رطوبت د Wi-Fi له لارې د DHT11 او ESP01 SunFounder کټ په کارولو سره

دا پروژه لارښود تاسو ته د ESP8266 (ESP-01) ماډل او د DHT11 سینسر په کارولو سره د بېسیمه تودوخې او رطوبت څارنې سیسټم جوړولو لارښوونه کوي. په پای کې، تاسو به یوه وسیله ولرئ چې خپل ویب سرور جوړوي، چې تاسو ته اجازه درکوي د ریښتیني وخت سینسر لوستل په هر هغه وسیله وګورئ چې ستاسو محلي شبکې سره وصل وي، لکه سمارټ فون، ټابلیټ، یا کمپیوټر. دا یو بنسټیز IoT پروژه ده چې ښیي څنګه د سینسرونو فزیکي نړۍ د ویب انٹرفیسونو ډیجیټل نړۍ سره وصل کړو.

ESP8266 ESP01 ماډل

هغه مهارتونه چې تاسو دلته زده کوئ خورا د لیږد وړ دي. دا دقیق ترتیب د عملي غوښتنلیکونو پراخه لړۍ لپاره تطبیق کیدی شي، په شمول د:

  • د شنو خونو یا باغ لپاره د لرې څارنې سټیشن جوړول ترڅو د ودې غوره شرایط ډاډمن کړي.
  • د کور اتوماتیک ساده سیسټم رامینځته کول ترڅو په یوه ځانګړې کوټه کې اقلیم وڅاري، لکه د شرابو حجره یا د ماشوم نرسري.
  • د ښوونځي د ساینس پروژې لپاره د ټیټ لګښت چاپیریالي معلوماتو لاګر تنظیم کول.
  • د بنسټیز امنیت یا خبرتیا سیسټم پراختیا چې کولی شي تاسو ته د ناڅاپي تودوخې بدلونونو خبر درکړي.

هارډویر او اجزاوې

د دې پروژې تعقیب لپاره، تاسو به لاندې اجزاوو ته اړتیا ولرئ. لومړني اجزاوې د ESP8266 ماډل او د DHT11 سینسر دي، مګر پاتې نور د ماډل پروګرام کولو او بریښنا رسولو لپاره اړین دي.

  • ESP8266 (ESP-01S) ماډل: اصلي مایکروکنټرولر د جوړ شوي وای فای وړتیا سره.
  • DHT11 د تودوخې او رطوبت سینسر: هغه سینسر چې د چاپیریال معلومات اندازه کوي.
  • Arduino Uno بورډ (د USB-to-Serial تبادلې لپاره): په دې پروژه کې، اصلي Arduino بورډ د هغې د پروسس کولو ځواک لپاره نه کارول کیږي. پرځای یې، د هغې USB-to-serial چپ د ESP8266 ماډل پروګرام کولو لپاره کارول کیږي.
  • 330-ohm ریزسټر: د لومړني LED بلینک ازموینې لپاره د جریان محدودولو لپاره کارول کیږي.
  • 1k-ohm څخه تر 10k-ohm ریزسټر: د DHT11 سینسر د ډیټا لاین لپاره پل-اپ ریزسټر.
  • LED او جمپر تارونه: د ازموینې مرحلې او ټولو اړینو اړیکو جوړولو لپاره.
  • بریډبورډ: د سرکټ اړیکو جوړولو لپاره.

وائرینګ لارښود

esp8266 ESP01 او DHT11 وائرینګ د 31 درس Sunfounder 3-in-1 کورس لپاره

د وائرینګ پروسه په مرحلو کې ترسره کیږي. لومړی، موږ به د ESP-01 پروګرام کولو لپاره بنسټیز سرکټ جوړ کړو. دا د Arduino Uno د پروګرامر په توګه کارول شامل دي. ویډیو دا ترتیب په روښانه توګه ښیي. کلیدي اړیکې په لاندې ډول دي:

د پروګرام کولو حالت ته د ننوتلو لپاره، تاسو باید د IO1 (GPIO1) پن ځمکې (GND) سره وصل کړئ. دا ESP8266 ته وایي چې د نوي فرم ویئر انتظار وکړي. د پروګرام کولو لپاره پاتې اړیکې په لاندې ډول دي:

  • VCC (3.3V) څخه EN (Enable) ته: دا ماډل فعالوي.
  • GND څخه GND ته: د سرکټ لپاره مشترکه ځمکه.
  • VCC (5V) څخه VCC (5V) ته: د پروګرامر بورډ بریښنا کولو لپاره.
  • RX (ESP) څخه TX (Arduino) ته: د پروګرامر څخه ماډل ته د سیریل اړیکو لپاره.
  • TX (ESP) څخه RX (Arduino) ته: د ماډل څخه پروګرامر ته د سیریل اړیکو لپاره.
  • RST (ری سیٹ) څخه GND ته: دا یوه لنډمهاله اړیکه ده چې د پروګرام کولو وروسته د ماډل ری سیٹ کولو لپاره کارول کیږي.

یوځل چې ESP-01 پروګرام شي، د سینسر لپاره وائرینګ ساده ده. د DHT11 سینسر د هغې د ډیټا لاین کې د پل-اپ ریزسټر ته اړتیا لري ترڅو باثباته اړیکه ډاډمنه کړي.

د سینسر تنظیم لپاره، وائرینګ په لاندې ډول دی:

  • DHT11 VCC (پن 1) څخه 3.3V ته: د سینسر لپاره بریښنا.
  • DHT11 DATA (پن 2) څخه GPIO2 (IO2) په ESP-01 کې: د سینسر لوستلو لپاره د ډیټا لاین. د 1k-ohm څخه تر 10k-ohm پل-اپ ریزسټر باید د دې ډیټا لاین او د 3.3V بریښنا لاین ترمنځ وصل شي.
  • DHT11 GND (پن 4) څخه GND ته: د سینسر لپاره مشترکه ځمکه.

د Arduino IDE چمتو کول

د ESP8266 پروګرام کولو لپاره، تاسو باید لومړی د هغې بورډ ملاتړ خپل Arduino IDE ته اضافه کړئ. دا په دوو مرحلو کې ترسره کیږي:

  1. د بورډ مدیر URL اضافه کړئ: File > Preferences ته لاړ شئ. د "Additional Boards Manager URLs" ساحه کې، لاندې URL پیسټ کړئ: http://arduino.esp8266.com/stable/package_esp8266com_index.json او "OK" کلیک وکړئ.
  2. د ESP8266 بورډ پیکج نصب کړئ: Tools > Board > Boards Manager... ته لاړ شئ. د "esp8266" لټون وکړئ، "esp8266 by ESP8266 Community" ومومئ، او "Install" کلیک وکړئ. د نصبولو وروسته، تاسو کولی شئ بورډ غوره کړئ د Tools > Board > ESP8266 Boards > Generic ESP8266 Module په واسطه.

د DHT سینسر کتابتون نصبول

کوډ د DHT11 سینسر سره د تعامل لپاره په یوه کتابتون تکیه کوي. دا کتابتون باید ستاسو په Arduino IDE کې نصب شي.

  1. Tools > Manage Libraries... ته لاړ شئ.
  2. د "DHT sensor library" لټون وکړئ.
  3. د Adafruit لخوا کتابتون ومومئ او "Install" کلیک وکړئ. دا کتابتون د سینسر څخه د معلوماتو لوستلو پروسه ساده کوي.

پروژه 1: د LED بلینک ازموینه

د سینسر ته له کتنې مخکې، دا خورا مهمه ده چې تاسو وکولای شئ په بریالیتوب سره ESP-01 پروګرام کړئ. دا د کلاسیک "Blink" مثال سره ترسره کیږي. ویډیو د تالیف شوي بائنري د صادرولو او د جلا بیچ فایل کارولو پروسه ښیې ترڅو یې فلش کړي، کوم چې د ځانګړي USB-to-serial ترتیب لپاره یو بدیل حل دی. موخه دا ده چې د بورډ پر سر LED ځلیدل وګورئ، چې د پروګرام کولو لړۍ کار کوي تایید کړي. د پروګرام کولو وروسته د ماډل چلولو لپاره، تاسو باید هغه تار پرې کړئ چې IO1 له GND سره نښلوي او بیا د RST پن په لنډه توګه له GND سره وصل کړئ ترڅو ماډل ری سیٹ کړئ.

پروژه 2: د سریال مانیټر کې د DHT11 لوستل

یوځل چې پروګرام کول تایید شي، بله مرحله د DHT11 سینسر نښلول او د هغې د معلوماتو لوستل دي. دا پروژه د Adafruit DHT سینسر کتابتون څخه د DHTtester مثال کاروي. کوډ د سم پن او سینسر ډول کارولو لپاره تنظیم شوی. د دې پروګرام له فلش کولو وروسته، تاسو کولای شئ سریال مانیټر خلاص کړئ (په 9600 baud کې تنظیم شوی) ترڅو د تودوخې او رطوبت لوستل وګورئ.

پروژه 3: د ویب سرور تنظیم کول

وروستۍ پروژه هرڅه سره یوځای کوي. ESP8266 پروګرام شوی ترڅو ستاسو محلي Wi-Fi شبکې سره وصل شي او یو ساده ویب پاڼه کوربه کړي. دا پاڼه ژوندۍ تودوخه او رطوبت لوستل ښیې. کوډ د ESP8266 "HelloServer" مثال یو بدل شوی نسخه ده. ویډیو ښیې چې څنګه د دې معلوماتو ته د لاسرسي لپاره د وسیلې IP پته یا د هغې mDNS نوم (د مثال په توګه، robojaxDHT.local) په هر وسیله کې چې ورته شبکې سره وصل وي، د ویب براوزر کې دننه کړئ.

د کوډ تشریح

څرنګه چې بشپړ پروګرام د ډاونلوډ لپاره شتون لري، دا برخه په مهمو کاروونکي-تنظیم وړ متغیرونو تمرکز کوي چې تاسو به یې د خپلې شبکې او غوره توبونو لپاره تنظیم کولو ته اړتیا ولرئ. کوډ د ESP8266 "HelloServer" مثال یو بدل شوی نسخه ده. اصلي منطق د سینسر لوستل او د معلوماتو ښودلو لپاره د HTML پاڼې بڼه کول شامل دي.

دلته د کوډ مهمې برخې دي چې تاسو به یې بدلولو ته اړتیا ولرئ:

// Wi-Fi اسناد - تاسو باید دا بدل کړئ
const char* ssid = "YourWiFiSSID"; // د خپل Wi-Fi شبکې نوم سره یې بدل کړئ
const char* password = "YourWiFiPassword"; // د خپل Wi-Fi پاسورډ سره یې بدل کړئ

دا تر ټولو مهمه برخه ده چې بدلولو ته اړتیا لري. د ssid او password متغیرونه باید ستاسو د محلي Wi-Fi شبکې سره په سمه توګه سمون ولري. د Wi-Fi نوم د لویو او وړو تورو سره حساس دی، نو ډاډ ترلاسه کړئ چې په سمه توګه یې دننه کړئ.

// د DHT11 سینسر تنظیم
#define DHTPIN 2     // ډیجیټل پن د DHT سینسر سره وصل شوی (GPIO2)
#define DHTTYPE DHT11   // د DHT 11 سینسر ډول

دا تعریفونه سینسر تنظیموي. DHTPIN په ESP8266 کې GPIO پن دی چې د سینسر د معلوماتو کرښه ورسره وصل ده (کوم چې په دې لارښود کې GPIO2 دی). DHTTYPE د سینسر ځانګړی ماډل تعریفوي. که تاسو د DHT22 سینسر کاروئ، تاسو باید د DHT22 کرښه غیر-تبصره کړئ او د DHT11 کرښه تبصره کړئ.

// تنظیم وړ متغیرونه
const long interval = 3000; // د سینسر لوستلو ترمنځ ملی ثانیې
char temperature[] = "00.0";
char humidity[] = "00.0";

د interval متغیر کنټرولوي چې سینسر څو ځله لوستل کیږي او ویب پاڼه څو ځله تازه کیږي. ډیفالټ 3000 ملی ثانیې (3 ثانیې) دی. تاسو کولای شئ دا لوړ ارزښت ته لکه 5000 یا 10000 زیات کړئ ترڅو د تازه کولو فریکونسي کمه کړئ.

کوډ یو فنکشن هم لري چې د تودوخې لوستل بڼه کوي. تاسو کولای شئ په sendTemperature() فنکشن کې د منطق په بدلولو سره تودوخه په سیلسیس یا فارنهایټ کې ښودل غوره کړئ. ویډیو تشریح کوي چې متغیر Tvalue د سیلسیس لوستلو ساتلو لپاره ټاکل شوی، مګر تاسو کولای شئ دا بدل کړئ ترڅو د فارنهایټ متغیر F پرځای وکاروئ.

ژوندۍ پروژې نندارې

په ویډیو کې، بشپړه شوې پروژه نندارې ته وړاندې کیږي. وروسته له دې چې کوډ فلش شي او ماډل ری سیٹ شي، دا د Wi-Fi شبکې سره وصل کیږي. سریال مانیټر د اړیکې حالت او د وسیلې IP پته ښیې. په ویب براوزر کې د دې IP پتې ته په تګ سره، تاسو کولای شئ یوه ساده پاڼه وګورئ چې اوسنۍ تودوخه او رطوبت ښیې. ننداره په ریښتیني وخت کې د لوستلو تازه کول ښیې. کله چې د DHT11 سینسر د تودوخې ټوپک سره ګرم شي، په ویب پاڼه کې د تودوخې لوستل په مطابق زیاتیږي. که د سینسر د معلوماتو تار پرې شي، پاڼه د سینسر ارزښتونو لپاره "None" ښیې، کوم چې د ستونزو حل کولو ګټور ځانګړتیا ده.

فصلونه

  • [00:00] پروژې ته پیژندنه
  • [01:33] د ESP8266 او ویب سرورونو پوهیدل
  • [05:47] د پروګرام کولو لپاره د ESP-01 تارونه نښلول
  • [08:51] په Arduino IDE کې د ESP8266 بورډ ملاتړ نصب کول
  • [11:47] پروژه 1: د ESP8266 سره د LED ځلول
  • [20:28] د DHT11 سینسر تارونه نښلول
  • [22:34] د DHT سینسر کتابتون نصب کول
  • [23:13] پروژه 2: په سریال مانیټر کې د DHT11 لوستل
  • [30:10] د ویب سرور پروژې لپاره د کوډ تشریح
  • [36:14] پروژه 3: د ویب سرور کوډ فلش کول
  • [38:42] ننداره: د Wi-Fi له لارې د تودوخې لیدل
  • [41:43] پایله او د ستونزو حل کول

انځورونه

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
ژبه: 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
}

سرچینې او حوالې

تر اوسه هیڅ سرچینې نشته.

فایلونه📁

Arduino کوډ (.ino)

Fritzing فایل

د کارونکي لارښود