제조공정
eBay를 통해 저렴하게 구입한 또 다른 재미있는 작은 i2c 기기입니다. 그것은 기압과 온도를 읽습니다. 출력을 읽을 수 있는 것으로 변환하는 비교적 간단한 수학이 있습니다.
다시 한 번, ADAFruit은 Using BMP085 with Raspberry Pi에서 장치 사용을 위한 환상적인 가이드와 라이브러리를 제공합니다. 이전 게시물에서와 같이 ADAFruit 라이브러리를 즉시 사용할 수 있었습니다. 바퀴를 다시 발명하고 처음부터 다시 코딩할 필요를 느끼지는 않지만 작동 방식을 이해하고 싶습니다.
나는 몇 가지 다른 출처에서 정보를 가져왔습니다.
<울>다음은 장치를 Pi에 연결하는 매우 간단한 회로도입니다.
가져오기
smbus
가져오기
시간
클래스
BMP085():
OSS
=
3
def
__init__(
자신
, i2c, 주소):
자신
.i2c
=
i2c
자신
.주소
=
주소
자신
.ac1
=
자신
.readSignedWord(
0xaa
)
자신
.ac2
=
자신
.readSignedWord(
0xac
)
자신
.ac3
=
자신
.readSignedWord(
0xae
)
자신
.ac4
=
자신
.readWord(
0xb0
)
자신
.ac5
=
자신
.readWord(
0xb2
)
자신
.ac6
=
자신
.readWord(
0xb4
)
자신
.b1
=
자신
.readSignedWord(
0xb6
)
자신
.b2
=
자신
.readSignedWord(
0xb8
)
자신
.mb
=
자신
.readSignedWord(
0xba
)
자신
.mc
=
자신
.readSignedWord(
0xbc
)
자신
.md
=
자신
.readSignedWord(
0xbe
)
def
readWord(
자신
, 등록):
msb
=
자신
.i2c.read_byte_data(
자신
.주소, 등록)
lsb
=
자체
.i2c.read_byte_data(
자체
.주소, 등록
+
1
)
값
=
(msb <<
8
)
+
lsb
반환
값
def
readSignedWord(
자신
, reg):msb
=
자신
.i2c.read_byte_data(
자신
.address, reg) lsb
=
자신
.i2c.read_byte_data(
자신
.주소, 등록
+
1
)
if
(msb>
127
):
msb
=
msb
-
256
값
=
(msb <<
8
)
+
lsb
반환
값
def
readUT(
자신
):
자신
.i2c.write_byte_data(
자신
.주소,
0xf4
,
0x2e
) time.sleep(
0.0045
) ut
=
자신
.readWord(
0xf6
)
반환
ut
def
readTemperature(
자신
):ut
=
자신
.readUT() x1
=
((ut
-
자신
.ac6)
*
자신
.ac5)>>
15
x2
=
(
자신
.mc <<
11
)
/
(x1
+
자신
.md)
자신
.b5
=
x1
+
x2
반환
((
자신
.b5
+
8
)>>
4
)
/
10.0
def
readUP(
자신
):
자신
.i2c.write_byte_data(
자신
.주소,
0xf4
,
0x34
+
(
자신
.OSS <<
6
))
지연
=
(
2
+
(
3
<<
자신
.OSS))
/
1000.0
time.sleep(지연)
msb
=
자신
.i2c.read_byte_data(
자신
.주소,
0xf6
)
lsb
=
자신
.i2c.read_byte_data(
자신
.주소,
0xf7
)
xlsb
=
자신
.i2c.read_byte_data(
자신
.주소,
0xf8
)
위쪽
=
(msb <<
16
)
+
(lsb <<
8
)
+
xlsb 위로
=
위쪽>> (
8
-
자신
.OSS)
반환
업
def
readPressure(
자신
):
위쪽
=
자신
.readUP()
b6
=
자신
.b5
-
4000
x1
=
(
자신
.b2
*
(b6
*
b6)>>
12
)>>
11
x2
=
(
자신
.ac2
*
b6)>>
11
x3
=
x1
+
x2
b3
=
(((
자신
.ac1
*
4
+
x3)<>
2
x1
=
(
자신
.ac3
*
b6)>>
13
x2
=
(
자신
.b1
*
((b6
*
b6)>>
12
))>>
16
x3
=
((x1
+
x2)
+
2
)>>
2
b4
=
(
자체
.ac4
*
(x3
+
32768
))>>
15
b7
=
(위로
-
b3)
*
(
50000
>>
자신
.OSS)
if
(b7 <
0x80000000
):
p
=
(b7<<
1
)
/
b4
기타
:
p
=
(b7
/
b4)<>
8
)
*
(p>
>
8
)
x1
=
(x1
*
3038
)>>
16
x2
=
(
-
7357
*
p)>>
16
p
+
=
(x1
+
x2
+
3791
)>>
4
반환
p
i2c
=
smbus.SMBus(
0
)
bmp085
=
BMP085(i2c,
0x77
)
t
=
bmp085.readTemperature()
p
=
bmp085.readPressure()
인쇄
"온도:%.2f C"
%
t
인쇄
"압력:%.2f hPa"
%
(p
/
100
)
자세한 내용:Raspberry Pi 판독 BMP085 온도 및 압력 제조공정
구성품 및 소모품 Arduino Nano R3 × 1 SparkFun 대기 센서 브레이크아웃 - BME280 × 1 Itead Nextion NX8048T070 - 일반 7.0 HMI TFT LCD 터치 디스플레이 × 1 SparkFun USB-직렬 브레이크아웃 - FT232RL × 1 앱 및 온라인 서비스 Visuino - Arduino용 그래픽 개발 환경 Arduino IDE 이 프로젝트
구성품 및 소모품 Arduino UNO × 1 Adafruit BMP280 × 1 Adafruit OLED 128x32 i2c × 1 이 프로젝트 정보 안녕하세요. BMP280을 사용하여 Arduino UNO 보드와 OLED 디스플레이를 사용하여 온도, 압력 및 고도를 측정하는 이 튜토리얼에 오신 것을 환영합니다. 다음은 데이터시트의 BMP280 주요 매개변수 중 일부입니다. 그래서 이 프로젝트에서 모듈을 사용하여 평소와 같이 미터법 및 영국식 시스템 모두