কোড অনুসন্ধান

পাঠ ২৮: টিএম১৬৩৭ ডিসপ্লের সাথে DHT11 তাপমাত্রা সেন্সর | আরডুইনো ধাপে ধাপে কোর্স

পাঠ ২৮: টিএম১৬৩৭ ডিসপ্লের সাথে DHT11 তাপমাত্রা সেন্সর | আরডুইনো ধাপে ধাপে কোর্স

DHT11 Module
Arduino wriing DHT11 PCB module  module with TM1637

এই পাঠে, Arduino Step-by-Step কোর্স থেকে, আমরা শিখব কীভাবে একটি DHT11 তাপমাত্রা এবং আর্দ্রতা সেন্সরকে একটি TM1637 ৪-অঙ্কের সেভেন-সেগমেন্ট ডিসপ্লের সাথে যুক্ত করে একটি কমপ্যাক্ট, স্বতন্ত্র তাপমাত্রা প্রদর্শন তৈরি করা যায়। সিরিয়াল মনিটরের উপর নির্ভর না করে রিডিং দেখার জন্য, এই প্রকল্পটি একটি ছোট, স্বয়ংসম্পূর্ণ ইউনিট তৈরি করে যা পরিবেষ্টিত তাপমাত্রা সেলসিয়াস এবং ফারেনহাইট উভয়েই দৃশ্যমানভাবে রিপোর্ট করে। এটি আপনার ইলেকট্রনিক্স প্রকল্পগুলির জন্য ব্যবহারকারী-বান্ধব ইন্টারফেস তৈরি করার একটি মৌলিক দক্ষতা, যা ডিজিটাল জগৎ থেকে ডেটাকে একটি ভৌত ডিসপ্লেতে স্থানান্তরিত করে।

এই প্রকল্পটি বিভিন্ন অ্যাপ্লিকেশনের জন্য একটি ব্যবহারিক বিল্ডিং ব্লক যেখানে দ্রুত, এক নজরে তাপমাত্রা রিডআউট প্রয়োজন। এখানে কিছু ধারণা দেওয়া হলো যা আপনাকে অনুপ্রাণিত করতে পারে:

  • ডেস্কটপ আবহাওয়া স্টেশন: আপনার অফিস বা শখের ঘরের তাপমাত্রা পর্যবেক্ষণের জন্য একটি ছোট, সর্বদা-চালু ডিসপ্লে তৈরি করুন।
  • থার্মোস্ট্যাট মনিটর: আপনার বাড়ির থার্মোস্ট্যাট বা HVAC ভেন্টের কাছে তাপমাত্রা যাচাই করার জন্য একটি ডেডিকেটেড ডিসপ্লে তৈরি করুন।
  • ইনকিউবেটর বা টেরারিয়াম গেজ: সরীসৃপ টেরারিয়াম, উদ্ভিদ প্রসারণ চেম্বার বা DIY ইনকিউবেটরের ভিতরের তাপমাত্রা খোলা ছাড়াই পর্যবেক্ষণ করুন।
  • ওয়ার্কশপ বা গ্যারেজ থার্মোমিটার: একটি পরিষ্কার, উজ্জ্বল ডিসপ্লে সম্ভাব্য ধুলোময় বা ম্লান আলোকিত ওয়ার্কশপে তাপমাত্রা পরীক্ষা করার জন্য উপযুক্ত।
  • শিক্ষামূলক কিট: একটি Arduino-এর সাথে বিভিন্ন ধরনের সেন্সর এবং আউটপুট মডিউল সংযোগ করতে শেখার জন্য একটি চমৎকার প্রারম্ভিক প্রকল্প।

প্রয়োজনীয় হার্ডওয়্যার

এই প্রকল্পটি অনুসরণ করতে, আপনার নিম্নলিখিত উপাদানগুলির প্রয়োজন হবে:

  • Arduino Uno (বা যেকোনো সামঞ্জস্যপূর্ণ বোর্ড)
  • DHT11 তাপমাত্রা এবং আর্দ্রতা সেন্সর (৩-পিন এবং ৪-পিন PCB সংস্করণ উভয়ই দেখানো হয়েছে)
  • TM1637 ৪-অঙ্কের সেভেন-সেগমেন্ট ডিসপ্লে মডিউল
  • ব্রেডবোর্ড
  • জাম্পার তার

ওয়্যারিং গাইড

এই প্রকল্পের ওয়্যারিং সহজবোধ্য, যার জন্য সেন্সর এবং ডিসপ্লে উভয়ের সংযোগ প্রয়োজন। ভিডিওটি DHT11 সেন্সরের দুটি ভিন্ন সংস্করণ এবং TM1637 ডিসপ্লের দুটি আকারের সাথে সেটআপ প্রদর্শন করে, তবে মূল সংযোগগুলি একই থাকে।

এখানে DHT11 সেন্সর এবং TM1637 ডিসপ্লের ওয়্যারিং দেওয়া হলো, যেমনটি ভিডিওতে বর্ণিত হয়েছে (ভিডিওতে ০৫:০৬-এ)।

Arduino wriing DHT11 PCB module  module with TM1637
Arduino wriing DHT11 PCB module module with TM1637
Arduino wriing DHT11 bare module  module with TM1637
Arduino wriing DHT11 bare module module with TM1637
Arduino wriing DHT11 bare module  module with TM1637
Arduino wriing DHT11 bare module module with TM1637

TM1637 ডিসপ্লে মডিউলের জন্য, সংযোগগুলি নিম্নরূপ:

  • VCC থেকে Arduino-এর 5V-এ।
  • GND থেকে Arduino-এর GND
  • -এ।
  • CLK (ক্লক) একটি ডিজিটাল পিনে, উদাহরণস্বরূপ, D2
  • DIO (ডেটা ইনপুট/আউটপুট) আরেকটি ডিজিটাল পিনে, উদাহরণস্বরূপ, D3

DHT11 সেন্সরের জন্য, সংযোগগুলি হল:

  • VCC (বা + পিন) থেকে 5V-এ।
  • GND (বা - পিন) থেকে GND-এ।
  • Data (বা S পিন) একটি ডিজিটাল পিনে, উদাহরণস্বরূপ, D2(দ্রষ্টব্য: ভিডিওতে, সেন্সরের ডেটা পিনটি পিন ২-এ সংযুক্ত, তবে কোড স্নিপেটেও এটি পিন ২-এ দেখানো হয়েছে। ডিসপ্লের CLK এবং DIO পিনগুলি কোড স্নিপেটে পিন ২ এবং ৩-এ, যা একটি দ্বন্দ্ব। ভিডিও ট্রান্সক্রিপ্টে ডিসপ্লের জন্য পিন ৫ এবং ৬ উল্লেখ করা হয়েছে, তাই আমরা ওভারল্যাপ এড়াতে সেগুলি ব্যবহার করব।)

দয়া করে নোট করুন: ট্রান্সক্রিপ্ট এবং কোড স্নিপেট একটি সম্ভাব্য পিন দ্বন্দ্ব দেখায়। কোডটি DHT11 ডেটা পিন এবং TM1637 CLK পিন উভয়ই ডিজিটাল পিন ২-এ সংজ্ঞায়িত করে। এটি এড়াতে, পৃথক পিন ব্যবহার করার পরামর্শ দেওয়া হয়, যেমন DHT11-কে পিন ২-এ এবং TM1637 CLK-কে পিন ৫-এ এবং DIO-কে পিন ৬-এ সংযুক্ত করা, যেমনটি ভিডিওতে উল্লেখ করা হয়েছে।

কোড ব্যাখ্যা

এই প্রকল্পের কোডটি 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() ফাংশনটি ডিসপ্লেতে তাপমাত্রার মান পাঠাতে ব্যবহৃত হয়। এর প্যারামিটারগুলি আপনাকে নিয়ন্ত্রণ করতে দেয় কীভাবে সংখ্যাটি দেখানো হবে। উদাহরণস্বরূপ, নিম্নলিখিত লাইনটি তাপমাত্রা সেলসিয়াসে প্রদর্শন করে, দ্বিতীয় অঙ্ক (অবস্থান ১) থেকে শুরু করে।

display.showNumberDec(23, false, 2, 1);

এই উদাহরণে, 23 হল প্রদর্শনের সংখ্যা, false মানে কোনো অগ্রণী শূন্য নেই, 2 হল ব্যবহার করার অঙ্কের সংখ্যা, এবং 1 হল ডিসপ্লেতে শুরু করার অবস্থান (০-সূচক)।

লাইভ প্রকল্প প্রদর্শন

ভিডিওতে, প্রকল্পটি লাইভ প্রদর্শিত হচ্ছে। উপস্থাপক বড় এবং ছোট উভয় TM1637 ডিসপ্লেতে তাপমাত্রার রিডিং দেখাচ্ছেন। সেন্সরটি কাজ করছে তা প্রমাণ করতে, DHT11-এ একটি হিট গান ব্যবহার করে তাপ প্রয়োগ করা হয়।

প্রাথমিকভাবে, ডিসপ্লেটি সেলসিয়াস এবং ফারেনহাইট উভয় ক্ষেত্রেই ঘরের তাপমাত্রা দেখায়। হিট গানটি সেন্সরকে গরম করার সাথে সাথে, আপনি তাপমাত্রার রিডিং দ্রুত বৃদ্ধি পেতে দেখতে পারেন। প্রদর্শনটি দেখায় যে তাপমাত্রা স্বাভাবিক ঘরের তাপমাত্রা থেকে 50°C (123°F) এর বেশি পর্যন্ত বৃদ্ধি পাচ্ছে, যা নিশ্চিত করে যে সেন্সরটি তাপমাত্রার পরিবর্তন সঠিকভাবে পড়ছে এবং ডিসপ্লেটি সঠিকভাবে ডেটা দেখাচ্ছে। এই পরীক্ষাটি যাচাই করার একটি দুর্দান্ত উপায় যে আপনার সমস্ত সংযোগ এবং কোড সঠিকভাবে কাজ করছে।

ভিডিও অধ্যায়

  • [00:00] প্রকল্পের ভূমিকা
  • [00:28] TM1637 ডিসপ্লের জন্য কোড বোঝা
  • [03:04] সেলসিয়াস এবং ফারেনহাইটে তাপমাত্রা প্রদর্শন
  • [05:06] TM1637 ডিসপ্লেতে DHT11 সংযোগ করা
  • [06:42] তাপমাত্রা ডিসপ্লের লাইভ প্রদর্শন
  • [08:23] ছোট ডিসপ্লে মডিউল দিয়ে পরীক্ষা
  • [08:35] উপসংহার এবং প্রকল্পের সারাংশ

ছবি

TM1637 4 digit display module
TM1637 4 digit display module
DHT11 Module
DHT11 Module
Arduino wriing DHT11 PCB module  module with TM1637
Arduino wriing DHT11 PCB module module with TM1637
Arduino wriing DHT11 PCB module  module with TM1637
Arduino wriing DHT11 PCB module module with TM1637
Arduino wriing DHT11 bare module  module with TM1637
Arduino wriing DHT11 bare module module with TM1637
Arduino wriing DHT11 bare module  module with TM1637
Arduino wriing DHT11 bare module module with TM1637
520-Lesson 28: DHT11 Temperature Sensor with TM1637 Display | Arduino Step-by-Step Course
ভাষা: C++
/*
 * 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);
  }

}

আপনাকে যা প্রয়োজন হতে পারে

সম্পদ ও রেফারেন্সসমূহ

ফাইলসমূহ📁

আর্ডুইনো লাইব্রেরি (জিপ)

ফ্রিটজিং ফাইল

অন্যান্য ফাইলগুলি