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

پروژه دماسنج با رزبری پای با کد پایتون (آموزش اندازه گیری دما با Raspberry Pi)

سلام. پروژه دماسنج با رزبری پای (آموزش اندازه گیری دما با Raspberry Pi) را آماده کردیم.

اندازه گیری دمای اتاق با رزبری پای

ما اکثر قسمت های مهم در برنامه نویسی پایتون برای رزبری پای و توضیحات مربوط به برد و پین های Raspberry Pi را در قسمت آموزش رزبری پای به طور کامل ارائه کردیم. حالا وقت این است اولین پروژه کاربردی را با این برد محبوب بسازیم. به عنوان اولین پروژه ما میخواهیم دمای اتاق را با برد Pi اندازه گیری کنیم.

همانطور که در آموزش های قبلی بحث شد، هیچ کانال ADC در Raspberry Pi وجود ندارد. بنابراین اگر بخواهیم یک سنسور آنالوگ را به ان متصل کنیم، به یک واحد تبدیل ADC احتیاج داریم. و در یکی از آموزش های ما تراشه ADC0804 را به Raspberry Pi برای خواندن یک مقدار آنالوگ متصل کردیم.  بنابراین پیشنهاد میشود اول قسمت آموزش ها را بخوانید و بعد ادامه بدهید.

توضیحات شماتیک پروژه

در اینجا ما از رزبری پای 2 Model B با سیستم عامل Raspbian Jessie استفاده می کنیم. در قسمت های قبل، در مورد کلیه نیازهای اولیه سخت افزار و نرم افزار بحث کرده ایم. تصویر زیر شماتیک مدار پروژه را نشان میدهد. (برای مشاهده تصویر در اندازه کامل روی آن کلیک کنید.)

اندازه گیری دمای اتاق با رزبری پای

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

  1. مقاومت 1 کیلو اهم – 17 عدد
  2. گلدان 10K
  3. خازن 0.1μF
  4. خازن 100μF
  5. خازن 1000μF
  6. ADC0804 IC
  7. سنسور دما LM35

خروجی LM35 نوسانات ولتاژ زیادی دارد. بنابراین از خازن 100uF برای صاف کردن خروجی استفاده می شود. ADC همیشه نویز زیادی دارد، این نویز می تواند تا حد زیادی بر عملکرد پروژه تأثیر بگذارد، بنابراین ما از خازن 0.1uF برای حذف نویز استفاده می کنیم. بدون استفاده از خازن نوسانات زیادی در خروجی وجود خواهد داشت.

ADC0804 چیست؟

ADC0804 تراشه ای است که برای تبدیل سیگنال آنالوگ به داده های دیجیتالی 8 بیتی طراحی شده است. این تراشه یکی از تراشه های محبوب ADC است. این یک واحد تبدیل 8bit است، بنابراین به ما مقادیری بین 0 تا 255 میدهد. به طور کلی این تراشه میتواند حداکثر 5 ولت را اندازه بگیرد و آن را به عددی بین 0 تا 255 تبدیل کند. بنابراین تغییر هر واحد با تغییر 19.5 میلی ولت تغییر میکند.

دیتاشیت پین های ADC0804 :

دیتاشیت پین های ADC0804

حال نکته مهم دیگر اینجاست که ADC0804 با 5 ولت کار می کند و بنابراین خروجی را در سیگنال منطقی 5 ولت فراهم می کند. در خروجی 8 پین (به عنوان 8 بیت)، هر پین +5 ولت خروجی را ارائه می دهد. مشکل اینجا شروع میشود که رزبری پای تحمل 3.3 ولت را دارد بنابراین نمیتواند خروجی ADC را دریافت کند زیرا در این صورت برد Raspberry Pi شما آسیب میبیند.

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

بنابراین برای کم کردن ولتاژ ما از مدار تقسیم ولتاژ استفاده میکنیم. ما با استفاده از مقاومت، 5 ولت را به دو ولتاژ 2.5 تبدیل میکنیم. بنابراین هر وقت منطق در تراشه 1 شود، 5 ولت ارائه میشود و با تقسیم ولتاژ ، 2.5 ولت به رزبری پای میرسد.

این تراشه با ساعت نوسانگر RC کار میکند. RC یعنی Resistor-Capacitor به معناری مقاومت-خازن. همانطور که در شماتیک مدار نشان داده شده است، C2 و R20 یک ساعت (Clock) را تشکیل می دهند. نکته مهمی که در اینجا باید به خاطر بسپارید این است که خازن C2 را می توان برای مقادیر بالاتر ADC به مقدار کمتری تغییر داد. هرچند با سرعت بالاتر دقت کاهش خواهد یافت. بنابراین اگر برنامه به دقت بالاتری نیاز دارد، خازن را با مقدار بالاتر انتخاب کنید و برای سرعت بیشتر خازن را با مقدار کمتری انتخاب کنید.

سنسور دما LM35

اکنون برای خواندن دمای اتاق ، به یک سنسور احتیاج داریم. در اینجا قصد داریم از سنسور دما LM35 استفاده کنیم. دما معمولاً در “سانتیگراد” یا “فارنهایت” اندازه گیری می شود. سنسور “LM35” خروجی را برحسب درجه سانتیگراد فراهم می کند.

سنسور دما LM35

همانطور که در شکل نشان داده شده است ، LM35 یک ترانزیستور سه پین ​​است. توضیحات پین ها را بخوانید :

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید
  • پین 1 = Vcc – متصل به +5V
  • پین 2 = Out – متصل به تراشه ADC
  • پین 3 = Gnd

این سنسور بر اساس دما ، ولتاژ متغیر را در خروجی ایجاد می کند. برای افزایش هر درجه سانتیگراد ، 10 میلی ولت در خروجی افزایش داده میشود. مثلا اگر حرارت محیط 10 درجه باشد، خروجی سنسو ر100 میلی ولت خواهد بود. و اگر دما 25 درجه باشد، خروجی 250 میلی ولت خواهد بود.

سنسور LM35 نهایتا دما 150 درجه سانتی گراد را اندازه میگیرد. بنابراین ما در حالت حداکثری جریان 1.5 ولت را خواهیم داشت. اما ولتاژ پیشفرض تراشه آنالوگ به دیجیتال 5 ولت است. بنابراین اگر به همین صورت استفاده کنید وضوح خروجی ما بسیار کم خواهد بود زیرا ما نهایتا میتوانیم از 34% (5/1.5) محدوده خروجی دیجیتال را استفاده کنیم.

خوشبختانه ADC0804 دارای یک پین Vref قابل تنظیم (پین 9) است که در تصویر نشان داده شده است. بنابراین Vref تراشه را روی +2V قرار می دهیم. برای تنظیم Vref روی +2V، باید +1 ولت (VREF/2) را در پین 9 فراهم کنیم. در اینجا ما از پتانسیومتر 10 کیلو اهم برای تنظیم ولتاژ در پین 9 به +1 ولت استفاده می کنیم. برای بدست آوردن ولتاژ دقیق از ولت متر استفاده کنید.

توضیحات برنامه نویسی پروژه

وقتی همه چیز را مانند شماتیک مدار متصل کردید، می توانیم Raspberry Pi را روشن کنیم تا برنامه را در پایتون (PYHTON) بنویسیم. کد کامل در انتهای صفحه قرار داده شده است. در اینجا در مورد قسمت های مهم کد صحبت میکنیم.

ما میخواهیم پرونده GPIO را از کتابخانه وارد کنیم. کد زیر باعث میشود بتوانیم پین های GPIO برد رزبری پای را برنامه ریزی کنیم. همچنین مانند قسمت قبلی آموزش، نام GPIO را به IO تغییر میدهیم. و هر بار بخواهیم به پین های GPIO مراجعه کنیم از کلمه IO استفاده میکنیم.

import RPi.GPIO as IO

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

IO.setwarnings(False)

ما می توانیم پین های GPIO رزبری پای یا شماره پین آن یا شماره GPIO آن ها وارد کنیم. به طور مثال پین 35 روی برد Raspberry pi، همان پین GPIO 19 است. بنابراین ما میتوانیم آن را با 19 یا 35 معرفی کنیم.

IO.setmode (IO.BCM)

ما 8 پین را به عنوان پین ورودی تنظیم می کنیم. ما 8 بیت داده ADC توسط این پین ها را تشخیص خواهیم داد.

IO.setup(4,IO.IN)
IO.setup(17,IO.IN)
IO.setup(27,IO.IN)
IO.setup(22,IO.IN)
IO.setup(5,IO.IN)
IO.setup(6,IO.IN)
IO.setup(13,IO.IN)
IO.setup(19,IO.IN)

اگر پین GPIO 19 بالا برود (1 شود)، موارد داخل حلقه IF یک بار اجرا می شوند. اگر پین GPIO 19 بالا نرود، دستورات داخل حلقه IF اجرا نمی شوند.

if(IO.input(19) == True):

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

while 1:

فیلم عملکرد و نحوه کار

پس از نوشتن برنامه ، زمان اجرای آن است. سنسور LM35 اول دمای اتاق را تشخیص می دهد و یک ولتاژ آنالوگ را در خروجی آن تأمین می کند. این ولتاژ متغیر دما را به صورت یک تابع خطی با +10mV در هر درجه سانتی گراد نشان می دهد. این سیگنال به تراشه ADC0804 تغذیه می شود، این تراشه مقدار آنالوگ را به مقدار دیجیتال تبدیل می کند. این تعداد توسط پین GPIO رزبری پای دریافت میشود. فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.

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

موارد موجود در فایل : سورس پایتون ، شماتیک پروژه

پروژه ها رایگان هستند. برای دانلود فایل های پروژه باید در سایت عضو باشید. ثبت نام / ورود

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

محمد رحیمی

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

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

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