پروژه راه اندازی ماژول مادون قرمز IR sensor با میکروکنترلر STM32

پروتکل انتقال مادون قرمز NEC، از رمزگذاری طول پالس بیت های پیغام استفاده می کنه. طول هر پالس به اندازه 562.5 میکروثانیه روی موج حامل با فرکانس 38KHz هست. برای اینکه بتونیم درک بهتری از نحوه ارسال داده توسط این پروتکل داشته باشیم، شکل زیر به ما کمک شایانی میکنه

 

راه اندازی ماژول مادون قرمز IR sensor با میکروکنترلر STM32

 

مطابق تصویر بالا، هر بار که کلیدی رو ریموت کنترل فشرده میشه، پیغام ارسالی شامل موارد زیر خواهد بود:

  • یک پالس با طول 9 میلی ثانیه(16 برابر طول پالسی که برای ارسال صفر و یک منطقی استفاده میشه)
  • 4.5 میلی ثانیه سطح پایین سیگنال یا اصطلاحا space
  • 8 بیت داده برای آدرس دستگاه دریافت کننده address 
  • 8 بیت داده برای معکوس آدرس دستگاه دریافت کننده inverse of the address
  • 8 بیت داده فرمانcommand
  • 8 بیت داده معکوس فرمان inverse command  
  • یک پالس به طول 562.5 میکروثانیه، نشان دهنده پایان پیام 

به صورت کلی در پروتکل NEC، برای ارسال بیت های منطقی به صورت زیر عمل میشه:

  • سطح 0 صفر: پالس به طول 562.5 میکروثانیه و space به اندازه 562.5 میکروثانیه
  • سطح 1 یک: پالس به طول 562.5 میکروثانیه و space به اندازه 1.6875 میلی ثانیه

همین حد اطلاعات در مورد تئوری کار کفایت میکنه. از الان به بعد ما باید با هم بررسی کنیم که کد خودمون رو برای این قضیه چجوری بنویسیم.

با توجه به شکل بالا، ما در میکروکنترلر خودمون پایه دیتای ماژول رو به عنوان اینتراپت خارجی با لبه پایین رونده تنظیم میکنیم. همچنین یک تایمر رو هم که هر بار شمارش اون 1 میکروثانیه طول میکشه با حداکثر مقدار ARR پیکربندی میکنیم.

در صورتی که اینتراپت ما تحریک یا اصطلاحا trigger بشه، زمان اندازه گیری شده توسط تایمر رو بررسی میکنیم. اگر این زمان از 8000 میکروثانیه بیشتر باشه، ما اون رو به عنوان شروع ارسال پیام در نظر میگیریم.

برای تشخیص صفر و یک منطقی هم کار به طور مشابه انجام میشه! در صورتی که زمان اندازه گیری شده توسط تایمر از 1700 میکرو ثانیه بیشتر بشه، داده دریافتی رو 1 در نظر میگیریم و در صورتی که کانتر تایمر زمانی بیشتر از 1000 میکروثانیه رو نشون بده ما اون رو 0 منطقی در نظر میگیریم.

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

نیاز به توضیح بیشتری نیست و گام به گام در نرم افزار stm32cubemx و IDE خودمون پیکربندی های مورد نیاز رو انجام میدیم و کد خودمون رو مینویسیم. ما برای این آموزش از میکروکنترلر STM32F030R8T6 استفاده خواهیم کرد.

 

فعالسازی دیباگ

 

راه اندازی ماژول مادون قرمز IR sensor با میکروکنترلر STM32

 

تنظیمات کلاک

 

راه اندازی ماژول مادون قرمز IR sensor با میکروکنترلر STM32

 

تنظیمات اینتراپت خارجی

 

راه اندازی ماژول مادون قرمز IR sensor با میکروکنترلر STM32

 

راه اندازی ماژول مادون قرمز IR sensor با میکروکنترلر STM32

 

راه اندازی ماژول مادون قرمز IR sensor با میکروکنترلر STM32

 

تنظیمات تایمر

 

راه اندازی ماژول مادون قرمز IR sensor با میکروکنترلر STM32

 

سورس کد برنامه

 

راه اندازی ماژول مادون قرمز IR sensor با میکروکنترلر STM32

 

راه اندازی ماژول مادون قرمز IR sensor با میکروکنترلر STM32

 

نتیجه اجرای برنامه با ریموت کنترل IR دلخواه

 

راه اندازی ماژول مادون قرمز IR sensor با میکروکنترلر STM32

 

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

 

امیدواریم که از این آموزش استفاده برده باشید!

 

دانلود فایل پروژه

IR Sensor ESF Drive.rar

 

منبع 1

 

منبع 2

 

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

 

 

 

 

 

 

۵
از ۵
۴ مشارکت کننده

بلاگ تخصصی اصفهان درایو