اندازه گیری دما – فشار و ارتفاع از سطح دریا
در برخی پروژه های آردوینو لازم است که میزان دما، فشار و ارتفاع از سطح دریا را اندازه گیری کنیم. به طور حتم اگر بخواهیم از تجهیزات آماده بخصوص تجهیزات هواشناسی استفاده کنیم، باید هزینه زیادی را متحمل شویم و حتی در برخی موارد به دلیل آنکه نیاز داریم داده ها را پردازش کنیم و یا یک عملیات از پیش تعریف شده بر اساس داده های دریافتی اعمال کنیم، نمی توانیم از تجهیزات آماده در این زمینه استفاده کنیم چراکه تجهیزات اندازه گیری آماده و موجود در بازار نمی تواند نیاز و هدف اصلی ما را در آن پروژه برطرف سازد.
با توجه به مطالب گفته شده، در این پروژه از مبحث آموزش آردوینو هدف ما این است، با معرفی یک ماژول فشارسنج حرفه ای با اندازه بسیار کوچک و قیمت بسیار مناسب، علاوه بر آموزش ساخت دماسنج، نحوه اندازه گیری فشار و ارتفاع از سطح دریا را توسط برد آردوینو Arduino آموزش دهیم.
ماژول اندازه گیری دما، فشار و ارتفاع از سطح دریا BMP180
ماژول BMP180 در حقیقت یک ماژول فشارسنج حرفه ای در ابعاد کوچکتر از یک سکه می باشد که به شما این امکان را می دهد فشار هوا در بازه 300 الی 1100 هکتوپاسکال را با دقت 0.03hP/0.25m اندازه گیری کنید. همچنین توسط ماژول فشار سنج BMP180 می توانید ارتفاع منفی 500 متر پایین تر از سطح دریا الی مثبت 9000 متر بالاتر از سطح دریا را اندازه گیری کنید. صبر کنید، هنوز تمام نشده! این ماژول فوق العاده با اندازه کوچکش می تواند علاوه بر اندازه گیری فشار و اندازه ارتفاع از سطح دریا دمای هوا در محدوده منفی 40 درجه سانتی گراد الی مثبت 80 درجه سانتی گراد را نیز اندازه گیری کند.
ماژول فشارسنج BMP180 از پروتکل ارتباطی I2C برای ارتباط با سایر دستگاه ها استفاده می کند، همچنین این ماژول فشار سنج را می توان با ولتاژ 1.8 الی 3.6 ولت راه اندازی کرد، لازم به ذکر است جریان مصرفی این ماژول فشارسنج حیرت آور است، ماژول فشارسنج BMP180 در هر بار نمونه برداری تنها 5uA میکرو آمپر جریان مصرف می کند.
لیست قطعات مورد نیاز
برد آردوینو Arduino UNO R3 مدل DIP | 1 عدد |
ماژول فشار بارومتریک مدل GY-68 BMP180 | 1 عدد |
LCD کاراکتری مدل 16×2 با Backlighting آبی | 1 عدد |
تک سوئیچ 2 پایه DIP سایز 6x6x5 میلیمتر | 1 عدد |
برد بورد (پروجکت برد) مدل GL | 1 عدد |
سیم جامپر برد بوردی مدل دو سر نری (سری 40تایی) | 1 عدد |
توضیحات ساخت مدار پروژه
برای آزمایش مدار و شروع برنامه نویسی ابتدا لازم است سخت افزار پروژه بسته شود، به همین خاطر ابتدا طبق نقشه شماتیک زیر، ال.سی.دی کاراکتری و ماژول فشار سنج BMP180 را به برد آردوینو Arduino Uno اتصال دهید. همچنین در ادامه می توانید فیلم آموزشی و توضیحات بیشتری در رابطه با نحوه اتصال LCD کاراکتری و ماژول فشارسنج به برد آردوینو مشاهده کنید.
نحوه اتصال LCD کاراکتری به برد آردوینو
نحوه اتصال ماژول فشارسنج BMP180 به برد Arduino
ماژول فشار سنج BMP180 به صورت کلی دارای 4 پایه است، که در این پروژه برای اتصال آن به برد آردوینو کافی است طبق جدول زیر اتصالات را انجام دهید. همچنین لازم به ذکر است در این پروژه به دلیل اینکه از ارتباط I2C برای اتصال ماژول فشار سنج به برد آردوینو استفاده کرده ایم، در صورتیکه از سایر مدل های بردهای Arduino استفاده می کنید، تنها لازم است دو پایه SCL و SDA ماژول فشارسنج را به دو پایه SDA و SCL برد آردوینو خود متصل کنید.
برنامه آردوینو در نرم افزار آردوینو
برای راه اندازی ماژول فشار سنج BMP180 ابتدا باید کتابخانه Adafruit_BMP085 را که پیوست فایل پروژه شده است را در نرم افزار Arduino نصب کنیم، سپس مطابق نمونه برنامه پایین آنرا در برنامه فراخوانی و ماژول فشارسنج را راه اندازی می کنیم. اگر با نحوه نصب کتابخانه در نرم افزار Arduino آشنا نیستید، نگران نباشید! می توانید در ادامه فیلم آموزشی ساخته شده برای راه اندازی این پروژه را مشاهده کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
#include <Wire.h> #include <LiquidCrystal.h> #include <Adafruit_BMP085.h> LiquidCrystal lcd(8, 9, 10, 4, 5, 6, 7); Adafruit_BMP085 bmp; double temp, pressure, altitude, realAltitude; const int pin_sw=12; boolean key=0; int show=1; long weather=0; void setup() { lcd.begin(16,2); analogWrite(11, 100); analogWrite(3, 255); pinMode(pin_sw,INPUT_PULLUP); Wire.begin(); if ( !bmp.begin () ){ lcd.print("Error!!!"); lcd.setCursor(0, 2); lcd.print("Not find Sensor!"); while ( 1 ){} } lcd.clear(); lcd.print("*electronics 98*"); delay(2000); lcd.clear(); } void loop() { if (digitalRead(pin_sw)==0 && key==0){ key=1; show++; lcd.clear(); if (show>3){ show=1; } } if (digitalRead(pin_sw)==1 && key==1){ key=0; } switch (show) { case 1: temp = bmp.readTemperature (); lcd.setCursor(0,0); lcd.print("Temp "); lcd.setCursor(0, 1); lcd.print(temp); lcd.print(" 'C "); break; case 2: pressure = bmp.readPressure (); lcd.setCursor(0,0); lcd.print("Pressure "); lcd.setCursor(0, 1); lcd.print(pressure); lcd.print(" Pa "); break; case 3: if (weather>0){ altitude = bmp.readAltitude (weather); }else{ altitude = bmp.readAltitude (); } lcd.setCursor(0,0); lcd.print("Altitude "); lcd.setCursor(0, 1); lcd.print(altitude); lcd.print(" m "); break; } delay(500); } |
نکته مهم در برنامه نویسی راه اندازی ماژول فشارسنج BMP180
در صورتیکه بعد از راه اندازی و آزمایش مدار، چنانچه مقدار نمایش داده شده برای کمیت ارتفاع از سطح دریا صحیح نبود، باید سنسور را به صورت دستی کالیبره کنید برای این منظور می توانید مراحل زیر را دنبال کنید.
1- ابتدا وارد سایت هواشناسی به آدرس www.accuweather.com/fa شوید.
2- پس از ورود به سایت ، در قسمت جستجوی سایت، استان و شهر محلی که اندازه گیری را در آنجا انجام می دهید را انتخاب کنید.
3- مقدار فشار در منطقه خود را کپی کنید و سپس در خط دهم برنامه در متغیر weather بجای عدد صفر بچسبانید.
سلام خسته نباشید
میخواستم بدونم میشه به سنسور دماش برای وقتی دما تا یه حدی بالا رفت به یک فن وصل بشه و فن فعال بشه؟
اگه امکانش هست میشه برنامه نویسی این قسمت رو بهم راهنمایی کنین برای پروژم میخواستم ممنون میشم
سلام دوست عزیز
بله به راحتی می توانید اینکار را انجام دهید، برای این منظور کافی است در حلقه setup() برنامه یک پایه آزاد در آردوینو را به عنوان خروجی تعریف نمائید و سپس در حلقه loop() برنامه دقیقا بعد از دستور temp = bmp.readTemperature (); که در خط 46 برنامه قرار گرفته است یک شرط تعریف کنید که اگر دما (متغیر temp) بیشتر از عدد مورد نظر شما شد، پایه خروجی تعریف شده یک شود و در غیر اینصورت آن پایه برابر صفر گردد.
خیلی ممنون
میشه دستور کاملش رو برام بفرستین؟
اخه من رشتم برق قدرته و برنامه نویسی آردوینو نخوندم ولی برای پروژه مجبورا باید آردوینو برمیداشتم
اگه لطف کنین برنامه رو همراه با پایه ی مورد نظر اردوینو بهم بگین ممنون میشم خیلی احتیاج دارم بهش که پروژه رو تموم کن
توسعه یک پروژه کاملا به عهده خود شخص می باشد چراکه ما فرصت کافی برای توسعه یک پروژه بنا به نیاز هر شخص را نداریم. اما با وجود این سعی میکنیم شما را تا جای ممکن راهنمایی کنیم.
ابتدا قطعه کد زیر را در حلقه Setup دقیقا بعد از دستور خط 16 قرار دهید، لطفا توجه داشته باشید در دستور زیر ما پایه شماره 2 آردوینو را به عنوان خروجی تعریف کرده ایم که شما می توانید یک رله به آن متصل کنید و وسیله برقی مورد نظر خود را کنترل کنید:
و سپس در زیر برنامه Loop دقیقا بعد از دستور قرار گرفته در خط 46 برنامه دستور زیر را قرار دهید، شما می توانید در دستور زیر به جای عدد 28 دمای مورد نظر خود را وارد نمائید.
سپس برنامه را دوباره کامپایل کنید و بر روی برد آردوینو پروگرام کنید.
خیلی خیلی ممنونم واقعا دستتون درد نکنه
چون متاسفانه هیچ سر رشته ای نداشتم از آردوینو واقعا نمیدونستم چیکار کنم
ممنونم از راهنماییتون D:
سلام
میگم رله چه نوعی باید استفاده کنم؟
حداکثر ولتاژ خروجی پایه ۲ دوونیم ولت
از پایه ۲ به مثبت رله و منفی رله به زمین و خروجی به فن وصل میشه؟
سلام دوست عزیز
رله را طبق نقشه زیر به برد آردوینو متصل کنید، لطفا توجه داشته باشید قسمت RLY1 در این نقشه شماتیک به پایه شماره 2 آردوینو متصل می شود.
خیلی ممنون
فقط یه سوال دیگه باید از منبع جداگانه استفادهکنم درسته؟
و نوع رله دوازده ولت معمولی یه ماژول رله دوازده ولت؟
ببخشید خیلی سوال میکنم
از یک منبع تغذیه 12 ولتی استفاده کنید و با استفاده از یک رگولاتور 7805 ولتاژ را برای برد آردوینو و سایر مدارات به سطح 5 ولت برسانید و یا اینکه از دو منبع تغذیه استفاده کنید و منفی هر دو منبع تغذیه را مشترک کنید. لطفا توجه داشته باشید در صورتیکه از یک رله 5 ولتی استفاده کنید دیگر نیازی به استفاده از تغذیه 12 ولتی نیست و به راحتی با همان ولتاژ 5 ولت برد آردوینو راه اندازی می شود.
همچنین برای رله می توانید از یک رله 12 ولتی معمولی استفاده کنید و یا اینکه از ماژول های رله آماده که برای آردوینو طراحی شده اند بهره ببرید.
خیلی ممنون از راهنماییتون
وردوی فن رو باید از قسمت نرمالی اوپن رله بگیرم درسته؟
بله – اگر فن شما 220 ولت AC است، باید سیم نول را به صورت مستقیم به فن بدهید و سپس سیم فاز را به پایه COM رله و از پایه NO (نرمال باز) به فن بدهید.
واقعا خیلی ممنونم
سلام خسته نباشید
یه سوال دیگه دارم
ماژول رله استفاده کردم که فعال low و بر عکس کردم high و low رو فقط یه مشکلی دارم اینکه فن که بهش وصل میکنم تا قبل نمایش دما رله فعاله و فن روشن
چکاری باید انجام بدم که در هنگام راه اندازی مدار فن خاموش بمونه و وقتی دما بالا رفت روشن بشه؟
سلام دوست عزیز
برای حل این موضوع کافی است، کدی که در پاسخ قبلی برای شما قرار دادم و قرار بود بعد از خط 16 قرار دهید به شکل زیر تغییر دهید:
خیلی خیلی ممنون بابت کمکتون