Сабақ 28: DHT11 температура сенсоры TM1637 дисплейімен | Arduino қадамдық курс
Осы сабақта Arduino Step-by-Step курсынан біз DHT11 температура мен ылғалдылық сенсорын TM1637 4 разрядты жеті сегментті дисплеймен біріктіру арқылы ықшам, автономды температура дисплейін құруды қарастырамыз. Көрсеткіштерді көру үшін сериялық мониторға сүйенудің орнына, бұл жоба қоршаған орта температурасын Цельсий және Фаренгейт бойынша визуалды түрде көрсететін шағын, өздігінен жұмыс істейтін құрылғыны жасайды. Бұл электроника жобаларыңыз үшін пайдаланушыға ыңғайлы интерфейстерді құрудың негізгі дағдысы болып табылады, деректерді цифрлық әлемнен физикалық дисплейге ауыстырады.
Бұл жоба температураны жылдам, бір қарағанда көру қажет болатын әртүрлі қолданбалар үшін практикалық құрылыс блогы болып табылады. Сізді шабыттандыру үшін бірнеше идея:
- Үстелдік ауа райы станциясы: Кеңсеңіздегі немесе хобби бөлмеңіздегі температураны бақылау үшін шағын, әрқашан қосулы дисплейді жасаңыз.
- Термостат мониторы: Үйіңіздегі термостаттың немесе HVAC желдеткішінің жанындағы температураны тексеру үшін арнайы дисплей жасаңыз.
- Инкубатор немесе террариум өлшегіші: Рептилия террариумының, өсімдік көбейту камерасының немесе DIY инкубатордың ішіндегі температураны ашпай-ақ бақылаңыз.
- Шеберхана немесе гараж термометрі: Шаңды немесе нашар жарықтандырылған шеберханада температураны тексеру үшін анық, жарқын дисплей өте қолайлы.
- Оқу жинағы: Arduino-мен әртүрлі типтегі сенсорлар мен шығыс модульдерін қосу жолын үйренуге арналған тамаша бастапқы жоба.
Қажетті аппараттық құралдар
Осы жобаны орындау үшін сізге келесі компоненттер қажет болады:
- Arduino Uno (немесе кез келген үйлесімді плата)
- DHT11 температура мен ылғалдылық сенсоры (3 істікшелі және 4 істікшелі PCB нұсқалары көрсетілген)
- TM1637 4 разрядты жеті сегментті дисплей модулі
- Макет тақтасы (Breadboard)
- Жалғағыш сымдар
Қосылу нұсқаулығы
Бұл жобаның сымдары қарапайым, сенсор мен дисплейге арналған қосылымдарды қажет етеді. Бейнеде DHT11 сенсорының екі түрлі нұсқасымен және TM1637 дисплейінің екі өлшемімен орнату көрсетілген, бірақ негізгі қосылымдар өзгеріссіз қалады.
Міне, бейнеде сипатталғандай DHT11 сенсоры мен TM1637 дисплейінің қосылу схемасы (бейнеде 05:06).



TM1637 дисплей модулі үшін қосылымдар келесідей:
- VCC Arduino-дағы 5V қосылымына.
- GND Arduino-дағы GND қосылымына.
- CLK (Сағат) цифрлық істікшеге, мысалы, D2.
- DIO (Деректер кірісі/шығысы) басқа цифрлық істікшеге, мысалы, D3.
DHT11 сенсоры үшін қосылымдар:
- VCC (немесе + істікшесі) 5V қосылымына.
- GND (немесе - істікшесі) GND қосылымына.
- Деректер (немесе S істікшесі) цифрлық істікшеге, мысалы, D2. (Ескерту: Бейнеде сенсордың деректер істікшесі 2-істікшеге қосылған, бірақ код үзіндісінде ол да 2-істікшеде көрсетілген. Дисплейдің CLK және DIO істікшелері код үзіндісінде 2 және 3 істікшелерінде, бұл қайшылық тудырады. Бейне транскрипциясында дисплей үшін 5 және 6 істікшелері айтылған, сондықтан қайшылықты болдырмау үшін біз оларды қолданамыз.)
Назар аударыңыз: Транскрипция мен код үзіндісі ықтимал істікше қайшылығын көрсетеді. Код DHT11 деректер істікшесін және TM1637 CLK істікшесін екеуін де цифрлық 2-істікшеде анықтайды. Бұны болдырмау үшін бөлек істікшелерді қолдану ұсынылады, мысалы, DHT11-ді 2-істікшеге, ал TM1637 CLK-ны 5-істікшеге және DIO-ны 6-істікшеге қосу, бейнеде айтылғандай.
Кодты түсіндіру
Бұл жобаның коды DHT11 сенсоры мен TM1637 дисплейіне арналған кітапханаларды біріктіреді. Пайдаланушы реттей алатын негізгі бөліктер - істікше анықтамалары мен дисплей жарықтығының параметрі. Сіз оларды өзіңіздің нақты сымдарыңыз бен қалауларыңызға сәйкес реттей аласыз.
Алдымен, DHT11 сенсорының деректер істікшесі анықталады. Егер сенсорды Arduino-дағы басқа цифрлық істікшеге қосқан болсаңыз, бұл санды өзгертуге болады.
#define dhtpin 2 // DHT11-ге қосу үшін істікшені орнату
Әрі қарай, TM1637 дисплей модулінің істікшелері анықталады. CLK істікшесі сағат сигналы үшін, ал DIO істікшесі деректер үшін. Олар сіздің физикалық сымдарыңызға сәйкес келуі керек.
// Модуль қосылу істікшелері (Цифрлық істікшелер)
#define CLK 5
#define DIO 6
Содан кейін TM1637Display класының объектісі жасалады, ол CLK және DIO істікше нөмірлерін аргумент ретінде қабылдайды. Бұл объект дисплейді басқаруға қажетті барлық функцияларды қамтамасыз етеді.
TM1637Display display(CLK, DIO);
Дисплейдің жарықтығы setup() функциясында орнатылады. 0x0f мәні максималды жарықтықты білдіреді. Дисплей қарқындылығын қоршаған ортаңызға сәйкес реттеу үшін 0x00 (өшірулі) мен 0x0f (максималды) аралығындағы мәнді қолдануға болады.
display.setBrightness(0x0f);
loop() функциясындағы негізгі логика DHT11 сенсорынан температураны оқып, оны дисплейде көрсетеді. Температура мәнін дисплейге жіберу үшін showNumberDec() функциясы қолданылады. Оның параметрлері санның қалай көрсетілетінін басқаруға мүмкіндік береді. Мысалы, келесі жол температураны Цельсий бойынша екінші цифрдан бастап (1-позиция) көрсетеді.
display.showNumberDec(23, false, 2, 1);
Бұл мысалда 23 - көрсетілетін сан, false - алдыңғы нөлдердің жоқтығын білдіреді, 2 - қолданылатын цифрлар саны, ал 1 - дисплейдегі бастапқы позиция (0-ден бастап есептеледі).
Тірі жобаны көрсету
Бейнеде жоба тікелей көрсетіледі. Жүргізуші үлкенірек және кішірек TM1637 дисплейлеріндегі температура көрсеткіштерін көрсетеді. Сенсордың жұмыс істеп тұрғанын дәлелдеу үшін DHT11-ге жылу пистолетімен жылу беріледі.
Бастапқыда дисплей бөлме температурасын Цельсий және Фаренгейт бойынша көрсетеді. Жылу пистолеті сенсорды жылытқанда, температура көрсеткіштерінің тез көтерілгенін көруге болады. Көрсетілім температураның қалыпты бөлме температурасынан 50°C (123°F) жоғарыға дейін көтерілгенін көрсетеді, бұл сенсордың температура өзгерісін дәл оқып жатқанын және дисплейдің деректерді дұрыс көрсетіп тұрғанын растайды. Бұл сынақ барлық қосылымдар мен кодтың дұрыс жұмыс істеп тұрғанын тексерудің тамаша тәсілі.
Бейне бөлімдері
- [00:00] Жобаға кіріспе
- [00:28] TM1637 дисплейіне арналған кодты түсіну
- [03:04] Температураны Цельсий және Фаренгейт бойынша көрсету
- [05:06] DHT11-ді TM1637 дисплейіне қосу
- [06:42] Температура дисплейінің тікелей көрсетілімі
- [08:23] Кішірек дисплей модулімен сынау
- [08:35] Қорытынды және жобаның түйіндемесі
/*
* Robojax Arduino Step-by-Step Course
* Lesson 28: DHT11 with TM1637
* This is the Arduino code for TM1637 4-digit display.
*
* Please watch video instructions here: https://youtu.be/C-1iaCPzNtU
* This code is available at: http://robojax.com/course1/?vid=lecture11
*
* With over 100 lectures free on YouTube. Watch it here: http://robojax.com/L/?id=338
* Get the code for the course: http://robojax.com/L/?id=339
*
* Date: December 6, 2017, in Ajax, Ontario, Canada
*
* Original code from: https://github.com/avishorp/TM1637
* Modified for Robojax video on December 6, 2017
*/
#include <dht11.h>
dht11 DHT11; // create object of DHT11
#define dhtpin 2 // set the pin to connect to DHT11
// start of settings of TM1637 LED display
#include <Arduino.h>
#include <TM1637Display.h>
// Module connection pins (Digital Pins)
#define CLK 2
#define DIO 3
TM1637Display display(CLK, DIO);
uint8_t blank[] = { 0x0, 0x0, 0x0, 0x0 };// blank value for all digits
// The amount of time (in milliseconds) between tests
#define TEST_DELAY 2000
// start of settings of TM1637 LED display
void setup()
{
//Robojax Step-by-Step Arduino Course YouTube Watch it here: http://robojax.com/L/?id=338
Serial.begin(9600);// setting up serial monitor
display.setBrightness(0x0f);
}
void loop()
{
//Robojax Step-by-Step Arduino Course YouTube Watch it here: http://robojax.com/L/?id=338
DHT11.read(dhtpin);// initialize the reading
int humidity = DHT11.humidity;// get humidity
//code for Robojax.com video
Serial.print(getTemp('C'));
Serial.print("C ");
Serial.print(getTemp('F'));
Serial.print("F ");
Serial.print(getTemp('K'));
Serial.print("K ");
Serial.print(" humidity:");
Serial.print (humidity);
Serial.print("% ");
Serial.println();
delay(500);
display.setSegments(blank);
display.showNumberDec(23, false, 2,1);
delay(TEST_DELAY);
display.setSegments(data);
display.showNumberDec(153, false, 3, 1);
delay(TEST_DELAY);
display.setSegments(data);
for(int i=0; i<=500; i++)
{
display.showNumberDec(i);
}
}
Сізге қажет болуы мүмкін нәрселер
-
eBay
-
AliExpressTM1637 4-digit 7-segment display on AliExpresss.click.aliexpress.com
Ресурстар мен сілтемелер
-
СыртқыDHT11 library on GitHubgithub.com
-
СыртқыDHT11 Manual (PDF)robojax.com
Файлдар📁
Arduino кітапханалары (zip)
-
TM1637 Arduino Library
TM1637_library.zip1.36 MB
Fritzing файлы
-
TM1637 Seven Segment module
TM1637.fzpz0.01 MB -
TM1637 4 digit seven segment display
TM1637-1.fzpz0.01 MB
Басқа файлдар
-
XY-T01 Relay Timer: DC load wiring
/download/datasheet/robojax_TM1637_datasheet.pdf