תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
ה- MPL3115A2 משתמש בחיישן לחץ MEMS עם ממשק I2C כדי לספק נתוני לחץ/גובה וטמפרטורה מדויקים. יציאות החיישן ממוגנות באמצעות ADC ברזולוציה גבוהה של 24 סיביות. עיבוד פנימי מסיר משימות פיצוי ממערכת ה- MCU המארחת. הוא מסוגל לזהות שינוי ב- 0.05 kPa בלבד שמשווה לשינוי של 0.3 מ 'גובה. להלן ההדגמה שלו עם פטל פאי באמצעות קוד פייתון.
שלב 1: מה שאתה צריך..
1. פטל פטל
2. MPL3115A2
3. כבל I²C
4. מגן I²C עבור פטל פטל
5. כבל אתרנט
שלב 2: חיבורים:
קח מגן I2C לפאי פטל ודחוף אותו בעדינות מעל סיכות ה- gpio של פטל פאי.
לאחר מכן חבר את הקצה האחד של כבל I2C לחיישן MPL3115A2 והקצה השני למגן I2C.
חבר גם את כבל ה- Ethernet ל- pi או שאתה יכול להשתמש במודול WiFi.
חיבורים מוצגים בתמונה למעלה.
שלב 3: קוד:
ניתן להוריד את קוד הפיתון ל- MPL3115A2 מקהילת Github שלנו- קהילת חנויות DCUBE.
הנה הקישור
השתמשנו בספריית SMBus לקוד פייתון, השלבים להתקנת SMBus על פטל פאי מתוארים כאן:
pypi.python.org/pypi/smbus-cffi/0.5.1
אתה יכול גם להעתיק את הקוד מכאן, הוא ניתן כדלקמן:
# מופץ ברישיון רצון חופשי.
# השתמש בו בכל דרך שתרצה, ברווח או בחינם, בתנאי שהוא מתאים לרישיונות של העבודות הקשורות בו.
# MPL3115A2
# קוד זה נועד לעבוד עם מודול מיני MPL3115A2_I2CS I2C
יבוא 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)
time.sleep (1)
כתובת MPL3115A2, 0x60 (96)
# קרא את הנתונים בחזרה מ 0x00 (00), 6 בתים
סטטוס #, גובה MSB1, גובה MSB, גובה LSB, טמפ 'MSB, טמפ' LSB
data = bus.read_i2c_block_data (0x60, 0x00, 6)
# המר את הנתונים ל- 20 סיביות
tHeight = ((data [1] * 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16
temp = ((data [4] * 256) + (data [5] & 0xF0)) / 16
גובה = גובה / 16.0
cTemp = temp / 16.0
fTemp = cTemp * 1.8 + 32
כתובת MPL3115A2, 0x60 (96)
# בחר פקד בקרה, 0x26 (38)
# 0x39 (57) מצב פעיל, OSR = 128, מצב ברומטר
bus.write_byte_data (0x60, 0x26, 0x39)
time.sleep (1)
כתובת MPL3115A2, 0x60 (96)
# קרא את הנתונים בחזרה מ 0x00 (00), 4 בתים
סטטוס #, pres MSB1, pres MSB, pres LSB
data = bus.read_i2c_block_data (0x60, 0x00, 4)
# המר את הנתונים ל- 20 סיביות
pres = ((data [1] * 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16
לחץ = (pres / 4.0) / 1000.0
# פלט נתונים למסך
- לחץ: "לחץ: %.2f kPa" לחץ
- הדפסת "גובה: %.2f מ" %גובה
- טמפרטורה ב צלזיוס: %.2f C %cTemp
- טמפרטורה בפרנהייט: %.2f F %fTemp
שלב 4: יישומים:
יישומים שונים של MPL3115A2 כוללים מדדי דיוק גבוהים, סמארטפונים/טאבלטים, אלטימטריה של אלקטרוניקה אישית וכו '. ניתן לשלב אותה גם בחישוב מתים GPS, שיפור GPS לשירותי חירום, מפת עזרה, ניווט וכן ציוד תחנת מזג אוויר.