آموزش رزبری پای رزبری پای

راه اندازی سنسور دما و فشار سنج BMP280 با رزبری پای Raspberry Pi

نوشته شده توسط پریسا پوربلورچیان

برد رزبری پای Raspberry Pi به واسطه پشتیبانی از پروتکل I2C ارتباط با سنسورهای محیطی را برای ما فراهم کرده است. سنسور دما و فشارسنج BMP280 قابلیت خواندن و ارسال هر دو  دیتا را دارد. برای اندازه گیری فشار و ارتفاع سنسور BMP280 یکی از دقیق ترین سنسورها با قیمت به صرفه است. سنسور BMP280 قابلیت اندازه گیری دما، فشار و ارتفاع دارد. در ادامه با مرجع تخصصی رزبری پای به زبان فارسی، دیجی اسپارک همراه باشید.

 


سنسور BMP280


سنسور BMP280 قابلیت اندازه گیری دما، فشار و ارتفاع دارد. ماژول BMP280 از جمله ماژول های حسگر الکترونیکی numerous electronic است که همزمان میتواند چندین پارامتر را تشخیص داده و نمایش دهد. بر روی ماژول سنسور نقره ای رنگ  GY-BM E/P 280 قرار گرفته شده است که پارامترهای محیطی را همانند نسخه اصلی آن اندازه گیری کرده و دیتا را ارسال می‌کند. این سنسور فشار را در بازه ۳۰۰ تا ۱۱۰۰ اندازه گیری کرده و رنج دمای اندازه گیری بین  – ۴۰ تا + ۸۵ درجه سانتی گراد است. دقت اندازه گیری فشار  ±۱ hPa است. متوسط جریان مصرفی ۲٫۷۴ µA و در حالت Sleep mode برابر با ۰٫۱ µA است. رزولوشن برای اندازه گیری فشار  ۰٫۰۱ hPa و برای دما ۰٫۰۱ درجه سانتی گراد است. ولتاژ کاری ماژول ۳٫۳ تا ۵ ولت DC است. این ماژول توان مصرفی کم، قیمت بسیار مناسب و سنسور آن مناسب استفاده در ساخت گجت های مختلف جهت اندازه گیری فشار و دما است. سنسور BMP280 یک قابلیت منحصر به فرد دارد و آن فشار و ارتفاع است که توسط این تراشه اندازه گیری می‌شود. پاسکال Pa واحد اندازه گیری فشار است که در فیزیک به تعریف اصولی نیروی وارد بر سطح با آن آشنا شدیم. واحد اندازه گیری فشار هوا در هواشناسی و سطح آب هکتوپاسکال و یا میلی بار است که به صورت hPa نوشته می‎‌شود و معادل ۱۰۰ پاسکال است. فشار اتمسفری که در هوا وجود دارد برابر با ۱۰۱۳۲۵ Pa و یا معادل ۷۶ سانتی متر جیوه است. در نظر داشته باشید چگالی هوا با افزایش ارتفاع کاهش می‌یابد که مشخصه ای از فشار هوا است. با تغییر دما و رطویت چگالی هوا هم تغییر می‌کند. hpa نرمال در سطح دریا بر واحد MSL برابر با ۱۰۱۳٫۲۵ hPa یا ۲۹٫۹۲ اینچ جیوه است. در اندازه گیری ارتفاع انتخاب مبدا بسیار مهم است. به صورت پیش فرض در یک محیط بسته میتوانیم مبدا را سقف در نظر بگیریم که در این حالت در صورتیکه شی مورد نظر پایین تر از سقف باشد، ارتفاع منفی در نظر گرفته می‌شود و بالعکس!

در این آموزش از مدل BMP280 که فقط مختص نمایش دما و نمایش فشار است، استفاده خواهیم کرد. پروتکل ارتباطی این سنسور با توجه به اینکه بر روی ماژول فقط پایه های I2C چاپ شده است، به صورت SPI و I2C است. جهت راه اندازی سنسور BMP280 با رزبری پای در این آموزش از پروتکل I2C استفاده شده است. جهت اطلاعات بیشتر میتوانید همانند زیر اتصالات I2C و اتصالات SPI را بررسی کنید.

 

آموزش و راه اندازی سنسور فشار BMP280 - دیجی اسپارک

 


رزبری پای Raspberry Pi


برد رزبری پای Raspberry Pi تا الان که در سال ۲۰۲۰ هستیم نسخه ۴ و برد Raspberry Pi 400 را معرفی کرده است و تغییرات اساسی در هر نسخه لحاظ کرده است. یکی از بردهای کاربردی و کوچک خانواده رزبری پای برد رزبری پای APlus است که با ظاهری بسیار متفاوت در سال ۲۰۱۸ معرفی شد. برد رزبری پای در پایه های GPIO همیشه یکسان است و هیچ زمان تفاوتی در عملکرد این پایه ها رخ نداده است. انتخاب نوع رزبری پای در تمامی پروژه های سایت دلخواه است و سازگاری دارد. کافیست طبق آموزش اتصالات را انجام دهید. در ادامه تصویر GPIO جهت برقراری اتصالات قرار گرفته شده است.

شناخت پایه‌های GPIO رزبری پای جهت اتصال سنسور به رزبری پای - دیجی اسپارک

 

در این آموزش از رزبری پای ۳ مدل A Plus استفاده شده است. برخی از ویژگی های این برد در ادامه ضمیمه شده است.

  •  دارای پردازنده BCM2837B0, Cortex-A5
  • دارای حافظه داخلی  ۵۱۲MB
  • دارای پردازنده با فرکانس۲٫۴GHz
  • دارای بلوتوث Bluetooth
  • دارای وای فای  ۵GHz IEEE 802.11.b/g/n/ac wireless LAN
  • دارای ۴۰ پایه GPIO

 

برد رزبری پای Raspberry Pi A+ - دیجی اسپارک

 


اتصال سنسور BMP280 با I2C به رزبری پای


ماژول BMP280 دارای ۶ پایه است که برای ارتباط I2C فقط از چهار پایه آن استفاده خواهیم کرد.

  • پایه VCC به پایه ۳٫۳ یا ۵ ولت برد رزبری پای متصل می‌شود.
  • پایه GND به پایه Ground برد رزبری پای متصل می‌شود.
  • پایه SCL به پایه GPIO3 برد رزبری پای متصل می‌شود.
  • پایه SDA به پایه GPIO2 برد رزبری پای متصل می‌شود.

 

اتصالات سنسور فشار BMP280 به برد رزبری پای با I2C - دیجی اسپارک

 

اتصال سنسور BMP280 با I2C به رزبری پای A+ - دیجی اسپارک

 


اتصال سنسور BMP280 با SPI به رزبری پای


ماژول BMP280 دارای ۶ پایه است که برای ارتباط SPI از تمامی ۶ پایه استفاده خواهیم کرد.

  • پایه VCC به پایه ۳٫۳ یا ۵ ولت برد رزبری پای متصل می‌شود.
  • پایه GND به پایه Ground برد رزبری پای متصل می‌شود.
  • پایه MOSI= SDA به پایه GPIO10 برد رزبری پای متصل می‌شود.
  • پایه MISO=SDO به پایه GPIO9 برد رزبری پای متصل می‌شود.
  • پایه SCL = SCK به پایه GPIO11 برد رزبری پای متصل می‌شود.
  • پایه SCB = SS به پایه GPIO5 و یا هر پایه GPIO آزاد برد رزبری پای متصل می‌شود.

جدول اتصالات ماژول BMP280 با SPI به برد رزبری پای - دیجی اسپارک

 

 


نصب پکیج BMP280


سنسور BMP280 مناسب اندازه گیری دمای محیط Ambient Temperature، اندازه گیری فشار بارومتریک barometric pressure و به صورت کلی برای اندازه گیری پارامتری های هوا Weather مناسب است. برای نصب کتابخانه از Pypi استفاده می‌کنیم که مخفف The python package index است و مخزنی از نرم افزارها برای نرم افزارهای پایتون است. Pypi به شما کمک می کند تا نرم افزار توسعه یافته و به اشتراک گذاشته شده توسط انجمن پایتون را پیدا و نصب کنید.

 

اتصال سنسور BMP280 با رابط SPI به برد رزبری پای - دیجی اسپارک

از منو رزبین ترمینال را باز کرده و کامند زیر را وارد کنید.

sudo pip install bmp280

نصب پکیج BMP280 در رزبری پای - دیجی اسپارک

در مرحله بعد آخرین کتابخانه توسعه یافته در Github را فراخوانی می‌کنیم.

git clone https://github.com/pimoroni/bmp280-python

نصب کتابخانه مورد نیاز BMP از گیت هاب در رزبری پای - دیجی اسپارک

پس از نصب پکیج به ترتیب کامندهای زیر را نصب کنید.

cd bmp280-python

sudo ./install.sh

نصب پکیج BMP280 سیستم عامل رزبین - دیجی اسپارک

cd examples

python temperature-and-pressure.py

 python temperature-and-pressure.py - دیجی اسپارک

برای دریافت دیتا در مرحله آخر حتما اتصالات را برقرار کنید. همانطور که در تصویر مشاهده می‌کنید پس از وارد کردن کامند python temperature-and-pressure.py دیتا نمایش داده شده است.

  • عدد ۲۴٫۵۱ درجه سانتی گراد دمای محیط Ambient Temperature است.
  • عدد ۸۴۰٫۳۱hPa فشار بارومتریک Barometric Pressure است.

هر دو دیتا به صورت همزمان و در لحظه ارسال شده و نمایش داده می‌شود.

نمایش دما و فشار هوا در پایتون با سنسور BMP280 - دیجی اسپارک

 


کد پایتون BMP280 اندازه گیری فشار و دما


کد پایتون BMP280 دما و فشار سنسور را اندازه گیری کرده و نمایش میدهد. برای اجرای این کد از نرم افزار های پیش فرض پایتون که بر روی OS نصب است میتوانید استفاده کنید. در این بخش من از نرم افزار Thonny استفاده کرده ام.

#!/usr/bin/env python

import time
from bmp280 import BMP280

try:
    from smbus2 import SMBus
except ImportError:
    from smbus import SMBus

print("""temperature-and-pressure.py - Displays the temperature and pressure.

Press Ctrl+C to exit!

""")

# Initialise the BMP280
bus = SMBus(1)
bmp280 = BMP280(i2c_dev=bus)

while True:
    temperature = bmp280.get_temperature()
    pressure = bmp280.get_pressure()
    print('{:05.2f}*C {:05.2f}hPa'.format(temperature, pressure))
    time.sleep(1)

اجرای کد پایتون BMP280 اندازه گیری فشار و دما - دیجی اسپارک

از پروتکل SMBUS برای برقراری ارتباط بین جهت انتقال دیتا بین داده ها استفاده می‌شود. در ماژول هایی با رابط I2C از این پروتکل برای انتقال داده استفاده شده است.

از دو تابع زیر برای دریافت دیتای دما و دیتای فشار استفاده شده است.

emperature = bmp280.get_temperature()
    pressure = bmp280.get_pressure()

 به همین ترییب کد برنامه آماده است و میتوانید با فراخوانی آن را اجرا و استفاده کنید.

 


کد پایتون اندازه گیری ارتفاع نسبی


برای اندازه گیری ارتفاع نسبی در کتابخهانه برنامه پیش فرض آن قرار گرفته شده است. در صورت تمایل برای اجرا از طریق کامند همانند زیر عمل کنید.

cd bmp280-python
cd examples
python relative-altitude.py

کد پایتون اندازه گیری ارتفاع نسبی در رزبری پای - دیجی اسپارک

 

#!/usr/bin/env python

import time
from bmp280 import BMP280

try:
    from smbus2 import SMBus
except ImportError:
    from smbus import SMBus

print("""relative-altitude.py - Calculates relative altitude from pressure.

Press Ctrl+C to exit!

""")

# Initialise the BMP280
bus = SMBus(1)
bmp280 = BMP280(i2c_dev=bus)

baseline_values = []
baseline_size = 100

print("Collecting baseline values for {:d} seconds. Do not move the sensor!\n".format(baseline_size))

for i in range(baseline_size):
    pressure = bmp280.get_pressure()
    baseline_values.append(pressure)
    time.sleep(1)

baseline = sum(baseline_values[:-25]) / len(baseline_values[:-25])

while True:
    altitude = bmp280.get_altitude(qnh=baseline)
    print('Relative altitude: {:05.2f} metres'.format(altitude))
    time.sleep(1)

 

کد پایتون اندازه گیری ارتفاع نسبی با سنسور BMP280 - دیجی اسپارک

طبق فرمول زیر ارتفاع بر اساس فشار اندازه گیری شده و نمایش داده می‌شود.

 

for i in range(baseline_size):
    pressure = bmp280.get_pressure()
    baseline_values.append(pressure)
    time.sleep(1)

baseline = sum(baseline_values[:-25]) / len(baseline_values[:-25])[

 

 


اندازه گیری دما به صورت مستقل


جهت اندازه گیری دما کامند زیر را اجرا کنید.

cd bmp280-python
cd examples
python temperature-forced-mode.py
import time
try:
    from smbus2 import SMBus
except ImportError:
    from smbus import SMBus
from bmp280 import BMP280


bus = SMBus(1)
bmp280 = BMP280(i2c_dev=bus)

# Set up in "forced" mode
# In this mode `get_temperature` and `get_pressure` will trigger
# a new reading and wait for the result.
# The chip will return to sleep mode when finished.
bmp280.setup(mode="forced")

while True:
    temperature = bmp280.get_temperature()
    print('{:05.2f}*C'.format(temperature))
    time.sleep(1)

 

اندازه گیری دما با سنسور BMP280 و پایتون رزبری پای - دیجی اسپارک

 


جمع بندی لیدی پای


همانطور که اشاره شد، سنسور BMP280 قابلیت اندازه گیری دما و فشار بارومتریک را دارد و جهت راه اندازی این سنسور با برد رزبری پای سریعترین و بهترین روش استفاده از کتابخانه های توسعه یافته در pypi است. در این آموزش به بررسی نمونه برنامه های پیش فرض کتابخانه پرداخته شده و به راحتی میتوانید توسط این توابع دیتای دما و فشار را خوانده و دریافت کنید.

 

آموزش پایتون با رزبری پای - دیجی اسپارک

 


وسایل مورد نیاز


برد رزبری پای Raspberry 

سنسور دما فشار سنج BMP280

کابل فلت 

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۲۴ دیدگاه

  • salam
    dar yek kalam
    آموزشی به این خوبی برای رزبری پای در دنیا ندیدم. آیا امکان ارتباط از طریق پروتکل های mqtt و http با پایتون فراهم است؟

    • با سلام
      ضمن تشکر از شما، بله امکان پذیر است و بایستی کتابخانه های مورد نیاز را فراخوانی کنید.

  • من بعد از log in کردن رزبری و دادن دستور sudo pip instal bmp280 دچار این خطا میشم که not found
    علتش چی میتونه باشه؟؟؟

  • سلام. من لینک کتابخانه bcm رو توی پیج پیدا نمیکنم. میشه لطفا لینکش رو اینجا برام بذارید؟؟ با تشکر

  • فقط آردوینو و محیط ویندوزی
    یکی از مشکلات رزبری پای اجرای اون در محیط لینوکس ه که اصلا جذاب نیست….

    • سلام وقت شما بخیر بنده یک پروژه ساخت پارکینگ هوشمند با استفاده از سنسور ها بوسیله رزپری پای دارم ممنون میشم در این مورد راهنمایم کنید و چند سوال داشتم

      شماره تماس و ایمیل پیام بدید
      با تشکر

      • با سلام
        کاربر گرامی ضمن تشکر از شما، در حال حاضر درخواست شما قابل پیگیری و اجرا نمی‌باشد.
        با تقدیم احترام

  • سلام وقتتون بخیر من وقتی دستور sudo./install.sh رو وارد میکنم بهم میزنه چنین مسیری یا فایل وجود ندارد .ممنون میشم کمکم کنید.

  • سلام .من این پروژه رو میخوام انجام بدم ولی هروقت از این کامند ها و کد پایتون رو که گذاشتین رو میزنم اجرا نمیشه .یا خطا میزنه.در حالی که مو با مو جزئیات شما رو انجام دادم .به شما تو واتساپ مشکلو گفتم .گفتین دوباره بررسی میکنید احتمال داره دستور ها یا کامند ها ابدیت شده باشه
    اگر امکانش هست کد های پایتون رو دوباره بذارین چون بعضی دستورات بهم ریختس .و من این پروژه رو با رزبری پای pi400انجام میدم.از لطف شما بسیار سپاس گذارم

      • سلام مجدد .مرسی بابت پیگیریتون .اگر امکانش هست هرچه سریع تر انجام بدین .
        مثلا وقتی دستور
        Python relative_altitude.py
        رو میزنم تو خروجی میزنه نمیتوان bmp280 را در ۰×۷۶پیدا کرد.خواهش میکنم دوباره خودتو کامند ها و کد ها رو دوباره هرچه سریع تر بررسی کنید