Arduino IDE ব্যবহার করে OLED ডিসপ্লেতে ESP32 DHT11 তাপমাত্রা এবং আর্দ্রতা রিডিং

Arduino Ide Byabahara Kare Oled Disaplete Esp32 Dht11 Tapamatra Ebam Ardrata Ridim



ESP32 হল একটি উন্নত মাইক্রোকন্ট্রোলার বোর্ড যা আউটপুট তৈরি করতে একাধিক নির্দেশনা চালাতে পারে। একটি OLED স্ক্রিন বিভিন্ন ধরণের ডেটা প্রদর্শনের জন্য ব্যবহৃত হয়। DHT11 সেন্সর সহ ESP32 ব্যবহার করে আমরা তাপমাত্রা এবং আর্দ্রতা রিডিং নিতে পারি। এই সমস্ত ডেটা একটি OLED ডিসপ্লেতে উপস্থাপন করা যেতে পারে। এই টিউটোরিয়ালটি ESP32 এর সাথে এই সেন্সরগুলিকে ইন্টারফেস করার জন্য প্রয়োজনীয় সমস্ত পদক্ষেপ কভার করে।

এই টিউটোরিয়াল নিম্নলিখিত বিষয়বস্তু কভার করে:







1: DHT11 সেন্সরের ভূমিকা



2: DHT11 সেন্সর পিনআউট



2.1: 3 পিন DHT11 সেন্সর





2.2: 4 পিন DHT11 সেন্সর

3: ESP32 সহ OLED ডিসপ্লে মডিউল



4: প্রয়োজনীয় লাইব্রেরি ইনস্টল করা

4.1: DHT সেন্সরের জন্য Arduino লাইব্রেরি

4.2: OLED ডিসপ্লের জন্য Arduino লাইব্রেরি

5: DHT11 সেন্সরের সাথে ESP32 ইন্টারফেসিং

5.1: পরিকল্পিত

5.2: কোড

5.3: আউটপুট

1: DHT11 সেন্সরের ভূমিকা

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

এটি ডিজিটাল-সিগন্যাল-অধিগ্রহণ কৌশল ব্যবহার করে যা নির্ভরযোগ্যতা এবং স্থিতিশীলতা দেয়। DHT11 সেন্সরে একটি প্রতিরোধী-টাইপ আর্দ্রতা পরিমাপের উপাদান রয়েছে এবং একটি NTC তাপমাত্রা পরিমাপকারী উপাদান রয়েছে। এই দুটিই একটি 8-বিট অত্যন্ত দক্ষ মাইক্রোকন্ট্রোলারের সাথে একত্রিত করা হয়েছে যা দ্রুত প্রতিক্রিয়া, হস্তক্ষেপ-বিরোধী ক্ষমতা এবং খরচ-কার্যকারিতা প্রদান করে।

এখানে DHT11 এর কিছু প্রধান প্রযুক্তিগত বৈশিষ্ট্য রয়েছে:

    • DHT11 সেন্সর 5V থেকে 5.5V ভোল্টেজে কাজ করে।
    • পরিমাপ করার সময় অপারেটিং কারেন্ট হল 0.3mA এবং স্ট্যান্ডবাই সময় 60uA।
    • এটি ডিজিটাল সিগন্যালে সিরিয়াল ডেটা আউটপুট করে।
    • DHT11 সেন্সরের তাপমাত্রা 0°C থেকে 50°C পর্যন্ত।
    • আর্দ্রতা পরিসীমা: 20% থেকে 90%।
    • তাপমাত্রা পরিমাপের জন্য ±1°C এবং আপেক্ষিক আর্দ্রতা রিডিংয়ের জন্য ±1% এর যথার্থতা।

যেহেতু আমরা DHT11 সেন্সরের একটি প্রাথমিক ভূমিকা কভার করেছি এখন আসুন DHT11 এর পিনআউটের দিকে এগিয়ে যাই।

2: DHT11 সেন্সর পিনআউট

বেশিরভাগ সময় DHT11 সেন্সর দুটি ভিন্ন পিন কনফিগারেশনে আসে। DHT11 সেন্সর যা 4 পিন কনফিগারেশনে আসে তাতে 3টি পিন কাজ করছে না বা সংযোগ নেই বলে লেবেল করা আছে।

3 পিন DHT11 সেন্সর মডিউল তিনটি পিনে আসে যার মধ্যে পাওয়ার, GND এবং ডেটা পিন রয়েছে।

2.1: 3 পিন DHT11 সেন্সর

প্রদত্ত চিত্রটি DHT11 সেন্সরের 3 পিন কনফিগারেশন দেখায়।


এই তিনটি পিন হল:

1. ডেটা সিরিয়াল ডেটাতে আউটপুট তাপমাত্রা এবং আর্দ্রতা
2. ভিসিসি ইনপুট পাওয়ার 3.5V থেকে 5.5V
3. জিএনডি সার্কিটের GND

2.2: 4 পিন DHT11 সেন্সর

নিম্নলিখিত চিত্রটি 4 পিন DHT11 সেন্সর মডিউল চিত্রিত করে:


এই 4 পিন অন্তর্ভুক্ত:

1. ভিসিসি ইনপুট পাওয়ার 3.5V থেকে 5.5V
2. ডেটা সিরিয়াল ডেটাতে আউটপুট তাপমাত্রা এবং আর্দ্রতা
3. NC সংযোগ নেই বা ব্যবহার করা হয়নি
চার. জিএনডি সার্কিটের GND

3: ESP32 সহ OLED ডিসপ্লে মডিউল

OLED ডিসপ্লে প্রধানত দুটি ভিন্ন যোগাযোগ প্রোটোকলের সাথে আসে। দুটি প্রোটোকল হল I2C এবং SPI। সিরিয়াল পেরিফেরাল ইন্টারফেস (SPI) সাধারণত I2C এর চেয়ে দ্রুত, কিন্তু আমরা SPI প্রোটোকলের তুলনায় I2C কে পছন্দ করি কারণ এটির জন্য অল্প সংখ্যক পিনের প্রয়োজন হয়।

নিম্নলিখিত চিত্রটি 128×64 পিক্সেল (0.96’’) OLED ডিসপ্লে সহ ESP32 সংযোগ চিত্রকে চিত্রিত করে।


নীচে সংযোগ টেবিল:


একবার ESP32 একটি OLED ডিসপ্লের সাথে ইন্টারফেস করা হলে, তালিকার পরবর্তী ধাপ হল Arduino IDE ব্যবহার করে ESP32 প্রোগ্রামিংয়ের জন্য প্রয়োজনীয় সমস্ত লাইব্রেরি ইনস্টল করা।

4: প্রয়োজনীয় লাইব্রেরি ইনস্টল করা

এখানে আমরা ESP32 এর সাথে দুটি ভিন্ন সেন্সর ইন্টারফেস করতে যাচ্ছি তাই উভয়ের জন্য আলাদা লাইব্রেরি প্রয়োজন। এখন আমরা DHT11 এবং OLED ডিসপ্লের জন্য লাইব্রেরি ইনস্টল করব।

4.1: DHT সেন্সরের জন্য Arduino লাইব্রেরি

Arduino IDE খুলুন, এখানে যান: স্কেচ>লাইব্রেরি অন্তর্ভুক্ত করুন>লাইব্রেরি পরিচালনা করুন

বিকল্পভাবে, আমরা Arduino IDE ইন্টারফেসের পাশের বোতাম থেকে লাইব্রেরি ম্যানেজার খুলতে পারি।

DHT লাইব্রেরি অনুসন্ধান করুন এবং সর্বশেষ আপডেট সংস্করণ ইনস্টল করুন। ডিএইচটি লাইব্রেরি সেন্সর ডেটা পড়তে সাহায্য করবে।


ডিএইচটি লাইব্রেরি ইনস্টল করার পরে আমাদের একটি ইনস্টল করতে হবে ইউনিফাইড সেন্সর লাইব্রেরি Adafruit দ্বারা.

4.2: OLED ডিসপ্লের জন্য Arduino লাইব্রেরি

একটি OLED ডিসপ্লে সহ ESP32 প্রোগ্রাম করার জন্য Arduino IDE-তে একাধিক লাইব্রেরি পাওয়া যায়। এখানে আমরা Adafruit থেকে দুটি লাইব্রেরি ব্যবহার করব: SSD1306 এবং GFX লাইব্রেরি।

IDE খুলুন এবং লাইব্রেরি ম্যানেজার ক্লিক করুন এবং OLED SSD1306 লাইব্রেরি অনুসন্ধান করুন। অনুসন্ধান বার থেকে Adafruit দ্বারা SSD1306 লাইব্রেরি ইনস্টল করুন।

বিকল্পভাবে, কেউ এখানে যেতে পারেন: স্কেচ>লাইব্রেরি অন্তর্ভুক্ত করুন>লাইব্রেরি পরিচালনা করুন


আমাদের পরবর্তী লাইব্রেরিটি ইনস্টল করতে হবে জিএফএক্স Adafruit দ্বারা লাইব্রেরি.


আমরা OLED ডিসপ্লে এবং DHT11 সেন্সর উভয়ের জন্য লাইব্রেরি ইনস্টল করেছি। এখন আমরা ESP32 এর সাথে উভয়ই সহজেই ইন্টারফেস করতে পারি।

5: DHT11 সেন্সর এবং OLED এর সাথে ESP32 ইন্টারফেসিং

DHT11 সেন্সরের সাথে ESP32 ইন্টারফেস করার জন্য আমাদের সেন্সর ডেটা পড়ার জন্য একটি ডিজিটাল পিন প্রয়োজন এবং DHT11 সেন্সরকে পাওয়ার জন্য আমরা ESP32 এর 3V3 পিন বা ভিন পিন ব্যবহার করতে পারি।

OLED ডিসপ্লের জন্য I2C পিন SDA এবং SCL ব্যবহার করা হবে। পাওয়ার করার জন্য আমরা ভিন বা ESP32 এর একটি 3V3 পিন ব্যবহার করতে পারি।

5.1: পরিকল্পিত

প্রদত্ত ছবিতে আমরা DHT11 সহ ESP32 এর পরিকল্পিত চিত্র দেখতে পাচ্ছি এবং আউটপুটের জন্য একটি OLED স্ক্রিন ব্যবহার করা হয়েছে। এই চিত্রটি ESP32 এর সাথে ইন্টারফেসিং 3-পিন সেন্সর মডিউল উপস্থাপন করে। 10kΩ এর একটি পুল আপ প্রতিরোধক সংযোগ করতে মনে রাখবেন।


একইভাবে, 4 পিন DHT11ও সংযুক্ত করা যেতে পারে, এখানে শুধুমাত্র পার্থক্য হল 3 পিন যা কোন কাজে আসে না বা সংযোগ নেই বলে অভিহিত করা হয়। ডেটা পিনটি সেন্সরের পিন 2 এ রয়েছে।

OLED ডিসপ্লে যথাক্রমে D21 এবং D22 এ I2C SDA এবং SCL পিন ব্যবহার করে সংযুক্ত করা হয়েছে।

5.2: কোড

পিসির সাথে ESP32 কানেক্ট করুন এবং Arduino IDE খুলুন। প্রদত্ত কোডটি ESP32 বোর্ডে আপলোড করুন।

#include           /*ওয়্যার কমিউনিকেশন লাইব্রেরি অন্তর্ভুক্ত করুন*/
#অন্তর্ভুক্ত
#include /*OLED ডিসপ্লে লাইব্রেরি*/
#অন্তর্ভুক্ত
#include           /*তাপমাত্রা এবং আর্দ্রতা সেন্সর লাইব্রেরি*/
# SCREEN_WIDTH 128   /*OLED স্ক্রীন প্রস্থ 128 পিক্সেল*/ সংজ্ঞায়িত করুন
#ডিফাইন SCREEN_HEIGHT 64   /*OLED স্ক্রিনের উচ্চতা 64 পিক্সেল*/
Adafruit_SSD1306 ডিসপ্লে ( SCREEN_WIDTH, SCREEN_HEIGHT, এবং তার, - 1 ) ; /* SSD1306 I2C ডিসপ্লে ইনিশিয়ালাইজেশন */
#DHTPIN 4 সংজ্ঞায়িত করুন          /*DHT11 সেন্সরের জন্য সিগন্যাল পিন*/
#DHTTYPE  DHT11 সংজ্ঞায়িত করুন
DHT dht ( DHTPIN, DHTTYPE ) ;
অকার্যকর সেটআপ ( ) {
সিরিয়াল.শুরু ( 115200 ) ;
dht.begin ( ) ;
যদি ( ! প্রদর্শন.শুরু ( SSD1306_SWITCHCAPVCC, 0x3C ) ) { /* I2C ঠিকানা যা OLED সংযুক্ত আছে */
Serial.println ( ( 'SSD1306 বরাদ্দ ব্যর্থ হয়েছে' ) ) ;
জন্য ( ;; ) ;
}
বিলম্ব ( 2000 ) ;
display.clearDisplay ( ) ;
display.setTextColor ( সাদা ) ; /* আউটপুট টেক্সট রঙ সাদা */
}
অকার্যকর লুপ ( ) {
বিলম্ব ( 5000 ) ;
float t = dht.readTemperature ( ) ; /* পড়া তাপমাত্রা */
float h = dht.read আর্দ্রতা ( ) ; /* পড়া আর্দ্রতা */
যদি ( একটি ( ) || একটি ( t ) ) {
Serial.println ( 'DHT সেন্সর থেকে পড়তে ব্যর্থ!' ) ;
}
display.clearDisplay ( ) ; /* স্পষ্ট রিডিং প্রদর্শনের আগে OLED ডিসপ্লে */
display.setTextSize ( 1 ) ; /* OLED টেক্সট ফন্ট আকার */
display.setCursor ( 0 , 0 ) ;
প্রদর্শন.মুদ্রণ ( 'তাপমাত্রা:' ) ;
display.setTextSize ( 2 ) ;
display.setCursor ( 0 , 10 ) ;
প্রদর্শন.মুদ্রণ ( t ) ; /* মুদ্রণ তাপমাত্রা ভিতরে সেলসিয়াস */
প্রদর্শন.মুদ্রণ ( '' ) ;
display.setTextSize ( 1 ) ;
display.cp437 ( সত্য ) ;
প্রদর্শন.লিখন ( 167 ) ;
display.setTextSize ( 2 ) ;
প্রদর্শন.মুদ্রণ ( 'গ' ) ;

display.setTextSize ( 1 ) ;
display.setCursor ( 0 , 35 ) ;
প্রদর্শন.মুদ্রণ ( 'আর্দ্রতা:' ) ;
display.setTextSize ( 2 ) ;
display.setCursor ( 0 , চার পাঁচ ) ;
প্রদর্শন.মুদ্রণ ( ) ; /* আর্দ্রতা শতাংশ প্রিন্ট করে */
প্রদর্শন.মুদ্রণ ( '%' ) ;
প্রদর্শন.প্রদর্শন ( ) ;
}


OLED এবং DHT11 সেন্সরগুলির জন্য প্রয়োজনীয় লাইব্রেরিগুলি অন্তর্ভুক্ত করে কোড শুরু হয়েছে৷ এর পরে OLED ডিসপ্লের মাত্রা সংজ্ঞায়িত করা হয়। পরবর্তীতে যদি আপনি DHT22 ব্যবহার করেন তাহলে DHT সেন্সরের ধরনটি সংজ্ঞায়িত করা হয়েছে যদি সেই অনুযায়ী এটি প্রতিস্থাপন করুন।

সেটআপ অংশে DHT সেন্সর এবং OLED ডিসপ্লে শুরু করা হয়েছে। OLED স্ক্রিনটি 0x3C এর একটি I2C ঠিকানায় সংযুক্ত। যদি কেউ I2C ঠিকানা চেক করতে চায় তবে এতে প্রদত্ত কোড আপলোড করুন নিবন্ধ .

তাপমাত্রা এবং আর্দ্রতার মানগুলি ফ্লোট ভেরিয়েবলের ভিতরে সংরক্ষণ করা হয় t এবং যথাক্রমে এর পরে এই দুটি মানই একটি OLED ডিসপ্লেতে মুদ্রিত হয়।

5.3: আউটপুট

আউটপুটে আমরা OLED স্ক্রিনে প্রদর্শিত প্রকৃত সময় পরিমাপ করা তাপমাত্রা এবং আর্দ্রতা দেখতে পাচ্ছি।




আমরা DHT11 সেন্সর এবং OLED স্ক্রিনের সাথে ESP32 এর ইন্টারফেসিং সফলভাবে সম্পন্ন করেছি।

উপসংহার

ESP32 সহ OLED ডিসপ্লেগুলি বহিরাগত সেন্সর ব্যবহার করে পড়া একাধিক ডেটা দেখাতে পারে। এখানে এই নিবন্ধটি একটি ঘরের তাপমাত্রা এবং আর্দ্রতা পরিমাপের জন্য DHT11 সেন্সরের সাথে ESP32 ইন্টারফেস করার সমস্ত পদক্ষেপ কভার করে। এর পরে সমস্ত পঠিত ডেটা I2C OLED ডিসপ্লে মডিউলে প্রদর্শিত হয়।