Bolu Beyi tarafından yazıldı Mart - 19 - 2014 4 Yorum

Bu yazımızda Arduino ile BMP 085 basınç sensörü ile bağlantı kurmayı ve sıcaklık, basınç, yükseklik bilgilerini okumayı öğreneceğiz. Öncelikle bağlantıyı düzgün bir şekilde yapmak gerekiyor. Bunun için aşağıdaki resim ve tabloyu inceleyebilirsiniz:

bmp085

Arduino Uno pinleri BMP085 pinleri
GND GND
3.3V VCC
A4 SDA
A5 SCL

Bağlantıları doğru bir şekilde gerçekleştirdikten sonra, gerekli kütüphaneleri ekleyip, aşağıdaki kodları Arduino‘muzun içerisine gömerek veri okuyabiliriz. Veri olarak cm cinsinden yükseklik, santigrat cinsinden sıcaklık ve pascal cinsinden basınç verilerini görebileceğiz. Fakat yükseklik bilgisinin çok hassas bir şekilde okunamadığını belirtmek isterim:

#include <Wire.h>
#include <BMP085.h>BMP085 dps = BMP085();
long Sicaklik = 0, Basinc = 0, Yukseklik = 0;void setup(void) {
Serial.begin(9600);
Wire.begin();
delay(1000);
dps.init();
showall();
dumpRegisters();
dps.dumpCalData();
delay(5000);
}void loop(void) {
dps.getTemperature(&Sicaklik);
dps.getPressure(&Basinc);
dps.getAltitude(&Yukseklik);Serial.print(“Sicaklik(C):”);
Serial.print(Sicaklik);
Serial.print(”  Yukseklik(cm):”);
Serial.print(Yukseklik);
Serial.print(”  Basinc(Pa):”);
Serial.println(Basinc);
}void showall(void)
{
Serial.print(“cihaz adresi                  = 0x”);
Serial.println(dps.getDevAddr(), HEX);
Serial.print(“Mod                            = “);
switch (dps.getMode())
{
case MODE_ULTRA_LOW_POWER:
Serial.println(“MODE_ULTRA_LOW_POWER”);
break;
case MODE_STANDARD:
Serial.println(“MODE_STANDARD”);
break;
case MODE_HIGHRES:
Serial.println(“MODE_HIGHRES”);
break;
case MODE_ULTRA_HIGHRES:
Serial.println(“MODE_ULTRA_HIGHRES”);
break;
}
}void dumpRegisters() {
byte ValidRegisterAddr[]={0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,0xF6,0xF7,0xF8,0xF9};
byte _b, i, totregisters = sizeof(ValidRegisterAddr);

Serial.println(“Reg.address(hex,dec) Reg.data(bin,hex,dec)”);
for (i=0;i<totregisters;i++){
Serial.print(“0x”);
Serial.print(ValidRegisterAddr[i], HEX);
Serial.print(“,”);
Serial.print(ValidRegisterAddr[i], DEC);
Serial.print(“,”);
dps.readmem(ValidRegisterAddr[i], 1, &_b);
Serial.print(“b”);
print_bits(_b);
Serial.print(“,0x”);
Serial.print(_b,HEX);
Serial.print(“,”);
Serial.println(_b,DEC);
}
Serial.println(“—dump end—“);
}

void print_bits(byte val){
int i;
for(i=7; i>=0; i–)
Serial.print(val >> i & 1, BIN);
}

Bugüne kadar 4 yorum yapıldı

  1. ferroli dedi ki:

    Bu bilgileri görünce bazen kendi kendime olm diyorum sen cok sey bildiğini zannediyorsun ama hiç bişi bilmiyormuşsun diyorum 🙂

  2. jeneratör dedi ki:

    çok kaliteli ve önemli bir paylaşım olmuş. Aradığım bir yazılımdı teşekkürler.

  3. Tolga Karabulut dedi ki:

    Arduino giderek gelişen bir kart olmaya başladı özellikle Quadcopter sistemlerinde görmekteyiz ileride bir tane çıkarmayı düşünüyorum en azından fikir olarak bir öngörü oldu konunuz teşekkür ederim .

  4. Yds dedi ki:

    Bu gömülü sistemler her zaman ilgimi çekiyor. Raspberry pi aldım ama sadece video oynatıcı olarak kullanıyorum. Belki bir gün vakit bulursam basit projeler yapmayı düşünüyorum.


Time limit is exhausted. Please reload CAPTCHA.