ትምህርት 31/31፡ የሙቀት እና እርጥበት መጠን በWi-Fi በመጠቀም DHT11 እና ESP01 SunFounder ኪት
ይህ የፕሮጀክት መመሪያ የESP8266 (ESP-01) ሞጁል እና የDHT11 ዳሳሽ በመጠቀም ገመድ አልባ የሙቀት እና የእርጥበት መቆጣጠሪያ ስርዓት እንዴት እንደሚገነቡ ይመራዎታል። በመጨረሻው ላይ፣ የራሱን የድር አገልጋይ የሚፈጥር መሳሪያ ይኖርዎታል፣ ይህም በአካባቢዎ አውታረ መረብ ላይ በተገናኘ ማንኛውም መሳሪያ ላይ የእውነተኛ ጊዜ ዳሳሽ ንባቦችን እንዲመለከቱ ያስችልዎታል፣ ለምሳሌ ስማርትፎን፣ ታብሌት ወይም ኮምፒውተር። ይህ የሳይንሳዊ ዓለምን ከድር በይነገጾች ዲጂታል ዓለም ጋር እንዴት ማገናኘት እንደሚቻል የሚያሳይ መሰረታዊ የIoT ፕሮጀክት ነው።
እዚህ የሚማሩት ክህሎቶች በከፍተኛ ሁኔታ ወደ ሌላ ቦታ የሚተላለፉ ናቸው። ይህ ትክክለኛ ውቅር ለብዙ ተግባራዊ አፕሊኬሽኖች ሊስተካከል ይችላል፣ ከእነዚህም ውስጥ፡-
- ጥሩ የእድገት ሁኔታዎችን ለማረጋገጥ ለግሪንሀውስ ወይም ለአትክልት ስፍራ የርቀት መቆጣጠሪያ ጣቢያ መገንባት።
- እንደ ወይን ምድር ቤት ወይም የሕፃን መኝታ ክፍል ያሉ የአንድ የተወሰነ ክፍል የአየር ሁኔታን ለመቆጣጠር ቀላል የቤት አውቶሜሽን ስርዓት መፍጠር።
- ለትምህርት ቤት የሳይንስ ፕሮጀክት አነስተኛ ወጪ ያለው የአካባቢ መረጃ መቅጃ መጫን።
- ድንገተኛ የሙቀት ለውጦችን ሊያሳውቅዎት የሚችል መሰረታዊ የደህንነት ወይም የማንቂያ ስርዓት ማዘጋጀት።
ሃርድዌር እና ክፍሎች
ይህን ፕሮጀክት ለመከተል የሚከተሉትን ክፍሎች ያስፈልግዎታል። ዋና ዋና ክፍሎቹ የESP8266 ሞጁል እና የDHT11 ዳሳሽ ናቸው፣ ነገር ግን የተቀሩት ሞጁሉን ለፕሮግራም እና ለኃይል አቅርቦት አስፈላጊ ናቸው።
- ESP8266 (ESP-01S) ሞጁል፡- አብሮ የተሰራ የWi-Fi አቅም ያለው ዋናው ማይክሮ መቆጣጠሪያ።
- DHT11 የሙቀት እና የእርጥበት ዳሳሽ፡- የአካባቢን መረጃ የሚለካው ዳሳሽ።
- Arduino Uno ቦርድ (ለUSB-to-Serial ልወጣ)፡- በዚህ ፕሮጀክት ውስጥ ዋናው የArduino ቦርድ ለማቀነባበር አይጠቅምም። በምትኩ፣ የእሱ USB-to-serial ቺፕ የESP8266 ሞጁሉን ለፕሮግራም ለማዘጋጀት ይጠቅማል።
- 330-ohm ተቃዋሚ፡- ለመጀመሪያው የLED ብልጭታ ሙከራ ጅረትን ለመገደብ ይጠቅማል።
- 1k-ohm እስከ 10k-ohm ተቃዋሚ፡- ለDHT11 ዳሳሽ የመረጃ መስመር የመጎተቻ ተቃዋሚ።
- LED እና መዝለያ ሽቦዎች፡- ለሙከራ ደረጃ እና ሁሉንም አስፈላጊ ግንኙነቶች ለመስራት።
- Breadboard፡- የወረዳ ግንኙነቶችን ለመፍጠር።
የሽቦ አገጣጠም መመሪያ
የሽቦ አገጣጠም ሂደት በደረጃዎች ይከናወናል። በመጀመሪያ፣ 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 (Reset) ወደ 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 ማከል አለብዎት። ይህ በሁለት ደረጃዎች ይከናወናል፡-
- የቦርድ አስተዳዳሪ URL ያክሉ፡- ወደ
File > Preferencesይሂዱ። በ"Additional Boards Manager URLs" መስክ ውስጥ፣ የሚከተለውን URL ይለጥፉ፡-http://arduino.esp8266.com/stable/package_esp8266com_index.jsonእና "OK" ን ጠቅ ያድርጉ። - የESP8266 ቦርድ ጥቅል ይጫኑ፡- ወደ
Tools > Board > Boards Manager...ይሂዱ። "esp8266" ን ይፈልጉ፣ "esp8266 by ESP8266 Community" ን ያግኙ እና "Install" ን ጠቅ ያድርጉ። ከተጫነ በኋላ፣ ወደTools > Board > ESP8266 Boards > Generic ESP8266 Moduleበመሄድ ቦርዱን መምረጥ ይችላሉ።
የDHT ዳሳሽ ቤተ-መጻሕፍት መጫን
ኮዱ ከDHT11 ዳሳሽ ጋር ለመገናኘት በቤተ-መጻሕፍት ላይ ይመሰረታል። ይህ ቤተ-መጻሕፍት በArduino IDE ውስጥ መጫን አለበት።
- ወደ
Tools > Manage Libraries...ይሂዱ። - "DHT sensor library" ን ይፈልጉ።
- በAdafruit የተሰራውን ቤተ-መጻሕፍት ያግኙ እና "Install" ን ጠቅ ያድርጉ። ይህ ቤተ-መጻሕፍት ከዳሳሹ መረጃ የማንበብ ሂደትን ያቃልላል።
ፕሮጀክት 1፡ የLED ብልጭታ ሙከራ
ወደ ሴንሰሩ ከመግባትዎ በፊት፣ ኢስፒ-01ን በተሳካ ሁኔታ መያዝ እንደሚችሉ ማረጋገጥ ወሳኝ ነው። ይህ የሚከናወነው በጥንታዊው "ብሊንክ" ምሳሌ ነው። ቪዲዮው የተጠናቀረውን ሁለትዮሽ የማስተላለፍ እና ለማብራት የተለየ ባች ፋይል የመጠቀም ሂደት ያሳያል፣ ይህም ለተወሰነው የዩኤስቢ-ወደ-ሴሪያል ዝግጅት መፍትሄ ነው። ግቡ በቦርዱ ላይ ያለው ኤልኢዲ ሲብሊንክ ማየት ነው፣ ይህም የፕሮግራም ሰንሰለቱ እየሰራ መሆኑን ያረጋግጣል። ከፕሮግራም በኋላ ሞጁሉን ለማስኬድ፣ IO1ን ከጂኤንዲ ጋር የሚያገናኘውን ሽቦ ማላቀቅ እና ከዚያ ሞጁሉን ለማስጀመር የአርኤስቲ ፒን ከጂኤንዲ ጋር ለአፍታ ማገናኘት አለብዎት።
ፕሮጀክት 2፡ ዲኤችቲ11ን በሴሪያል ሞኒተር ላይ ማንበብ
ፕሮግራሙ ከተረጋገጠ በኋላ፣ ቀጣዩ እርምጃ የዲኤችቲ11 ሴንሰርን ማገናኘት እና ውሂቡን ማንበብ ነው። ይህ ፕሮጀክት ከአዳፍሩት ዲኤችቲ ሴንሰር ቤተ-መጻሕፍት የተወሰደውን የዲኤችቲተስተር ምሳሌ ይጠቀማል። ኮዱ ትክክለኛውን ፒን እና የሴንሰር አይነት እንዲጠቀም ተዋቅሯል። ይህን ፕሮግራም ካብራቱ በኋላ፣ የሙቀት እና የእርጥበት ንባቦችን ለማየት ሴሪያል ሞኒተሩን (ወደ 9600 ባውድ ያዘጋጁ) መክፈት ይችላሉ።
ፕሮጀክት 3፡ የድር አገልጋይ ማዋቀር
የመጨረሻው ፕሮጀክት ሁሉንም ነገር ያጣምራል። ኢስፒ8266 ከአካባቢዎ የዋይ-ፋይ አውታረ መረብ ጋር እንዲገናኝ እና ቀላል የድር ገጽ እንዲያስተናግድ ፕሮግራም ተደርጓል። ይህ ገጽ የቀጥታ የሙቀት እና የእርጥበት ንባቦችን ያሳያል። ኮዱ የኢስፒ8266 "ሄሎሰርቨር" ምሳሌ የተሻሻለ ስሪት ነው። ቪዲዮው የመሣሪያውን አይፒ አድራሻ ወይም የኤምዲኤንኤስ ስሙን (ለምሳሌ ሮቦጃክስዲኤችቲ.local) በማስገባት በተመሳሳይ አውታረ መረብ ላይ ባለ ማንኛውም መሣሪያ ላይ ባለው የድር አሳሽ ይህን ውሂብ እንዴት መድረስ እንደሚቻል ያሳያል።
የኮድ ማብራሪያ
ሙሉው ፕሮግራም ለማውረድ ስለሚገኝ፣ ይህ ክፍል ለራስዎ አውታረ መረብ እና ምርጫዎች ማስተካከል በሚጠይቁ ቁልፍ በተጠቃሚ ሊዋቀሩ በሚችሉ ተለዋዋጮች ላይ ያተኩራል። ኮዱ የኢስፒ8266 "ሄሎሰርቨር" ምሳሌ የተሻሻለ ስሪት ነው። ዋናው አመክንዮ ሴንሰሩን ማንበብ እና ውሂቡን ለማሳየት የኤችቲኤምኤል ገጽ መቅረጽን ያካትታል።
ማስተካከል የሚጠይቁ ወሳኝ የኮድ ክፍሎች እነዚሁ ናቸው፦
// የዋይ-ፋይ ማረጋገጫዎች - እነዚህን መቀየር አለብዎት
const char* ssid = "የእርስዎWiFiSSID"; // በዋይ-ፋይ አውታረ መረብዎ ስም ይተኩ
const char* password = "የእርስዎWiFiPassword"; // በዋይ-ፋይ የይለፍ ቃልዎ ይተኩ
ይህ ሊቀየር የሚገባው በጣም አስፈላጊው ክፍል ነው። የssid እና password ተለዋዋጮች ከአካባቢዎ የዋይ-ፋይ አውታረ መረብ ጋር በትክክል መዛመድ አለባቸው። የዋይ-ፋይ ስም ለትላንትና እና ለትንሽ ፊደል ስሜታዊ ነው፣ ስለዚህ በትክክል ማስገባትዎን ያረጋግጡ።
// የዲኤችቲ11 ሴንሰር ውቅር
#define DHTPIN 2 // ከዲኤችቲ ሴንሰር ጋር የተገናኘ ዲጂታል ፒን (GPIO2)
#define DHTTYPE DHT11 // የዲኤችቲ 11 ሴንሰር አይነት
እነዚህ ትርጓሜዎች ሴንሰሩን ያዋቅራሉ። DHTPIN የሴንሰሩ የውሂብ መስመር የተገናኘበት በኢስፒ8266 ላይ ያለው የጂፒአይኦ ፒን ነው (በዚህ መመሪያ ውስጥ GPIO2 ነው)። DHTTYPE የተወሰነውን የሴንሰር ሞዴል ይገልጻል። የዲኤችቲ22 ሴንሰር እየተጠቀሙ ከሆነ፣ ለDHT22 ያለውን መስመር ኮሜንት ማስወገድ እና ለDHT11 ያለውን ኮሜንት ማድረግ ይኖርብዎታል።
// ሊዋቀሩ የሚችሉ ተለዋዋጮች
const long interval = 3000; // በሴንሰር ንባቦች መካከል ያሉ ሚሊሰከንዶች
char temperature[] = "00.0";
char humidity[] = "00.0";
የinterval ተለዋዋጭ ሴንሰሩ ምን ያህል ጊዜ እንደሚነበብ እና የድር ገጹ ምን ያህል ጊዜ እንደሚዘመን ይቆጣጠራል። ነባሪው 3000 ሚሊሰከንድ (3 ሰከንድ) ነው። የዝማኔዎችን ድግግሞሽ ለመቀነስ ይህን ወደ ከፍተኛ እሴት እንደ 5000 ወይም 10000 ከፍ ማድረግ ይችላሉ።
ኮዱ የሙቀት ንባቡን የሚቀርጽ ተግባርንም ያካትታል። በsendTemperature() ተግባር ውስጥ ያለውን አመክንዮ በማስተካከል የሙቀት መጠኑን በሴልሺየስ ወይም በፋራናይት ለማሳየት መምረጥ ይችላሉ። ቪዲዮው የTvalue ተለዋዋጭ የሴልሺየስ ንባብ ለመያዝ እንደተዋቀረ ያስረዳል፣ ነገር ግን በምትኩ የፋራናይት ተለዋዋጭ Fን ለመጠቀም መቀየር ይችላሉ።
የቀጥታ ፕሮጀክት ማሳያ
በቪዲዮው ውስጥ፣ የተጠናቀቀው ፕሮጀክት ታይቷል። ኮዱ ከተብራተ እና ሞጁሉ ከተጀመረ በኋላ፣ ከዋይ-ፋይ አውታረ መረብ ጋር ይገናኛል። ሴሪያል ሞኒተሩ የግንኙነት ሁኔታን እና የመሣሪያውን አይፒ አድራሻ ያሳያል። በድር አሳሽ ውስጥ ወደዚህ አይፒ አድራሻ በማሰስ፣ የአሁኑን የሙቀት እና የእርጥበት መጠን የሚያሳይ ቀላል ገጽ ማየት ይችላሉ። ማሳያው ንባቦቹ በቅጽበት ሲዘመኑ ያሳያል። የዲኤችቲ11 ሴንሰር በሙቀት ሽጉጥ ሲሞቅ፣ በድር ገጹ ላይ ያለው የሙቀት ንባብ በዚሁ መጠን ይጨምራል። የሴንሰሩ የውሂብ ሽቦ ከተላቀቀ፣ ገጹ ለሴንሰር እሴቶቹ "ምንም" የሚለውን ያሳያል፣ ይህም ጠቃሚ የችግር መፈተሻ ባህሪ ነው።
ምዕራፎች
- [00:00] ለፕሮጀክቱ መግቢያ
- [01:33] ኢስፒ8266 እና የድር አገልጋዮችን መረዳት
- [05:47] ኢስፒ-01ን ለፕሮግራም ማድረግ ማገናኘት
- [08:51] በአርዱኖ አይዲኢ ውስጥ የኢስፒ8266 ቦርድ ድጋፍን መጫን
- [11:47] ፕሮጀክት 1፡ ከኢስፒ8266 ጋር ኤልኢዲ ማብራት
- [20:28] የዲኤችቲ11 ሴንሰርን ማገናኘት
- [22:34] የዲኤችቲ ሴንሰር ቤተ-መጻሕፍትን መጫን
- [23:13] ፕሮጀክት 2፡ ዲኤችቲ11ን በሴሪያል ሞኒተር ላይ ማንበብ
- [30:10] ለድር አገልጋይ ፕሮጀክቱ የኮድ ማብራሪያ
- [36:14] ፕሮጀክት 3፡ የድር አገልጋይ ኮድን ማብራት
- [38:42] ማሳያ፡ የሙቀት መጠንን በዋይ-ፋይ መመልከት
- [41:43] መደምደሚያ እና የችግር መፈተሻ
/*
* 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
ምንጮች እና ምንጮች
አሁን ምንም ምንጮች የለም።
ፋይሎች📁
Arduino ኮድ (.ino)
-
ESP8266_ESP1_DHT111 codes for Lesson 31 of Sunfounder's 3-in-1
ESP8266_ESP1_DHT111_all.zip9.31 MB
ፍሪትዚንግ ፋይል
-
DHT11 Humitidy and Temperature Sensor (3 pins)
DHT11 Humitidy and Temperature Sensor (3 pins).fzpz0.20 MB
ተጠቃሚ መመሪያ
-
DHT11 ተጠቃሚ መመሪያ
robojax-DHT11_manual.pdf0.82 MB