본문 바로가기

개발자/Arduino

디지털 압력센서 BMP180 아두이노 라이브러리 테스트




우선 BMP180 디지털 압력센서 데이터 쉬트는 아래 링크를 참고한다. 


BMP180 Digital pressure sensor - https://cdn-shop.adafruit.com/datasheets/BST-BMP180-DS000-09.pdf


센서 사용법과 데이터 쉬트에 대한 자세한 설명은 아래 링크를 참고한다.


BMP180 고도/압력 Barometer GY-68 3.3/5V 레귤레이터 내장형 센서 메뉴얼 - http://www.jkelec.co.kr/img/sensors/manual/bmp180_gy68/bmp180_gy68_manual.html



일단 라이브러리를 다운 받는데 깃 사이트에 가면 판매처를 안내하는 아래 링크가 있다. 참고하기로 한다. 

A powerful but easy to use BMP085/BMP180 Library 


라이브러리 다운은 아래에서 하는데 오른쪽 clone or download 버튼을 클릭하고 download zip 항목을 선택하여 다운 받는다.


압축을 풀면 다음 폴더가 생긴다. Adafruit-BMP085-Library-master 폴더를 통채로 카피하여 아두이노가 설치된 폴더의 라이브러리 폴더에 카피한다. 보통 C:\Program Files (x86)\Arduino\libraries 아래에 카피하면 될 것이다. 


이름이 180이 나니라 085 인 것은 상관 없다 동일한 결과를 출력한다. 


아두이노 스케치를 종료하고 다시 실행시킨다. [파일 - 예제] 항목에서 [모든 보드의 예제] 아래에 보면 방금 라이브러리 폴더에 카피한 Adafruit BMP085 Library 항목을 선택하여 파일 이름이 BMP085test 인 파일을 연다. 


연결 회로는 아래 그림을 참고한다.




아래는 소스코드이다. BMP085test.ino 정도 되겠다. 


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
 
#include <Wire.h>
#include <Adafruit_BMP085.h>
 
/*************************************************** 
  This is an example for the BMP085 Barometric Pressure & Temp Sensor
  Designed specifically to work with the Adafruit BMP085 Breakout 
  ----> https://www.adafruit.com/products/391
  These displays use I2C to communicate, 2 pins are required to  
  interface
  Adafruit invests time and resources providing this open source code, 
  please support Adafruit and open-source hardware by purchasing 
  products from Adafruit!
  Written by Limor Fried/Ladyada for Adafruit Industries.  
  BSD license, all text above must be included in any redistribution
 ****************************************************/
 
// Connect VCC of the BMP085 sensor to 3.3V (NOT 5.0V!)
// Connect GND to Ground
// Connect SCL to i2c clock - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 5
// Connect SDA to i2c data - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 4
// EOC is not used, it signifies an end of conversion
// XCLR is a reset pin, also not used here
 
Adafruit_BMP085 bmp;
  
void setup() {
  Serial.begin(9600);
  if (!bmp.begin()) {
    Serial.println("Could not find a valid BMP085 sensor, check wiring!");
    while (1) {}
  }
}
  
void loop() {
    Serial.print("Temperature = ");
    Serial.print(bmp.readTemperature());
    Serial.println(" *C");
    
    Serial.print("Pressure = ");
    Serial.print(bmp.readPressure());
    Serial.println(" Pa");
    
    // Calculate altitude assuming 'standard' barometric
    // pressure of 1013.25 millibar = 101325 Pascal
    Serial.print("Altitude = ");
    Serial.print(bmp.readAltitude());
    Serial.println(" meters");
 
    Serial.print("Pressure at sealevel (calculated) = ");
    Serial.print(bmp.readSealevelPressure());
    Serial.println(" Pa");
 
  // you can get a more precise measurement of altitude
  // if you know the current sea level pressure which will
  // vary with weather and such. If it is 1015 millibars
  // that is equal to 101500 Pascals.
    Serial.print("Real altitude = ");
    Serial.print(bmp.readAltitude(101500));
    Serial.println(" meters");
    
    Serial.println();
    delay(500);
}
 
cs



스케치에서 열리면 보드와 포트를 선택하고 컴파일 업로드를 하면 아름다운 결과를 볼 수 있다.


Temperature = 29.10 *C

Pressure = 100998 Pa

Altitude = 26.76 meters

Pressure at sealevel (calculated) = 100997 Pa

Real altitude = 41.81 meters


Temperature = 29.10 *C

Pressure = 100998 Pa

Altitude = 27.26 meters

Pressure at sealevel (calculated) = 101004 Pa

Real altitude = 41.72 meters


Temperature = 29.10 *C

Pressure = 100996 Pa

Altitude = 27.09 meters

Pressure at sealevel (calculated) = 100999 Pa

Real altitude = 41.56 meters




u5가 그 놈 되겠다.