کوډ ولټوئ

د DHT11، DHT22 د TM1637 ښودونکي او Relay سره وکاروئ ترڅو د AC بار کنټرول کړئ

د DHT11، DHT22 د TM1637 ښودونکي او Relay سره وکاروئ ترڅو د AC بار کنټرول کړئ

دا پروژه ښیي چې څنګه د Arduino، DHT11/DHT22 د تودوخې او رطوبت سینسر، د TM1637 ښودونکي، او د AC بار کنټرول لپاره د ریلې په کارولو سره د تودوخې کنټرول شوی سیستم جوړ کړو. دا ترتیب خورا څو اړخیز دی او د مختلفو کارونو لپاره تطبیق کېدای شي. د بېلګې په توګه، تاسو کولی شئ جوړ کړئ:

DHT11 Module
DHT22 sensor with PCB-1
  • د کوچني شنو خونو لپاره یو هوښیار ترموسټاټ، چې د تودوخې لوستلو پر بنسټ په اتوماتيک ډول هیټر یا پنکه تنظیموي.
  • یو سیستم چې د کیمیاوي پروسې په مایع کې د تودوخې څارنه او کنټرول کوي.
  • د ژویو د احاطې لپاره اتوماتیک د تودوخې کنټرول سیستم.
  • د تودوخې فعال شوی الارم سیستم، چې کله یو ټاکلی حد ته ورسیږي نو خبرتیا رامینځته کوي.

سیستم د DHT11 یا DHT22 سینسر څخه د تودوخې او رطوبت اندازه کولو لپاره کار اخلي (په ویډیو کې په 00:11). د TM1637 ښودونکی اوسنۍ تودوخه ښیي (په ویډیو کې په 00:17)، او یو ریلې د مخکې ټاکل شویو تودوخې ترتیباتو پر بنسټ د AC بار (لکه څراغ، پنکه، یا هیټر) چالان یا بندوي (په ویډیو کې په 00:23).

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

د دې پروژې د جوړولو لپاره، تاسو به لاندې اجزاوو ته اړتیا ولرئ:

  • Arduino Uno (یا مطابقت لرونکی بورډ)
  • د DHT11 یا DHT22 تودوخې او رطوبت سینسر (په ویډیو کې په 00:11)
  • د TM1637 ښودونکی ماډل (په ویډیو کې په 00:17)
  • د ریلې ماډل (په ویډیو کې په 00:19)
  • جمپر تارونه
  • بریډبورډ
  • AC بار (د بېلګې په توګه، یو کوچنی څراغ یا پنکه)

د تارونو لارښود

تارونه وصل کول ساده دي مګر د پروژې د فعالیت لپاره خورا مهم دي. د بصري لارښود لپاره ویډیو ته مراجعه وکړئ.

Wiring DHT11 DHT22 with TM1637 dispaly and relay
Wiring DHT11 DHT22 with TM1637 dispaly and relay

د تارونو تفصیلي لارښوونې او ډیاګرامونه په ویډیو کې موندل کیدی شي (په ویډیو کې له 02:03 څخه تر 05:18 پورې). د DHT سینسر (په ویډیو کې په 01:44)، د TM1637 ښودونکي (په ویډیو کې په 02:25)، او د ریلې ماډل (په ویډیو کې په 03:37) لپاره اړیکو ته ډیره پاملرنه وکړئ.

د کوډ تشریح

د Arduino کوډ دوه کتابتونونه کاروي: TM1637Display او د DHT سینسر کتابتون. تاسو اړتیا لرئ دا کتابتونونه په Arduino IDE کې نصب کړئ. د کوډ تر ټولو مهم د تنظیم وړ برخې دا دي:


// د ماډل د اړیکو پنونه (ډیجیټل پنونه)
#define CLK 2
#define DIO 3
// د ازموینو ترمنځ وخت (په ملی ثانیو کې)
#define TEST_DELAY   1000
// ****** د TM1637 ښودونکي کوډ پای

#define DHTPIN 9     // هغه ډیجیټل پن چې موږ ورسره وصل یو
#define DHTTYPE DHT22   // DHT 22 (AM2302)، AM2321
#define RELAY 7 // هغه پن چې له ریلې سره وصل دی

د #define بیانونه تاسو ته اجازه درکوي چې د TM1637 ښودونکي (CLK او DIO)، د DHT سینسر (DHTPIN)، او ریلې (RELAY) لپاره د پن ټاکل اسانه بدل کړئ ترڅو ستاسو د تارونو سره سمون ولري. DHTTYPE ټاکي چې تاسو کوم DHT سینسر کاروئ (DHT11 یا DHT22). د TEST_DELAY متغیر د لوستلو ترمنځ وخت کنټرولوي.

د getTemp() فنکشن یو دودیز فنکشن دی چې د DHT سینسر څخه د تودوخې او رطوبت معلوماتو لوستلو لپاره کارول کیږي. دا تاسو ته اجازه درکوي چې د سټرینګ دلیل په لیږلو سره د مختلفو معلوماتو ډولونه (سیلسیس، فارنهایټ، رطوبت، د تودوخې شاخص) غوښتنه وکړئ (په ویډیو کې له 09:01 څخه تر 10:34 پورې). د بېلګې په توګه: getTemp("c") تودوخه په سیلسیس کې بیرته راګرځوي، او getTemp("h") رطوبت بیرته راګرځوي.


if(temp >50 )
 {
  digitalWrite(RELAY, LOW);
 }else{
  digitalWrite(RELAY, HIGH);
 }

د کوډ دا برخه د تودوخې پر بنسټ ریلې کنټرولوي. د محرک نقطې تنظیمولو لپاره د حد ارزښت (په دې مثال کې 50) بدل کړئ (په ویډیو کې له 09:44 څخه تر 10:11 پورې).

ژوندۍ پروژه/مظاهره

د پروژې بشپړه مظاهره په ویډیو کې شتون لري (په ویډیو کې له 00:51 څخه تر 01:07 پورې). ویډیو سیستم په عمل کې ښیي، د TM1637 ښودونکي باندې تودوخه ښیي او د تودوخې لوستلو پر بنسټ AC بار کنټرولوي.

فصلونه

  • [00:06] پیژندنه او د پروژې کتنه
  • [01:12] د کوډ شتون او اضافي سرچینې
  • [01:44] د DHT سینسر تارونه
  • [02:25] د TM1637 ښودونکي تارونه
  • [02:50] د AC بار او ریلې تارونه
  • [04:33] د ریلې پن او بریښنا اړیکې
  • [05:29] د کتابتون نصبول
  • [05:52] د کوډ تشریح: د TM1637 برخه
  • [06:47] د کوډ تشریح: د DHT برخه
  • [07:50] د کوډ تشریح: ریلې او ترتیب
  • [08:26] د کوډ تشریح: لوپ او د تودوخې کنټرول
  • [10:12] د getTemp() فنکشن تشریح

انځورونه

DHT11 Sensor
DHT11 Sensor
DHT11 Module
DHT11 Module
DHT11 Module
DHT11 Module
DHT22 sensor with PCB-1
DHT22 sensor with PCB-1
DHT22 sensor no PCB
DHT22 sensor no PCB
Wiring DHT11 DHT22 with TM1637 dispaly and relay
Wiring DHT11 DHT22 with TM1637 dispaly and relay
DHT22_red-6
DHT22_red-6
57-Arduino code for a DHT11 DHT22 temperature and humidity sensor with a TM1637 display.
ژبه: C++
/*
 * Original code from TM1637 https://github.com/avishorp/TM1637
 * Original code and library for DHT22 https://github.com/adafruit/DHT-sensor-library
 * Watch the video for this code https://youtu.be/xD8wHXDzLkQ 
 * Other Arduino library and videos https://robojax.com
 */
 /*

 * Modified for Robojax video on January 10, 2018
 * by Ahmad Nejrabi, in Ajax, Ontario, Canada
 */
 
// ****** Start of TM1637 Display code 
#include <Arduino.h>
#include <TM1637Display.h>
// Module connection pins (Digital Pins)
#define CLK 2
#define DIO 3
// The amount of time (in milliseconds) between tests
#define TEST_DELAY   1000
TM1637Display display(CLK, DIO);
// ****** end of TM1637 Display code 

// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain
// updated by Ahmad for Robojax.com videos.
// on January 10, 2018 in Ajax, Ontario, Canada

// ****** Start of DHT code 
#include "DHT.h"
#define DHTPIN 9     // 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);
// ********** end of DHT22 code

#define RELAY 7 // the pin connected to relay
void setup()
{
  Serial.begin(9600);
  Serial.println("DHT22 Robojax Test with Display");
  pinMode(RELAY,OUTPUT);// set RELAY pin as output

  dht.begin();  
}

void loop()
{
  delay(TEST_DELAY);// wait
  // **** TM1637 code start
  display.setBrightness(0x0f);// set brightness
  uint8_t data[] = { 0x0, 0x0, 0x0, 0x0 };// clear display values
  display.setSegments(data);//clear display
  // **** TM1637 code end
  

  // Robojax.com test video
  Serial.println(getTemp("c"));

  int temp = round(getTemp("c"));
  
  display.showNumberDec(temp, false, 3,1);
 if(temp >50 )
 {
  digitalWrite(RELAY, LOW);
 }else{
  digitalWrite(RELAY, HIGH);
 }


}// loop end


/*
 * getTemp(String req)
 * returns the temperature related parameters
 * req is string request
 * getTemp("c") will return temperature in Celsius
 * getTemp("hic") will return heat index in Celsius
 * getTemp("f") will return temperature in Fahrenheit
 * getTemp("hif") will return temperature in Fahrenheit
  * getTemp("h") will return humidity
 */
float getTemp(String req)
{

  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);

  // Compute heat index in Fahrenheit (the default)
  float hif = dht.computeHeatIndex(f, h);
  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Failed to read from DHT sensor!");
    return 0.0;
  }
  // Compute heat index in Kelvin 
  float k = t + 273.15;
  if(req =="c"){
    return t;//return Celsius
  }else if(req =="f"){
    return f;// return Fahrenheit
  }else if(req =="h"){
    return h;// return humidity
  }else if(req =="hif"){
    return hif;// return heat index in Fahrenheit
  }else if(req =="hic"){
    return hic;// return heat index in Celsius
  }else if(req =="k"){
    return k;// return temperature in Kelvin
  }else{
    return 0.000;// if no request found, return 0.000
  }
 
}

هغه شیان چې تاسو ورته اړتیا لرئ

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

فایلونه📁

Arduino کتابتونونه (zip)

Fritzing فایل

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

نور فایلونه