라즈베리파이 피코보드에서 고정밀 기압센서 및 온도센서인 BMP280 사용하기

라즈베리파이 피코보드에서 고정밀 기압센서 및 온도센서인 BMP280 사용하기

1. BMP 280 대기압 센서

알리에서 라즈베리 파이 피코 보드에 사용할 센서들을 찾다가, BMP280이라는 이름의 디지털 방식 기압 센서 모듈을 발견하였다. 크기가 11mm x 13mm 정도로 소형이면서, 디지털 입력을 제공하는 센서이고, 통신 방식 역시 배선이 간결한 I2C 방식이었다.

​

엄밀하게 말하면 BMP280은 다음과 같이 센서 모듈의 핵심칩(2×2.5mm)을 의미하는데,

​

​

이 센서칩 자체의 성능은 다음과 같다고 한다. 압력의 경우 사용 방식에 따라 대략 0.16Pa의 해상도를 가지며(참고 = 대기압은 약 101325 Pa에 해당), 함께 측정 가능한 온도의 경우 섭씨 0.01도의 측정 해상도를 가진다고 한다.

​

​

​

다만, 실제 사용을 위해서는 모듈화된 형태로 구입하게 되는데, 이러한 BMP280 모듈은 여전히 매우 높지만 센서칩 자체에 비해서는 조금 완화된 수준의 정밀도를 가지게 된다. (0.12~1hPa = 0.12~1 mbar 정도의 정확도)​

​

​

​

한편 가격은 착해서, 해외 직구 시 배송비를 포함한 가격이 개당 2000원 내외로 저렴했다.

​

​

실제로 배송받은 제품은 다음과 같은 형태인데, 핀은 직접 납땜해야만 했다. (접속용 핀을 납땜한 이후 사진임)

센서 모듈의 뒤편은 다음과 같은 형태이다. (접속용 핀을 납땜한 이후 사진임)

​​

​

2. 피코 보드에 적용

납땜이 된 센서의 핀들을 다음과 같이 피코 보드에 연결하여 회로를 구성했다. I2C의 SDA(파란색 선)를 GP0에, I2C의 SCL(녹색 선)을 GP1에 연결했고, 3.3V(적색 썬)와 GND 배선(오렌지색 선)을 연결했다.

​

각각의 선들은 센서 모듈의 접속 핀에 맞도록 연결했다.

​

그리고, Github에서 “BMP280″과, “python” 키워드로 검색하여 관련 라이브러리를 찾아 이중 다음 라이브러리를 선택했다.

​

​

​

선택한 항목으로 들어가 BMP280 라이브러리를 찾아 Thonny IDE로 내용을 복사한 후, 피코 보드에 동일한 이름으로 저장해 두었다.​

​

​

​

​

참고로 이 라이브러리는 다음과 같은 License 조항처럼 해당 내용만 밝히면 자유로운 사용을 허용하고 있다.

​

여기에 해당 라이브러리 파일을 첨부해 둔다.

첨부파일

bmp280.py

파일 다운로드

​

그리고, 다음과 같은 간단한 코드로, 이 센서의 측정값을 읽어 보았다.

from machine import Pin,I2C
import utime
from bmp280 import *

sda = Pin(0)
scl = Pin(1)

i2c = I2C(0,scl=scl,sda=sda,freq=200000)
bmp = BMP280(i2c)
bmp.use_case(BMP280_CASE_INDOOR)
while True:  
    temp=bmp.temperature
    p_Pa=bmp.pressure                 #압력 기본 측정 단위는 Pascal
    
    p_bar=p_Pa/100000          # 압력단위변환   1 bar = 100,000 Pa
    p_atm=p_bar/1.013          # 압력단위변환   1 atm(기압) = 1.013 bar
    p_mmHg=p_atm*760           # 압력단위변환   1 atm(기압) = 760 mmHg
    p_psi=p_atm*14.7           # 압력단위변환   1 atm(기압) = 14.7 psi
    
    print("Temperature Celcius : " , round(temp, 2))
print("Pressure            : " , round(p_Pa,2), "Pa  (" , round(p_bar,2),"bar", round(p_atm,2),"atm",round(p_psi,2),"psi )" )
print("")
    utime.sleep(2)

​

참고로 이 라이브러리는 측정 환경에 따라 대기압 측정치가 영향을 받기도 하는 점을 고려하여, 사용 환경에 대한 인자를 넣을 수 있게 되어 있는데, 본 예제에서는 실내 측정이라, BMP_CASE_INDOOR를 사용했다.​

​

​

​

이 프로그램을 실행시키면 다음과 같은 결과를 얻게 되는데,

​

관련 동작 모습은 다음과 같다.

​