BMP180 I2C Digital Barometric Pressure Sensor
Perangkat BMP180 adalah sensor tekanan barometrik digital. Ini tersedia pada modul kecil yang menyediakan akses ke sensor melalui antarmuka I2C. Hal ini memungkinkan kita untuk dengan mudah menghubungkannya ke Raspberry Pi dengan kabel minimal.
Modul saya adalah PCB kecil berukuran 15x13mm dengan header 5 pin. Urutan pin mungkin berbeda pada modul lain, jadi perhatikan labelnya agar Anda menyambungkan kabel yang benar dari Pi.
BMP180 dibuat oleh Bosch dan lembar data resmi BMP180 mencakup semua detail teknis.
Konfigurasi Antarmuka I2C
Untuk menggunakan modul ini, Anda harus mengaktifkan antarmuka I2C pada Raspberry Pi karena tidak diaktifkan secara default. Ini adalah proses yang cukup mudah dan dijelaskan dalam tutorial Mengaktifkan Antarmuka I2C Pada Raspberry Pi.
Menghubungkan Perangkat Keras
Tabel di bawah menunjukkan cara modul terhubung ke header GPIO (P1) Raspberyr Pi. Silakan merujuk ke panduan header GPIO saya untuk diagram.
Modul PCB | Des | Pin Header GPIO |
VCC | 3.3V | P1-01 |
GND | Tanah | H1-06 |
SCL | I2C SCL | H1-05 |
SDA | I2C SDA | P1-03 |
3.3V | – | – |
Berikut adalah diagram pengaturan papan tempat memotong roti. Jika Anda menghubungkan empat pin modul secara langsung ke Pi, Anda hanya memerlukan empat kabel female-female.
Diagram papan tempat memotong roti menggunakan bagian khusus yang saya tentukan di Fritzing. Tersedia modul lain yang memiliki pengaturan pin berbeda, jadi pastikan Anda menghubungkan pin yang benar ke Pi jika pin Anda berbeda dengan yang ditunjukkan dalam tutorial ini.
Dengan perangkat terhubung dan Pi dihidupkan, perintah “i2cdetect” akan menampilkan perangkat dengan alamat 0x77.
Contoh Skrip Python
Berikut adalah contoh script Python untuk membaca data tekanan dan temperatur dari sensor :
1234567891011213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596616263647266676869701013961118888889900859661626364726667686970 | impor smbus impor waktu dari ctypes impor c_short PERANGKAT 0x77 bus smbus.SMBus( 1 ) def convertToString(data): kembalikan str ((data[ 1 ] + 256 data[ 0 ])) / 1.2 def getShort(data, indeks): kembalikan c_short((data[index]<< 8 ) + data[indeks + 1 ]).nilai def getUshort(data, indeks): kembalikan (data[indeks]<< 8 ) + data[indeks + 1 def readBmp180Id(addr PERANGKAT): REG_ID 0xD0 (chip_id, chip_version) bus.read_i2c_block_data(addr, REG_ID, 2 kembalikan (chip_id, chip_version) def readBmp180(addr PERANGKAT): REG_CALIB 0xAA REG_MEAS 0xF4 REG_MSB 0xF6 REG_LSB 0xF7 CRV_TEMP 0x2E CRV_PRES 0x34 OVERSAMPLE 3 cal bus.read_i2c_block_data(addr, REG_CALIB, 22 AC1 getShort(cal, 0 AC2 getShort(cal, 2 AC3 getShort(cal, 4 AC4 getUshort(cal, 6 AC5 getUshort(cal, 8 AC6 getUshort(cal, 10 B1 getShort(cal, 12 B2 getShort(cal, 14 MB getShort(cal, 16 MC getShort(cal, 18 MD getShort(cal, bus.write_byte_data(addr, REG_MEAS, CRV_TEMP) time.sleep( 0,005 (msb, lsb) bus.read_i2c_block_data(addr, REG_MSB, 2 UT (msb << 8 ) + lsb bus.write_byte_data(addr, REG_MEAS, CRV_PRES + (OVERSAMPLE << 6 )) time.sleep( 0,04 (msb, lsb, xsb) bus.read_i2c_block_data(addr, REG_MSB, 3 NAIK ((msb << 16 ) + (lsb << 8 ) + xsb)>> ( 8 - OVERSAMPLE) X1 ((UT - AC6) AC5)>> 15 X2 (MC << 11 ) / (X1 + MD) B5 X1 + X2 suhu (B5 + 8 )>> 4 B6 B5 - 4000 B62 B6 B6>> 12 X1 (B2 B62)>> 11 X2 AC2 B6>> 11 X3 X1 + X2 B3 (((AC1 4 + X3) < + 2 )>> 2 X1 AC3 B6>> 13 X2 (B1 B62)>> 16 X3 ((X1 + X2) + 2 )>> 2 B4 (AC4 (X3 + 32768 ))>> 15 B7 (NAIK - B3) 50.000 >> OVERSAMPLE) P (B7 2 ) / B4 X1 (P>> 8 ) (P>> 8 X1 (X1 3038 )>> 16 X2 - 7357 P)>> 16 tekanan P + ((X1 + X2 + 3791 )>> 4 kembalikan (suhu / 10.0 ,tekanan / 100.0 def main(): (chip_id, chip_version) readBmp180Id() cetak "Chip ID :" , chip_id cetak "Versi :" , chip_version cetak (suhu,tekanan) readBmp180() cetak "Suhu :" , suhu, "C" cetak "Tekanan :" , tekanan, "mbar" jika __name__ main() |
Disarankan agar Anda mengunduh skrip ini langsung ke Pi Anda menggunakan perintah berikut:
wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/bmp180.py
atau gunakan tautan ini di browser.
Untuk menjalankannya Anda dapat menggunakan perintah berikut :
Untuk detail lebih lanjut:Sensor Tekanan Barometrik Digital BMP180 I2C