M5Stack Core 2 کے ساتھ DHT11 اور DHT22 استعمال کرتے ہوئے درجہ حرارت اور نمی کی پیمائش کریں - Robojax
یہ گائیڈ ظاہر کرتی ہے کہ DHT11 یا DHT22 درجہ حرارت اور نمی سینسر کو M5Stack Core2 سے کیسے جوڑا جائے اور اس کی بلٹ ان ٹچ اسکرین پر ریڈنگز کیسے دکھائی جائیں۔ 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
فائلیں📁
کوئی فائلیں دستیاب نہیں ہیں۔