د تودوخې او رطوبت اندازه کول د 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
فایلونه📁
هیڅ فایل شتون نلري.