제조공정
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 주요 매개변수 중 일부입니다. 그래서 이 프로젝트에서 모듈을 사용하여 평소와 같이 미터법 및 영국식 시스템 모두