هذا الدليل جزء من: مستشعر رقمي للرطوبة النسبية ودرجة الحرارة HTU21D
مقاطع فيديو متعلقة بمستشعر الرطوبة النسبية ودرجة الحرارة الرقمي HTU21D. روابط لمقاطع فيديو أخرى موجودة أسفل هذه المقالة.
عرض درجة الحرارة من HTU21D كرسوم بيانية على شاشة LCD
في هذا الدرس، سنتعلم كيفية عرض قراءات درجة الحرارة من مستشعر HTU21D لدرجة الحرارة والرطوبة على شاشة LCD في شكل رسم بياني شريطي. ستتضمن القراءات قيمًا بالدرجات المئوية، والفهرنهايت، والكلفن، والرطوبة النسبية، مما يوفر نظرة شاملة على الظروف البيئية. سيساعدك هذا المشروع على فهم كيفية توصيل المكونات بشكل صحيح وتنفيذ الكود اللازم لجعل كل شيء يعمل بسلاسة.

بالنسبة لأولئك الذين يرغبون في الحصول على دليل بصري، تأكدوا من مشاهدة الفيديو المرتبط بهذا الدرس (في الفيديو عند 00:00).
تفسير الأجهزة
تشمل المكونات الرئيسية لهذا المشروع مستشعر HTU21D وشاشة LCD 1602. يعد HTU21D مستشعرًا رقميًا للرطوبة ودرجة الحرارة يتواصل عبر I2C. يوفر قراءات دقيقة لدرجة الحرارة والرطوبة، والتي يمكن الوصول إليها بسهولة من خلال مكتبته. من ناحية أخرى، تعرض شاشة LCD 1602 القراءات بتنسيق مفهوم للبشر، مما يسمح بتقييمات سريعة للظروف البيئية.
يستخدم HTU21D واجهة I2C بسيطة، مما يجعله سهل الاتصال والتواصل مع الميكروكنترولر مثل الأردوينو. كما يستخدم شاشة LCD 1602 I2C، مما يبسط التوصيل عن طريق تقليل عدد الدبابيس المطلوبة للاتصال بالأردوينو. هذا يسمح بإعداد أنظف مع الحفاظ على توفير مخرجات بصرية واضحة.
تفاصيل ورقة البيانات
| الصانع | أدا فروت |
|---|---|
| رقم الجزء | HTU21D |
| جهد المنطق/المدخلات والمخرجات | 3.3 فولت (تقريباً) |
| جهد الإمداد | 1.5 - 3.6 ف |
| نطاق درجة الحرارة | -40 إلى 125 درجة مئوية |
| نطاق الرطوبة | 0 إلى 100 %RH |
| قرار | 0.01 °م / 0.04 %رطوبة نسبية |
| اتصال | I2C |
| حزمة | 4-pin LGA |
- استخدم 3.3 فولت لتشغيل HTU21D؛ الاتصال بـ 5 فولت يمكن أن يتسبب في تلفه.
- تأكد من استخدام مقاومات سحب صحيحة على خطوط I2C (SDA و SCL).
- خذ المستشعر بعيدًا عن مصادر الحرارة أثناء الاختبار.
- تحقق من عنوان I2C الصحيح باستخدام برنامج مسح I2C.
- تأكد من أن شاشة LCD مُهيأة بشكل صحيح بالعنوان الصحيح.
تعليمات التوصيل

لربط مستشعر HTU21D وعرض LCD 1602، اتبع هذه الخطوات بعناية:
أولاً، قم بتوصيل مستشعر HTU21D. اتصل بالدبوس الأول (VCC) بدبوس 3.3 فولت على الأردوينو. يجب توصيل الدبوس الثاني (GND) بالأرض (GND) للأردوينو. الدبوس الثالث (SDA) متصل بدبوس A4 على الأردوينو، والدبوس الرابع (SCL) متصل بدبوس A5. تأكد من استخدام الألوان الصحيحة للأسلاك لتوضيح الأمور، حيث تستخدَم الأحمر لـ VCC، والأسود لـ GND، والبرتقالي لـ SDA، والأصفر لـ SCL.
بعد ذلك، بالنسبة لشاشة LCD 1602، قم بتوصيل دبوس VCC بدبوس 5 فولت على الأردوينو ودبوس GND بالأرض. يجب أن يتم توصيل دبوس SDA الخاص بشاشة LCD بنفس دبوس A4 المستخدم لـ HTU21D، ويجب توصيل دبوس SCL بدبوس A5. يتيح هذا الإعداد لكل من المستشعر والشاشة التواصل عبر بروتوكول I2C.
أمثلة الكود وإرشادات الاستخدام
في الكود، الخطوة الأولى هي تضمين المكتبات اللازمة للمستشعر وشاشة العرض. السطر#include أساسي للتواصل I2C، بينما#include "Adafruit_HTU21DF.h"يتم تهيئة مستشعر HTU21D. يقوم السطر التالي بإنشاء مثيل من فئة HTU21D:
Adafruit_HTU21DF htu = Adafruit_HTU21DF();تقوم هذه السطر بإعداد المستشعر للاستخدام في البرنامج، مما يتيح لنا استدعاء طرقه لاحقًا لقراءة قيم درجة الحرارة والرطوبة.
داخل الـsetup()نقوم بتهيئة المراقب التسلسلي وشاشة LCD. السطور التالية تتحقق مما إذا كان المستشعر يعمل بشكل صحيح:
if (htu.begin()) {
lcd.print("HTU21DF Bargraph");
} else {
lcd.print("missing HTU21DF");
while(1); // Pause forever.
}إذا فشل المستشعر في التهيئة، سيعرض البرنامج رسالة خطأ ويتوقف عن التنفيذ. هذا أمر حاسم لتصحيح الأخطاء ويضمن أن المستشعر متصل بشكل صحيح.
في الـloop()تتم أخذ قراءات درجة الحرارة وعرضها. الخطfloat T = getHTU('H');يسترجع درجة الحرارة أو الرطوبة بناءً على المعامل الممرر. ثم يتم عرض القيمة المسترجعة على شاشة LCD:
lcd.setCursor (0,1);
lcd.print(T); // print
lcd.print((char)223); // prints degree symbol
lcd.print("C"); //هذا الكود يضع المؤشر في السطر الثاني من شاشة LCD ويطبع قيمة درجة الحرارة مع رمز الدرجة. استخدام(char)223هذه خدعة مفيدة لعرض رمز الدرجة على الشاشة LCD.
عرض / ما يمكن توقعه
بمجرد إعداد كل شيء وتحميل الشيفرة، يجب أن ترى قراءات درجة الحرارة معروضة على شاشة LCD كرسوم بيانية. ستتحدث القراءات باستمرار، مما يعكس درجة الحرارة والرطوبة الحالية. إذا قمت بنفخ هواء ساخن على المستشعر، ستلاحظ ارتفاع درجة الحرارة بسرعة، مما يؤكد أن النظام يعمل كما هو متوقع. كن حذرًا من عكس القطبية أو الأسلاك الخاطئة، حيث يمكن أن تؤدي هذه إلى خلل أو تلف (في الفيديو عند 02:30).
طوابع زمنية للفيديو
- 00:00- المقدمة
- 01:30- شرح التوصيلات
- ٢:٣٠- عرض الشيفرة
- ٤:٠٠- عرض
- ٠٥:٣٠- الخاتمة
هذا الدليل هو جزء من: مستشعر رقمي للرطوبة النسبية ودرجة الحرارة HTU21D
- Lesson 35-1: Using the HTU21D Temperature Sensor
- الدرس 35-2: استخدام مستشعر درجة الحرارة HTU21D - كود مخصص
- الدرس 35: استخدام مستشعر درجة الحرارة HTU21D مع أردوينو
- الدرس 36: استخدام مستشعر الحرارة HTU21D مع شاشة LCD دورة خطوة بخطوة لأردوينو
- استخدام حساسين إضافيين لقياس الرطوبة ودرجة الحرارة HTU21DF مع أردوينو
- عرض درجة الحرارة من HTU21D على شاشة LCD
- كيفية استخدام مستشعر الرطوبة ودرجة الحرارة HTU21DF مع أردوينو (الكود الأساسي)
- كيفية استخدام مستشعر الرطوبة ودرجة الحرارة HTU21DF مع Arduino (شفرة مخصصة)
/*
* Display Temperature from HTU21D(F) on LCD as bargraph
* Written and Updated by Ahmad Shamshiri on July 18, 2019
* for Robojax in Ajax, Ontario, Canada
Watch Video tutorial for this code: https://youtu.be/kpGvzNWLHuk
Must watch:
1- Introduction to HTU21DF
https://youtu.be/Q5y18rgTAhA
2- LCD1602-I2C video: https://youtu.be/q9YC_GVHy5A
* Original Sources:
* LCD library: https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
* Bargraph library from https://playground.arduino.cc/Code/LcdBarGraph/
*
*
- (GND) to GND
+ (VDD) to 3.3V
(WARNING: Do not connect + to 5V or the sensor will be damaged!)
*/
#include <Wire.h>
#include "Adafruit_HTU21DF.h"
Adafruit_HTU21DF htu = Adafruit_HTU21DF();
#define maxValue 160 // is the value in celsius or fahrenheit set in line above
// LCD settings
#include <LiquidCrystal_I2C.h>
byte lcdNumCols = 16; // -- number of columns in the LCD
byte lcdLine = 2; // -- number of lines in the LCD
LiquidCrystal_I2C lcd(0x3f,lcdNumCols,lcdLine); //0x3f is address for I2C
// to get I2C address, run I2C Scanner.
//Link is provided (in same page as this code) at http://robojax.com/learn/arduino
// bargraph settings
#include <LcdBarGraphRobojax.h>
LcdBarGraphRobojax robojax(&lcd, 16, 0, 0); // -- creating 16 character long bargraph starting at char 0 of line 0 (see video)
void setup()
{
Serial.begin(9600);//initialize serial monitor
// -- initializing the LCD
lcd.begin();
lcd.clear();
lcd.print("Robojax");
// Initialize the sensor (it is important to get calibration values stored on the device).
if (htu.begin())
{
lcd.setCursor (0,1); //
lcd.print("HTU21DF Bargraph");
}else {
lcd.setCursor (0,1); //
lcd.print("missing HTU21DF");
while(1); // Pause forever.
}
// -- give user some time to read the text above
delay(2000);
lcd.clear();
}// setup
void loop()
{
// Robojax HTU21DF Bargraph main loop
robojax.clearLine(1);// clear line 1 to display fresh temperature
float T = getHTU('H');// get the temperature
float Tgraph=T;
if( Tgraph > maxValue){
Tgraph =0;
}
robojax.drawValue( Tgraph, maxValue);// draw the bargraph
// Print out the measurement:
Serial.print("temperature: ");
Serial.print(T,2);
lcd.setCursor (0,1); //
if(T< maxValue){
lcd.print("Temp.:");
//lcd.print("Humi.:");
}else{
lcd.print("Max.:");
}
lcd.setCursor (7,1); //
lcd.print(T); // print
lcd.print((char)223);// prints degree symbol
//lcd.print("%");// prints degree symbol
lcd.print("C");//
delay(500);
}
/*
* @brief returns temperature or relative humidity
* @param "type" is a character
* C = Celsius
* K = Kelvin
* F = Fahrenheit
* H = Humidity
* @return returns one of the values above
* Usage: to get Fahrenheit, type: getHTU('F')
* to print it on the serial monitor: Serial.println(getHTU('F'));
* Written by Ahmad Shamshiri on July 13, 2019
* in Ajax, Ontario, Canada
* www.Robojax.com
*/
float getHTU(char type)
{
float value;
float temp = htu.readTemperature();
float rel_hum = htu.readHumidity();
if(type =='F')
{
value = temp *9/5 + 32;//convert to Fahrenheit
}else if(type =='K')
{
value = temp + 273.15;//convert to Kelvin
}else if(type =='H')
{
if(rel_hum<0){rel_hum =0;}//prevents it from negative value
value = rel_hum;//return relative humidity
}else{
value = temp;// return Celsius
}
return value;
}//
الموارد والمراجع
-
خارجيدليل بيانات HTU21D (PDF)cdn-shop.adafruit.com
-
خارجيمكتبة Adafruit HTU21D (جيت هاب)github.com
ملفات📁
ورقة البيانات (pdf)
-
ورقة بيانات HTU21D لدرجة الحرارة والرطوبة
HTU21D_temerature_humidity_datasheet.pdf0.96 MB