Search Code

Amfani da DHT11, DHT22 tare da nunin TM1637 da Relay don sarrafa nauyin AC

Amfani da DHT11, DHT22 tare da nunin TM1637 da Relay don sarrafa nauyin AC

Wannan aikin yana nuna yadda ake gina tsarin sarrafa zafin jiki ta amfani da Arduino, na'urar auna zafin jiki da danshi DHT11/DHT22, allo na TM1637, da relay don sarrafa kayan aikin AC. Wannan saitin yana da amfani sosai kuma ana iya daidaita shi don aikace-aikace daban-daban. Misali, za ka iya gina:

DHT11 Module
DHT22 sensor with PCB-1
  • Thermostat mai wayo don ƙaramin greenhouse, yana daidaita hita ko fan ta atomatik bisa karatun zafin jiki.
  • Tsarin kula da zafin jiki na ruwa a cikin tsarin sinadarai.
  • Tsarin sarrafa zafin jiki na atomatik don wurin zama na dabbobi masu rarrafe.
  • Tsarin ƙararrawa wanda zafin jiki ke kunnawa, yana haifar da faɗakarwa idan an kai wani matakin da aka ƙayyade.

Tsarin yana amfani da na'urar DHT11 ko DHT22 don auna zafin jiki da danshi (a cikin bidiyo a 00:11). Allon TM1637 yana nuna zafin jiki na yanzu (a cikin bidiyo a 00:17), kuma relay yana kunna ko kashe kayan aikin AC (kamar fitila, fan, ko hita) bisa ƙayyadaddun saitunan zafin jiki (a cikin bidiyo a 00:23).

Kayan aiki/Abubuwan haɗi

Don gina wannan aikin, za ka buƙaci waɗannan abubuwan:

  • Arduino Uno (ko allo mai jituwa)
  • Na'urar auna zafin jiki da danshi DHT11 ko DHT22 (a cikin bidiyo a 00:11)
  • Modul ɗin allo na TM1637 (a cikin bidiyo a 00:17)
  • Modul ɗin Relay (a cikin bidiyo a 00:19)
  • Wayoyin Jumper
  • Breadboard
  • Kayan aikin AC (misali, ƙaramin fitila ko fan)

Jagorar Haɗin Waya

Haɗin waya yana da sauƙi amma yana da mahimmanci don aikin tsarin. Duba bidiyon don jagora na gani.

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

Cikakkun umarnin haɗin waya da zane-zane ana iya samun su a cikin bidiyo (a cikin bidiyo daga 02:03 zuwa 05:18). Kula sosai da haɗin na'urar DHT (a cikin bidiyo a 01:44), allo na TM1637 (a cikin bidiyo a 02:25), da modul ɗin relay (a cikin bidiyo a 03:37).

Bayanin Lambar

Lambar Arduino tana amfani da ɗakunan karatu guda biyu: TM1637Display da ɗakin karatu na na'urar DHT. Kana buƙatar shigar da waɗannan ɗakunan karatu a cikin Arduino IDE. Mafi mahimmancin sassan lambar da za a iya daidaita su sune:


// Module connection pins (Digital Pins)
#define CLK 2
#define DIO 3
// The amount of time (in milliseconds) between tests
#define TEST_DELAY   1000
// ****** end of TM1637 Display code 

#define DHTPIN 9     // what digital pin we're connected to
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
#define RELAY 7 // the pin connected to relay

Bayanan #define suna ba ka damar sauya sanya fil ɗin don allo na TM1637 (CLK da DIO), na'urar DHT (DHTPIN), da relay (RELAY) cikin sauƙi don dacewa da haɗin wayarka. DHTTYPE yana bayyana wace na'urar DHT kake amfani da ita (DHT11 ko DHT22). Maɓallin TEST_DELAY yana sarrafa lokaci tsakanin karatu.

Aikin getTemp() aiki ne na musamman da ake amfani da shi don karanta bayanan zafin jiki da danshi daga na'urar DHT. Yana ba ka damar neman nau'ikan bayanai daban-daban (Celsius, Fahrenheit, danshi, ma'aunin zafi) ta hanyar wuce da gardama na rubutu (a cikin bidiyo daga 09:01 zuwa 10:34). Misali: getTemp("c") yana mayar da zafin jiki a Celsius, kuma getTemp("h") yana mayar da danshi.


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

Wannan ɓangaren lambar yana sarrafa relay bisa zafin jiki. Sauya ƙimar iyaka (50 a wannan misalin) don daidaita wurin kunnawa (a cikin bidiyo daga 09:44 zuwa 10:11).

Aikin Kai Tsaye/Nunawa

Cikakken nunin aikin yana samuwa a cikin bidiyo (a cikin bidiyo daga 00:51 zuwa 01:07). Bidiyon yana nuna tsarin yana aiki, yana nuna zafin jiki akan allo na TM1637 kuma yana sarrafa kayan aikin AC bisa karatun zafin jiki.

Babuka

  • [00:06] Gabatarwa da Bayanin Aikin
  • [01:12] Samuwar Lambar da Ƙarin Albarkatu
  • [01:44] Haɗin Waya na Na'urar DHT
  • [02:25] Haɗin Waya na Allon TM1637
  • [02:50] Haɗin Waya na Kayan Aikin AC da Relay
  • [04:33] Fil ɗin Relay da Haɗin Wutar Lantarki
  • [05:29] Shigar da Ɗakin Karatu
  • [05:52] Bayanin Lambar: Sashen TM1637
  • [06:47] Bayanin Lambar: Sashen DHT
  • [07:50] Bayanin Lambar: Relay da Saitawa
  • [08:26] Bayanin Lambar: Loop da Sarrafa Zafin Jiki
  • [10:12] Bayanin Aikin getTemp()

Hotuna

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.
Harshe: 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
  }
 
}

Abin da zaka iya bukata

Albarkatun da kuma shafukan da za a duba

Fayiloli📁

Littattafan Arduino (zip)

Fayil Fritzing

Jagoran Mai Amfani

Sauran fayiloli