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:


- 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.

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ı
/*
* 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
-
AmazonDHT22 from Amazonamzn.to
-
AmazonPurchase DHT11 from Amazonamzn.to
-
eBayDHT22 from eBayebay.us
-
AliExpressDHT11 and DHT22 from AliExpressamzn.to
-
AliExpressPurchase AM2302 or DHT11 or DHT22 sensor from AliExpresss.click.aliexpress.com
-
BanggoodPurchase DHT11 module from Banggoodbanggood.com
-
BanggoodPurchase DHT22 module from Banggoodbanggood.com
Kaynaklar ve referanslar
-
DışDHT11 Manual (PDF)robojax.com
Dosyalar📁
Arduino Kütüphaneleri (zip)
-
DHT22 Arduino Kütüphanesi
robojax-DHT22_library.zip0.01 MB -
TM1637 Arduino Library
TM1637_library.zip1.36 MB -
DHT22 PCB module red
DHT22-module-red.fzpz0.01 MB
Fritzing Dosyası
-
Temperature Sensor DHT11
Temperature Sensor DHT11.fzpz0.01 MB -
DHT22 Humidity and Temperature Sensor
DHT22 Humidity and Temperature Sensor.fzpz0.01 MB -
DHT22 PCB module red
DHT22-module-red.fzpz0.01 MB -
TM1637 Seven Segment module
TM1637.fzpz0.01 MB -
TM1637 4 digit seven segment display
TM1637-1.fzpz0.01 MB -
5V Relay Module_LOW_trigger
5V Relay Module_LOW_trigger.fzpz0.08 MB -
5V RELAY 2.0
5V RELAY 2.0.fzpz0.02 MB
Kullanım Kılavuzu
-
DHT11 Kullanıcı Kılavuzu
robojax-DHT11_manual.pdf0.82 MB -
DHT22 Temperature and Humidity sensor user's manual
robojax-DHT22_manual.pdf0.36 MB
Diğer dosyalar
-
DHT22 Kullanım Kılavuzu
robojax-DHT22_manual.pdf