สารบัญ:

Raspberry Pi - MPL3115A2 Precision Altimeter Sensor Python Tutorial: 4 ขั้นตอน
Raspberry Pi - MPL3115A2 Precision Altimeter Sensor Python Tutorial: 4 ขั้นตอน

วีดีโอ: Raspberry Pi - MPL3115A2 Precision Altimeter Sensor Python Tutorial: 4 ขั้นตอน

วีดีโอ: Raspberry Pi - MPL3115A2 Precision Altimeter Sensor Python Tutorial: 4 ขั้นตอน
วีดีโอ: Raspberry pi 3 tutorial #6: Waterproof one wire digital temperature sensor Ds18b20 "Python" 2024, กรกฎาคม
Anonim
Image
Image

MPL3115A2 ใช้เซ็นเซอร์ความดัน MEMS พร้อมอินเทอร์เฟซ I2C เพื่อให้ข้อมูลความดัน/ระดับความสูงและอุณหภูมิที่แม่นยำ เอาต์พุตเซ็นเซอร์ถูกแปลงเป็นดิจิทัลด้วย ADC 24 บิตความละเอียดสูง การประมวลผลภายในจะลบงานการชดเชยออกจากระบบโฮสต์ MCU สามารถตรวจจับการเปลี่ยนแปลงได้เพียง 0.05 kPa ซึ่งเท่ากับการเปลี่ยนแปลงระดับความสูง 0.3 ม. นี่คือการสาธิตด้วย raspberry pi โดยใช้รหัส python

ขั้นตอนที่ 1: สิ่งที่คุณต้องการ..!

สิ่งที่คุณต้องการ..!!
สิ่งที่คุณต้องการ..!!

1. ราสเบอร์รี่ปี่

2. MPL3115A2

3. สายเคเบิล I²C

4. I²C Shield สำหรับ Raspberry Pi

5. สายเคเบิลอีเธอร์เน็ต

ขั้นตอนที่ 2: การเชื่อมต่อ:

การเชื่อมต่อ
การเชื่อมต่อ
การเชื่อมต่อ
การเชื่อมต่อ
การเชื่อมต่อ
การเชื่อมต่อ
การเชื่อมต่อ
การเชื่อมต่อ

ใช้เกราะป้องกัน I2C สำหรับ raspberry pi แล้วค่อยๆ ดันไปบนหมุด gpio ของ raspberry pi

จากนั้นเชื่อมต่อปลายด้านหนึ่งของสายเคเบิล I2C เข้ากับเซ็นเซอร์ MPL3115A2 และเชื่อมต่อปลายอีกด้านหนึ่งเข้ากับแผงป้องกัน I2C

เชื่อมต่อสายอีเทอร์เน็ตกับ pi หรือคุณสามารถใช้โมดูล WiFi ได้

การเชื่อมต่อแสดงในภาพด้านบน

ขั้นตอนที่ 3: รหัส:

รหัส
รหัส

รหัสหลามสำหรับ MPL3115A2 สามารถดาวน์โหลดได้จากที่เก็บ Github ของเรา - DCUBE Store Community

นี่คือลิงค์

เราใช้ไลบรารี SMBus สำหรับโค้ด python ขั้นตอนในการติดตั้ง SMBus บน raspberry pi ได้อธิบายไว้ที่นี่:

pypi.python.org/pypi/smbus-cffi/0.5.1

คุณสามารถคัดลอกรหัสจากที่นี่ได้ดังนี้:

# จัดจำหน่ายด้วยใบอนุญาตอิสระ

# ใช้งานตามที่คุณต้องการ ไม่ว่าจะมีกำไรหรือฟรี หากเข้ากับใบอนุญาตของงานที่เกี่ยวข้อง

# MPL3115A2

# รหัสนี้ออกแบบมาเพื่อทำงานกับ MPL3115A2_I2CS I2C Mini Module

นำเข้า smbus

เวลานำเข้า

# รับรถบัส I2C

รถบัส = smbus. SMBus(1)

# MPL3115A2 ที่อยู่ 0x60(96)

# เลือกรีจิสเตอร์ควบคุม 0x26(38)

# 0xB9 (185) โหมดแอ็คทีฟ, OSR = 128, โหมดเครื่องวัดระยะสูง

bus.write_byte_data(0x60, 0x26, 0xB9)

# MPL3115A2 ที่อยู่ 0x60(96)

# เลือกการลงทะเบียนการกำหนดค่าข้อมูล 0x13 (19)

# 0x07(07) เปิดใช้งานเหตุการณ์พร้อมข้อมูลสำหรับระดับความสูง ความดัน อุณหภูมิ

bus.write_byte_data(0x60, 0x13, 0x07)

# MPL3115A2 ที่อยู่ 0x60(96)

# เลือกรีจิสเตอร์ควบคุม 0x26(38)

# 0xB9 (185) โหมดแอ็คทีฟ, OSR = 128, โหมดเครื่องวัดระยะสูง

bus.write_byte_data(0x60, 0x26, 0xB9)

เวลานอน(1)

# MPL3115A2 ที่อยู่ 0x60(96)

# อ่านข้อมูลย้อนหลังตั้งแต่ 0x00(00) 6 ไบต์

# สถานะ, ความสูง MSB1, ความสูง MSB, ความสูง LSB, MSB ชั่วคราว, LSB ชั่วคราว

ข้อมูล = bus.read_i2c_block_data(0x60, 0x00, 6)

# แปลงข้อมูลเป็น 20 บิต

ความสูง = ((ข้อมูล[1] * 65536) + (ข้อมูล[2] * 256) + (ข้อมูล[3] & 0xF0)) / 16

temp = ((data[4] * 256) + (data[5] & 0xF0)) / 16

ความสูง = ความสูง / 16.0

cTemp = อุณหภูมิ / 16.0

fTemp = cTemp * 1.8 + 32

# MPL3115A2 ที่อยู่ 0x60(96)

# เลือกรีจิสเตอร์ควบคุม 0x26(38)

# 0x39 (57) โหมดแอคทีฟ, OSR = 128, โหมดบารอมิเตอร์

bus.write_byte_data(0x60, 0x26, 0x39)

เวลานอน(1)

# MPL3115A2 ที่อยู่ 0x60(96)

# อ่านข้อมูลย้อนหลังตั้งแต่ 0x00(00), 4 ไบต์

# สถานะ กด MSB1 กด MSB กด LSB

ข้อมูล = bus.read_i2c_block_data(0x60, 0x00, 4)

# แปลงข้อมูลเป็น 20 บิต

ก่อนหน้า = ((ข้อมูล[1] * 65536) + (ข้อมูล[2] * 256) + (ข้อมูล[3] & 0xF0)) / 16

ความดัน = (กด / 4.0) / 1000.0

# ส่งออกข้อมูลไปยังหน้าจอ

พิมพ์ "แรงดัน: %.2f kPa" %pressure

พิมพ์ "ระดับความสูง: %.2f m" %altitude

พิมพ์ "อุณหภูมิในเซลเซียส: %.2f C" %cTemp

พิมพ์ "อุณหภูมิเป็นฟาเรนไฮต์: %.2f F" %fTemp

ขั้นตอนที่ 4: การใช้งาน:

แอปพลิเคชันต่างๆ ของ MPL3115A2 รวมถึงเครื่องวัดระยะสูงที่มีความแม่นยำสูง สมาร์ทโฟน/แท็บเล็ต อุปกรณ์อิเล็กทรอนิกส์ส่วนบุคคล Altimetry เป็นต้น นอกจากนี้ยังสามารถรวมเข้ากับ GPS Dead Reckoning, การปรับปรุง GPS สำหรับบริการฉุกเฉิน, ระบบช่วยแผนที่, การนำทาง ตลอดจนอุปกรณ์สถานีตรวจอากาศ

แนะนำ: