پالس PWM از مهم ترین پالس های سیگنال در سیستم های دیجیتال به شمار می رود. پالس PWM می تواند ولتاژی بین ۰ الی ۵ ولت را ایجاد کند. در حقیقت این پالس منطق فازی را روی منطق بولین ایجاد می کند. برد آردوینو UNO از پالس PWM پشتیبانی می کند. این برد می تواند به صورت سخت افزاری، ۶ پایه PWM تعیین کند. بدین ترتیب این برد می تواند ۶ پایه را به صورت همزمان ایجاد کند. در این آموزش قصد داریم تا ۶ پایه PWM را از راه دور و به کمک پیامک کنترل کنیم. در این سیستم ما می توانیم از راه دور و با ارسال تنها یک پیامک، وضعیت پالس PWM را کنترل کنیم. با کنترل وضعیت پالس می توان سرعت موتور، شدت نور و… را کنترل نمود. در این پروژه جهت اجرای هرچه سریعتر، از سیستم عامل FreeRTOS استفاده می کنیم. به کمک این سیستم عامل می توان ضمن تعریف چندین برنامه روی یک برد، به صورت همزمان برنامه های مختلف جهت کنترل پالس PWM و مدیریت پیامک را اجرا نمود. در ادامه با مرجع تخصصی سیستم عامل FreeRTOS به زبان فارسی، دیجی اسپارک همراه باشید.
شرح پروژه کنترل PWM پیامکی
در این پروژه قصد داریم تا ۶ کانال PWM برد آردوینو UNO را از طریق پیامک کنترل کنیم. بدین ترتیب با تعیین شماره کانال، می توانید مقدار دیجیتال معادل ولتاژ خروجی آنالوگ را بین ۰ تا ۲۵۵ تنظیم کنید. شماره کانال و میزان پالس PWM را در قالب پیامک تنظیم کرده و به دستگاه ارسال می کنید. بدین ترتیب می توانید سیستم را کنترل کنید. از طرف دیگر، به لطف وجود سیستم عامل، درخواست های پیامک مدیریت شده و همزمان با آن پالس PWM در خروجی تنظیم خواهد شد. بدین ترتیب، نقطه اصلی این پروژه برد آردوینو است. برد آردوینو وظیفه مدیریت درخواست ها و اجرای آن ها را بر عهده دارد. این برد می تواند تحت دستورات سیستم عامل، برنامه را اجرا کند.
در ادامه، جهت دریافت پیامک، از ماژول SIM800L استفاده می کنیم. این ماژول یک واحد مخابراتی تمام عیار است. ماژول SIM800L دقیقا مثل یک تلفن همراه عمل می کند. این ماژول می تواند به ارسال و دریافت پیامک، برقراری تماس تلفنی، اتصال به اینترنت و… بپردازد. این ماژول دارای پورت سریال UART بوده و می تواند به دریافت فرامین، درخواست های کاربر را اجرا کند.
درباره سیستم عامل FreeRTOS
FreeRTOS یک سیستم عامل رایگان و منبع باز برای میکروکنترلرها و تراشههایی با منابع محدود است. این سیستم عامل به طور خاص برای سیستمهای ریزکنترلی و میکروکنترلر طراحی شده است. این سیستم عامل به طور گسترده در صنایع مختلف از جمله اتوماسیون صنعتی، رباتیک، دستگاههای پزشکی، تجهیزات شبکه و بسیاری از دستگاههای هوشمند استفاده میشود. FreeRTOS با ارائه یک محیط عملیاتی بسیار سبک و قابل اعتماد، قابلیتهای بسیاری را برای برنامه نویسان فراهم میکند. این سیستم عامل قابلیتهایی مانند برنامهریزیهای زمان مشترک، مدیریت وظایف، صفها، سمافورها و سایر روشهای هماهنگسازی را فراهم میکند. علاوه بر این، FreeRTOS قابلیتهای مدیریت حافظه، کنترل دسترسی به دادهها و مدیریت دادههای ورودی/خروجی را نیز داراست. یکی از مزیتهای بزرگ FreeRTOS، سبک بودن آن است. این سیستم عامل به صورت فوقالعاده کوچک و بهینه طراحی شده است و بهراحتی بر روی میکروکنترلرهای با منابع محدود اجرا میشود. به دلیل سبک بودن و عدم نیاز به منابع سنگین، FreeRTOS از نظر حجم حافظه و استفاده از پردازنده بسیار کمتر از سایر سیستم عاملها استفاده میکند. همچنین، FreeRTOS از بوت استرپ سریع پشتیبانی میکند که به برنامه نویسان امکان میدهد سیستم عامل را بهسرعت راهاندازی کنند و وظایف را اجرا کنند. این سیستم عامل همچنین از انعطافپذیری بالا برخوردار است و میتواند به سادگی به نیازهای خاص برنامه نویسان سازگار شود. در کل، FreeRTOS یک سیستم عامل سبک، منبع باز و قابل اعتماد است که برای برنامه نویسان میکروکنترلر و سیستمهای ریزکنترلی گزینهی مناسبی است. با ارائه قابلیتهای برنامهریزی واقعزمانی و مدیریت منابع محدود، FreeRTOS اجرای بهینه و قابل اطمینان برنامهها را تضمین میکند.
نصب کتابخانه سیستم عامل FreeRTOS
همانطور که اطلاع دارید، کتابخانه ها یکی از ابزارهای کلیدی و کاربردی در برنامه نویسی به شمار می روند. به کمک این ابزار، می توانیم توابع نوشته شده در فایلهایی به نام کتابخانه ذخیره کرده و سپس در پروژه های متعدد از آن استفاده کنیم. همانطور که پیشتر گفته شد، برای راه اندازی و کار با سیستم عامل، کتابخانه توسعه داده شده است. برای استفاده از این کتابخانه، ابتدا باید آن را نصب کنیم. برای نصب کتابخانه در محیط آردویینو، ابتدا مطابق تصویر زیر بر روی گزینه Tools و سپس Manage Libraries کلیک کنید.
در مرحله بعد، در منوی جست و جوی کتابخانه ها. جهت نصب کتابخانه، freertos را تایپ کنید. با تایپ این عبارت با تصویر زیر رو به رو خواهید شد. مطابق تصویر، کتابخانه مشخص شده با کادر قرمز رنگ را نصب نمایید.
مفهوم PWM و کنترل آن در بردهای آردوینو
PWM یا Pulse Width Modulation یک روش است که در آردوینو و سایر میکروکنترلرها برای تولید سیگنالهای مربعی استفاده میشود. با استفاده از PWM، میتوانید میزان وقفه و عرض پالس یک سیگنال را کنترل کنید و بدین ترتیب سیگنال آنالوگ متغیری تولید کنید. PWM در واقع سیگنالی دیجیتال است که به صورت یک سری پالسهای دیجیتال با فرکانس ثابت تولید میشود. با تغییر طول پالسها در طول یک دوره، میتوان میزان میانگین ولتاژ خروجی را تنظیم کرد و اثر متقارنی با سیگنال آنالوگ را به دست آورد. در آردوینو، شما میتوانید از توابع PWM موجود در کتابخانهی معروف “Arduino” استفاده کنید. با استفاده از این توابع، میتوانید یک پین خروجی را به حالت PWM تنظیم کرده و با تنظیم مقدار duty cycle (نسبت طول پالس فعال به طول کل دوره)، ولتاژ متوسط خروجی را تغییر دهید. به عبارت دیگر، میتوانید میزان روشنایی یک LED، سرعت یک موتور، و یا میزان خروجی صدا را کنترل کنید. به طور معمول، طول یک دوره PWM ثابت است و معمولا برابر با ۲۵۶ یا ۴۹۲ است. اما مقدار duty cycle را میتوانید بین ۰ و ۱۰۰٪ تغییر دهید، که معادل با نسبت میانگین زمان فعال بر طول دوره است. به عنوان مثال، با تنظیم duty cycle به ۵۰٪، شما وقفه و فعالیت بازهای با نسبت زمانی ۵۰٪ به ۵۰٪ در یک دوره PWM تولید میکنید که معادل با سیگنال آنالوگ با میانگین ولتاژ ۵۰٪ خواهد بود. با استفاده از PWM، میتوانید کنترل دقیقتری روی خروجیهای آنالوگ خود داشته باشید و وظایف متنوعی مانند کنترل موتورها، روشنایی LEDها و کنترل سرعت فنها را انجام دهید.
آپلود برنامه کنترل PWM پیامکی
پس از آشنایی با قطعات، نوبت به آپلود برنامه روی برد میرسد. کدهای زیر را روی برد آردوینو UNO خود آپلود کنید. توابع به کار رفته در این کد براساس کتابخانه Arduino_FreeRTOS.h است. پس از نصب این کتابخانه دستوراتی که در این کد نوشته شده است قابل پیاده سازی هستند.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
شماتیک و اتصالات
پس از آپلود برنامه، نوبت به شماتیک و اتصالات پروژه کنترل PWM پیامکی میرسد. در این پروژه جهت مشاهده PWM از LED استفاده کرده ایم. لطفا به تصویر زیر که فرم کلی اتصالات را نمایش میدهد، دقت کنید. به این ترتیب توسط ارسال پیامک میتوانید سیگنال PWM را کنترل کنید.
در ادامه، مطابق تصویر فوق اتصالات را ادامه می دهیم.
اتصالات ماژول سیم کارت
- اتصال ورودی مثبت ماژول کاهنده ولتاژ به پایه VIN آردوینو
- اتصال ورودی منفی ماژول کاهنده ولتاژ به GND آردوینو
- تنظیم ولتاژ خروجی ماژول کاهنده ولتاژ روی ۴ ولت
- اتصال پایه مثبت خروجی ماژول کاهنده ولتاژ به پایه VCC ماژول SIM800L
- اتصال پایه منفی خروجی کاهنده ولتاژ به پایه GND ماژول SIM800L
- اتصالات برد آردوینو و ماژول SIM800L
- اتصال پایه GND ماژول SIM800L به پایه GND آردوینو
- اتصال پایه TX ماژول SIM800L به پایه RX آردوینو
- اتصال پایه TX آردوینو به پایه RX ماژول SIM800L با یک تقسیم مقاومتی هر کدام یک کیلو اهم
اتصالات LED ها
در رابطه با ال ای دی ها دقت کنید که هر کدام با یک مقاومت یک کیلو اهمی به پایه های PWM مشخص شده در تصویر و در طرف دیگر به GND متصل شده اند!
اجرای پروژه کنترل PWM پیامکی
پس از برقراری اتصالات نوبت به اجرای پروژه می رسد. جهت اجرای پروژه باید پیامکی حاوی شماره کانال PWM و میزان پالس آن را به صورت پیامک، ارسال کنیم. به همین جهت، به فرمت !channel,pwm# عمل می کنیم. به عنوان مثال فرض کنید روی کانال ۶ PWM، قصد داریم میزان پالس را روی ۱۲۸ تنظیم کنیم. بدین ترتیب به شکل زیر پیامک را ارسال می کنیم.
توجه: متن پیامک باید بین ! و # قرار گیرد. ۶,۱۲۸#!
لوازم مورد نیاز
لینک خرید برد آردوینو، کلیک کنید
لینک خرید ماژول SIM800L، کلیک کنید
لینک خرید ماژول کاهنده ولتاژ، کلیک کنید
لینک خرید فیش مادگی آداپتور، کلیک کنید
لینک خرید مقاومت یک کیلو اهمی، کلیک کنید
جمع بندی
در این پروژه به طراحی و پیاده سازی یک سیستم کنترل PWM از راه دور پرداختیم. این سیستم می تواند با دریافت پیامک کاربر، شماره کانال و میزان PWM را دریافت و سپس اجرا کند. بدین ترتیب شما می توانید تنها با ارسال یک پیامک، وضعیت کانال های PWM را کنترل کنید. در این پروژه جهت اجرای سریع و بدون وقفه، از سیستم عامل بلادرنگ FreeRTOS استفاده کرده ایم. به کمک این سیستم عامل می توانیم به صورت همزمان هم پایه های PWM و هم پیامک های کاربر را مدیریت کنیم. بدین ترتیب بدون کوچترین وقفه در عملکرد سیستم، همزمان با دریافت پیامک، پایه های PWM در حال کنترل پالس خروجی خود هستند.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.