Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Panduan Integrasi Sensor Tekanan Barometrik BMP180 I2C dengan Raspberry Pi

Pendahuluan

BMP180 Bosch adalah sensor tekanan barometrik digital yang akurat tinggi yang berkomunikasi melalui I2C. Dalam panduan ini Anda akan mempelajari cara memasangnya ke Raspberry Pi, mengaktifkan bus I2C, dan membaca suhu dan tekanan dengan skrip Python siap pakai.

Ringkasan Modul

Modul ini adalah PCB kompak berukuran 15 × 13 mm dengan header 5 pin. Meskipun sebagian besar modul mengikuti urutan pin yang sama, periksa ulang label pada papan Anda sebelum menghubungkan.

Pinout & Kabel

Hubungkan modul ke header GPIO Pi (P1) seperti yang ditunjukkan di bawah ini. Diagram sederhana untuk pengaturan breadboard juga disertakan.

PCB Modul Deskripsi Pin Header GPIO
VCC 3.3 V P1-01
GND Ground P1-06
SCL Clock I2C P1-05
SDA Data I2C P1-03

Dengan perangkat dinyalakan, menjalankan i2cdetect -y 1 seharusnya mengungkapkan alamat 0x77.

Mengaktifkan Bus I2C

Aktifkan I2C di Pi Anda (dinonaktifkan secara default) dengan menjalankan sudo raspi-config dan memilih Interface Options → I2C → Yes, lalu reboot.

Contoh Python

Skrip berikut menunjukkan cara membaca suhu (°C) dan tekanan (mbar) dari BMP180. Ini menggunakan data kalibrasi yang tersimpan pada sensor untuk menghasilkan hasil yang akurat.

#!/usr/bin/python
import smbus
import time
from ctypes import c_short
DEVICE = 0x77 # Alamat I2C default
bus = smbus.SMBus(1) # Pi 2 dan yang lebih baru menggunakan bus 1

def convertToString(data):
    return str((data[1] + (256 * data[0])) / 1.2)

def getShort(data, index):
    return c_short((data[index] << 8) + data[index + 1]).value

def getUshort(data, index):
    return (data[index] << 8) + data[index + 1]

def readBmp180Id(addr=DEVICE):
    REG_ID = 0xD0
    chip_id, chip_version = bus.read_i2c_block_data(addr, REG_ID, 2)
    return chip_id, chip_version

def readBmp180(addr=DEVICE):
    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, 20)
    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)
    UP = ((msb << 16) + (lsb << 8) + xsb) >> (8 - OVERSAMPLE)
    X1 = ((UT - AC6) * AC5) >> 15
    X2 = (MC << 11) / (X1 + MD)
    B5 = X1 + X2
    temperature = (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) << OVERSAMPLE) + 2) >> 2
    X1 = AC3 * B6 >> 13
    X2 = (B1 * B62) >> 16
    X3 = X1 + X2
    B4 = (AC4 * (X3 + 32768)) >> 15
    B7 = (UP - B3) * (50000 >> OVERSAMPLE)
    P = (B7 * 2) / B4
    X1 = (P >> 8) * (P >> 8)
    X1 = (X1 * 3038) >> 16
    X2 = (-7357 * P) >> 16
    pressure = P + ((X1 + X2 + 3791) >> 4)
    return temperature / 10.0, pressure / 100.0

def main():
    chip_id, chip_version = readBmp180Id()
    print("Chip ID :", chip_id)
    print("Versi :", chip_version)
    temperature, pressure = readBmp180()
    print("Suhu :", temperature, "C")
    print("Tekanan :", pressure, "mbar")

if __name__ == "__main__":
    main()

Unduh & Jalankan

Simpan skrip langsung ke Pi Anda:

wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/bmp180.py

Buat dapat dieksekusi dan jalankan:

chmod +x bmp180.py ./bmp180.py

Sumber Daya Lebih Lanjut

• Datasheet Resmi BMP180
• Panduan Referensi GPIO

Proses manufaktur

  1. Infineon Meluncurkan XENSIV DPS368: Sensor Tekanan Barometrik Ultra-Kompak dan Tinggi Presisi
  2. Infineon Memperkenalkan KP276: Sensor Turbo MAP Digital Terkemuka di Industri untuk Efisiensi Mesin Superior
  3. Sensor Hall Digital Magnetis: Dasar, Desain, dan Aplikasi Otomotif
  4. MAXREFDES220# – Pemantauan Tekanan Darah Tanpa Manset dengan Sensor Optik
  5. Bosch BMP390: Sensor Ketinggian 50% Lebih Akurat untuk Smartphone, Wearable, dan Navigasi Indoor
  6. Membangun Pencatat Suhu Raspberry Pi dengan Sensor I2C $5
  7. Cara Menghubungkan Termometer Digital One-Wire DS18B20 ke Raspberry Pi – Panduan Langkah Demi Langkah
  8. Membaca Sensor Hall Linier dengan Raspberry Pi: Panduan Java & Wawasan ADC0832
  9. Sensor Cahaya Digital – Nyalakan LED dengan Cahaya Lingkungan Menggunakan Windows 10 IoT Core
  10. Sensor Tekanan Wearable Cair Lanjutan untuk Pemantauan Kesehatan yang Akurat