Arduino ile MS5611 Sensör Projesi

Bu projenin amacı nedir?


Bu projenin amacı, MS5611 barometrik basınç sensörünü çeşitli ortamlardaki atmosferik basıncı ve sıcaklığı ölçmek ve izlemek için bir Arduino ile arayüzlemektir. Sensör, hassas basınç ve sıcaklık okumaları sağlayarak irtifa ölçümü, hava durumu izleme ve navigasyon sistemleri gibi uygulamalar için idealdir. Kullanıcılar, ani şekilde verileri okuyarak basınç ve sıcaklıktaki değişikliklere dinamik olarak yanıt veren sistemler tasarlayabilir, dış mekan ve çevresel uygulamalarda işlevselliği ve güvenilirliği artırabilir.

Bu eğitimde neler öğreneceğiz?

  • MS5611 sensörünü Arduino’ya bağlayın ve I2C veya SPI haberleşmesini sağlayın .
  • Sensörle arayüz oluşturmak için mevcut bir kütüphaneyi kullanın veya özel kod yazın; böylece veri toplama protokolleri hakkındaki anlayışınızı geliştirin .
  • Sensör kullanarak atmosferik basıncı ve sıcaklığı ölçün , gerçek zamanlı verileri pratik uygulamalar için yorumlayın .
  • Yükseklik ölçümü , hava durumu izleme ve navigasyon sistemleri gibi projeler geliştirin ve çevresel koşullara dayalı tepkisel sistemler oluşturma konusunda uygulamalı deneyim kazanın .

Bu uygulamalı kılavuz, Arduino ile sensör entegrasyonu ve ani veri izleme konusunda bilgi sağlar.

Bu projeye başlamak için neye ihtiyacımız var?

bu projeyi gerçekleştirmek için bazı donanım ve yazılımlara ihtiyacımız var. Bu donanım ve yazılımların başlıkları aşağıdaki tabloda sizlere sunulmuştur ve her birinin üzerine tıklayarak hazırlayabilir/indirebilir ve başlamaya hazırlanabilirsiniz.

GEREKLİ DONANIMGEREKLİ YAZILIM
Arduino ProgrammerArduino IDE – (Nasıl kurulur ?)
Arduino Development Board- ( Arduino UNO )
Gebra MS561101BA03-50 Barometrik Basınç Modülü

GebraMS sizin kolaylığınız için çoğu arduino projesi için özel kütüphaneler hazırlamış
GebraMS’in hazırladığı kütüphanesini indirip Arduino IDE’nize eklemeniz gerekecek. (Gebra kütüphaneleri Arduino’ya nasıl eklenir)

Öncelikle aşağıdaki görselde görüldüğü gibi Gebra MS5611 modülümüzü Arduino UNO’ya şu şekilde bağlıyoruz:

Daha sonra Gebra MS5611 kütüphanesini indirip Arduino IDE’nize ekleyin.

Source Code

Projenin kütüphanesi (Library)

GebraMS, çeşitli sensör ve entegrelerin modüler tasarımına ek olarak, kullanıcıların yazılım kurma ve geliştirme işlemlerini kolaylaştırmak için C dilinde çeşitli yapılandırılmış ve donanımdan bağımsız kütüphaneler (Library) sağlamaya çalışır. Bu amaçla, kullanıcılar, istedikleri modülün kütüphanesini “.h” ve “.c” dosyasını (Başlık ve Kaynak) olarak indirebilirler.

GebraMS tarafından sağlanan projenin kütüphanesini projenize ekleyerek ( projeye dosya nasıl eklenir ) kodumuzu kolayca geliştirebiliriz. ilgili dosyaları projenin sonunda veya sağ tarafta ilgili sayfalar kısmında bulabilirsiniz

Kütüphanede tanımlanan tüm fonksiyonlar tüm detaylarıyla yorumlanmakta ve fonksiyonların argümanlarında alınan tüm parametreler ve dönüş değerleri kısaca açıklanmaktadır. Kütüphaneler donanımdan bağımsız olduğundan kullanıcı istediği compiler’e kolaylıkla kütüphaneyi ekleyebilir ve istediği mikroişlemci ve geliştirme kartı ile geliştirebilir.

USER REGISTER MAP

The registry map or sensor commands are defined in this section:

C
/************************************************
 *              USER REGISTER MAP               *
 ***********************************************/
#define MS5611_RESET                          (0x1E)
#define MS5611_PRESSURE_SAMPLING_START        (0x40)
#define MS5611_TEMPERATURE_SAMPLING_START     (0x50)
#define MS5611_ADC_READ                       (0x00)
#define MS5611_PROM_READ                      (0xA0)
/*----------------------------------------------*
 *           USER REGISTER MAP End              *
 *----------------------------------------------*/

MS5611_Output_Sample_Rate Enum

The values of this enum are used to select the OSR of the sensor:

C
 typedef enum Output_Sample_Rate
 {
 OSR_256         = 0x00 ,
 OSR_512         = 0x02 ,
 OSR_1024        = 0x04 ,
 OSR_2048        = 0x06 ,
 OSR_4096        = 0x08
 } MS5611_Output_Sample_Rate;

MS5611 struct

All sensor properties, calibration coefficients and sensor data are defined in this “struct” and All the information and configuration implemented on the sensor are stored in this “structure” and you can see the changes in each part of the sensor in the “Debug Session” environment.

C
 typedef struct MS5611
  {
  	  uint8_t                         Register_Cache1;
  	  MS5611_Output_Sample_Rate       PRESSURE_SAMPLE_RATE;
  	  MS5611_Output_Sample_Rate       TEMPERATURE_SAMPLE_RATE;
  	  uint8_t 		                  PROM_DATA[PROM_DATA_BUFFER_SIZE];
  	  uint16_t                        FACTORY_DATA;
  	  uint16_t                        C1;
  	  uint16_t                        C2;
 	  uint16_t                        C3;
 	  uint16_t                        C4;
 	  uint16_t                        C5;
 	  uint16_t                        C6;
 	  uint16_t                        CRC_SERIAL_CODE;
 	  uint8_t 		                  ADC_DATA[ADC_DATA_BUFFER_SIZE];
 	  uint32_t               	      ADC_RAW_PRESSURE;
       uint32_t               	      ADC_RAW_TEMPERATURE;
 	  int32_t               	      DT;
 	  int64_t               	      T2;
 	  int64_t               	      OFF2;
 	  int64_t               	      SENS2;
 	  int64_t               	      OFF;
 	  int64_t                         SENS;
 	  float                           TEMPERATURE;
 	  float               	          PRESSURE;
 	  double 		                  ALTITUDE;
 }GebraBit_MS5611;

Declaration of functions

At the end of this file, all the functions for reading and writing in MS5611 registers, sensor configuration and receiving data from the sensor are declared:

C
 /********************************************************
   *Declare Read&Write MS5611 Register Values Functions *
   ********************************************************/
  extern	uint8_t GB_MS5611_Burst_Read(uint8_t regAddr,uint8_t *data, uint16_t byteQuantity);
  extern	uint8_t GB_MS5611_Write_Reg_Data(uint8_t regAddr);
  /********************************************************
   *       Declare MS5611 Configuration Functions       *
   ********************************************************/
  extern void GB_MS5611_Soft_Reset ( GebraBit_MS5611 * MS5611 );
 extern void GB_MS5611_Read_PROM ( GebraBit_MS5611 * MS5611 );
 extern void GB_MS5611_Pressure_Sample_Rate(GebraBit_MS5611 * MS5611 , MS5611_Output_Sample_Rate rate);
 extern void GB_MS5611_Temperature_Sample_Rate(GebraBit_MS5611 * MS5611 , MS5611_Output_Sample_Rate rate);
 extern void	GB_MS5611_Start_Pressure_Sampling(GebraBit_MS5611 * MS5611);
 extern void	GB_MS5611_Start_Temperature_Sampling(GebraBit_MS5611 * MS5611);
 extern void GB_MS5611_Read_ADC ( GebraBit_MS5611 * MS5611 ) ;
 extern void GB_MS5611_Read_ADC_Raw_Pressure(GebraBit_MS5611* MS5611);
 extern void GB_MS5611_Read_ADC_Raw_Temperature(GebraBit_MS5611* MS5611);
 extern void GB_MS5611_initialize( GebraBit_MS5611 * MS5611 );
 extern void GB_MS5611_Calculate_Temperature(GebraBit_MS5611* MS5611);
 extern void GB_MS5611_Calculate_Temperature_Compensated_Pressure(GebraBit_MS5611* MS5611);
 extern void GB_MS5611_Altitude(GebraBit_MS5611 * MS5611);

Gebra_MS5611.c kaynak dosyası

C dilinde yazılmış olan bu dosyada, tüm fonksiyonlar en ince ayrıntısına kadar yorum satırına alınmış ve fonksiyonların argümanlarında alınan tüm parametreler ve bunların döndürdüğü değerler açıkça açıklanmıştır, bu nedenle sadece açıklamalarla yetiniyoruz ve kullanıcıları daha fazla bilgi için doğrudan bu dosyaya bakmaya davet ediyoruz.

Arduino’da örnek program

Modülü Arduino’ya bağladıktan ve kütüphaneyi IDE’ye ekledikten sonra şu yola gidin: Dosya > Örnekler > GebraBit_MS5611 > Temp-Press-Alt

Örnek dosyanın açıklaması

Gebra MS5611 modülü tarafından gerekli olan enumlar ve işlevler yapılara eklendi. Bir sonraki bölümde, Gebra_MS5611 yapı tipinin MS5611 adlı bir değişkeni (bu yapı Gebra_MS5611 başlığındadır ve Gebra_MS5611 kütüphane açıklama bölümünde açıklanmıştır) Gebra MS5611 modülünün yapılandırması için tanımlanmıştır:

C
GebraBit_MS5611 MS5611;

Yazılı kodun bir sonraki kısmında GB_MS5611_initialize (&MS5611) kullanarak Gebra MS5611 modülünü ayarlıyoruz ve son olarak programın döngü kısmında sensörden veriler okunuyor ve Sensör değerleri sürekli olarak alınıyor:

C
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);
}

The Sample file code text:

C
#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);
}

Arduino’nuzu bilgisayara bağlayın ve Arduino Kartınızı seçin

Ardından Örnek kodu doğrulayın ve yükleyin

Kodu yükledikten sonra seri monitörünü açın ve parlaklık değerlerini görebilirsiniz.

Yorum ve puanlarınızla Gebra ekibinin kaliteyi artırmasına yardımcı olun

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Alışveriş Sepeti
Scroll to Top