فهرست مطالب:

ایستگاه هواشناسی با استفاده از Arduino UNO: 7 مرحله
ایستگاه هواشناسی با استفاده از Arduino UNO: 7 مرحله

تصویری: ایستگاه هواشناسی با استفاده از Arduino UNO: 7 مرحله

تصویری: ایستگاه هواشناسی با استفاده از Arduino UNO: 7 مرحله
تصویری: ایستگاه هواشناسی آردوینو نانو، BME280 و SSD1306 OLED 2024, جولای
Anonim
ایستگاه هواشناسی با استفاده از Arduino UNO
ایستگاه هواشناسی با استفاده از Arduino UNO

ایجاد شده توسط: Hazel Yang

این پروژه یک ایستگاه هواشناسی است که از یک برد Arduino UNO برای کنترل جریان داده ، یک سنسور DHT22 برای جمع آوری داده ها و یک صفحه OLED برای نمایش داده ها استفاده می کند.

مرحله 1: فهرست موارد

فهرست اشیا
فهرست اشیا

1. صفحه نمایش: OLED ، 1.3 اینچ SH1106 ، رنگ سفید I2C ---- PID: 18283

2. سنسور: سنسور رطوبت و دما دیجیتال DHT22 ---- PID: 7375

3. متصل می شود: Jumper Wires ---- PID: 10316 یا 10318 یا 10312 (بستگی به طول دارد) یا می توانید از سیم جامد 22 AWG استفاده کنید ---- PID: 22490

تخته نان ---- PID: 10686 یا 10698 یا 103142 (بستگی به اندازه دارد)

4. قدرت: این کابل فقط می تواند با پورت USB کامپیوتر متصل شود و از کابل نیز برای انتقال داده بین برد IDE و برد آردوینو استفاده می شود. کابل USB ، A تا B ، M/M ، 0.5M (1.5FT) ---- PID: 29862

یا می توانید از آن برای تغذیه برد استفاده کنید: آداپتور 5V 2A AC/DC ---- PID: 10817.

مرحله 2: مقدمه نسبی

مقدمه نسبی
مقدمه نسبی
مقدمه نسبی
مقدمه نسبی

معرفی صفحه نمایش: 1.3 اینچ سفید OLED

1. می توانید سندی را که تنظیمات اولیه و توضیحات را نشان می دهد ، پیدا کنید:

معرفی سنسور: سنسور رطوبت و دما DHT22 1. می توانید سندی را که توضیحات را نشان می دهد ، پیدا کنید:

مرحله 3: مدار را وصل کنید

مدار را وصل کنید
مدار را وصل کنید

سنسور DHT22 داده های سریال را به پین 2 ارسال می کند. بنابراین ، پین دوم را از سمت چپ وصل کنید ، پین "SDA" باید به پین 2 متصل شود.

برای نمایشگر SSH1106 ، از پین آنالوگ برای انتقال استفاده می کند. مدار صفحه نمایش پین "SCL" به "A5" آردوینو و پین "SDA" به "A4" آردوینو خواهد بود. در حالی که داده های موقعیت پیکسل به طور مداوم در حال انتقال هستند ، عملکرد صفحه نمایش در برنامه فقط هر بار که داده ها را از سنسور می خواند ، فرمان را فعال می کند.

سنسور و صفحه نمایش می توانند از 3.3 ولت برای روشن کردن آردوینو به عنوان منبع تغذیه DC استفاده کنند. برای تغذیه ، ما باید هر دو پین "VCC" را به "3.3V" آردوینو متصل کنیم. و پین های "GND" را می توان به سادگی به پین "GND" روی برد آردوینو متصل کرد.

از کابل USB A به B استفاده کنید ، Arudino را به کامپیوتر وصل کنید.

مرحله 4: برای کامپایل آماده شوید

"u8glib" برای صفحه SSH1106 از Olikraus.

"کتابخانه حسگر DHT" برای سنسور DHT22 از Adafruit. شما باید دو کتابخانه را بارگیری کنید: کتابخانه حسگر DHT22:

U8glib:

و از "مدیریت کتابخانه" در IDE استفاده کنید تا آنها را از حالت فشرده خارج کنید. آموزش آنلاین مدیریت کتابخانه ها:

مرحله 5: کد تست برای پورت سریال سنسور DHT22

ضریب آزمایش برای پورت سریال سنسور DHT22 (که داخل کتابخانه DHT22 است >> مثال):

(می توانید از این قسمت بگذرید.)

فقط برای آزمایش سنسور DHT22 به طور عادی داده ها را می خواند

#عبارتند از

#عبارتند از

#عبارتند از

#عبارتند از

#عبارتند از

#DHTPIN 2 را تعریف کنید

#DHTTYPE DHT22 را تعریف کنید

DHT dht (DHTPIN ، DHTTYPE) ؛

void setup () {

Serial.begin (9600)؛

Serial.println (F ("آزمایش DHT22!")) ؛

dht.begin ()؛

}

حلقه خالی () {

// بین اندازه گیری ها چند ثانیه صبر کنید.

تاخیر (2000) ؛

// دما یا رطوبت خواندن حدود 250 میلی ثانیه طول می کشد!

// قرائت سنسورها نیز ممکن است تا 2 ثانیه "قدیمی" باشد (سنسور آن بسیار کند است)

float h = dht.readHumidity ()؛

// دما را به صورت سانتیگراد بخوانید (به طور پیش فرض)

float t = dht.readTemperature ()؛

// درجه حرارت را فارنهایت بخوانید (isFahrenheit = true)

float f = dht.readTemperature (true) ؛

// بررسی کنید که آیا خواندن انجام نشد و زودتر خارج شوید (دوباره امتحان کنید).

if (isnan (h) || isnan (t) || isnan (f)) {

Serial.println (F ("از سنسور DHT خوانده نشد!")) ؛

برگشت؛

}

// محاسبه شاخص گرما در فارنهایت (به طور پیش فرض)

float hif = dht.computeHeatIndex (f ، h) ؛

// محاسبه شاخص گرما برحسب درجه سانتیگراد (isFahreheit = false)

float hic = dht.computeHeatIndex (t ، h ، false) ؛

Serial.print (F ("رطوبت:")) ؛

Serial.print (h) ؛

Serial.print (F ("٪ دما:")) ؛

Serial.print (t)؛

Serial.print (F ("° C")) ؛

Serial.print (f)؛

Serial.print (F ("° F درجه حرارت شاخص:")) ؛

Serial.print (hic)؛

Serial.print (F ("° C")) ؛

Serial.print (hif) ؛

Serial.println (F ("° F"))؛

}

// پس از کامپایل برنامه ، برای بررسی داده ها روی TOOLS >> SERIAL MONITOR کلیک کنید.

// پایان برنامه آزمایش.

مرحله 6: کد پروژه

#عبارتند از

#عبارتند از

#عبارتند از

#عبارتند از

#عبارتند از

#DHTPIN 2 را تعریف کنید

#DHTTYPE DHT22 را تعریف کنید

#شامل "U8glib.h"

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE) ؛

سنسور DHT (DHTPIN ، DHTTYPE) ؛

خلاء قرعه کشی (خالی) {

u8g.setFont (u8g_font_unifont) ؛

float h = sensor.readHumidity ()؛

// دما را به صورت سانتیگراد بخوانید (به طور پیش فرض)

float t = sensor.readTemperature ()؛

// بررسی کنید که آیا خواندن انجام نشد و زودتر خارج شوید (دوباره امتحان کنید).

if (isnan (h) || isnan (t)) {

u8g.print ("خطا") ؛

برای(؛؛)؛

برگشت؛

}

u8g.setPrintPos (4 ، 10) ؛

u8g.print ("دما (C):")؛

u8g.setPrintPos (4 ، 25) ؛

u8g. چاپ (t) ؛

u8g.setPrintPos (4 ، 40) ؛

u8g.print ("رطوبت (٪):")؛

u8g.setPrintPos (4 ، 55) ؛

u8g.print (h) ؛

}

void setup (void) {

u8g.setRot180 ()؛

Serial.begin (9600)؛

sensor.begin ()؛

}

حلقه خالی (خالی) {

// حلقه تصویر

u8g.firstPage ()؛

انجام دادن {

قرعه کشی()؛

} while (u8g.nextPage ())؛

// بازسازی تصویر پس از تأخیر (2000) ؛

}

// پایان برنامه اصلی.

مرحله 7: توضیحات

شرح
شرح

سپس ، مدار پین را برای برد Arduino آماده کنید. زیرا کتابخانه سنسور برای اعلام شیء به داده نیاز دارد.

و می توانید داده های حسگر را با نظارت بر داده های خروجی از طریق پین دیجیتال 2 با استفاده از تابع "Serial.print ()" آزمایش کنید. از آنجا که فرکانس انتقال داده تقریباً 1 بار در هر 2 ثانیه (که 0.5 هرتز است) است ، هنگامی که در Arduino IDE برنامه ریزی می شود ، باید تاخیر درون عملکرد حلقه را بیش از 2 ثانیه تنظیم کنیم. بنابراین یک "تأخیر (2000)" در داخل تابع حلقه وجود دارد. این اطمینان می دهد که داده ها مرتباً به روز می شوند. در تابع "draw" ، داده ها را از درگاه داده های سریال دریافت کرده و با استفاده از توابع "readHumidity" و "readTemperature" در اعداد شناور قرار دهید.

رطوبت و دما را با استفاده از عملکرد چاپ در فایل "u8glib" چاپ کنید. با تغییر شماره در عملکرد "setPrintPos" می توانید موقعیت را تنظیم کنید. عملکرد چاپ می تواند مستقیماً متن و اعداد را نشان دهد.

برای راه اندازی سخت افزار ، به پورت سریال 10 ثانیه تأخیر دهید. سپس تابع شروع را برای سنسور فراخوانی کنید. با توجه به مدار من ، صفحه نمایش من وارونه بود. بنابراین من یک تابع "setRot180" برای چرخاندن صفحه نمایش نیز وارد کردم.

عملکرد حلقه برد Arduino اصلی ترین عملکرد است. به منظور نمایش متن و داده ها هر بار که حسگر به روز می شود ، تابع draw را فرا می خواند.

صفحه نمایش به این شکل است:

می توانید Arduino UNO را از رایانه خود جدا کرده و با استفاده از یک آداپتور برق 5 ولت DC به جک 2.1 میلی متری آن متصل کنید. این برنامه را در داخل درایو خود ذخیره می کند و می تواند بعد از روشن شدن مجدد برنامه را به طور مداوم دوباره اجرا کند.

توصیه شده: