GebraBit

پروژه سنسور MS5611 با Arduino

متن سربرگ خود را وارد کنید

MS5611-project-2048x1463

پروژه سنسور MS5611 با Arduino

  1. خانه
  2. »
  3. پروژه ها
  4. »
  5. پروژه سنسور MS5611 با Arduino

هدف ما از انجام این پروژه چیست؟

هدف این پروژه، اتصال و استفاده از سنسور فشار MS5611 توسط آردوینو می‌باشد که می‌توان برای اندازه‌گیری و پایش فشار و ارتفاع در محیط‌های مختلف استفاده شود. این سنسور قادر است فشار محیط را تشخیص داده و مقادیر دقیق فشار و ارتفاع را ارائه دهد، که آن را برای کاربردهایی مانند اندازه‌گیری ارتفاع در پروژه‌های هوانوردی، پیش‌بینی وضعیت آب‌وهوایی و نظارت بر فشار در محیط‌های حساس مناسب می‌سازد. کاربران می‌توانند با خواندن مقادیر این سنسور سیستم‌هایی توسعه دهند که به تغییرات فشار و ارتفاع واکنش نشان دهند و در نتیجه کارایی و دقت سیستم را بهبود بخشند.

در این آموزش چه چیزهایی یاد میگیریم؟

  • چگونه سنسور MS5611 را به آردوینو وصل کنید و ارتباط SPI را راه‌اندازی کنید.
  • کتابخانه‌ای را برای استفاده با آردوینو تغییر بدهید و بیشتر با نحوه کار داده‌های SPI آشنا بشوید.
  • چگونه میزان فشار و ارتفاع محیط را از سنسور بخوانید و از این داده‌ها برای کاربردهای واقعی استفاده کنید.
  • پروژه‌هایی مثل اندازه‌گیری ارتفاع در پروژه‌های هوانوردی، پیش‌بینی وضعیت آب‌وهوایی و نظارت بر فشار را با این سنسور اجرا کنید و مهارت‌های عملی برای ساخت سیستم‌های واکنش‌گرا بر اساس تغییرات فشار یاد بگیرید.

این آموزش به شما کمک می‌کند سنسور را به درستی راه‌اندازی کنید و داده‌ها را به صورت لحظه‌ای با آردوینو بخوانید.

برای انجام این پروژه به چه چیزهایی نیاز داریم؟

همانطور که احتمالا میدانید برای انجام این پروژه به سخت افزارها و نرم افزارهایی نیاز داریم. عناوین این سخت افزارها و نرم افزارها در جدول زیر در اختیارتان قرار داده شده که میتوانید با کلیک روی هرکدام از آنها، آنها را تهیه/دانلود کنید و  برای شروع آماده شوید.

سخت افزارهای مورد نیاز
نرم افزارهای مورد نیاز
Arduino UNO

ابتدا مانند تصویر زیر ماژول  GebraBit MS5611 را به صورت زیر به آردوینو متصل می کنیم:

سپس کتابخانه GebraBit MS5611 را دانلود و به نرم افزار آردوینو اضافه کنید.

کتابخانه های مورد نیاز

اگر نمی‌دانید چطور کتابخانه‌های GebraBit را به آردوینو اضافه کنید، به لینک آموزشی زیر مراجعه کنید.

نحوه افزودن کتابخانه های GebraBit به آردوینو

کتابخانه و درایور MS5611

GebraBit علاوه بر طراحی ماژولار سنسورها و آی سی های مختلف ، پیشرو در ارائه انواع کتابخانه های ساختاریافته و مستقل از سخت افزار به زبان  C، جهت سهولت کاربران در راه اندازی و توسعه نرم افزاری آنها نیز بوده است.

بدین منظور پس از تهیه هر یک از ماژول های  GebraBit  ، کاربر می تواند با مراجعه به بخش آموزش ماژول مربوطه، کتابخانه مختص به آن ماژول که حاوی فایل .h و .cpp (Header and Source) و یک برنامه نمونه آموزشی تحت سخت افزار های GebraBit STM32F303, GebraBit ATMEGA32A یا Arduino می باشد را دانلود کند.

تمامی توابع و Structure های تعریف شده در کتابخانه ، با جزئیات کامل، کامنت گذاری شده و تمامی پارامتر های دریافتی در آرگومان توابع و مقادیر بازگشتی از آنها ، به اختصار توضیح داده شده است.با توجه به مستقل از سخت افزار بودن کتابخانه ها،کاربر به راحتی می تواند آن را در هر یک از کامپایلر های دلخواه اضافه کرده و با میکروکنترلر و برد توسعه مورد علاقه خود، آن را توسعه دهد.

فایل هدر GebraBit_MS5611.h

در این فایل بر اساس دیتاشیت سنسور یا ای سی ، تمامی آدرس رجیسترها، مقادیر هریک از رجیسترها به صورت Enumeration تعریف شده است.همچنین بدنه سنسور MS5611 و کانفیگ های مربوط به هریک از بلوک های داخلی سنسور  MS5611 به صورت STRUCT  با نام  GebraBit_MS5611 نیز تعریف شده است.که نهایتا در محیط  Debug Session تمامی کانفیگ های مربوط به هر بلوک به صورت Real Time قابل مشاهده است.

USER REGISTER MAP

نقشه رجیستری یا Command های سنسور در این بخش تعریف شده است :

				
					1. #define MS5611_RESET                          		  (0x1E)
2. #define MS5611_PRESSURE_SAMPLING_START       		  (0x40)
3. #define MS5611_TEMPERATURE_SAMPLING_START		      (0x50)
4. #define MS5611_ADC_READ                       		  (0x00)
5. #define MS5611_PROM_READ                     		  (0xA0)
				
			

Enum MS5611_Output_Sample_Rate

برای انتخاب OSR سنسور از مقادیر این enum استفاده می شود:

				
					1. typedef enum Output_Sample_Rate
2. {
3. OSR_256         = 0x00 ,
4. OSR_512         = 0x02 ,
5. OSR_1024        = 0x04 ,
6. OSR_2048        = 0x06 ,
7. OSR_4096        = 0x08
8. } MS5611_Output_Sample_Rate;
				
			

struct MS5611

تمام ویژگی های سنسور، ضرایب کالیبراسیون و داده های سنسور در این Struct  تعریف شده است و تمامی اطلاعات و کانفیگ اجرا شده بر روی سنسور در این Structure ذخیره شده و می توان تغییرات در هر بخش از سنسور را در محیط Debug Session مشاهده نمود.

				
					1. typedef struct MS5611
 2. {
 3. 	  uint8_t                         Register_Cache1;
 4. 	  MS5611_Output_Sample_Rate       PRESSURE_SAMPLE_RATE;
 5. 	  MS5611_Output_Sample_Rate       TEMPERATURE_SAMPLE_RATE;
 6. 	  uint8_t 		                  PROM_DATA[PROM_DATA_BUFFER_SIZE];
 7. 	  uint16_t                        FACTORY_DATA;
 8. 	  uint16_t                        C1;
 9. 	  uint16_t                        C2;
10. 	  uint16_t                        C3;
11. 	  uint16_t                        C4;
12. 	  uint16_t                        C5;
13. 	  uint16_t                        C6;
14. 	  uint16_t                        CRC_SERIAL_CODE;
15. 	  uint8_t 		                  ADC_DATA[ADC_DATA_BUFFER_SIZE];
16. 	  uint32_t               	      ADC_RAW_PRESSURE;
17.       uint32_t               	      ADC_RAW_TEMPERATURE;
18. 	  int32_t               	      DT;
19. 	  int64_t               	      T2;
20. 	  int64_t               	      OFF2;
21. 	  int64_t               	      SENS2;
22. 	  int64_t               	      OFF;
23. 	  int64_t                         SENS;
24. 	  float                           TEMPERATURE;
25. 	  float               	          PRESSURE;
26. 	  double 		                  ALTITUDE;
27. }GebraBit_MS5611;
				
			

اعلان توابع

در پایان این فایل تمامی توابع جهت خواندن و نوشتن در رجیستر های MS5611 ، کانفیک سنسور و دریافت داده از سنسور اعلان شده است:

				
					1. /********************************************************
 2.  *Declare Read&Write MS5611 Register Values Functions *
 3.  ********************************************************/
 4. extern	uint8_t GB_MS5611_Burst_Read(uint8_t regAddr,uint8_t *data, uint16_t byteQuantity);
 5. extern	uint8_t GB_MS5611_Write_Reg_Data(uint8_t regAddr);
 6. /********************************************************
 7.  *       Declare MS5611 Configuration Functions       *
 8.  ********************************************************/
 9. extern void GB_MS5611_Soft_Reset ( GebraBit_MS5611 * MS5611 );
10. extern void GB_MS5611_Read_PROM ( GebraBit_MS5611 * MS5611 );
11. extern void GB_MS5611_Pressure_Sample_Rate(GebraBit_MS5611 * MS5611 , MS5611_Output_Sample_Rate rate);
12. extern void GB_MS5611_Temperature_Sample_Rate(GebraBit_MS5611 * MS5611 , MS5611_Output_Sample_Rate rate);
13. extern void	GB_MS5611_Start_Pressure_Sampling(GebraBit_MS5611 * MS5611);
14. extern void	GB_MS5611_Start_Temperature_Sampling(GebraBit_MS5611 * MS5611);
15. extern void GB_MS5611_Read_ADC ( GebraBit_MS5611 * MS5611 ) ;
16. extern void GB_MS5611_Read_ADC_Raw_Pressure(GebraBit_MS5611* MS5611);
17. extern void GB_MS5611_Read_ADC_Raw_Temperature(GebraBit_MS5611* MS5611);
18. extern void GB_MS5611_initialize( GebraBit_MS5611 * MS5611 );
19. extern void GB_MS5611_Calculate_Temperature(GebraBit_MS5611* MS5611);
20. extern void GB_MS5611_Calculate_Temperature_Compensated_Pressure(GebraBit_MS5611* MS5611);
21. extern void GB_MS5611_Altitude(GebraBit_MS5611 * MS5611);
				
			

فایل سورس GebraBit_MS5611.cpp

در این فایل که به زبان ++C نوشته شده ، تمامی توابع با جزئیات کامل، کامنت گذاری شده و تمامی پارامتر های دریافتی در آرگومان توابع و مقادیر بازگشتی از آنها ، بطور واضح توضیح داده شده است.از این رو در این قسمت به همین توضیحات اکتفا کرده و کاربران را برای اطلاعات بیشتر به بررسی مستقیم از این فایل دعوت می کنیم.

برنامه نمونه در آردوینو

بعد از اتصال ماژول به آردوینو و اضافه کردن کتابخانه سنسور به نرم افزار آردوینو به مسیر زیر بروید و کد نمونه را باز کنید.                                      File > Examples > GebraBit_APDS9306 > Luminosity

شرح فایل نمونه

اگر به ابتدای فایل main.c دقت کنید،متوجه می شوید که هدر GebraBit_MS5611.h برای دسترسی به ساختار ها ، Enum ها و توابع مورد نیاز ماژول GebraBit MS5611 ، اضافه شده است.در قسمت بعدی متغیری به نام MS5611_Module از نوع ساختار GebraBit_MS5611 (این ساختار در هدر GebraBit_MS5611 بوده و در بخش توضیحات کتابخانه GebraBit_MS5611توضیح داده شد) که برای پیکربندی ماژول GebraBit MS5611 می باشد،تعریف شده است:

				
					GebraBit_MS5611 MS5611;
				
			

در بخش بعدی کد نوشته شده، با استفاده از تابع GB_MS5611_initialize(&MS5611_Module) ، ماژول GebraBit MS5611 را مقدار دهی می کنیم و در نهایت در قسمت while برنامه ،داده را از سنسور خوانده و مقادیر فشار و دما و ارتفاع به طور پیوسته دریافت میشود:

				
					void setup() {

  Serial.begin(9600);

  SPI.begin();
  pinMode(SPI_CS_Pin, OUTPUT);
  digitalWrite(SPI_CS_Pin, HIGH);

  GB_MS5611_initialize(&MS5611);

  Serial.println("MS5611 Initialized");
}

void loop() {

  GB_MS5611_Calculate_Temperature(&MS5611);
  Serial.print("Temperature: ");
  Serial.print(MS5611.TEMPERATURE);
  Serial.println(" °C");

  GB_MS5611_Calculate_Temperature_Compensated_Pressure(&MS5611);
  Serial.print("Pressure: ");
  Serial.print(MS5611.PRESSURE);
  Serial.println(" hPa");

  GB_MS5611_Altitude(&MS5611);
  Serial.print("Altitude: ");
  Serial.print(MS5611.ALTITUDE);
  Serial.println(" meters");

  delay(1000);
}
				
			

متن کد فایل آردوینو:

				
					#include "GebraBit_MS5611.h"

GebraBit_MS5611 MS5611;

void setup() {

  Serial.begin(9600);

  SPI.begin();
  pinMode(SPI_CS_Pin, OUTPUT);
  digitalWrite(SPI_CS_Pin, HIGH);

  GB_MS5611_initialize(&MS5611);

  Serial.println("MS5611 Initialized");
}

void loop() {

  GB_MS5611_Calculate_Temperature(&MS5611);
  Serial.print("Temperature: ");
  Serial.print(MS5611.TEMPERATURE);
  Serial.println(" °C");

  GB_MS5611_Calculate_Temperature_Compensated_Pressure(&MS5611);
  Serial.print("Pressure: ");
  Serial.print(MS5611.PRESSURE);
  Serial.println(" hPa");

  GB_MS5611_Altitude(&MS5611);
  Serial.print("Altitude: ");
  Serial.print(MS5611.ALTITUDE);
  Serial.println(" meters");

  delay(1000);
}
				
			

آردوینو خود را به کامپیوتر متصل کنید و مدل و پورت آردوینو خود را انتخاب کنید.

سپس نمونه کد را ابتدا Verify و سپس Upload کنید

بعد از Upload کردن کد Serial Monitor را باز کرده و می توانید خروجی های سنسور را مشاهده کنید 

در ادامه می توانید کتابخانه GebraBit_MS5611 , شماتیک و دیتاشیت ماژول را دانلود نمایید.

ویدیو خروجی برنامه:

ویدیو کارکرد ماژول به زودی آپلود می شود.

این مقاله را با دوستانتان به اشتراک بگذارید!

Be the first to write a review

لطفا با ارسال دیدگاه و امتیاز دهی تیم جبرا را در بهبود کیفیت همیاری کنید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Shopping cart
Start typing to see posts you are looking for.

Sign in

No account yet?