M5Stack Core 2 দিয়ে DHT11 এবং DHT22 ব্যবহার করে তাপমাত্রা এবং আর্দ্রতা পরিমাপ করুন - Robojax
এই গাইডটি দেখায় কিভাবে M5Stack Core2-এর সাথে একটি DHT11 বা DHT22 তাপমাত্রা এবং আর্দ্রতা সেন্সর সংযোগ করতে হয় এবং এর বিল্ট-ইন টাচস্ক্রিনে রিডিং প্রদর্শন করতে হয়। M5Stack Core2 হল একটি শক্তিশালী ESP32-ভিত্তিক ডেভেলপমেন্ট বোর্ড যার 2-ইঞ্চি LCD রয়েছে, যা একটি স্বতন্ত্র পরিবেশগত মনিটরিং স্টেশন তৈরির জন্য একটি আদর্শ প্ল্যাটফর্ম। এই প্রকল্পটি বিভিন্ন ধরনের অ্যাপ্লিকেশনের জন্য উপযুক্ত, যেমন:
- আপনার বাড়ি বা অফিসের পরিবেশ পর্যবেক্ষণের জন্য একটি ডেস্কটপ আবহাওয়া স্টেশন তৈরি করা।
- গ্রিনহাউস, টেরারিয়াম বা সরীসৃপের খাঁচার জন্য তাপমাত্রা এবং আর্দ্রতা লগার তৈরি করা।
- একটি বৃহত্তর IoT প্রকল্পের জন্য একটি সহজ পরিবেশগত মনিটরিং নোড তৈরি করা।
- আধুনিক ডিসপ্লে মডিউল ব্যবহার করে জনপ্রিয় DHT সিরিজের সেন্সরগুলির সাথে ইন্টারফেস করা শেখা।
হার্ডওয়্যার উপাদান
- M5Stack Core2 (ডিসপ্লে সহ ESP32 ডেভেলপমেন্ট বোর্ড)
- DHT11 সেন্সর (10kΩ রোধ সহ খালি সেন্সর বা PCB মডিউল)
- DHT22 (AM2302) সেন্সর (সাদা মডিউল বা লাল/কালো মডিউল)
- ব্রেডবোর্ড এবং জাম্পার তার
ওয়্যারিং গাইড
ওয়্যারিং সহজ, কারণ M5Stack Core2 একটি সুবিধাজনক Grove-সামঞ্জস্যপূর্ণ পোর্ট সরবরাহ করে। ভিডিওটি M5Stack Core2-এর এক্সপানশন পোর্টে সংযোগ প্রদর্শন করে। (ভিডিওতে 03:52 এ)
এখানে সব ধরনের সেন্সরের জন্য সংযোগের সারসংক্ষেপ দেওয়া হল:
- ডেটা পিন: সেন্সরের ডেটা/আউট পিনটি M5Stack Core2-এর GPIO 27-এর সাথে সংযুক্ত করুন। (ভিডিওতে 03:58 এ)
- পাওয়ার পিন (VCC/+): সেন্সরের পাওয়ার পিনটি M5Stack Core2-এর 3.3V পিনের সাথে সংযুক্ত করুন। (ভিডিওতে 04:11 এ)
- গ্রাউন্ড পিন (GND/-): সেন্সরের গ্রাউন্ড পিনটি M5Stack Core2-এর একটি GND পিনের সাথে সংযুক্ত করুন। (ভিডিওতে 04:17 এ)
যদি আপনি একটি খালি DHT11 বা DHT22 সেন্সর ব্যবহার করেন, তাহলে আপনাকে ডেটা পিন এবং 3.3V পিনের মধ্যে একটি পুল-আপ রোধ (সাধারণত 5.6kΩ থেকে 10kΩ) যোগ করতে হবে। (ভিডিওতে 04:50 এ)
কোড ব্যাখ্যা
কোডটি অত্যন্ত কনফিগারযোগ্য হওয়ার জন্য ডিজাইন করা হয়েছে, যা আপনাকে সহজেই সেন্সরের ধরন, ডিসপ্লে মোড, রঙ এবং রিফ্রেশ হার পরিবর্তন করতে দেয়। এখানে প্রধান ব্যবহারকারী-কনফিগারযোগ্য বিভাগগুলির একটি বিবরণ দেওয়া হল:
সেন্সর এবং ডিসপ্লে সেটিংস
কোডের শীর্ষে, আপনি সেন্সরের ধরন এবং ডিসপ্লে মোড সংজ্ঞায়িত করতে পারেন। আপনার সেন্সর নির্বাচন করতে, আপনাকে সঠিক #define লাইনটি কমেন্ট বা আনকমেন্ট করতে হবে। (ভিডিওতে 13:43 এ)
#define DHTPIN 27
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
উদাহরণস্বরূপ, একটি DHT11 ব্যবহার করতে, আপনাকে #define DHTTYPE DHT22 কমেন্ট করতে হবে এবং #define DHTTYPE DHT11 আনকমেন্ট করতে হবে।
unit ভেরিয়েবলটি নিয়ন্ত্রণ করে স্ক্রিনে কী ডেটা দেখানো হয়। (ভিডিওতে 09:33 এ)
unsigned int unit=3;//
// 0=C সেলসিয়াস
// 1=F ফারেনহাইট
// 2=আর্দ্রতা
// 3=C এবং আর্দ্রতা
// 4=F এবং আর্দ্রতা
// 5=C এবং F
আপনি সেলসিয়াস, ফারেনহাইট, আর্দ্রতা বা তাদের সংমিশ্রণ প্রদর্শন করতে এটিকে 0 থেকে 5 পর্যন্ত যেকোনো মানে সেট করতে পারেন।
refresh ভেরিয়েবলটি সেট করে কতবার সেন্সর পড়া হয় এবং স্ক্রিন আপডেট হয়, মিলিসেকেন্ডে। (ভিডিওতে 09:15 এ)
const int refresh=3000;//প্রতি 3 সেকেন্ডে পড়ুন
কাস্টমাইজেশন বিকল্প
কোডটি আপনাকে স্ক্রিনের পাঠ্য এবং রঙ কাস্টমাইজ করারও অনুমতি দেয়। title এবং unitText অ্যারে স্ক্রিনে প্রদর্শিত লেবেল এবং ইউনিট সংরক্ষণ করে। (ভিডিওতে 10:01 এ)
char *title[]={"তাপমাত্রা","তাপমাত্রা","আর্দ্রতা"};
char *unitText[]={"C","F","%"};
আপনি আপনার নিজের ভাষায় পাঠ্য প্রদর্শন করতে এই স্ট্রিংগুলি পরিবর্তন করতে পারেন। backgroundColor, temperatureTitleColor এবং humidityValueColor এর মতো রঙের ভেরিয়েবলগুলি পূর্বনির্ধারিত TFT রঙের মান বা আপনার নিজস্ব কাস্টম হেক্স মানগুলিতে সেট করা যেতে পারে। (ভিডিওতে 10:21 এ)
লাইভ প্রকল্প প্রদর্শন
ভিডিওটি প্রকল্পের একটি বিস্তৃত প্রদর্শন সরবরাহ করে। এটি একটি DHT22 সেন্সরের সাথে বিভিন্ন মোডে ডিসপ্লে কাজ করতে দেখায়, যার মধ্যে ফারেনহাইট, শুধুমাত্র আর্দ্রতা, আর্দ্রতা সহ সেলসিয়াস এবং অবশেষে সেলসিয়াস এবং ফারেনহাইট অন্তর্ভুক্ত। (ভিডিওতে 21:03 এ) প্রদর্শনে একটি DHT11 সেন্সরের সাথে একটি পরীক্ষাও অন্তর্ভুক্ত রয়েছে, উভয়ই একটি PCB মডিউল সহ এবং একটি পুল-আপ রোধ সহ খালি সেন্সর হিসাবে। (ভিডিওতে 22:22 এ) অবশেষে, ভিডিওটি দেখায় যখন একটি তার সংযোগ বিচ্ছিন্ন হয় তখন কী ঘটে, যার ফলে স্ক্রিনে একটি "None" রিডিং দেখা যায়। (ভিডিওতে 22:38 এ)
ভিডিও অধ্যায়
- [00:00] ভূমিকা এবং প্রকল্প ওভারভিউ
- [00:55] M5Stack Core2 বৈশিষ্ট্য
- [02:22] DHT11 বনাম DHT22 সেন্সর স্পেসিফিকেশন
- [03:52] ওয়্যারিং গাইড
- [07:40] বোর্ড ড্রাইভার এবং লাইব্রেরি ইনস্টল করা
- [09:01] কোড ব্যাখ্যা
- [21:03] লাইভ প্রদর্শন
- [22:53] উপসংহার এবং সমাপ্তি
/*
* file: M5Stack_DHT11_DHT22
Measure Temperature and Humidity using DHT11, DHT22, DHT21 Sensor and display on M5Stack Core 2 ESP32 IoT board
* Written by Ahmad Shamshiri on April 22, 2021 in Ontario, Canada
* Watch video instruction https://youtu.be/ZDZm_QOlCJo
www.Robojax.com YouTube http://www.youtube.com/robojaxTV
*
*
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact. *
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <M5Core2.h>
const int refresh=3000;//read every 3 seconds
unsigned int unit=3;//
// 0=C celsius
// 1=F fahrenheit
// 2=Humidity
// 3=C and Humidity
// 4=F and Humidity
// 5=C and F
char *title[]={"Temperature","Temperature","Humidity"};
char *unitText[]={"C","F","%"};
//set more color. see https://docs.m5stack.com/#/en/api/lcd
unsigned int backgroundColor= YELLOW;
unsigned int temperatureTitleColor= BLACK;
unsigned int temperatureValueColor= RED;
unsigned int humidityTitleColor= BLACK;
unsigned int humidityValueColor= RED;
unsigned int background2Color= TFT_CYAN;
uint8_t titleV,unitV,degree;
uint8_t line1TitleY=3;
uint8_t line1ValueY=40;
uint8_t line2TitleY=110;
uint8_t line2ValueY=150;
#include "DHT.h"
#define DHTPIN 27
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);
float temperatureCValue,temperatureFValue, humidityValue,myValue1,myValue2;//
// ****** DHT settings end (Robojax.com )
void readTemperature();
void displayTemperature(uint8_t line );
void setup() {
M5.begin();
M5.Lcd.setTextSize(4);
Serial.begin(9600);//default is 115200
Serial.println("M5Stack DHT Test ");
// Robojax.com code for ESP32 DHT11 DHT22
dht.begin();
delay(1000);
}
void loop() {
readTemperature();//reads the temperature and humidity
displayMyValue();//displays temperature or humidity
//printOnSerial();
delay(refresh);
}
/*
* www.robojax.com
* see video https://youtu.be/ZDZm_QOlCJo
* for details
*/
void readTemperature()
{
temperatureCValue = dht.readTemperature();// Read temperature as Celsius (the default)
humidityValue = dht.readHumidity();// Reading humidity
temperatureFValue = dht.readTemperature(true);// Read temperature as Fahrenheit (isFahrenheit = true)
}//readTemperature() end
void displayMyValue()
{
switch (unit) {
case 1:
titleV = 1;
unitV =1;
myValue1= temperatureFValue;
displayTemperature( 1 , true);
break;
case 2:
titleV = 2;
unitV =2;
myValue1= humidityValue;
displayTemperature( 1, false );
break;
case 3:
titleV = 0;
unitV =0;
myValue1= temperatureCValue;
displayTemperature( 1 , true);
titleV = 2;
unitV =2;
myValue2= humidityValue;
displayTemperature( 2, false );
break;
case 4:
titleV = 1;
unitV =1;
myValue1= temperatureFValue;
displayTemperature( 1 , true);
titleV = 2;
unitV =2;
myValue2= humidityValue;
displayTemperature( 2 , false);
break;
case 5:
titleV = 0;
unitV =0;
myValue1= temperatureCValue;
displayTemperature( 1, true);
titleV = 1;
unitV =1;
myValue2= temperatureFValue;
displayTemperature( 2 , true);
break;
default:
titleV = 0;
unitV =0;
myValue1= temperatureCValue;
displayTemperature(1, true);
break;
}
}//displayMyValue() end
/*
* displayTemperature(uint8_t line, bool degree)
* Displays temperature on Core2 screen
* See video for details
* https://youtu.be/ZDZm_QOlCJo
*/
void displayTemperature(uint8_t line, bool degree)
{
uint8_t Y_lineTitle,Y_lineValue;
float valueToDisplay;
//M5.Lcd.fillScreen(backgroundColor);
M5.Lcd.setTextColor(temperatureTitleColor);
M5.Lcd.setTextSize(4);
if(line ==1){
Y_lineTitle =line1TitleY;
Y_lineValue =line1ValueY;
valueToDisplay=myValue1;
//M5.Lcd.fillRect(0, 0, 340, line2TitleY, backgroundColor);
M5.Lcd.fillScreen(backgroundColor);
}else{
//M5.Lcd.drawRect(0, line2TitleY, 340, 240-line2TitleY, background2Color);
M5.Lcd.fillRect(0, line2TitleY, 340, 240-line2TitleY, background2Color);
Y_lineTitle =line2TitleY;
Y_lineValue =line2ValueY;
valueToDisplay=myValue2;
}
M5.Lcd.setCursor(3,Y_lineTitle);
M5.Lcd.print(title[titleV]);
M5.Lcd.setTextColor(temperatureValueColor);
M5.Lcd.setTextSize(7);
M5.Lcd.setCursor(3,Y_lineValue);
M5.Lcd.printf("%.1f", valueToDisplay);
if(degree){
printDegree();//print degree symbol if needed
}
M5.Lcd.print(unitText[unitV]);
}
/*
* displayHumidity()
* displays humidity from DHT11 or DHT22 on Core 2
* written by Ahmad Shamshiri
* on April 21, 2021 in Ajax, Ontario, Canada
* www.robojax.com
*/
void displayHumidity()
{
M5.Lcd.setTextColor(humidityTitleColor);
M5.Lcd.setTextSize(4);
M5.Lcd.setCursor(3,110);
M5.Lcd.print(title[2]); //humidity title
M5.Lcd.setTextColor(humidityValueColor);
M5.Lcd.setTextSize(7);
M5.Lcd.setCursor(3,150);
M5.Lcd.printf("%.1f", humidityValue);
M5.Lcd.print(unitText[2]);
}//displayHumidity() end
/*
* printDegree()
* prints degree symbol
* Written by Ahmad Shamshiri
* on April 2, 2021 at 23:53
* www.robojax.com
*/
void printDegree()
{
M5.Lcd.setTextSize(3);
M5.Lcd.print("o");
M5.Lcd.setTextSize(7);
M5.Lcd.setCursor(M5.Lcd.getCursorX()+15,M5.Lcd.getCursorY());
}//printDegree() end
/*
written by Ahmad Shamshiri for Robojax, Robojax.com
on April 21, 2021 in Ajax, Ontario, Canada
*/
void printOnSerial()
{
Serial.print(title[unit]);
Serial.print(" ");
Serial.print(myValue1);
Serial.print(unitText[unit]);
Serial.println();
}//printOnSerial() end
সম্পদ ও রেফারেন্সসমূহ
-
বাহ্যিকM5Stack Core2 Documentation pagedocs.m5stack.com
-
বাহ্যিকM5Stack Core2 product pagem5stack-store.myshopify.com
ফাইলসমূহ📁
কোনো ফাইল উপলব্ধ নেই।