برد رزبری پای 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 را بررسی کنید.
رزبری پای Raspberry Pi
برد رزبری پای Raspberry Pi تا الان که در سال ۲۰۲۰ هستیم نسخه ۴ و برد Raspberry Pi 400 را معرفی کرده است و تغییرات اساسی در هر نسخه لحاظ کرده است. یکی از بردهای کاربردی و کوچک خانواده رزبری پای برد رزبری پای APlus است که با ظاهری بسیار متفاوت در سال ۲۰۱۸ معرفی شد. برد رزبری پای در پایه های GPIO همیشه یکسان است و هیچ زمان تفاوتی در عملکرد این پایه ها رخ نداده است. انتخاب نوع رزبری پای در تمامی پروژه های سایت دلخواه است و سازگاری دارد. کافیست طبق آموزش اتصالات را انجام دهید. در ادامه تصویر GPIO جهت برقراری اتصالات قرار گرفته شده است.
در این آموزش از رزبری پای ۳ مدل A Plus استفاده شده است. برخی از ویژگی های این برد در ادامه ضمیمه شده است.
- دارای پردازنده BCM2837B0, Cortex-A5
- دارای حافظه داخلی ۵۱۲MB
- دارای پردازنده با فرکانس۲٫۴GHz
- دارای بلوتوث Bluetooth
- دارای وای فای ۵GHz IEEE 802.11.b/g/n/ac wireless LAN
- دارای ۴۰ پایه GPIO
اتصال سنسور BMP280 با I2C به رزبری پای
ماژول BMP280 دارای ۶ پایه است که برای ارتباط I2C فقط از چهار پایه آن استفاده خواهیم کرد.
- پایه VCC به پایه ۳٫۳ یا ۵ ولت برد رزبری پای متصل میشود.
- پایه GND به پایه Ground برد رزبری پای متصل میشود.
- پایه SCL به پایه GPIO3 برد رزبری پای متصل میشود.
- پایه SDA به پایه GPIO2 برد رزبری پای متصل میشود.
اتصال سنسور BMP280 با SPI به رزبری پای
ماژول BMP280 دارای ۶ پایه است که برای ارتباط SPI از تمامی ۶ پایه استفاده خواهیم کرد.
- پایه VCC به پایه ۳٫۳ یا ۵ ولت برد رزبری پای متصل میشود.
- پایه GND به پایه Ground برد رزبری پای متصل میشود.
- پایه MOSI= SDA به پایه GPIO10 برد رزبری پای متصل میشود.
- پایه MISO=SDO به پایه GPIO9 برد رزبری پای متصل میشود.
- پایه SCL = SCK به پایه GPIO11 برد رزبری پای متصل میشود.
- پایه SCB = SS به پایه GPIO5 و یا هر پایه GPIO آزاد برد رزبری پای متصل میشود.
نصب پکیج BMP280
سنسور BMP280 مناسب اندازه گیری دمای محیط Ambient Temperature، اندازه گیری فشار بارومتریک barometric pressure و به صورت کلی برای اندازه گیری پارامتری های هوا Weather مناسب است. برای نصب کتابخانه از Pypi استفاده میکنیم که مخفف The python package index است و مخزنی از نرم افزارها برای نرم افزارهای پایتون است. Pypi به شما کمک می کند تا نرم افزار توسعه یافته و به اشتراک گذاشته شده توسط انجمن پایتون را پیدا و نصب کنید.
از منو رزبین ترمینال را باز کرده و کامند زیر را وارد کنید.
sudo pip install bmp280
در مرحله بعد آخرین کتابخانه توسعه یافته در Github را فراخوانی میکنیم.
git clone https://github.com/pimoroni/bmp280-python
پس از نصب پکیج به ترتیب کامندهای زیر را نصب کنید.
cd bmp280-python
sudo ./install.sh
cd examples
python temperature-and-pressure.py
برای دریافت دیتا در مرحله آخر حتما اتصالات را برقرار کنید. همانطور که در تصویر مشاهده میکنید پس از وارد کردن کامند python temperature-and-pressure.py دیتا نمایش داده شده است.
- عدد ۲۴٫۵۱ درجه سانتی گراد دمای محیط Ambient Temperature است.
- عدد ۸۴۰٫۳۱hPa فشار بارومتریک Barometric Pressure است.
هر دو دیتا به صورت همزمان و در لحظه ارسال شده و نمایش داده میشود.
کد پایتون 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)
از پروتکل 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)
طبق فرمول زیر ارتفاع بر اساس فشار اندازه گیری شده و نمایش داده میشود.
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 قابلیت اندازه گیری دما و فشار بارومتریک را دارد و جهت راه اندازی این سنسور با برد رزبری پای سریعترین و بهترین روش استفاده از کتابخانه های توسعه یافته در pypi است. در این آموزش به بررسی نمونه برنامه های پیش فرض کتابخانه پرداخته شده و به راحتی میتوانید توسط این توابع دیتای دما و فشار را خوانده و دریافت کنید.
وسایل مورد نیاز
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
salam
dar yek kalam
آموزشی به این خوبی برای رزبری پای در دنیا ندیدم. آیا امکان ارتباط از طریق پروتکل های mqtt و http با پایتون فراهم است؟
با سلام
ضمن تشکر از شما، بله امکان پذیر است و بایستی کتابخانه های مورد نیاز را فراخوانی کنید.
من بعد از log in کردن رزبری و دادن دستور sudo pip instal bmp280 دچار این خطا میشم که not found
علتش چی میتونه باشه؟؟؟
با سلام
با توجه به اینکه این مشکل برای بنده پیش نیامده است، در ابتدا کتابخانه bcm را نصب کنید و سپس مجدد مراحل گفته شده در این آموزش را اجرا کنید. نتیجه و یا ارور دریافتی را ارسال کنید تا راهنمایی شود.
نصب کتابخانه bcm
من لینک دانلود کتابخانه bcm 2835 رو پیدا نمیکنم. میشه لطفا تو قسمت پاسخ برام بفرستید.مرسی
آموزش نصب کتابخانه BCM2835 مخصوص رزبری پای Raspberry Pi
سلام. من لینک کتابخانه bcm رو پیدا نمیکنم. میشه تو قسمت پاسخ برام بذارید. مرسی
با سلام
در آموزش زیر روش نصب گفته شده است.
نصب bcm2835
سلام. من لینک کتابخانه bcm رو توی پیج پیدا نمیکنم. میشه لطفا لینکش رو اینجا برام بذارید؟؟ با تشکر
آموزش نصب کتابخانه BCM2835 مخصوص رزبری پای Raspberry Pi
سپاس از شما خانوم بلورچیان که انقد دلسوزانه وقت میذارید. الان دیدم هست. مرسی
با سلام
سپاس از همراهی شما
اگه اسم سایتی که آموزش راه اندازی پرینتر سه بعدی با رزبری پای رو آموزش داده و تو لایو گفتین رو یه بار دیگه هم بگید ممنون میشم. ولی کاش خودتون تو پیجتون آموزشش رو توضیح میدادین. مرسی
با سلام
در این خصوص حتما بررسی خواهم کرد.
فقط آردوینو و محیط ویندوزی
یکی از مشکلات رزبری پای اجرای اون در محیط لینوکس ه که اصلا جذاب نیست….
با سلام
در این خصوص این مورد وابسته به نیاز کاربر است.
سلام وقت شما بخیر بنده یک پروژه ساخت پارکینگ هوشمند با استفاده از سنسور ها بوسیله رزپری پای دارم ممنون میشم در این مورد راهنمایم کنید و چند سوال داشتم
شماره تماس و ایمیل پیام بدید
با تشکر
با سلام
کاربر گرامی ضمن تشکر از شما، در حال حاضر درخواست شما قابل پیگیری و اجرا نمیباشد.
با تقدیم احترام
سلام وقتتون بخیر من وقتی دستور sudo./install.sh رو وارد میکنم بهم میزنه چنین مسیری یا فایل وجود ندارد .ممنون میشم کمکم کنید.
با سلام مراحل قبلی کامل انجام نشده است.
سلام .من این پروژه رو میخوام انجام بدم ولی هروقت از این کامند ها و کد پایتون رو که گذاشتین رو میزنم اجرا نمیشه .یا خطا میزنه.در حالی که مو با مو جزئیات شما رو انجام دادم .به شما تو واتساپ مشکلو گفتم .گفتین دوباره بررسی میکنید احتمال داره دستور ها یا کامند ها ابدیت شده باشه
اگر امکانش هست کد های پایتون رو دوباره بذارین چون بعضی دستورات بهم ریختس .و من این پروژه رو با رزبری پای pi400انجام میدم.از لطف شما بسیار سپاس گذارم
با سلام مجدد تست خواهم کرد و نتیجه را از همین طریق پیگیری خواهم کرد.
سلام مجدد .مرسی بابت پیگیریتون .اگر امکانش هست هرچه سریع تر انجام بدین .
مثلا وقتی دستور
Python relative_altitude.py
رو میزنم تو خروجی میزنه نمیتوان bmp280 را در ۰×۷۶پیدا کرد.خواهش میکنم دوباره خودتو کامند ها و کد ها رو دوباره هرچه سریع تر بررسی کنید
با سلام
این مورد به زودی بررسی و آپدیت ها اعلام خواهد شد.