هذا الدليل جزء من: مستشعر رقمي للرطوبة النسبية ودرجة الحرارة HTU21D
مقاطع فيديو متعلقة بمستشعر الرطوبة النسبية ودرجة الحرارة الرقمي HTU21D. روابط لمقاطع فيديو أخرى موجودة أسفل هذه المقالة.
الدرس 35-2: استخدام مستشعر درجة الحرارة HTU21D - كود مخصص
في هذا الدرس، سنستكشف كيفية استخدام مستشعر الحرارة والرطوبة HTU21D مع الأردوينو لقياس درجة الحرارة والرطوبة. HTU21D هو مستشعر موثوق ومنخفض الطاقة يتواصل عبر I2C، مما يجعله سهل الدمج في مشاريعك. بنهاية هذا الدرس، سيكون لديك كود يعمل يقيس درجة الحرارة بالسيلسيوس والفهرنهايت والكلفن، بالإضافة إلى الرطوبة النسبية.

قبل أن نغوص في الأسلاك والبرمجة، من الضروري فهم المكونات المعنية. يتطلب حساس HTU21D اتصالات بسيطة: الطاقة، والأرضي، وسلكين I2C لنقل البيانات. تجعل هذه البساطة منه خيارًا ممتازًا لمجموعة متنوعة من التطبيقات، بدءًا من محطات الطقس إلى أجهزة المنزل الذكي. للحصول على دليل بصري، يرجى الرجوع إلى الفيديو عند النقطة الزمنية :45.
شرح الأجهزة
المكون الرئيسي في هذا المشروع هو مستشعر HTU21D، الذي يقيس درجة الحرارة والرطوبة. يمكن لهذا المستشعر العمل بجهود تتراوح من 1.5 فولت إلى 3.6 فولت، مما يجعله متعدد الاستخدامات لتطبيقات مختلفة. يوفر قراءات عالية الدقة، حيث تتراوح قياسات درجة الحرارة من -40 درجة مئوية إلى +125 درجة مئوية وقياسات الرطوبة بدقة 0.04%.
بالإضافة إلى ذلك، يستخدم المستشعر اتصال I2C، الذي يتطلب سلكين: SDA (خط البيانات) وSCL (خط الساعة). هذا يسمح بالتكامل بسهولة مع الأردوينو ووحدات التحكم الدقيقة الأخرى دون الحاجة لتوصيلات معقدة. تسهل مكتبة Adafruit التفاعل مع المستشعر، حيث تتولى استرداد البيانات وبروتوكولات الاتصال بسلاسة.
تفاصيل ورقة البيانات
| صانع | تي إي كونيكتيفيتي |
|---|---|
| رقم الجزء | HTU21D-F |
| جهد المنطق/إدخال/إخراج | ١.٥ - ٣.٦ ف |
| جهد الإمداد | 3.3 فولت |
| الاستهلاك الحالي (الخمول) | ٠٫٠٢ ميكرو أمبير (نموذجي) |
| الاستهلاك الحالي (الفعّال) | ٤٥٠ ميكروأمبير (تقريباً) |
| نطاق درجة الحرارة | -40 إلى +125 درجة مئوية |
| نطاق الرطوبة | 0 إلى 100 %رطوبة نسبية |
| قرار | 0.04 %RH; 0.01 °C |
| حزمة | 6-pin DFN |
- تأكد من توفير مصدر طاقة صحيح لتجنب تلف المستشعر.
- استخدم المقاومات السحب على خطوط SDA و SCL إذا لم تكن مدمجة.
- تأكد من أن توصيلات المستشعر قصيرة لتقليل الضوضاء.
- راقب الجهد أثناء التشغيل للحفاظ على الاستقرار.
- نظر في استخدام مكثف لفصل الدوائر بالقرب من دبابيس الطاقة.
تعليمات التوصيل

لربط حساس درجة الحرارة HTU21D، ابدأ بتوصيل الطاقة والأرضي. قم بتوصيل السلك الأيسر للحساس بمصدر 3.3V، مع التأكد من قدرته على تحمل الجهد المطلوب. يجب توصيل السلك الثاني، الذي يكون عادةً ملوناً بالأحمر، بالأرضي.
التالي، قم بتوصيل دبوس SDA من الحساس بالدبوسA4على لوحة Arduino، التي تعمل كخط بيانات للتواصل عبر I2C. ثم، قم بتوصيل دبوس SCL إلى الدبوسA5، التي تعمل كخط الزمن. تأكد من أن هذه الاتصالات آمنة، حيث يمكن أن تؤدي الأسلاك غير المثبتة إلى قراءات متقطعة أو فشل في التواصل مع المستشعر.
أمثلة على الكود وشرح تفصيلي
في الكود، نبدأ بإدراج المكتبات الضرورية وتهيئة المستشعر. السطرAdafruit_HTU21DF htu = Adafruit_HTU21DF();ينشئ مثيل لفئة المستشعر. في الـsetup()نبدأ الاتصال التسلسلي ونتحقق مما إذا كان المستشعر متصلاً بشكل صحيح.
void setup() {
Serial.begin(9600);
if (!htu.begin()) {
Serial.println("Couldn't find sensor!");
while (1);
}
}يقوم هذا المقطع بالتحقق مما إذا كان المستشعر يعمل بشكل صحيح. إذا لم يكن كذلك، فإنه يطبع رسالة خطأ ويتوقف البرنامج. في الـloop()نحن نقرأ قيم درجات الحرارة والرطوبة بشكل مستمر.
void loop() {
Serial.print(getHTU('C'));
Serial.print("C");
Serial.print(getHTU('H'));
Serial.println("%");
delay(1000);
}هنا، الوظيفةgetHTU()يتم استدعاؤه بمعلمات مختلفة لاسترجاع درجة الحرارة بالدرجة المئوية والرطوبة. الضمان يضمن أخذ القراءات كل ثانية، مما يوفر مخرجات سلسة على شاشة التسلسلات. الكود الكامل متاح للرجوع إليه أدناه المقال.
عرض / ماذا تتوقع
بمجرد توصيل كل شيء بشكل صحيح وتحميل الكود، يجب أن ترى قراءات درجة الحرارة والرطوبة مطبوعة في وحدة المراقبة التسلسلية. ستُعرض درجة الحرارة بالدرجة المئوية، تليها نسبة الرطوبة المقابلة. إذا قمت بتطبيق الحرارة على المستشعر، يجب أن تلاحظ ارتفاع درجة الحرارة وفقًا لذلك (في الفيديو عند 10:15).
كن حذرًا من حدود المستشعر؛ إذا تجاوزت درجة الحرارة 125 درجة مئوية، فقد يعطي قراءة غير صحيحة أو يظهر صفرًا. تأكد دائمًا من أن الاتصالات الخاصة بك آمنة وأن المستشعر يعمل بالطاقة بشكل صحيح لتجنب أي مشاكل أثناء التشغيل.
طوابع زمنية للفيديو
- 00:00مقدمة
- ٠٣:٤٥توصيل المستشعر
- ٠٥:٣٠جولة في الكود
- 10:15تظاهرة
- 12:00استنتاج
هذا الدليل هو جزء من: مستشعر رقمي للرطوبة النسبية ودرجة الحرارة HTU21D
- Lesson 35-1: Using the HTU21D Temperature Sensor
- الدرس 35: استخدام مستشعر درجة الحرارة HTU21D مع أردوينو
- الدرس 36: استخدام مستشعر الحرارة HTU21D مع شاشة LCD دورة خطوة بخطوة لأردوينو
- استخدام حساسين إضافيين لقياس الرطوبة ودرجة الحرارة HTU21DF مع أردوينو
- عرض درجة الحرارة من HTU21D على شاشة LCD
- عرض درجة الحرارة من HTU21D كرسوم بيانية على شاشة LCD
- كيفية استخدام مستشعر الرطوبة ودرجة الحرارة HTU21DF مع أردوينو (الكود الأساسي)
- كيفية استخدام مستشعر الرطوبة ودرجة الحرارة HTU21DF مع Arduino (شفرة مخصصة)
/*
* Robojax Arduino Step-by-Step Course
* Part 4: Temperature Sensors
* Lesson 35: HTU21D Temperature Sensor Custom code
* Written/Updated by Ahmad Shamshiri on July 13, 2019
* in Ajax, Ontario, Canada
Please watch video instructions here https://youtu.be/LyA0yAKlf9E
This code is available at http://robojax.com/course1/?vid=lecture35
with over 100 lectures free on YouTube. Watch it here http://robojax.com/L/?id=338
Get the code for the course: http://robojax.com/L/?id=339
If you found this tutorial helpful, please support me so I can continue creating.
Make a donation using PayPal http://robojax.com/L/?id=64
* Code is available at http://robojax.com/learn/arduino
* 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/>.
*/
/*
**************************************************
*
This is an example for the HTU21D-F Humidity & Temperature Sensor
Designed specifically to work with the HTU21D-F sensor from Adafruit
----> https://www.adafruit.com/products/1899
These displays use I2C to communicate; 2 pins are required to
interface
***************************************************
*/
#include <Wire.h>
#include "Adafruit_HTU21DF.h"
// Connect Vin to 3-5VDC
// Connect GND to ground
// Connect SCL to I2C clock pin (A5 on UNO)
// Connect SDA to I2C data pin (A4 on UNO)
Adafruit_HTU21DF htu = Adafruit_HTU21DF();
void setup() {
//Get the code for the course: http://robojax.com/L/?id=339
Serial.begin(9600);
Serial.println("Robojax.com");
Serial.println("HTU21D-F test");
if (!htu.begin()) {
Serial.println("Couldn't find sensor!");
while (1);
}
}
void loop() {
//Get the code for the course: http://robojax.com/L/?id=339
Serial.print(getHTU('C'));
printDegree();
Serial.println("C");
Serial.print(getHTU('F'));
printDegree();
Serial.println("F");
Serial.print(getHTU('K'));
Serial.println("K");
Serial.println(" ");
Serial.print("Humidity:");
Serial.print(getHTU('H'));
Serial.println("%");
if(getHTU('C') <81)
{
//digitalWrite(5, LOW);
}
delay(1000);
}
/*
* @brief returns temperature or relative humidity
* @param "type" is 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 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)
{
//Get the code for the course: http://robojax.com/L/?id=339
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')
{
value = rel_hum;//return relative humidity
}else{
value = temp;// return Celsius
}
return value;
}//
/*
* @brief prints degree symbol on serial monitor
* @param none
* @return returns nothing
* Written by Ahmad Shamshiri on July 13, 2019
* for Robojax Tutorial Robojax.com
*/
void printDegree()
{
Serial.print("\xC2");
Serial.print("\xB0");
}
الأشياء التي قد تحتاجها
-
أمازوناشترِ وحدة HTU21D من أمازونamzn.to
-
إي بايشراء HTU21D من eBayebay.us
-
علي إكسبريساشترِ HTU21D أو SHT21 من علي إكسبريسs.click.aliexpress.com
الموارد والمراجع
-
خارجيدليل بيانات HTU21D (PDF)cdn-shop.adafruit.com
-
خارجيفرق بين HTU21DF و HTU21D (صورة)robojax.com
-
خارجيمكتبة Adafruit HTU21D (جيت هاب)github.com
ملفات📁
ورقة البيانات (pdf)
-
ورقة بيانات HTU21D لدرجة الحرارة والرطوبة
HTU21D_temerature_humidity_datasheet.pdf0.96 MB