نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
Avatar

پروژه رسپری آموزش وقفه های خارجی raspberry pi

به نام خدای علی(ع) آفرین : در این بخش وقفه های خارجی رسبری پای رو بررسی می کنیم. ( پروژه رسبری آموزش وقفه های خارجی raspberry pi )

وقفه چیست ؟

زمانی که پردازنده در حال اجرای کارهای خود است، اگر یک وسیله خارجی با پردازنده کاری داشته باشه، پردازنده رو خبر میکنه که آهای بیا به کار من برس. مثلا هر کلید کیبورد که فشرده میشه، پردازنده باید بررسی کنه که چه کلیدی فشرده شده است. اگر بررسی نکنه یا دیر بررسی کنه کلید های بعدی میاد و کلید قبلی از دست میره. برای اینکه این اتفاق نیوفته، زمانی که کلیدی فشرده میشه، پردازنده در کاری که مشغول به انجامش هست، وقفه ایجاد میکنه و به کار کیبورد میرسه و بعد که کار کیبورد تموم شد، به ادامه کارش میرسه.
رسپری از اونجایی که معماری پردازنده اش ARM هست، مثل بقیه خانوادش (سری lpc که اینجوری بود بقیشونو نمیدونم) همه پایه های GPIO اش که قابلیت انتخاب برای ورودی و خروجی دارن، قابلیت تنظیم برای وقفه دارند.
در رسبری پای، دو نوع روال رسیدگی به وقفه داریم.

اولی، به مدت زمان دلخواه منتظر وقوع وقفه می مونه. ( پردازنده رو مشغول نگه می داره ) مثل اینکه منتظر مهمون باشیم و پشت در یه لنگه پا وایسیم تا مهمون برسه.
دومی، پردازنده رو مشغول نمی کنه و فقط پردازنده رو زمانی خبر میکنه که وقفه رخ بده. مثل اینکه قراره مهمون بیاد ولی ما به کارمون می رسیم وقتی مهمون رسید، در میزنه اون موقع میریم پشت در
پروژه رسبری آموزش وقفه های خارجی raspberry pi
قضیه از این قراره که می خوایم وقتی کلید چپ فشرده شد، ال ای دی سمت راست تغییر حالت بده و چاپ کنه کلید سمت چپ فشرده شد. و وقتی کلید سمت چپ رها شد، چاپ کنه کلید رها شد. (وقتی کلید رها شد، ال ای دی ها تغییر نکنن)
و هر وقت کلید سمت راست فشرده شد، ال ای دی سمت چپ تغییر حالت بده. و تعداد رخ دادن کلید سمت راست رو چاپ کنه. با این پروژه، هر دو نوع وقفه رو امتحان می کنیم. (یه کمی چپ و راست قاطی شد. کلید کناری مرتبط با ال ای دی کناری و کلید وسط مرتبط با ال ای دی وسط برد بورد )
موقع نوشتن کده : یه فایل پایتون بسازید. ترمینال رسبری پای رو باز کنید و توش تایپ کنید (به بزرگ و کوچک بودن حروف دقت کنید)

در فایل باز شده، کد مورد نظر رو می نویسیم

سپس ذخیره می کنیم (Ctrl+x بعدش y و بعدش اینتر)
خط اول کد : کتابخانه کار با GPIO رو فراخوانی میکنه.
خط 2: تابعی برای ایجاد تاخیر رو فراخوانی میکنه
خط 3 : اعلام های خطای GPIO رو غیر فعال میکنه.
خط 4 : مد کاری رو مشخص میکنه
خط 5 : پایه های GPIO16  و GPIO20 رو به عنوان خروجی تنظیم میکنه(برای کنترل ال ای دی ها)
خط 6,7 : پایه GPIO18  رو به عنوان ورودی تنظیم میکنه و یکیشون رو پول داون و دیگری رو پول آپ می کنه.
خط 8 : متغیری که تعداد فشرده شدن کلید سمت راست رو مشخص می کنه.
خط 9 : سرویس روتین وقفه کلید سمت راست رو تعریف می کنه
خط 10 : حالت ال ای دی سمت چپ رو تغییر میده
خط 11 : متغیر i رو از نوع عمومی قرار میده تا بتونیم اونو تغییر بدیم
خط 12,13 : یک واحد به i اضافه می شه و اونو چاپ میکنه
توجه : خط نهم تا سیزدهم وقتی اجرا میشه که کلید سمت راست فشرده شود.
خط 14 : وقفه ای از نوع Event_detect برای پایه GPIO12 می سازد(کلید سمت راست)

  1. پارامتر اول این تابع، شماره پایه ای که قراره وقفه بهش مرتبط بشه رو میگیره.
  2. پارمتر دوم، پول آپ یا پول داون شدن اون پایه رو مشخص می کنه.
  3. پارامتر سوم، میگه که وقتی وقفه رخ داد،چی کار کنم؟ما بهش می گیم برو routine رو اجرا کن.
  4. پارامتر آخر، یعنی bouncetime برای نویز گیری کلید هست. چون وقتی ما کلید رو فشار می دیم، قطع و وصل های خیلی سریعی اتفاق میوفته که باعث میشه یک وقفه چند بار رخ بده. این پارامتر، با واحد میلی ثانیه بعد از رخ دادن وقفه صبر میکنه تا وضعیت کلید تثبیت بشه.

بقیه خط ها هم تکراریه به جز (sleep(0.3 که به اندازه 300 میلی ثانیه تاخیر ایجاد میکنه. این تاخیر هم برای نویز گیری کلید سمت چپ گذاشتم.
انصافا خیلی زیادی توضیح دادم، دیگه تو قسمتای بعدی از این خبرا نیست!!!
برای اجرای برنامه، پس از تایپ قطعه کد زیر در ترمینال اینتر بزنید:

برنامه رو می تونید با Ctrl+z ببندید.
 

پروژه رسبری پای ماژول تشخیص حرکت مادون قرمز HC-SR501

ماژول مورد استفاده ما، در هیبت زیر موجود است :
وقفه خارجی رزبری پای
مشخصات ماژول تشخیص حرکت مادون قرمز HC-SR501
مشخصات ماژول تشخیص حرکت مادون قرمز HC-SR501
سه تا پایه داره VCC،GND،OUT مشخصاتشو از تو فروشگاههای اینترنتی بخونید.
و اینطور کار میکنه که وقتی یک موجود خون گرم از روبروش رد بشه، پایه خروجی اش تغییر حالت میده، در حالتی که کسی جلوش نیست،پایه 0 هست و وقتی حرکتی مشاهده شد، برای مدت معلومی پایه 1 میشه (مقدار 1 اون ولتاژ 3.3 ولت هست که مناسب اتصال به رسپری پای می باشد). دو تا پتانسیومتر هم داره که یکیش برای تنظیم زمان بین دو تشخیص هست و دیگری برای تنظیم میزان حساسیت ماژول به حرکت.
می خوایم برنامه ای بنویسیم که وقتی حرکتی حس شد، ال ای دی یه چشمک بزنه و تعداد حرکت های تشخیص داده شده رو چاپ کنه.
حالا مدار زیر رو ببندید
پروژه رسبری پای ماژول تشخیص حرکت مادون قرمز HC-SR501
یه پروژه پایتون بسازید(در ترمینال تایپ کنیدsmile

در فایل باز شده، برنامه زیر رو بنویسید:

برنامه رو ذخیره کنید و بعدش اجرا کنید:

 
مطالب مرتبط : Raspberry Pi GPIO Sensing: Motion Detection
 
به امید خدا در قسمت های بعدی، به بررسی پورت سریال رسبری پای می پردازیم.
جهت هر چه مستحکم تر شدن مقام ولایت فقیه و تعجیل درظهور بابای خوبمون مهدی(عج) صلوات

پسورد فایل های سایت :
www.dmf313.ir
Avatar دانش آموخته (فارغ التحصیل سابق) کارشناسی الکترونیک هستم. سه سال اول دانشگاه رو به نحو احسن هدر دادم رفت!! تا پایان ترم هفتم داشتم فکر می کردم که چی کار کنم و چی کار نکنم؟ ترم هشتم اساتید خوبی داشتم و تصمیم گرفتم،یه تکونی به خودم بدم. الان هم در حال یاد گیری علایقم هستم...
ارسال دیدگاه
7

1) تعداد حروف غیر فارسی از حروف فارسی بیشتر باشه دیدگاه به صورت خودکار حذف میشه.

2) به موارد درخواست پروژه/کد آماده و سوالاتی که بلد نباشم پاسخ داده نمیشه.

3) برای گزاشتن کدهاتون از این سایت استفاده کنید : debian

  1. Avatar

    مهمان

    حمیدرضا

    سلام
    خط ۷ تو برنامه دوم ارور میده که تابع یه آرگومان میتونه بگیره ولی دو تا دادیم بهش !!!
    داستان چیه ؟؟؟

    1396/04/16
    11:30
    • Avatar

      مهمان

      حمیدرضا

      آقا درست شد …
      اون تابع setmode نیست ، باید setup میذاشتم :))

      1396/05/03
      10:13
  2. Avatar

    مهمان

    کشاورزی

    سلام
    من خیلی درباره ی راسپری پای وقابلیت هاش تحقیق کردم ولی نمی دونم میصرفه که برم سراغش یا نه
    منظورم اینه که میشه ازش نون در اورد یا نه؟
    اگر میشه لطفا یه مورد به عنوان نمونه بگید.

    1395/07/02
    08:39
    • Avatar

      نویسنده این مطلب

      محمدرضا اسلامی

      سلام
      اگر سمت مباحث تر و تازه و نو برید،حتما میشه ازش پول درآورد.مثلا اگر با قدرت وارد بحث شبکه های عصبی بشید و همزمان بحث پردازش تصویر رو هم دنبال کنید،با تلفیق این دوتا روی رسپری میشه یه سیستمی برای تشخیص چهره ساخت که مثلا جلو درب ورودی شرکت یا دانشگاه یا … قرار بگیره واتوماتیک درب رو برای افراد آشنا باز کنه.ویا دوربین پلاک خون ماشین بسازید که اتوموبیل هایی که از یک محور عبور میکنن،رو بشمره و پلاکشون رو هم ذخیره کنه.(سختیش در حد دوربینای تشخیص سرعته) و خیلی چیزای دیگه. smile که میشه باهاش کار کرد.که تنها چیزایی که می خواد،یه عزم جزم و وقت و حوصله هست.

      1395/07/02
      11:41
  3. مهدی دمرچیلو

    مدیر سایت

    مهدی دمرچیلو

    دادا ممنون ولی چند تا مورد heart
    آقا موجود خون سرد هم مگه داریم؟ laugh
    آقا یه سوال – تو مطب گفتی
    “در رسبری پای، سه نوع روال رسیدگی به وقفه داریم.”
    حالت اول و دوم رو گفتی – این حالت سوم چیه؟
    خط 18و21 پروژه اولی متن داخل
    ’’
    هستش در حالی که فک کنم باید داخل
    ''
    باشه – درست میگم؟ یا همینی که هستش درسته؟

    1395/06/31
    09:20
    • Avatar

      نویسنده این مطلب

      محمدرضا اسلامی

      بله .موجودی که دمای بدنش با دمای محیط یکی باشه
      سه تا روال اشتباه لپی بود که تصحیح شد
      خط 18 و 21 درسته

      1395/06/31
      10:04
    • Avatar

      نویسنده این مطلب

      محمدرضا اسلامی

      البته فرقی نداره که ‘ بذاریم یا ” بذاریم .پایتون خیلی زبون بفهمه

      1395/06/31
      10:09