DHT11, DHT22 сенсорларын TM1637 дисплейімен және релемен пайдаланып, айнымалы ток жүктемесін басқару
Бұл жоба Arduino, DHT11/DHT22 температура мен ылғалдылық сенсоры, TM1637 дисплейі және айнымалы ток жүктемесін басқаруға арналған реле арқылы температураны бақылайтын жүйені құруды көрсетеді. Бұл қондырғы өте әмбебап және әртүрлі қолдану салаларына бейімделуі мүмкін. Мысалы, сіз мыналарды жасай аласыз:


- Кішігірім жылыжайға арналған ақылды термостат, температура көрсеткіштеріне қарай жылытқышты немесе желдеткішті автоматты түрде реттейді.
- Химиялық процестегі сұйықтықтың температурасын бақылау және басқару жүйесі.
- Бауырымен жорғалаушыларға арналған қоршауға арналған автоматты температураны бақылау жүйесі.
- Температурамен белсендірілетін дабыл жүйесі, белгілі бір шекке жеткенде ескертуді іске қосады.
Жүйе температура мен ылғалдылықты өлшеу үшін DHT11 немесе DHT22 сенсорын пайдаланады (бейнеде 00:11). TM1637 дисплейі ағымдағы температураны көрсетеді (бейнеде 00:17), ал реле алдын ала анықталған температура параметрлеріне негізделген айнымалы ток жүктемесін (мысалы, шам, желдеткіш немесе жылытқыш) қосады немесе өшіреді (бейнеде 00:23).
Аппараттық құралдар/Компоненттер
Бұл жобаны құру үшін сізге келесі компоненттер қажет:
- Arduino Uno (немесе үйлесімді плата)
- DHT11 немесе DHT22 температура мен ылғалдылық сенсоры (бейнеде 00:11)
- TM1637 дисплей модулі (бейнеде 00:17)
- Реле модулі (бейнеде 00:19)
- Жалғағыш сымдар
- Макет тақтасы
- Айнымалы ток жүктемесі (мысалы, кішкентай шам немесе желдеткіш)
Сымдарды жалғау нұсқаулығы
Сымдарды жалғау қарапайым, бірақ жобаның жұмыс істеуі үшін өте маңызды. Көрнекі нұсқаулық үшін бейнені қараңыз.

Егжей-тегжейлі сымдарды жалғау нұсқаулары мен диаграммаларды бейнеден табуға болады (бейнеде 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 дисплейінде температураны көрсетеді және температура көрсеткіштеріне негізделген айнымалы ток жүктемесін басқарады.
Бөлімдер
- [00:06] Кіріспе және жобаға шолу
- [01:12] Кодтың қолжетімділігі және қосымша ресурстар
- [01:44] DHT сенсорының сымдарын жалғау
- [02:25] TM1637 дисплейінің сымдарын жалғау
- [02:50] Айнымалы ток жүктемесі мен реленің сымдарын жалғау
- [04:33] Реле түйреуіші мен қуат қосылымдары
- [05:29] Кітапханаларды орнату
- [05:52] Кодты түсіндіру: TM1637 бөлімі
- [06:47] Кодты түсіндіру: DHT бөлімі
- [07:50] Кодты түсіндіру: Реле және орнату
- [08:26] Кодты түсіндіру: Цикл және температураны басқару
- [10:12] getTemp() функциясын түсіндіру
/*
* 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
}
}
Сізге қажет болуы мүмкін нәрселер
-
АмазонкаDHT22 from Amazonamzn.to
-
АмазонкаPurchase 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
Ресурстар мен сілтемелер
-
СыртқыDHT11 Manual (PDF)robojax.com
Файлдар📁
Arduino кітапханалары (zip)
-
DHT22 Arduino Library
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 файлы
-
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
Пайдаланушының нұсқаулығы
-
DHT11 пайдаланушы нұсқаулығы
robojax-DHT11_manual.pdf0.82 MB -
DHT22 Temperature and Humidity sensor user's manual
robojax-DHT22_manual.pdf0.36 MB
Басқа файлдар
-
DHT22 User's manual
robojax-DHT22_manual.pdf