Search Code

DHT11, DHT22 sensörlerini TM1637 ekran ve Röle ile kullanarak AC yükünü kontrol etme

DHT11, DHT22 sensörlerini TM1637 ekran ve Röle ile kullanarak AC yükünü kontrol etme

Bu proje, bir Arduino, DHT11/DHT22 sıcaklık ve nem sensörü, bir TM1637 ekran ve bir AC yükünü kontrol etmek için bir röle kullanarak sıcaklık kontrollü bir sistemin nasıl oluşturulacağını gösterir. Bu kurulum son derece çok yönlüdür ve çeşitli uygulamalara uyarlanabilir. Örneğin, şunları oluşturabilirsiniz:

DHT11 Module
DHT22 sensor with PCB-1
  • Sıcaklık okumalarına göre bir ısıtıcıyı veya fanı otomatik olarak ayarlayan, küçük bir sera için akıllı bir termostat.
  • Kimyasal bir proseste bir sıvının sıcaklığını izleyen ve kontrol eden bir sistem.
  • Sürüngen muhafazası için otomatik bir sıcaklık kontrol sistemi.
  • Belirli bir eşiğe ulaşıldığında bir uyarı tetikleyen, sıcaklıkla etkinleşen bir alarm sistemi.

Sistem, sıcaklığı ve nemi ölçmek için bir DHT11 veya DHT22 sensörü kullanır (videoda 00:11'de). TM1637 ekranı mevcut sıcaklığı gösterir (videoda 00:17'de) ve bir röle, önceden tanımlanmış sıcaklık ayarlarına göre bir AC yükünü (bir ampul, fan veya ısıtıcı gibi) açar veya kapatır (videoda 00:23'te).

Donanım/Bileşenler

Bu projeyi oluşturmak için aşağıdaki bileşenlere ihtiyacınız olacak:

  • Arduino Uno (veya uyumlu kart)
  • DHT11 veya DHT22 Sıcaklık ve Nem Sensörü (videoda 00:11'de)
  • TM1637 Ekran Modülü (videoda 00:17'de)
  • Röle Modülü (videoda 00:19'da)
  • Jumper Kablolar
  • Breadboard
  • AC Yük (örneğin, küçük bir ampul veya fan)

Bağlantı Kılavuzu

Bağlantı basittir ancak projenin işlevselliği için çok önemlidir. Görsel bir kılavuz için videoya bakın.

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

Ayrıntılı bağlantı talimatları ve şemalar videoda bulunabilir (videoda 02:03 ile 05:18 arası). DHT sensörü (videoda 01:44'te), TM1637 ekranı (videoda 02:25'te) ve röle modülü (videoda 03:37'de) için bağlantılara çok dikkat edin.

Kod Açıklaması

Arduino kodu iki kitaplık kullanır: TM1637Display ve DHT sensör kitaplığı. Bu kitaplıkları Arduino IDE'ye kurmanız gerekecektir. Kodun en önemli yapılandırılabilir kısımları şunlardır:


// Modül bağlantı pinleri (Dijital Pinler)
#define CLK 2
#define DIO 3
// Testler arasındaki süre (milisaniye cinsinden)
#define TEST_DELAY   1000
// ****** TM1637 Ekran kodunun sonu

#define DHTPIN 9     // bağlı olduğumuz dijital pin
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
#define RELAY 7 // röleye bağlı pin

#define ifadeleri, TM1637 ekranı (CLK ve DIO), DHT sensörü (DHTPIN) ve röle (RELAY) için pin atamalarını kendi bağlantınıza uyacak şekilde kolayca değiştirmenizi sağlar. DHTTYPE, hangi DHT sensörünü kullandığınızı tanımlar (DHT11 veya DHT22). TEST_DELAY değişkeni, okumalar arasındaki süreyi kontrol eder.

getTemp() işlevi, DHT sensöründen sıcaklık ve nem verilerini okumak için kullanılan özel bir işlevdir. Bir dize bağımsız değişkeni ileterek farklı veri türleri (Celsius, Fahrenheit, nem, ısı indeksi) talep etmenizi sağlar (videoda 09:01 ile 10:34 arası). Örneğin: getTemp("c") sıcaklığı Celsius cinsinden döndürür ve getTemp("h") nemi döndürür.


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

Bu kod bölümü, sıcaklığa göre röleyi kontrol eder. Tetikleme noktasını ayarlamak için eşik değerini (bu örnekte 50) değiştirin (videoda 09:44 ile 10:11 arası).

Canlı Proje/Gösterim

Projenin tam bir gösterimi videoda mevcuttur (videoda 00:51 ile 01:07 arası). Video, sistemi çalışırken, TM1637 ekranında sıcaklığı gösterirken ve sıcaklık okumalarına göre AC yükünü kontrol ederken gösterir.

Bölümler

  • [00:06] Giriş ve Proje Genel Bakışı
  • [01:12] Kod Bulunabilirliği ve Ek Kaynaklar
  • [01:44] DHT Sensör Bağlantısı
  • [02:25] TM1637 Ekran Bağlantısı
  • [02:50] AC Yük ve Röle Bağlantısı
  • [04:33] Röle Pini ve Güç Bağlantıları
  • [05:29] Kitaplık Kurulumu
  • [05:52] Kod Açıklaması: TM1637 Bölümü
  • [06:47] Kod Açıklaması: DHT Bölümü
  • [07:50] Kod Açıklaması: Röle ve Kurulum
  • [08:26] Kod Açıklaması: Döngü ve Sıcaklık Kontrolü
  • [10:12] getTemp() Fonksiyon Açıklaması

Görseller

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

İhtiyacın olabileceğini düşünüyor

Kaynaklar ve referanslar

Dosyalar📁

Arduino Kütüphaneleri (zip)

Fritzing Dosyası

Kullanım Kılavuzu

Diğer dosyalar