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:
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 <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);
}
Bu bilgileri görünce bazen kendi kendime olm diyorum sen cok sey bildiğini zannediyorsun ama hiç bişi bilmiyormuşsun diyorum 🙂
çok kaliteli ve önemli bir paylaşım olmuş. Aradığım bir yazılımdı teşekkürler.
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 .
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.