راه اندازی سنسور دمای دیجیتال ‏‎ DS18B20‎‏ با برد رسپبری پای

راه اندازی سنسور دمای دیجیتال ‏‎ DS18B20‎‏ با برد رسپبری پای

راه اندازی سنسور دمای دیجیتال ‏‎ DS18B20‎‏ با برد رسپبری پای

راه اندازی سنسور دمای دیجیتال ‏‎ DS18B20‎‏ با برد رسپبری پای

 

این سنسور کوچک سه پایه، ظاهری مشابه ترانزیستور داشته و یک دستگاه دیجیتال دقیق می باشد.

سیستم عامل لینوکس Occidentalis برای برد رسپبری پای (و Raspbian از دسامبر۲۰۱۲) از سنسور دمای دیجیتال تک سیمه DS18B20 پشتیبانی می کند.

 

راه اندازی سنسور دمای دیجیتال ‏‎ DS18B20‎‏ با برد رسپبری پای

 

در این درس نحوه راه اندازی سنسور دمای دیجیتال DS18B20 توسط برد رسپبری پای، برای اندازه گیری دما را یاد خواهید گرفت.

از آنجایی که برد رسپبری پای مبدل آنالوگ به دیجیتال(ADC) ندارد،

نمی تواند به طور مستقیم از سنسور دمای آنالوگ مانند TMP36 استفاده کند،

لذا سنسور دمای دیجیتال DS18B20  گزینه ی مناسبی برای اندازه گیری دما می باشد.

کد های کتابخانه:

اگر از پایتون استفاده می کنید، می توانید از کتابخانه سنسور دمای دیجیتال DS18B20 استفاده کنید، که به خوبی با برد رسپبری پای کار می کند.

 

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

برای انجام این پروژه شما نیاز به قطعات زیر دارید که می توانید آنها را از فروشگاه فرگل سی ان سی تهیه کنید:

 

برد رسپبری پای۱ عدد
برد بورد۱ عدد
سیم اتصال برد بورد۱ بسته
برد GPIO تی شکل + کابل۱ عدد
سنسور دمای دیجیتال DS18B20۱ عدد
مقاومت ۴.۷k تا ۱۰k۱ عدد

 

سخت افزار:

در شکل زیر نمایشی ساده از اتصالات DS18B20 نشان داده شده است.

سنسور های تک سیمه DS18B20 برخلاف سایر سنسورها می توانند به صورت موازی متصل شوند.

تمامی این سنسورهای موازی باید از یک پایه مشترک استفاده کنند، اما فقط یک مقاومت ۴.۷k برای همه آنها لازم است.

این مقاومت به عنوان یک pullup (بالا برنده) برای خط های داده عمل می کند و وجود آن برای پایدار بودن داده ها ضروری است.

در راه اندازی DS18B20 دقت کنید . لبه‌ی خمیده و منحنی آن باید به سمت چپ باشد.

اگر آنرا به صورت اشتباه وصل کنید سنسور داغ و سپس آسیب میبیند.

 

راه اندازی سنسور دمای دیجیتال ‏‎ DS18B20‎‏ با برد رسپبری پای

 

نسخه ضد آب DS18B20 ، دارای ۳ سیم با رنگهای قرمز و سیاه و زرد می باشد. سر سیم مسی نیازی به اتصال  ندارد.

درصورتی که از نسخه “high temperature”  می کنید، سیم نارنجی را به منبع ۳.۳ ولت،

سیم سفید را به زمین و سیم آبی نیز برای داده ها می باشد.

در اینجا نیز نیاز به یک مقاومت ۴.۷ الی۱۰ کیلو اهمی میان سیم داده و منبع۳.۳ولتی دارید.

 

راه اندازی سنسور دمای دیجیتال ‏‎ DS18B20‎‏ با برد رسپبری پای

 

راه اندازی سنسور دمای دیجیتال ‏‎ DS18B20‎‏ با برد رسپبری پای

 

سنسور دمای دیجیتال DS18B20:

اگرچه ظاهر  DS18B20 مشابه ترانزیستور های رایج است، اما در واقع داخل آن اتفاقات زیادی می افتد.

این تراشه داده های خروجی را از طریق یک سیم در اختیار کاربر قرار می دهد و  همچنین دارای کنترلر منطقی و سنسور دما در درون خود است.

پیام های دیجیتال ازطریق پایه های خروجی ارسال می شود، و سیستم عامل های

Raspbian/Occidentalis  دارای رابطی برای خواندن این پیام ها هستند.

می توان قبل از اجرای کامل برنامه، از طریق خط دستور و یا در SSH  که درس ششم بیان گردید، قطعه را آزمایش کرد.

 

اضافه کردن پشتیبان تک سیمه:

با اضافه کردن خط زیر در فایل /boot/config.txt  شروع کنید.

می توانید این فایل را از طریق اجرای دستور sudo nano /boot/config.txt  ویرایش کنید، سپس به انتهای آن رفته و خط زیر را وارد کنید:

dtoverlay=w1-gpio

سپس سیستم را با دستور  sudo reboot راه اندازی مجدد کنید. با بالا آمدن رسپبری پای و وارد شدن

مجدد کاربر، دستورات زیر را در terminal window وارد کنید، زمانی که در مسیر ‘devices’ قرار دارید،

مسیر که با ’۲۸-’ آغاز می شود، ممکن است نام های متفاوتی داشته باشد، بنابراین به نام مسیری مورد نظر دقت کنید.

sudo modprobe w1-gpio

sudo modprobe w1-therm

cd /sys/bus/w1/devices

ls

cd 28-xxxx (change this to match what serial number pops up)

cat w1_slave

 

راه اندازی سنسور دمای دیجیتال ‏‎ DS18B20‎‏ با برد رسپبری پای

 

رابط کاربری که در بالا مشاهده می کنید، کمی غیر قابل اعتماد است، ا

ما خوشبختانه اگر دمای معتبری وجود داشته باشد، در اختیار قرار می دهد.

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

Yesیا No پاسخی است که در انتهای خط اول نمایش داده می شود. اگر yes باشد، دما

(ضرب در ۱۰۰۰ درجه سانتیگراد)در انتهای خط دوم نمایش داده می شود. در مثال بالا دما در واقع ۲۰.۶۸۷و سپس۲۶.۱۲۵درجه سانتیگراد است.

اگر شما از بیش از یک سنسور استفاده می کنید، چند فایل xxx-28 خواهید دید،

که هرکدام یک شماره سریال منحصر به فرد دارند. ممکن است در هر زمان نیاز

به متصل کردن یکی از سنسور ها باشد. کافیست برچسب(lable) سنسور و فایل ایجاد شده را بررسی کرد.

 

نرم افزار:

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

import os

import glob

import time

 

os.system(‘modprobe w1-gpio’)

os.system(‘modprobe w1-therm’)

 

base_dir = ‘/sys/bus/w1/devices/’

device_folder = glob.glob(base_dir + ’28*’)[0]

device_file = device_folder + ‘/w1_slave’

 

def read_temp_raw():

f = open(device_file, ‘r’)

lines = f.readlines()

f.close()

return lines

 

def read_temp():

lines = read_temp_raw()

while lines[0].strip()[-3:] != ‘YES’:

time.sleep(0.2)

lines = read_temp_raw()

equals_pos = lines[1].find(‘t=’)

if equals_pos != -1:

temp_string = lines[1][equals_pos+2:]

temp_c = float(temp_string) / 1000.0

temp_f = temp_c * 9.0 / 5.0 + 32.0

return temp_c, temp_f

 

while True:

print(read_temp())

time.sleep(1)

 

برنامه با صدور دستور modprobe که برای شروع کار رابط کاربری مورد نیاز می باشد، آغاز می گردد.

۳ خط بعدی، فایلی که خواندن پیام از آن امکان پذیر است را پیدا می کند.

ممکن است گاه گاهی در هنگام کار با Raspbian برای خواندن دما، مشکلاتی گزارش شود.

اگر مشکلات مشابه آنچه که ذکر شد، پیش آمد.

به جای تابع function read_temp_raw کد زیر را وارد کنید. برای این کار نیاز به اضافه کردن خط import subprocess در بالای فایل می باشد.

def read_temp_raw():

catdata = subprocess.Popen([‘cat’,device_file], stdout=subprocess.PIPE, stderr=subprocess.PIPE)

out,err = catdata.communicate()

out_decode = out.decode(‘utf-8’)

lines = out_decode.split(‘\n’)

return lines

 

خواندن دما توسط دو تابع انجام می گیرد. تابع  read_temp_raw، دو خط از رابط کاربری را بازخوانی می کند.

تابع read_temp پیام های بد را چک می کند و این کار را آنقدر ادامه می دهد

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

باتوجه به مثال زیر می توان این دو عدد (خروجی) را متمایز نشان داد.

deg_c, deg_f = read_temp()

حلقه اصلی برنامه، ساده است. قبل از یک ثانیه استراحت، دما را خوانده و نمایش می دهد.

برای بارگذاری برنامه در برد رسپبری پای، می توانید از ssh برای اتصال به برد رسپبری پای استفاده کنید.

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

nano thermometer.py

سپس کد زیر را وارد کرده و در نهایت با استفاده از CTRL-x و سپس Y آن را ذخیره کنید.

 

راه اندازی سنسور دمای دیجیتال ‏‎ DS18B20‎‏ با برد رسپبری پای

 

تست و نکات نهایی:

برنامه باید به صورت super user اجرا گردد، لذا لازم است برای شروع کد زیر وارد شود:

sudo python thermometer.py

اگر همه چیز خوب پیش برود متنی مانند شکل زیر نمایش داده می شود:

 

راه اندازی سنسور دمای دیجیتال ‏‎ DS18B20‎‏ با برد رسپبری پای

 

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

 

اضافه کردن سنسور های بیشتر:

میتوان سنسور هایDS18B20  بیشتری را  به صورت اتصال- موازی اضافه کرد.

باید تمامی پین های VCC، data و ground را به یکدیگر متصل کنید. و از یک مقاومت ۴.۷ کیلو اهمی  استفاده کنید.

شما مسیرهای متفاوت (/sys/bus/w1/devices/28- nnnnn) را مشاهده خواهید کرد

که هرکدام دارای یک شماره ی سریال منحصر بفرد به عنوان directionery name می باشند.

کد پایتون بالا فقط برای یک سنسور اجرا می شود، لذا باید آنرا برای خواندن از سنسور های مختلف در یک زمان تغییر داد.

 

 

 

 

 

راه اندازی سنسور دمای دیجیتال ‏‎ DS18B20‎‏ با برد رسپبری پای

راه اندازی سنسور دمای دیجیتال ‏‎ DS18B20‎‏ با برد رسپبری پای

راه اندازی سنسور دمای دیجیتال ‏‎ DS18B20‎‏ با برد رسپبری پای

راه اندازی سنسور دمای دیجیتال ‏‎ DS18B20‎‏ با برد رسپبری پای

راه اندازی سنسور دمای دیجیتال ‏‎ DS18B20‎‏ با برد رسپبری پای

راه اندازی سنسور دمای دیجیتال ‏‎ DS18B20‎‏ با برد رسپبری پای

راه اندازی سنسور دمای دیجیتال ‏‎ DS18B20‎‏ با برد رسپبری پای

 

 

 

پیگیری سفارش
لیست مقایسه
شگفت انگیز ها