پیش از هر چیز لازم است به این نکته اشاره کنیم که اینترنت اشیا (IoT) و اشیای هوشمند توان محاسباتی خود را مدیون میکروکنترلر ها یا MCU ها هستند. میکروکنترلرها کامپیوترهای کوچکی هستند که با تکیه بر توان پردازشی، حافظه (memory) و پورتهای ورودی و خروجی خود دستگاههای هوشمند را به کار میاندازند. در این مقاله، به معرفی کامل میکروکنترلرهای مورد استفاده در حوزه IoT و بررسی خصوصیات آن ها میپردازیم.
همراه ما باشید.
عناوینی که در این مقاله قصد داریم در مورد اون ها صحبت کنیم:
-
منظور از میکروکنترلر برای IoT چیست؟
-
مقایسه میکروکنترلر و ریزپردازنده
-
ویژگیهای مهم میکروکنترلرها
-
RTOS/OS میکروکنترلرها
-
چگونه بهترین میکروکنترلر را برای IoT انتخاب کنیم؟
-
فهرستی از بهترین میکروکنترلرهای مناسب برای IoT
منظور از میکروکنترلر برای IoT چیست؟
زمانی که صحبت از میکروکنترلر برای IoT به میان میآید، بهتر است نگاهی به پشته IoT یک دستگاه تعبیه شده (embedded) بیندازیم و ببینیم این قطعه در کدام قسمت از دستگاه به کار رفته است.
پشته یک دوربین هوشمند IoT احتمالا بدین شکل است:
-
لایه پروتکل ارتباطی
-
لایه انتزاعی سختافزاری (HAL) یا Hardware abstraction layer
-
لایه OS/RTOS
MCU در لایه انتزاعی سختافزاری (HAL) عمل میکند و OS/RTOS مورد نظر را اجرا میکند و سپس OS/RTOS دستگاه را به کار میاندازد.
مقایسه میکروکنترلر و ریزپردازنده
در ابتدا به مهمترین سوال یعنی “تفاوت اصلی یک ریزپردازنده با یک میکروکنترلر در چیست؟” می پردازیم. ریزپردازنده (microprocessor) یک تراشه کوچک است که شامل CPU می باشد. با این وجود، ریزپردازندهها فاقد حافظه RAM یا ROM و هر دستگاه جانبی دیگری هستند. این تراشه را میتوان از طریق پورتهای ورودی و خروجی به حافظه و دیگر دستگاههای جانبی متصل کرد.
در مقابل، یک میکروکنترلر شامل CPU، RAM، ROM و دستگاههای جانبی است و تمامی این قطعات فقط در یک تراشه تعبیه شدهاند. همین ویژگیها است که میکروکنترلر را به کامپیوتری روی یک تراشه تبدیل میکند.
با توجه به این موضوع طبیعی است که عملکرد یک میکروکنترلر ضعیفتر از کامپیوتری باشد که به ریزپردازنده مجهز است. با تمامی این اوصاف، بهتر است در دستگاههای هوشمند نظیر ماشینهای صنعتی هوشمند از میکروکنترلرها استفاده کرد، زیرا این تراشهها در عین سادگی و کاهش هزینهها توان محاسباتی قابل قبولی دارند.
ویژگیهای میکروکنترلر
صدها مدل CPU در بازار یافت میشود، به همین دلیل بهتر است قبل از خرید CPU برای پروژه IoT خود شناخت کاملی از ویژگیها و خصوصیات آنها به دست آورید.
بیتها
اصلیترین تفاوتی که میان MCU های مختلف وجود دارد، مربوط به بیتها است. در حال حاضر، میکروکنترلرها به لحاظ بیت به 5 دسته تقسیم میشوند که در ادامه با انواع آن ها آشنا خواهید شد:
- 4-8 بیت: این نوع میکروکنترلرها در برنامههای کنترل از راه دور و سایر برنامههای ارزان به کار میروند. به طور کلی، این میکروکنترلرها برای استفاده در برنامههای IoT مناسب نیستند.
- 8 بیت: این نوع میکروکنترلرها بیشتر در برنامههای پیچیده با هزینه محدود استفاده میشوند. در صورت راهاندازی صحیح میتوان از این نوع میکروکنترلرها در برنامههای IoT استفاده کرد. میکروکنترلرهای 8 بیتی گاهی اوقات روی RTOS اجرا میشوند، اما بیشتر مواقع با یک حلقه کنترل (Control loop) ساده میتوان آنها را اجرا کرد. پروژه Arduino یک نمونه شناختهشده از میکروکنترلرهای 8 بیتی است.
- 16 بیت: استفاده از این نوع میکروکنترلرها در IoT متداول نیست. به طور معمول از میکروکنترلرهای 8 و 32 بیتی در برنامههای IoT استفاده میشود.
- 32 بیت: به طور معمول از این نوع میکروکنترلرها در برنامههای IoT استفاده میشود، مگر اینکه هزینه محدودی برای برنامه در نظر گرفته شده باشد و بتوان آن را با معماری 8 بیتی اجرا کرد. با این وجود، تفاوت قیمت معماریهای 8 بیتی و 32 بیتی به اندازهای کم است که بهتر است توسعهدهندگان به هنگام خرید معماری 8 بیتی کمی بیشتر فکر کنند. اینکه آیا این نوع MCU ها RTOS یا OS را اجرا کنند تا حد زیادی به توان محاسباتی MCU بستگی دارد و اینکه آیا واحد MMU دارد یا خیر. یکی از معماریهای محبوب 32 بیتی رزبری پای (Raspberry Pi) است.
- 64 بیت: این نوع میکروکنترلرها در سیستمهای گران، معمولاً در Linux یا دیگر سیستم عاملها، به کار میروند. اگر قصد دارید به جای میکروکنترلر 32 بیتی از میکروکنترلر 64 بیتی استفاده کنید، حتماً باید یک دلیل منطقی (برای مثال، در صورتی که حجم محاسبات بسیار زیاد باشد) داشته باشید.
معماری
بیشتر MCU ها از یکی از سه معماری متداول زیر استفاده میکنند:-
ARM
-
MIPS
-
X86
RAM
حافظه RAM ها بسیار متفاوت است. برای مثال، RAM در میکروکنترلرهای 8 بیتی حدوداً 16 بایت و در میکروکنترلرهای 32 و 64 بیتی حدوداً 4.5 مگابایت است. به اعتقاد بیشتر افراد، هر چه RAM بیشتر باشد بهتر است، اما توجه داشته باشید که افزایش RAM به معنای افزایش چشمگیر هزینهها نیز است.
GPIO
GPIO مخفف عبارت general-purpose input/output (ورودی/خروجی همه منظوره) است. GPIO پینهایی هستند که امکان اتصال سختافزارهایی نظیر سنسورها را به CPU فراهم میکنند. تعداد GPIOها را نیز همانند RAM میتوان تغییر داد تا با انواع پشتههای دستگاه سازگار شوند.
اتصال
CPUهای مختلف به روشهای مختلفی از جمله پروتکلهای Wi-Fi، Bluetooth و پورتهای سیمی اترنت، اتصال را برقرار میکنند.
RTOS/OS برای میکروکنترلرها
سیستم عاملهایی که در بازار برای MCU ها یافت میشوند، عبارتند از:
RTOS
RTOS مخفف Real-Time Operating System است. این نرمافزار هر بار فقط میتواند یک برنامه را اجرا کند، اما برای اینکه بتواند چندین کار را به صورت همزمان انجام دهد پس از انجام هر یک از مسائل برنامهنویسی سریعاً به سراغ دیگری میرود.
این نرمافزار به وقایع بیرونی به صورت آنی پاسخهای deterministic hard میدهد، به عبارت دیگر، نرمافزار RTOS میتواند با سرعت بیشتری نسبت به OS های سنتی تعداد مشخصی از مسائل را که از قبل تعیین شدهاند، پردازش کند و همین ویژگی در دستگاههای IoT یک مزیت به شمار میآید.
OS
OS نوعی سیستم عامل سنتی، همچون Linux، است. OS برخلاف RTOS به صورت آنی پاسخهای non-deterministic soft ارائه میدهد. به بیان دیگر، این نوع سیستم عامل در پردازش حجم بالایی از مسائل گوناگون بسیار موفقتر از RTOS عمل میکند، اما برای انجام این کار به توان پردازشی بالایی نیاز دارد. از این روی، OS فقط در میکروکنترلرهای 32 و 64 بیتی یافت میشود که واحد MMU دارند.
Bare Metal
برخی از CPU ها سیستم عامل ندارند و در عوض، میان افزار (firmware) مستقیماً در سختافزار رایت میشود. برنامهنویسی bare metal در دستگاههای تعبیهشده قدیمی و میکروکنترلرهای IoT بسیار رایج است.
با توجه به اینکه توان پردازشی MCU افزایش و هزینههای آن کاهش یافته است، تعداد دستگاههای کمتری با bare metal کار میکنند. با این حال، زمانیکه حافظه MCU پایین است و یا زمانی که ترجیح میدهید بر تک تک قطعات سختافزار کنترل داشته باشید بهتر است از bare metal استفاده کنید.
چگونه بهترین میکروکنترلر را برای IoT انتخاب کنیم؟
همانگونه که پیش از این گفتیم، میکروکنترلرهای زیادی وجود دارند که میتوان از آنها در پروژههای IoT استفاده کرد. در قسمت بعد، فهرستی از MCU های متداول ارائه میدهیم، اما پیش از هر چیز نشان میدهیم که چگونه میتوان بهترین میکروکنترلر را برای IoT انتخاب کرد.
حافظه
میزان حافظهای که انتخاب میکنید بر عملکرد دستگاه اثر میگذارد. به همین دلیل، به دقت میزان حافظهای ( RAM و ROM ) که دستگاه برای امور برنامهنویسی به آن احتیاج دارد را محاسبه کنید.
علاوه بر این، باید مطمئن شوید که در آینده پس از هر بار بهروز رسانی ظرفیت کافی برای ذخیره بهروزرسانیها را دارید.
برق مصرفی
یکی دیگر از مؤلفههایی که در هنگام خرید میکروکنترلر باید به آن توجه کنید میزان برق مصرفی است. برای مثال، یک دستگاه پزشکی هوشمند (مجهز به اینترنت اشیا) نظیر سمعک با یک باتری کم مصرف نیز میتواند کار کند. در مقابل، تجهیزات هوشمند صنعتی برق زیادی مصرف میکنند، اما بدیهی است که انتخاب شما دستگاههایی است که برق کمتری مصرف میکنند.
اینترنت و پروتکلهای ارتباطی
نحوه اتصال دستگاه IoT به برنامه از چه طریقی است؟ دستگاه IoT چه نوع دادههایی ارسال میکند و این دادهها به کجا ارسال میشوند؟ آیا لازم است این دستگاه به طور محلی با دیگر دستگاهها ارتباط برقرار کند؟
برای مثال، ممکن است سیستمهای هشدار ساختمانهای مسکونی به پروتکلهای Wi-Fi نیاز داشته باشند. در مقابل، ممکن است سیستمهای اینترنت اشیا HVAC ادارات به پورتهای سیمی اترنت نیاز داشته باشند. برای اتصال دستگاه به دستگاههای دیگر به صورت محلی میتوان از Bluetooth استفاده کرد و دستگاههایی که خارج از دامنه Wi-Fi قرار دارند برای اتصال به دستگاههای دیگر به دیتای 4G نیاز دارند.
پورتهای ارتباطی
برای اینکه مشخص کنید در میکروکنترلر خودتان به چند GPIO نیاز دارید، ابتدا باید مشخص کنید که دستگاهتان به چه ورودیهای دادهای نیاز دارد. علاوه بر این، توجه داشته باشید که CPU دارای پورت دیجیتال و پورتهای آنالوگ است و انواع مختلف دادههای ورودی و خروجی را پردازش میکند.
معماری
همانگونه که پیش از این نیز گفتیم، بسیاری از میکروکنترلرها از یکی از معماریهای ARM، MIPS و X86 استفاده میکنند. از این رو، باید معماریای را انتخاب کنید که با ویژگیهای دستگاه و سیستم شما (نظیر پورتهای ورودی و خروجی، پردازش داده و میزان برق مصرفی) سازگاری داشته باشد.
جامعه توسعهدهندگان و حمایت آنها
چنانچه تیم و یا سازمان شما هیچ تجربهای در زمینه کار با میکروکنترلرها ندارد، لازم است تولیدکننده و جامعه توسعهدهندگان از شما حمایت و پشتیبانی کنند. عموماً، به همراه محصولات، اسناد (document) جامع و کاملی ارسال میشود. علاوه بر آن، برای دریافت هرگونه کمکی از سوی جامعه توسعهدهندگان میتوانید به وبسایتهایی نظیر StackOverflow و Reddit مراجعه کنید.
هزینه
در هنگام ارزیابی هزینهها لازم است آینده را نیز در نظر داشته باشید. هیچ دلیلی ندارد که برای ساخت یک نمونه اولیه از بوردی استفاده کنید که مقیاسبندی آن هزینهبر است. علاوه بر این، توجه داشته باشید برخی از MCU ها به ازای هر درایور دستگاه هزینه صدور مجوز (licensing fees) دریافت میکنند.
اصول و نکات امنیتی
یکی از مواردی که در تمامی پروژههای IoT باید به آن توجه داشت، امنیت است و باید آن را در سراسر پشته مهندسی کرد. ویژگیهای امنیتی استاندارد در بوردهای تجاری شامل cryptographic bootloader، شتابدهندههای سختافزاری، لایه های سپر محافظتی (shield layers) و واحدهای حفاظتی مموری میشوند.
فهرستی از میکروکنترلرهای مناسب برای IoT
در ادامه می توانید با توجه به خصوصیات و مواردی که در بالا ذکر کردیم میکروکنترلر مد نظرتون را بر اساس نیاز های پروژه IoT فعلی خود انتخاب کنید.
-
ESP8266
-
ESP32
-
ATMEL AVRs
-
ATMEGA32 series
-
ATMEGA16 series
-
AVR128 series
-
Microchip
-
PIC18 series (including PIC12 and PIC16)
-
PIC32 series
-
SAM series
-
NXP
-
LPC series (ARM Cortex-M0)
-
K32 Series (ARM Cortex-M4/M0)
-
LPC55x Series (ARM CortexM33)
-
i.MX series (Cortex-M7)
-
Texas Instruments
-
SimpleLink series (ARM Cortex M4)
-
MSP430 series (MSP432)
-
C2000
-
CC3200/CC3120/CC3220 SERIES (WI-FI ENABLED)
-
Renesas
-
S1/S3/S5/S7 series
-
8051 Intel
جمعبندی
در زمان انتخاب میکروکنترلر مناسب برای پروژههای IoT باید عوامل زیادی را در نظر بگیرید. از جمله این عوامل میتوان به میزان برق مصرفی، معماری، حافظه، پورتهای ارتباطی، هزینهها و اصول و نکات امنیتی اشاره کرد که در این مقاله سعی کردیم اطلاعات جامعی در اختیار شما قرار دهیم.