فهرست مطالب:

آردوینو نانو - آموزش حسگر رطوبت و دما نسبی HTS221: 4 مرحله
آردوینو نانو - آموزش حسگر رطوبت و دما نسبی HTS221: 4 مرحله

تصویری: آردوینو نانو - آموزش حسگر رطوبت و دما نسبی HTS221: 4 مرحله

تصویری: آردوینو نانو - آموزش حسگر رطوبت و دما نسبی HTS221: 4 مرحله
تصویری: STC-3028 Thermostat with Heat and Humidity Fully Explained and demonstrated 2024, جولای
Anonim
Image
Image

HTS221 یک حسگر دیجیتالی خازنی فوق العاده جمع و جور برای رطوبت و درجه حرارت نسبی است. این شامل یک عنصر سنجش و یک سیگنال ترکیبی از مدار مجتمع خاص (ASIC) برای ارائه اطلاعات اندازه گیری از طریق رابط های سریال دیجیتال است. این سنسور با ویژگی های فراوان یکی از مناسب ترین سنسورها برای اندازه گیری بحرانی رطوبت و دما است. در اینجا تظاهرات با arduino nano است.

مرحله 1: آنچه شما نیاز دارید..

آنچه شما نیاز دارید.. !!
آنچه شما نیاز دارید.. !!

1. آردوینو نانو

2. HTS221

3. کابل I²C

4. I²C Shield برای آردوینو نانو

مرحله 2: اتصالات:

اتصالات
اتصالات
اتصالات
اتصالات
اتصالات
اتصالات
اتصالات
اتصالات

یک سپر I2C برای آردوینو نانو بگیرید و آن را به آرامی روی پین های نانو فشار دهید.

سپس یک سر کابل I2C را به سنسور HTS221 و سر دیگر را به سپر I2C وصل کنید.

اتصالات در تصویر بالا نشان داده شده است.

مرحله 3: کد:

کد
کد

کد آردوینو برای HTS221 را می توانید از مخزن github ما- DCUBE Community بارگیری کنید.

در اینجا پیوند مربوط به آن است:

github.com/DcubeTechVentures/HTS221/blob/master/Arduino/HTS221.ino

ما کتابخانه Wire.h را برای تسهیل ارتباط I2c سنسور با برد آردوینو قرار می دهیم.

همچنین می توانید کد را از اینجا کپی کنید ، به صورت زیر آمده است:

// با مجوز اراده آزاد توزیع می شود.

// از آن به هر نحوی که می خواهید استفاده کنید ، سودمند یا رایگان ، مشروط بر اینکه در مجوز آثار مربوط به آن متناسب باشد.

// HTS221

// این کد برای کار با ماژول کوتاه HTS221_I2CS I2C طراحی شده است

#عبارتند از

// آدرس HTS221 I2C 0x5F است

#تعریف Addr 0x5F

void setup ()

{

// راه اندازی ارتباط I2C به عنوان MASTER

Wire.begin ()؛

// برقراری ارتباط سریالی ، تنظیم نرخ باود = 9600

Serial.begin (9600)؛

// شروع انتقال I2C

Wire.beginTransmission (Addr)؛

// میانگین ثبت نام پیکربندی را انتخاب کنید

Wire.write (0x10) ؛

// نمونه دما متوسط = 256 ، نمونه رطوبت متوسط = 512

Wire.write (0x1B) ؛

// توقف انتقال I2C

Wire.endTransmission ()؛

// شروع انتقال I2C

Wire.beginTransmission (Addr)؛

// control control1 را انتخاب کنید

Wire.write (0x20) ؛

// روشن ، به روز رسانی مداوم ، سرعت خروجی داده = 1 هرتز

Wire.write (0x85) ؛

// توقف انتقال I2C

Wire.endTransmission ()؛

تأخیر (300) ؛

}

حلقه خالی ()

{

اطلاعات int بدون علامت [2] ؛

بدون امضا int val [4]؛

بدون علامت int H0، H1، H2، H3، T0، T1، T2، T3 ، خام ؛

// مقادیر بارندگی رطوبت

برای (int i = 0 ؛ i <2؛ i ++)

{

// شروع انتقال I2C

Wire.beginTransmission (Addr)؛

// ارسال ثبت داده

Wire.write ((48 + i)) ؛

// توقف انتقال I2C

Wire.endTransmission ()؛

// درخواست 1 بایت داده

سیم. درخواست از (Addr، 1)؛

// 1 بایت داده را بخوانید

if (Wire.available () == 1)

{

داده = Wire.read ()؛

}

}

// تبدیل داده های رطوبت

H0 = داده [0] / 2 ؛

H1 = داده [1] / 2 ؛

برای (int i = 0 ؛ i <2؛ i ++)

{

// شروع انتقال I2C

Wire.beginTransmission (Addr)؛

// ارسال ثبت داده

Wire.write ((54 + i)) ؛

// توقف انتقال I2C

Wire.endTransmission ()؛

// درخواست 1 بایت داده

سیم. درخواست از (Addr، 1)؛

// 1 بایت داده را بخوانید

if (Wire.available () == 1)

{

داده = Wire.read ()؛

}

}

// تبدیل داده های رطوبت

H2 = (داده [1] * 256.0) + داده [0] ؛

برای (int i = 0 ؛ i <2؛ i ++)

{

// شروع انتقال I2C

Wire.beginTransmission (Addr)؛

// ارسال ثبت داده

Wire.write ((58 + i)) ؛

// توقف انتقال I2C

Wire.endTransmission ()؛

// درخواست 1 بایت داده

سیم. درخواست از (Addr، 1)؛

// 1 بایت داده را بخوانید

if (Wire.available () == 1)

{

داده = Wire.read ()؛

}

}

// تبدیل داده های رطوبت

H3 = (داده [1] * 256.0) + داده [0] ؛

// مقادیر فراخوانی دما

// شروع انتقال I2C

Wire.beginTransmission (Addr)؛

// ارسال ثبت داده

Wire.write (0x32) ؛

// توقف انتقال I2C

Wire.endTransmission ()؛

// درخواست 1 بایت داده

سیم. درخواست از (Addr، 1)؛

// 1 بایت داده را بخوانید

if (Wire.available () == 1)

{

T0 = Wire.read ()؛

}

// شروع انتقال I2C

Wire.beginTransmission (Addr)؛

// ارسال ثبت داده

Wire.write (0x33) ؛

// توقف انتقال I2C

Wire.endTransmission ()؛

// درخواست 1 بایت داده

سیم. درخواست از (Addr، 1)؛

// 1 بایت داده را بخوانید

if (Wire.available () == 1)

{

T1 = Wire.read ()؛

}

// شروع انتقال I2C

Wire.beginTransmission (Addr)؛

// ارسال ثبت داده

Wire.write (0x35) ؛

// توقف انتقال I2C

Wire.endTransmission ()؛

// درخواست 1 بایت داده

سیم. درخواست از (Addr، 1)؛

// 1 بایت داده را بخوانید

if (Wire.available () == 1)

{

raw = Wire.read ()؛

}

خام = خام & 0x0F؛

// مقادیر فراخوانی دما را به 10 بیت تبدیل کنید

T0 = ((خام و 0x03) * 256) + T0 ؛

T1 = ((خام و 0x0C) * 64) + T1 ؛

برای (int i = 0 ؛ i <2؛ i ++)

{

// شروع انتقال I2C

Wire.beginTransmission (Addr)؛

// ارسال ثبت داده

Wire.write ((60 + i)) ؛

// توقف انتقال I2C

Wire.endTransmission ()؛

// درخواست 1 بایت داده

سیم. درخواست از (Addr، 1)؛

// 1 بایت داده را بخوانید

if (Wire.available () == 1)

{

داده = Wire.read ()؛

}

}

// تبدیل داده ها

T2 = (داده [1] * 256.0) + داده [0] ؛

برای (int i = 0 ؛ i <2؛ i ++)

{

// شروع انتقال I2C

Wire.beginTransmission (Addr)؛

// ارسال ثبت داده

Wire.write ((62 + i)) ؛

// توقف انتقال I2C

Wire.endTransmission ()؛

// درخواست 1 بایت داده

سیم. درخواست از (Addr، 1)؛

// 1 بایت داده را بخوانید

if (Wire.available () == 1)

{

داده = Wire.read ()؛

}

}

// تبدیل داده ها

T3 = (داده [1] * 256.0) + داده [0] ؛

// شروع انتقال I2C

Wire.beginTransmission (Addr)؛

// ارسال ثبت داده

Wire.write (0x28 | 0x80) ؛

// توقف انتقال I2C

Wire.endTransmission ()؛

// درخواست 4 بایت داده

سیم. درخواست از (Addr، 4)؛

// خواندن 4 بایت داده

// رطوبت msb ، رطوبت lsb ، دما msb ، دما lsb

if (Wire.available () == 4)

{

val [0] = Wire.read ()؛

val [1] = Wire.read ()؛

val [2] = Wire.read ()؛

val [3] = Wire.read ()؛

}

// تبدیل داده ها

رطوبت شناور = (val [1] * 256.0) + val [0]؛

رطوبت = ((1.0 * H1) - (1.0 * H0)) * (1.0 * رطوبت - 1.0 * H2) / (1.0 * H3 - 1.0 * H2) + (1.0 * H0) ؛

int temp = (val [3] * 256) + val [2]؛

float cTemp = ((((T1 - T0) / 8.0) * (temp - T2)) / (T3 - T2) + (T0 / 8.0) ؛

float fTemp = (cTemp * 1.8) + 32 ؛

// خروجی داده ها به مانیتور سریال

Serial.print ("رطوبت نسبی:") ؛

Serial.print (رطوبت) ؛

Serial.println ("٪ RH")؛

Serial.print ("دما در سانتیگراد:") ؛

Serial.print (cTemp) ؛ Serial.println ("C") ؛

Serial.print ("دما در فارنهایت:") ؛

Serial.print (fTemp) ؛

Serial.println ("F") ؛

تأخیر (500) ؛

}

مرحله 4: برنامه های کاربردی:

HTS221 را می توان در محصولات مختلف مصرفی مانند رطوبت ساز هوا و یخچال و غیره استفاده کرد. این سنسور همچنین کاربرد خود را در عرصه وسیع تری از جمله اتوماسیون خانه هوشمند ، اتوماسیون صنعتی ، تجهیزات تنفسی ، ردیابی دارایی و کالا پیدا می کند.

توصیه شده: