پروژه الکترونیکپروژه های پایتونپروژه های دما و رطوبتپروژه های رزبری پای

پروژه دماسنج رزبری پای با سنسور DS18B20

سلام. پروژه دماسنج رزبری پای با سنسور DS18B20 را آماده کردیم.

اندازه گیری دما با Raspberry pi

Raspberry Pi به دلیل داشتن توان محاسباتی و کاربردهای گسترده در زمینه IoT ، خانه هوشمند و … بسیار محبوب است. سنسورهای زیادی برای این فرآیند ها استفاده می شوند و سنسور مورد نیاز بر اساس پارامتر مورد سنجش و کاربرد آن انتخاب می شود. در این پروژه رزبری پای می آموزیم که یک سنسور دما DS18B20 را به Raspberry Pi متصل کنیم.

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

فیلم عملکرد پروژه در انتهای صفحه قرار داده شده است.

معرفی سنسور دما DS18B20

DS18B20 یک سنسور دما سه ترمینال است که در پکیج TO-92 (نوع ترانزیستور) موجود است. استفاده از آن بسیار آسان است و برای شروع کار فقط به یک مؤلفه خارجی نیاز دارد. همچنین برای ارتباط با آن تنها یک پین GPIO از میکروکنترلر نیاز داریم. یک سنسور دما معمولی DS18B20 با نام پین های آن در زیر نشان داده شده است.

معرفی سنسور دما DS18B20

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

  • ولتاژ : 3-5V
  • دامنه اندازه گیری: -55 درجه سانتیگراد تا +125 درجه سانتی گراد
  • دقت: 0.5 ± درجه سانتی گراد
  • رزولوشن: 9 بیت تا 12 بیت

مدار پروژه دماسنج با رزبری پای

همانطور که قبلاً در این آموزش گفتیم، سنسور DS18B20 را به رزبری پای متصل میکنیم و مقدار دما را در یک ال سی دی کاراکتری نمایش میدهیم. بنابراین سنسور و ال سی دی را باید مطابق شماتیک مدار زیر به Raspberry pi متصل کنیم.

مدار پروژه دماسنج با رزبری پای

اتصالات را مانند تصویر بالا انجام دهید. LCD و سنسور هر دو با ولتاژ 5 کار میکنند و توسط پین 5 ولت رزبری پای تغذیه میشوند. ال سی دی در حالت 4 بیت از طریق پین های 18،23،24 و 25 GPIO برای داده و پین های 7 و 8 GPIO برای کنترل با Raspberry pi ارتباط برقرار میکند. از پتانسیومتر برای کنترل سطح کنتراست ال سی دی استفاده میشود. پین داده DS18B20 به پین 4 GPIO رزبری پای متصل میشود.

تصویر زیر به شما در درک نحوه اتصال قطعات کمک میکند.

پین های رزبری پای

قطعات مورد نیاز

  1. سنسور دما DS18B20
  2. رزبری پای
  3. ال سی دی کاراکتری 16*2
  4. پتانسیومتر 10 کیلو اهم
  5. مقاومت 10 کیلو اهم

نصب كتابخانه LCD Adafruit در Raspberry P

مقدار دما در یک نمایشگر ال سی دی 16*2 نمایش داده میشود. مقدار دما در یک نمایشگر LCD 16 * 2 نمایش داده می شود. Adafruit کتابخانه ای را در اختیار ما قرار می دهد تا بتوانیم این LCD را به راحتی در حالت 4 بیتی راه اندازی کنیم. بنابراین مراحل نصب این کتابخانه را مانند زیر انجام دهید.

مرحله 1: با استفاده از خط زیر git را روی Raspberry Pi نصب کنید. Git به شما امکان می دهد تا فایلهای پروژه را در Github کلون کنید و از آن در Raspberry pi استفاده کنید. كتابخانه ما روی Github است ، بنابراین برای بارگیری آن كتابخانه باید به نصب git بپردازیم.

apt-get install git

مرحله 2: خط زیر کتابخانه مورد نظر ما را از گیت هاب کلون میکند.

اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید.
حتما ببینید :  راه اندازی مبدل دیجیتال به آنالوگ 12 بیت با رزبری پای
git clone git://github.com/adafruit/Adafruit_Python_CharLCD

مرحله 3: برای تغییر دایرکتوری ، از دستور زیر استفاده کنید تا وارد پرونده پروژه شوید که ما تازه بارگیری کرده ایم. خط فرمان در زیر آورده شده است

cd Adafruit_Python_CharLCD

مرحله 4: در داخل دایرکتوری فایلی به نام setup.py وجود دارد ، ما باید آن را نصب کنیم از خط زیر استفاده کنید.

sudo python setup.py install

حال به طور مشابه می خواهیم کتابخانه DHT را که از Adafruit نیز هست نصب کنیم.

فعال کردن ارتباط تک سیم در Raspberry pi

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

مرحله 1:از دستور زیر برای باز کردن پرونده استفاده کنید.

sudo nano /boot/config.txt

مرحله 2: در داخل پرونده پیکربندی خط “dtoverlay = w1-gpio” (مانند تصویر زیر) اضافه کنید و پرونده را مطابق شکل زیر ذخیره کنید.

نصب كتابخانه LCD Adafruit در Raspberry P

مرحله 3: برای خروج از پرونده از Ctrl + X استفاده کرده و با فشار دادن “Y” آن را ذخیره کنید. در آخر Pi را با استفاده از دستور زیر ریستارت کنید.

sudo reboot

مرحله 4: پس از راه اندازی مجدد ، دوباره ترمینال را باز کنید و دستورات زیر را وارد کنید.

sudo modprobe w1–gpio
sudo modprobe w1-therm.
cd /sys/bus/w1/devices
ls

پنجره های ترمینال شما چیزی شبیه به این را نشان می دهد.

فعال کردن ارتباط تک سیم در Raspberry pi

مرحله 5: در پایان مرحله 4 وقتی وارد ls می شوید ، pi شما یک شماره منحصر به فرد را نمایش می دهد ، این تعداد براساس سنسور برای هر کاربر متفاوت خواهد بود ، اما همیشه با 28- شروع می شود. در مورد من شماره 28-03172337caff است.

مرحله 6: اکنون می توانیم با وارد کردن دستورات زیر سنسور کار کنیم

cd 28-XXXXXXXXXXXX 
cat w1_slave

این دو دستور داده های حسگر را می خوانند و مطابق شکل زیر آن را در ترمینال نمایش می دهند. مقدار دما در تصویر زیر با رنگ قرمز مشخص شده است. برای من مقدار دما 37 درجه سانتی گراد  است.

اندازه گیری دما با Raspberry pi 

برنامه نویسی رزبری پای برای پروژه دماسنج

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

مثل همیشه برنامه را با وارد کردن پرونده های هدر مورد نیاز برنامه شروع می کنیم. در اینجا زمان برای عملکرد delay، هدر LCD برای استفاده از LCD و هدر os برای مدیریت پرونده ها در سیستم عامل استفاده می شود.

import time #کتابخانه برای عملکرد تاخیر
import Adafruit_CharLCD as LCD #کتابخانه برای ال سی دی
import os 
import glob 

سپس باید پین های ال سی دی که رزبری پای متصل هستند را معرفی کنیم. برای اطلاع از شماره پین های GPIO از تصاویر بالا استفاده کنید. وقتی پین ها را معرفی کردیم، تعداد ستون ها و ردیف های LCD را معرفی میکنیم.

lcd_rs        = 7  #تعریف پین ها برای ال سی دی
lcd_en        = 8  
lcd_d4        = 25 
lcd_d5        = 24 
lcd_d6        = 23 
lcd_d7        = 18 
lcd_backlight =  0  

lcd_columns = 16 #تعداد ستون های ال سی دی
lcd_rows    = 2 #تعداد ردیف های ال سی دی

lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7,
     lcd_columns, lcd_rows, lcd_backlight)   #ارسال اطلاعات به کتابخانه 

بعد از تنظیم LCD ، یک متن نمونه را روی LCD چاپ می کنیم. کاراکتر‘\ n ‘برای ذکر خط جدید استفاده می شود. پس از نمایش مقدمه ، 2 ثانیه تأخیر را برنامه ریزی میکنیم تا کاربر بتواند متن را بخواند.

lcd.message('DS18B20 with Pi \n -IRENX') #نمایش پیام مقدمه
time.sleep(2) #تاخیر 2 ثانیه

حال اگر مرحله 4 فعال کردن ارتباط تک سیم در Pi را به یاد بیاورید. ما باید همان خط کد را تکرار کنیم ، بنابراین از تابع os.system برای اجرای همان خطوط استفاده می کنیم. سپس مکان پرونده را از جایی که باید مقدار درجه حرارت خوانده شود را مشخص می کنیم. متغیر device_folder به پوشه ای که با که با -28 شروع میشد ارجاع داده میشود. نام آن را با نام مخصوص سنسور خود جایگزین کنید.

حتما ببینید :  پروژه دریافت ساعت از اینترنت با برد ESP32 و NTP

سپس از عملکردی به نام get_temp استفاده می کنیم که در آن دما را از پرونده ای که در بالا معرفی کردیم میخوانیم. مانند قبل دما را دریافت میکنیم اما در قالب زیر خواهد بود :

برنامه نویسی رزبری پای برای پروژه دماسنج

با توجه به این فرمت، دمای 37 درجه، 37000 نشان داده میشود. بنابراین ما باید آن را به 1000 تقسیم کنیم و آن را روی ال سی دی نمایش دهیم.

def get_temp(): #خواندن مقدار دما
    file = open(device_file, 'r') #باز کردن فایل
    lines = file.readlines() #خواندن خطوط فایل
    file.close() #بستن فایل
             
    trimmed_data = lines[1].find('t=') #خواندن خط "t="
               
    if trimmed_data != -1:
        temp_string = lines[1][trimmed_data+2:] #جدا کردن مقدار دما
        temp_c = float(temp_string) / 1000.0 #تقسیم دما به 1000
        return temp_c #برگرداندن مقدار برای نوشتن روی ال سی دی 

از این خطوط بالا برای خواندن فایل استفاده میشود. سپس به دنبال خط “t=” میگردیم و سپس مقدار دما را پیدا میکنیم. آن را در 1000 تقسیم میکنیم و در پایان متغیر temp_c به عنوان نتیجه برمیگردد تا در ال سی دی نوشته شود.

در داخل حلقه بینهایت while loop، ما فقط باید عملکرد بالا را بدست آوریم تا مقدار دما را بدست آوریم و آن را در صفحه LCD نمایش دهیم. ما همچنین مقدار دما را هر 1 ثانیه بروز میکنیم.

while 1: #حلقه بی نهایت
    lcd.clear() #پاکسازی ال سی دی
    lcd.message ('Temp = %.1f C' % get_temp()) # نمایش مقدار دما
    time.sleep(1) #تاخیر 1 ثانیه ای برای بروز رسانی

فیلم عملکرد پروژه

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

دانلود فیلم پروژه دماسنج با رزبری پای

موارد موجود در فایل : سورس کامل ، شماتیک

برای دانلود فایل های پروژه ثبت نام کنید، تنها چند ثانیه زمان لازم است. از طریق فرم زیر اقدام کنید.

ایمیل خود را وارد کنید

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید
برچسب ها

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید)

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن
بستن