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(); }
ভিডিওঃ