Temperature Measure with ESP32 DHT11 Sensor and OLED Display

তাপমাত্রা এবং আদ্রতা দেখার জন্য আমরা অনেক প্রকার সেন্সর ব্যবহার করে থাকি, তাদের মধ্যেই একটি সেন্সর DHT11. এই সেন্সরের ডাটাগুলোকে একটি মাত্র পিনের মাধ্যমে ডিসপ্লে করা যাবে।  ডিসপ্লে করার জন্য ব্যবহার করবো OLED Display. যেখানে খুব সুন্দর করে তাপমাত্রা এবং আদ্রতা দেখানো যাবে। এই জন্য দুইটা কাজ করতে হবে, এক- সার্কিট সংযোগ সঠিকভাবে করা, দুই-প্রোগ্রামিং । যেহেতু এটা একটা সম্পূর্ণ বেসিক প্রোগ্রাম, তাই এটি রপ্ত করতে পারলে বড় প্রোজেক্টে খুব অনায়েসে ব্যবহার করা যাবে। সার্কিটের অংশটি নিচে দেওয়া রয়েছে। কয়েকটি বিষয় লক্ষণীয়, এখানে যে OLED Display ব্যবহার করা হয়েছে তা ৩.৩ ভোল্টের। এর অতিরিক্ত ভোল্টেজ দিলে

ডিসপ্লেটি নষ্ট হয়ে যাবে। ডিসপ্লের জন্য SCL, SDA ২টা GPIO পিন এবং DHT11 এর জন্য ১টা GPIO পিন (GPIO4) ব্যবহার করা হয়েছে। ESP32 এর পিন ডায়াগ্রামের মাধ্যমে খুব সহজেই পিনগুলোকে দেখানো হয়েছে। পিনগুলোর একাধিক কাজের নামও রয়েছে পাশে।

 

প্রয়োজনীয় কম্পোনেন্টঃ

কম্পোনেন্টের তালিকা নিচে প্রদান করা হলো।

ক্রমিক নং  কম্পোনেন্টের নাম মডেল পরিমাণ লিংক
ESP32 Development Board 30 Pin WIR-00072 ১টি কম্পোনেন্ট লিংক
Micro USB Data Cable C&C-00259 ১টি কম্পোনেন্ট লিংক
OLED Display Blue I2C 128×64 0.96 inch DIS-00079 ১টি কম্পোনেন্ট লিংক
DHT11 Sensor Module SEN-00236 ১টি কম্পোনেন্ট লিংক

সিলিকন জাম্পার ওয়্যারের ক্ষেত্রে নিচের লিংকগুলো অনুসরণ করতে হবে।

Silicone Jumper Wire (Male to Male) C&C-00245 প্রয়োজনমত কম্পোনেন্ট লিংক
Silicone Jumper Wire (Male to Female) C&C-00246 প্রয়োজনমত কম্পোনেন্ট লিংক
Silicone Jumper Wire (Female to Female) C&C-00247 প্রয়োজনমত কম্পোনেন্ট লিংক

 

সার্কিট কানেকশনঃ

 

ESP32 IOT Board ব্যবহার হলে, উপরোক্ত সার্কিট সংযোগ প্রয়োজন হবে না। বোর্ডের অভ্যন্তরেই উক্ত সার্কিট সংযোগ রয়েছে।

লাইব্রেরীঃ

Adafruit_GFX.h
Adafruit_SSD1306.h
Adafruit_Sensor.h
DHT.h

প্রোগ্রাম আপলোড দেওয়ার পূর্বে অবশ্যই লাইব্রেরীগুলো ইন্সটল করে নিতে হব। যদি পূর্বে থেকে একই লাইব্রেরী ইন্সটল করা থাকে, তাহলে Update করে নেওয়া যেতে পারে। না করলেও সমস্যা নেই।

 

Library Manager এ সার্চ করলে লাইব্রেরীগুলো নিচের দিকে চলে আসবে।  যদি পূর্বে ইন্সটল করা থাকে, তাহলে update এসে থাকলে তা দেখাবে। ইন্সটল করা না থাকলে install দেখাবে।

অনেক সময় লাইব্রেরী ম্যানেজারে যদি না পাওয়া যায় সেক্ষেত্রে সঠিক নাম দিয়ে, গুগলে সার্চ করলে পাওয়া যাবে।

ডেমো কোডঃ

প্রোগ্রামিং করার সময় বোর্ড এবং পোর্ট সিলেকশন অবশ্যই সঠিক হতে হবে। অন্যথা কোড আপলোড হবে না।

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>

Adafruit_SSD1306 display(128, 64, &Wire, -1);

#define DHTPIN 4          // Digital pin connected to the DHT sensor
#define DHTTYPE    DHT11  // DHT 11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  dht.begin();

  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  delay(1000);
  display.clearDisplay();
  display.setTextColor(WHITE);
}

void loop() {
  delay(2000);

  //read temperature and humidity
  float t = dht.readTemperature();
  float h = dht.readHumidity();
  if (isnan(h) || isnan(t)) {
  Serial.println("Failed to read from DHT sensor!");
  }
  //Clear Display
  display.clearDisplay();
  
  //Display Temperature
  display.setTextSize(1);
  display.setCursor(0,0);
  display.print("Temperature: ");
  display.setTextSize(2);
  display.setCursor(0,10);
  display.print(t);
  display.print(" ");
  display.setTextSize(1);
  display.cp437(true);
  display.write(167);
  display.setTextSize(2);
  display.print("C");
  
  //Display Humidity
  display.setTextSize(1);
  display.setCursor(0, 35);
  display.print("Humidity: ");
  display.setTextSize(2);
  display.setCursor(0, 45);
  display.print(h);
  display.print(" %"); 
  display.display();   
}

 

ভিডিওঃ

 

5/5 - (1 vote)
Share with your friends
Default image
Nur Mohammad
Senior Research Engineer | Techshop Bangladesh | E-mail: nur@techshopbd.com
Articles: 38

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.