|
|
<!--
|
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
|
{
|
|
|
"original_hash": "9dd7f645ad1c6f20b72fee512987f772",
|
|
|
"translation_date": "2025-08-25T22:22:16+00:00",
|
|
|
"source_file": "1-getting-started/lessons/2-deeper-dive/README.md",
|
|
|
"language_code": "fa"
|
|
|
}
|
|
|
-->
|
|
|
# بررسی عمیقتر اینترنت اشیا (IoT)
|
|
|
|
|
|

|
|
|
|
|
|
> اسکچنوت توسط [نیتیا ناراسیمهان](https://github.com/nitya). برای مشاهده نسخه بزرگتر روی تصویر کلیک کنید.
|
|
|
|
|
|
این درس به عنوان بخشی از [سری Hello IoT](https://youtube.com/playlist?list=PLmsFUfdnGr3xRts0TIwyaHyQuHaNQcb6-) از [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=academic-17441-jabenn) تدریس شده است. این درس در قالب دو ویدیو ارائه شده است - یک درس یک ساعته و یک جلسه پرسش و پاسخ یک ساعته که به بخشهای مختلف درس عمیقتر پرداخته و به سوالات پاسخ میدهد.
|
|
|
|
|
|
[](https://youtu.be/t0SySWw3z9M)
|
|
|
|
|
|
[](https://youtu.be/tTZYf9EST1E)
|
|
|
|
|
|
> 🎥 برای مشاهده ویدیوها روی تصاویر بالا کلیک کنید
|
|
|
|
|
|
## آزمون پیش از درس
|
|
|
|
|
|
[آزمون پیش از درس](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/3)
|
|
|
|
|
|
## مقدمه
|
|
|
|
|
|
این درس به بررسی عمیقتر برخی از مفاهیمی میپردازد که در درس قبلی مطرح شدهاند.
|
|
|
|
|
|
در این درس به موضوعات زیر خواهیم پرداخت:
|
|
|
|
|
|
* [اجزای یک برنامه اینترنت اشیا](../../../../../1-getting-started/lessons/2-deeper-dive)
|
|
|
* [بررسی عمیقتر میکروکنترلرها](../../../../../1-getting-started/lessons/2-deeper-dive)
|
|
|
* [بررسی عمیقتر کامپیوترهای تکبرد](../../../../../1-getting-started/lessons/2-deeper-dive)
|
|
|
|
|
|
## اجزای یک برنامه اینترنت اشیا
|
|
|
|
|
|
دو جزء اصلی یک برنامه اینترنت اشیا عبارتند از *اینترنت* و *چیز*. بیایید این دو جزء را با جزئیات بیشتری بررسی کنیم.
|
|
|
|
|
|
### چیز (Thing)
|
|
|
|
|
|

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

|
|
|
|
|
|
انواع بسیار متنوعی از دستگاهها میتوانند به عنوان دستگاههای اینترنت اشیا عمل کنند، از سختافزارهای اختصاصی که یک چیز خاص را حس میکنند، تا دستگاههای چندمنظوره، حتی گوشی هوشمند شما! یک گوشی هوشمند میتواند از حسگرها برای تشخیص دنیای اطراف خود استفاده کند و از عملگرها برای تعامل با دنیا - برای مثال، استفاده از حسگر GPS برای تشخیص موقعیت مکانی شما و یک بلندگو برای ارائه دستورالعملهای مسیریابی به مقصد.
|
|
|
|
|
|
✅ به سیستمهای دیگری که در اطراف شما وجود دارند و دادهها را از یک حسگر میخوانند و از آن برای تصمیمگیری استفاده میکنند فکر کنید. یک مثال میتواند ترموستات یک فر باشد. آیا میتوانید مثالهای بیشتری پیدا کنید؟
|
|
|
|
|
|
### اینترنت
|
|
|
|
|
|
بخش **اینترنت** در یک برنامه اینترنت اشیا شامل برنامههایی است که دستگاه اینترنت اشیا میتواند برای ارسال و دریافت داده به آنها متصل شود، و همچنین برنامههای دیگری که میتوانند دادههای دستگاه اینترنت اشیا را پردازش کرده و به تصمیمگیری در مورد درخواستهایی که باید به عملگرهای دستگاه اینترنت اشیا ارسال شوند کمک کنند.
|
|
|
|
|
|
یک تنظیم معمول میتواند شامل یک نوع سرویس ابری باشد که دستگاه اینترنت اشیا به آن متصل میشود، و این سرویس ابری وظایفی مانند امنیت، دریافت پیامها از دستگاه اینترنت اشیا و ارسال پیامها به دستگاه را مدیریت میکند. این سرویس ابری سپس به برنامههای دیگری متصل میشود که میتوانند دادههای حسگر را پردازش یا ذخیره کنند، یا از دادههای حسگر همراه با دادههای دیگر سیستمها برای تصمیمگیری استفاده کنند.
|
|
|
|
|
|
دستگاهها همیشه مستقیماً از طریق WiFi یا اتصالات سیمی به اینترنت متصل نمیشوند. برخی دستگاهها از شبکههای مش برای ارتباط با یکدیگر از طریق فناوریهایی مانند بلوتوث استفاده میکنند و از طریق یک دستگاه هاب که اتصال اینترنت دارد به اینترنت متصل میشوند.
|
|
|
|
|
|
در مثال یک ترموستات هوشمند، ترموستات از طریق WiFi خانگی به یک سرویس ابری متصل میشود. این دستگاه دادههای دما را به این سرویس ابری ارسال میکند و از آنجا به یک پایگاه داده نوشته میشود که به صاحب خانه اجازه میدهد دماهای فعلی و گذشته را با استفاده از یک اپلیکیشن تلفن همراه بررسی کند. یک سرویس دیگر در ابر میداند که صاحب خانه چه دمایی را میخواهد و پیامهایی را از طریق سرویس ابری به دستگاه اینترنت اشیا ارسال میکند تا سیستم گرمایش را روشن یا خاموش کند.
|
|
|
|
|
|

|
|
|
|
|
|
نسخهای حتی هوشمندتر میتواند از هوش مصنوعی در ابر با دادههای حسگرهای دیگر متصل به دستگاههای اینترنت اشیا مانند حسگرهای اشغال که تشخیص میدهند کدام اتاقها استفاده میشوند، و همچنین دادههایی مانند وضعیت آب و هوا و حتی تقویم شما استفاده کند تا تصمیماتی در مورد تنظیم دما به صورت هوشمندانه بگیرد. برای مثال، میتواند گرمایش شما را خاموش کند اگر از تقویم شما بخواند که در تعطیلات هستید، یا گرمایش را به صورت اتاق به اتاق خاموش کند بسته به اینکه از کدام اتاقها استفاده میکنید، و با یادگیری از دادهها به مرور زمان دقیقتر شود.
|
|
|
|
|
|

|
|
|
|
|
|
✅ چه دادههای دیگری میتوانند به هوشمندتر شدن یک ترموستات متصل به اینترنت کمک کنند؟
|
|
|
|
|
|
### اینترنت اشیا در لبه (Edge)
|
|
|
|
|
|
اگرچه حرف I در IoT به معنای اینترنت است، این دستگاهها نیازی به اتصال به اینترنت ندارند. در برخی موارد، دستگاهها میتوانند به دستگاههای لبه - دستگاههای دروازهای که در شبکه محلی شما اجرا میشوند - متصل شوند، به این معنی که میتوانید دادهها را بدون نیاز به اتصال به اینترنت پردازش کنید. این کار میتواند زمانی که دادههای زیادی دارید یا اتصال اینترنت کند است سریعتر باشد، به شما امکان میدهد در جایی که اتصال اینترنت ممکن نیست مانند یک کشتی یا در یک منطقه بحران انسانی که به کمک نیاز دارد، به صورت آفلاین کار کنید، و به شما امکان میدهد دادهها را خصوصی نگه دارید. برخی دستگاهها کد پردازشی ایجاد شده با ابزارهای ابری را در خود دارند و این کد را به صورت محلی اجرا میکنند تا دادهها را جمعآوری و پردازش کنند بدون اینکه از اتصال اینترنت برای تصمیمگیری استفاده کنند.
|
|
|
|
|
|
یک مثال از این موضوع یک دستگاه خانه هوشمند مانند Apple HomePod، Amazon Alexa یا Google Home است که صدای شما را با استفاده از مدلهای هوش مصنوعی آموزشدیده در ابر گوش میدهد، اما این مدلها به صورت محلی روی دستگاه اجرا میشوند. این دستگاهها با شنیدن یک کلمه یا عبارت خاص "بیدار میشوند" و فقط در این صورت صدای شما را برای پردازش به اینترنت ارسال میکنند. دستگاه ارسال صدا را در یک نقطه مناسب مانند زمانی که یک مکث در گفتار شما تشخیص میدهد متوقف میکند. هر چیزی که قبل از بیدار شدن دستگاه با کلمه بیداری بگویید و هر چیزی که بعد از توقف گوش دادن دستگاه بگویید به اینترنت ارسال نمیشود و بنابراین خصوصی باقی میماند.
|
|
|
|
|
|
✅ به سناریوهای دیگری فکر کنید که در آنها حریم خصوصی مهم است، بنابراین پردازش دادهها بهتر است در لبه انجام شود تا در ابر. به عنوان یک راهنما - به دستگاههای اینترنت اشیا با دوربینها یا دستگاههای تصویربرداری دیگر فکر کنید.
|
|
|
|
|
|
### امنیت اینترنت اشیا
|
|
|
|
|
|
با هر اتصال اینترنتی، امنیت یک ملاحظه مهم است. یک شوخی قدیمی وجود دارد که میگوید "S در IoT به معنای امنیت است" - در IoT هیچ "S" وجود ندارد، که نشان میدهد امنیت وجود ندارد.
|
|
|
|
|
|
دستگاههای اینترنت اشیا به یک سرویس ابری متصل میشوند و بنابراین فقط به اندازه آن سرویس ابری امن هستند - اگر سرویس ابری شما به هر دستگاهی اجازه اتصال بدهد، دادههای مخرب میتوانند ارسال شوند یا حملات ویروسی میتوانند انجام شوند. این موضوع میتواند پیامدهای بسیار واقعی در دنیای واقعی داشته باشد زیرا دستگاههای اینترنت اشیا با دستگاههای دیگر تعامل دارند و آنها را کنترل میکنند. برای مثال، [کرم استاکسنت](https://wikipedia.org/wiki/Stuxnet) شیرهای سانتریفیوژها را دستکاری کرد تا به آنها آسیب برساند. هکرها همچنین از [امنیت ضعیف برای دسترسی به مانیتورهای کودک](https://www.npr.org/sections/thetwo-way/2018/06/05/617196788/s-c-mom-says-baby-monitor-was-hacked-experts-say-many-devices-are-vulnerable) و دستگاههای نظارتی خانگی دیگر سوءاستفاده کردهاند.
|
|
|
|
|
|
> 💁 گاهی اوقات دستگاههای اینترنت اشیا و دستگاههای لبه در شبکهای کاملاً جدا از اینترنت اجرا میشوند تا دادهها خصوصی و امن باقی بمانند. این کار به عنوان [ایزولهسازی هوا](https://wikipedia.org/wiki/Air_gap_(networking)) شناخته میشود.
|
|
|
|
|
|
## بررسی عمیقتر میکروکنترلرها
|
|
|
|
|
|
در درس قبلی، میکروکنترلرها معرفی شدند. حالا بیایید آنها را عمیقتر بررسی کنیم.
|
|
|
|
|
|
### پردازنده (CPU)
|
|
|
|
|
|
پردازنده یا CPU "مغز" میکروکنترلر است. این پردازنده کدی که شما نوشتهاید را اجرا میکند و میتواند دادهها را به دستگاههای متصل ارسال یا از آنها دریافت کند. پردازندهها میتوانند شامل یک یا چند هسته باشند - اساساً یک یا چند پردازنده که میتوانند با هم کار کنند تا کد شما را اجرا کنند.
|
|
|
|
|
|
پردازندهها به یک ساعت (Clock) وابستهاند که میلیونها یا میلیاردها بار در ثانیه تیک میزند. هر تیک یا چرخه، اقدامات پردازنده را هماهنگ میکند. با هر تیک، پردازنده میتواند یک دستورالعمل از یک برنامه را اجرا کند، مانند بازیابی داده از یک دستگاه خارجی یا انجام یک محاسبه ریاضی. این چرخه منظم اجازه میدهد تا همه اقدامات قبل از پردازش دستورالعمل بعدی تکمیل شوند.
|
|
|
|
|
|
هرچه چرخه ساعت سریعتر باشد، دستورالعملهای بیشتری در هر ثانیه پردازش میشوند و بنابراین پردازنده سریعتر است. سرعت پردازندهها با [هرتز (Hz)](https://wikipedia.org/wiki/Hertz) اندازهگیری میشود، یک واحد استاندارد که در آن ۱ هرتز به معنای یک چرخه یا تیک ساعت در هر ثانیه است.
|
|
|
|
|
|
> 🎓 سرعت پردازندهها اغلب با مگاهرتز یا گیگاهرتز بیان میشود. ۱ مگاهرتز برابر با ۱ میلیون هرتز و ۱ گیگاهرتز برابر با ۱ میلیارد هرتز است.
|
|
|
|
|
|
> 💁 پردازندهها برنامهها را با استفاده از [چرخه واکشی-رمزگشایی-اجرا](https://wikipedia.org/wiki/Instruction_cycle) اجرا میکنند. برای هر تیک ساعت، پردازنده دستورالعمل بعدی را از حافظه واکشی میکند، آن را رمزگشایی میکند و سپس اجرا میکند، مانند استفاده از واحد منطق حسابی (ALU) برای جمع دو عدد. برخی اجراها ممکن است چندین تیک طول بکشند، بنابراین چرخه بعدی در تیک بعدی پس از تکمیل دستورالعمل اجرا میشود.
|
|
|
|
|
|

|
|
|
|
|
|
میکروکنترلرها سرعت ساعت بسیار کمتری نسبت به کامپیوترهای رومیزی یا لپتاپها، یا حتی اکثر گوشیهای هوشمند دارند. برای مثال، Wio Terminal دارای پردازندهای است که با سرعت ۱۲۰ مگاهرتز یا ۱۲۰,۰۰۰,۰۰۰ چرخه در ثانیه کار میکند.
|
|
|
|
|
|
✅ یک کامپیوتر شخصی یا مک معمولی دارای پردازندهای با چندین هسته است که با چندین گیگاهرتز کار میکند، به این معنی که ساعت میلیاردها بار در ثانیه تیک میزند. سرعت ساعت کامپیوتر خود را تحقیق کنید و مقایسه کنید که چند برابر سریعتر از Wio Terminal است.
|
|
|
|
|
|
هر چرخه ساعت انرژی مصرف میکند و گرما تولید میکند. هرچه تیکها سریعتر باشند، انرژی بیشتری مصرف میشود و گرمای بیشتری تولید میشود. کامپیوترهای شخصی دارای هیتسینک و فن برای دفع گرما هستند، بدون آنها در عرض چند ثانیه بیش از حد گرم شده و خاموش میشوند. میکروکنترلرها اغلب هیچکدام از اینها را ندارند زیرا بسیار خنکتر کار میکنند و بنابراین بسیار کندتر هستند. کامپیوترهای شخصی از برق شهری یا باتریهای بزرگ برای چند ساعت استفاده میکنند، در حالی که میکروکنترلرها میتوانند برای روزها، ماهها یا حتی سالها با باتریهای کوچک کار کنند. میکروکنترلرها همچنین میتوانند هستههایی داشته باشند که با سرعتهای مختلف کار میکنند و در مواقعی که بار پردازنده کم است به هستههای کندتر و کممصرفتر سوئیچ میکنند تا مصرف انرژی را کاهش دهند.
|
|
|
|
|
|
> 💁 برخی از کامپیوترهای شخصی و مکها نیز در حال پذیرش همین ترکیب هستههای سریع و پرقدرت و هستههای کندتر و کممصرفتر هستند و برای صرفهجویی در باتری یا افزایش سرعت بسته به وظیفهای که اجرا میشود، سوئیچ میکنند. برای مثال، تراشه M1 در جدیدترین لپتاپهای اپل میتواند بین ۴ هسته عملکردی و ۴ هسته کارآمد سوئیچ کند تا عمر باتری یا سرعت را بهینه کند.
|
|
|
|
|
|
✅ کمی تحقیق کنید: درباره پردازندهها در [مقاله پردازنده ویکیپدیا](https://wikipedia.org/wiki/Central_processing_unit) مطالعه کنید.
|
|
|
|
|
|
#### وظیفه
|
|
|
|
|
|
Wio Terminal را بررسی کنید.
|
|
|
|
|
|
اگر از Wio Terminal برای این درسها استفاده میکنید، سعی کنید پردازنده را پیدا کنید. بخش *بررسی سختافزار* در [صفحه محصول Wio Terminal](https://www.seeedstudio.com/Wio-Terminal-p-4509.html) را برای تصویری از اجزای داخلی پیدا کنید و سعی کنید پردازنده را از طریق پنجره شفاف پلاستیکی در پشت دستگاه پیدا کنید.
|
|
|
|
|
|
### حافظه
|
|
|
|
|
|
میکروکنترلرها معمولاً دو نوع حافظه دارند - حافظه برنامه و حافظه دسترسی تصادفی (RAM).
|
|
|
|
|
|
حافظه برنامه غیر فرار است، به این معنی که هر چیزی که در آن نوشته شود در صورت قطع برق دستگاه باقی میماند. این حافظه کد برنامه شما را ذخیره میکند.
|
|
|
|
|
|
RAM حافظهای است که برنامه برای اجرا از آن استفاده میکند و شامل متغیرهایی است که توسط برنامه شما تخصیص داده شدهاند و دادههایی که از دستگاههای جانبی جمعآوری شدهاند. RAM فرار است، به این معنی که وقتی برق قطع شود محتویات آن از بین میرود و برنامه شما عملاً بازنشانی میشود.
|
|
|
🎓 حافظه برنامه کد شما را ذخیره میکند و حتی زمانی که برق قطع باشد، باقی میماند.
|
|
|
🎓 رم برای اجرای برنامه شما استفاده میشود و در صورت قطع برق بازنشانی میشود
|
|
|
|
|
|
مانند پردازنده مرکزی (CPU)، حافظه در یک میکروکنترلر به مراتب کوچکتر از یک رایانه شخصی یا مک است. یک رایانه شخصی معمولی ممکن است ۸ گیگابایت (GB) رم داشته باشد، یا ۸,۰۰۰,۰۰۰,۰۰۰ بایت، که هر بایت فضای کافی برای ذخیره یک حرف یا عددی بین ۰ تا ۲۵۵ دارد. یک میکروکنترلر معمولاً فقط چند کیلوبایت (KB) رم دارد، که هر کیلوبایت برابر با ۱,۰۰۰ بایت است. ترمینال Wio که در بالا ذکر شد، دارای ۱۹۲ کیلوبایت رم است، یا ۱۹۲,۰۰۰ بایت - بیش از ۴۰,۰۰۰ برابر کمتر از یک رایانه شخصی متوسط!
|
|
|
|
|
|
نمودار زیر تفاوت اندازه نسبی بین ۱۹۲ کیلوبایت و ۸ گیگابایت را نشان میدهد - نقطه کوچک در مرکز نشاندهنده ۱۹۲ کیلوبایت است.
|
|
|
|
|
|

|
|
|
|
|
|
فضای ذخیرهسازی برنامه نیز کوچکتر از یک رایانه شخصی است. یک رایانه شخصی معمولی ممکن است یک هارد دیسک ۵۰۰ گیگابایتی برای ذخیرهسازی برنامهها داشته باشد، در حالی که یک میکروکنترلر ممکن است فقط چند کیلوبایت یا شاید چند مگابایت (MB) فضای ذخیرهسازی داشته باشد (۱ مگابایت برابر با ۱,۰۰۰ کیلوبایت یا ۱,۰۰۰,۰۰۰ بایت است). ترمینال Wio دارای ۴ مگابایت فضای ذخیرهسازی برنامه است.
|
|
|
|
|
|
✅ کمی تحقیق کنید: رایانهای که با آن این متن را میخوانید چقدر رم و فضای ذخیرهسازی دارد؟ این مقدار چگونه با یک میکروکنترلر مقایسه میشود؟
|
|
|
|
|
|
### ورودی/خروجی
|
|
|
|
|
|
میکروکنترلرها برای خواندن داده از حسگرها و ارسال سیگنالهای کنترلی به عملگرها به اتصالات ورودی و خروجی (I/O) نیاز دارند. آنها معمولاً تعدادی پین ورودی/خروجی عمومی (GPIO) دارند. این پینها را میتوان در نرمافزار بهعنوان ورودی (یعنی دریافت سیگنال) یا خروجی (ارسال سیگنال) تنظیم کرد.
|
|
|
|
|
|
🧠⬅️ پینهای ورودی برای خواندن مقادیر از حسگرها استفاده میشوند
|
|
|
|
|
|
🧠➡️ پینهای خروجی دستورالعملها را به عملگرها ارسال میکنند
|
|
|
|
|
|
✅ در درسهای بعدی بیشتر درباره این موضوع یاد خواهید گرفت.
|
|
|
|
|
|
#### وظیفه
|
|
|
|
|
|
ترمینال Wio را بررسی کنید.
|
|
|
|
|
|
اگر از ترمینال Wio برای این درسها استفاده میکنید، پینهای GPIO را پیدا کنید. بخش *نمودار پینها* را در [صفحه محصول ترمینال Wio](https://www.seeedstudio.com/Wio-Terminal-p-4509.html) پیدا کنید تا بفهمید کدام پینها کدام هستند. ترمینال Wio دارای یک برچسب است که میتوانید آن را در پشت دستگاه نصب کنید و شماره پینها را مشاهده کنید، بنابراین اگر هنوز این کار را نکردهاید، اکنون این برچسب را اضافه کنید.
|
|
|
|
|
|
### اندازه فیزیکی
|
|
|
|
|
|
میکروکنترلرها معمولاً کوچک هستند، بهطوری که کوچکترین آنها، [Freescale Kinetis KL03 MCU](https://www.edn.com/tiny-arm-cortex-m0-based-mcu-shrinks-package/) به اندازهای کوچک است که در فرورفتگی یک توپ گلف جا میشود. فقط پردازنده مرکزی در یک رایانه شخصی میتواند ۴۰ میلیمتر در ۴۰ میلیمتر باشد، و این شامل هیتسینکها و فنهایی که برای جلوگیری از داغ شدن بیش از حد پردازنده ضروری هستند، نمیشود. این اندازه بهطور قابل توجهی بزرگتر از یک میکروکنترلر کامل است. کیت توسعه ترمینال Wio با یک میکروکنترلر، کیس، صفحهنمایش و مجموعهای از اتصالات و اجزا، خیلی بزرگتر از یک پردازنده Intel i9 بدون هیتسینک و فن نیست و بهطور قابل توجهی کوچکتر از پردازنده با هیتسینک و فن است!
|
|
|
|
|
|
| دستگاه | اندازه |
|
|
|
| ------------------------------- | --------------------- |
|
|
|
| Freescale Kinetis KL03 | ۱.۶ میلیمتر x ۲ میلیمتر x ۱ میلیمتر |
|
|
|
| ترمینال Wio | ۷۲ میلیمتر x ۵۷ میلیمتر x ۱۲ میلیمتر |
|
|
|
| پردازنده Intel i9 با هیتسینک و فن | ۱۳۶ میلیمتر x ۱۴۵ میلیمتر x ۱۰۳ میلیمتر |
|
|
|
|
|
|
### فریمورکها و سیستمعاملها
|
|
|
|
|
|
به دلیل سرعت و اندازه حافظه کم، میکروکنترلرها سیستمعامل (OS) به معنای دسکتاپی آن را اجرا نمیکنند. سیستمعاملی که رایانه شما را اجرا میکند (ویندوز، لینوکس یا macOS) به حافظه و قدرت پردازشی زیادی نیاز دارد تا وظایفی را اجرا کند که برای یک میکروکنترلر کاملاً غیرضروری هستند. به یاد داشته باشید که میکروکنترلرها معمولاً برای انجام یک یا چند وظیفه بسیار خاص برنامهریزی میشوند، برخلاف یک رایانه عمومی مانند یک رایانه شخصی یا مک که باید از رابط کاربری، پخش موسیقی یا فیلم، ابزارهایی برای نوشتن اسناد یا کد، بازیها یا مرور اینترنت پشتیبانی کند.
|
|
|
|
|
|
برای برنامهریزی یک میکروکنترلر بدون سیستمعامل، به ابزارهایی نیاز دارید که به شما امکان میدهند کد خود را به گونهای بسازید که میکروکنترلر بتواند آن را اجرا کند، با استفاده از APIهایی که میتوانند با هر دستگاه جانبی صحبت کنند. هر میکروکنترلر متفاوت است، بنابراین تولیدکنندگان معمولاً از فریمورکهای استانداردی پشتیبانی میکنند که به شما اجازه میدهند از یک "دستورالعمل" استاندارد برای ساخت کد خود استفاده کنید و آن را روی هر میکروکنترلری که از آن فریمورک پشتیبانی میکند اجرا کنید.
|
|
|
|
|
|
شما میتوانید میکروکنترلرها را با استفاده از یک سیستمعامل برنامهریزی کنید - که اغلب به آن سیستمعامل بلادرنگ (RTOS) گفته میشود، زیرا این سیستمها برای مدیریت ارسال داده به دستگاههای جانبی و دریافت داده از آنها در زمان واقعی طراحی شدهاند. این سیستمعاملها بسیار سبک هستند و ویژگیهایی مانند موارد زیر را ارائه میدهند:
|
|
|
|
|
|
* چندوظیفهای، که به کد شما اجازه میدهد بیش از یک بلوک کد را بهطور همزمان اجرا کند، یا روی چندین هسته یا با نوبتگیری روی یک هسته
|
|
|
* شبکهسازی برای ارتباط امن از طریق اینترنت
|
|
|
* اجزای رابط کاربری گرافیکی (GUI) برای ساخت رابطهای کاربری (UI) روی دستگاههایی که صفحهنمایش دارند.
|
|
|
|
|
|
✅ درباره برخی از RTOSهای مختلف مطالعه کنید: [Azure RTOS](https://azure.microsoft.com/services/rtos/?WT.mc_id=academic-17441-jabenn)، [FreeRTOS](https://www.freertos.org)، [Zephyr](https://www.zephyrproject.org)
|
|
|
|
|
|
#### آردوینو
|
|
|
|
|
|

|
|
|
|
|
|
[آردوینو](https://www.arduino.cc) احتمالاً محبوبترین فریمورک میکروکنترلر است، بهویژه در میان دانشآموزان، علاقهمندان و سازندگان. آردوینو یک پلتفرم الکترونیکی متنباز است که نرمافزار و سختافزار را ترکیب میکند. شما میتوانید بردهای سازگار با آردوینو را از خود آردوینو یا سایر تولیدکنندگان خریداری کنید و سپس با استفاده از فریمورک آردوینو کدنویسی کنید.
|
|
|
|
|
|
بردهای آردوینو با زبانهای C یا C++ کدنویسی میشوند. استفاده از C/C++ به کد شما اجازه میدهد بسیار کوچک کامپایل شود و سریع اجرا شود، چیزی که در دستگاههای محدود مانند میکروکنترلرها ضروری است. هسته یک برنامه آردوینو بهعنوان یک اسکچ شناخته میشود و کد C/C++ با دو تابع `setup` و `loop` است. وقتی برد روشن میشود، کد فریمورک آردوینو تابع `setup` را یک بار اجرا میکند، سپس تابع `loop` را بارها و بارها اجرا میکند و آن را بهطور مداوم اجرا میکند تا زمانی که برق قطع شود.
|
|
|
|
|
|
شما کد تنظیمات خود را در تابع `setup` مینویسید، مانند اتصال به WiFi و خدمات ابری یا مقداردهی اولیه پینها برای ورودی و خروجی. کد حلقه شما سپس شامل کد پردازش میشود، مانند خواندن از یک حسگر و ارسال مقدار به ابر. معمولاً در هر حلقه یک تأخیر اضافه میکنید، برای مثال، اگر فقط میخواهید دادههای حسگر هر ۱۰ ثانیه ارسال شود، در انتهای حلقه یک تأخیر ۱۰ ثانیهای اضافه میکنید تا میکروکنترلر بخوابد، انرژی ذخیره کند، و سپس حلقه را دوباره اجرا کند.
|
|
|
|
|
|

|
|
|
|
|
|
✅ این معماری برنامه بهعنوان یک *حلقه رویداد* یا *حلقه پیام* شناخته میشود. بسیاری از برنامهها در پشت صحنه از این معماری استفاده میکنند و این استاندارد برای اکثر برنامههای دسکتاپی است که روی سیستمعاملهایی مانند ویندوز، macOS یا لینوکس اجرا میشوند. حلقه `loop` پیامها را از اجزای رابط کاربری مانند دکمهها یا دستگاههایی مانند صفحهکلید گوش میدهد و به آنها پاسخ میدهد. میتوانید در این [مقاله درباره حلقه رویداد](https://wikipedia.org/wiki/Event_loop) بیشتر بخوانید.
|
|
|
|
|
|
آردوینو کتابخانههای استانداردی برای تعامل با میکروکنترلرها و پینهای I/O ارائه میدهد، با پیادهسازیهای مختلف در پشت صحنه برای اجرا روی میکروکنترلرهای مختلف. برای مثال، تابع [`delay`](https://www.arduino.cc/reference/en/language/functions/time/delay/) برنامه را برای مدت زمان مشخصی متوقف میکند، و تابع [`digitalRead`](https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/) مقدار `HIGH` یا `LOW` را از پین مشخص شده میخواند، صرفنظر از اینکه کد روی کدام برد اجرا میشود. این کتابخانههای استاندارد به این معنی است که کد آردوینو نوشته شده برای یک برد میتواند برای هر برد آردوینو دیگری بازکامپایل شود و اجرا شود، به شرطی که پینها یکسان باشند و بردها از ویژگیهای مشابهی پشتیبانی کنند.
|
|
|
|
|
|
یک اکوسیستم بزرگ از کتابخانههای شخص ثالث آردوینو وجود دارد که به شما امکان میدهد ویژگیهای اضافی به پروژههای آردوینو خود اضافه کنید، مانند استفاده از حسگرها و عملگرها یا اتصال به خدمات IoT ابری.
|
|
|
|
|
|
##### وظیفه
|
|
|
|
|
|
ترمینال Wio را بررسی کنید.
|
|
|
|
|
|
اگر از ترمینال Wio برای این درسها استفاده میکنید، کدی که در درس قبلی نوشتید را دوباره بخوانید. تابعهای `setup` و `loop` را پیدا کنید. خروجی سریال را برای فراخوانی مکرر تابع `loop` نظارت کنید. سعی کنید کدی به تابع `setup` اضافه کنید تا به پورت سریال بنویسد و مشاهده کنید که این کد فقط یک بار در هر بار راهاندازی مجدد فراخوانی میشود. سعی کنید دستگاه خود را با کلید پاور در کنار آن راهاندازی مجدد کنید تا نشان دهید این کد هر بار که دستگاه راهاندازی مجدد میشود فراخوانی میشود.
|
|
|
|
|
|
## بررسی عمیقتر رایانههای تکبردی
|
|
|
|
|
|
در درس قبلی، رایانههای تکبردی را معرفی کردیم. اکنون بیایید نگاهی عمیقتر به آنها بیندازیم.
|
|
|
|
|
|
### رزبری پای
|
|
|
|
|
|

|
|
|
|
|
|
[بنیاد رزبری پای](https://www.raspberrypi.org) یک خیریه در بریتانیا است که در سال ۲۰۰۹ برای ترویج مطالعه علوم کامپیوتر، بهویژه در سطح مدارس تأسیس شد. بهعنوان بخشی از این مأموریت، آنها یک رایانه تکبردی به نام رزبری پای توسعه دادند. رزبری پایها در حال حاضر در ۳ نوع موجود هستند - نسخه کامل، نسخه کوچکتر Pi Zero، و یک ماژول محاسباتی که میتواند در دستگاه نهایی IoT شما تعبیه شود.
|
|
|
|
|
|

|
|
|
|
|
|
جدیدترین نسخه کامل رزبری پای، رزبری پای ۴B است. این دستگاه دارای یک پردازنده چهار هستهای (۴ هستهای) با سرعت ۱.۵ گیگاهرتز، ۲، ۴ یا ۸ گیگابایت رم، اترنت گیگابیتی، WiFi، ۲ پورت HDMI با پشتیبانی از صفحهنمایشهای ۴K، یک خروجی صوتی و ویدئوی ترکیبی، پورتهای USB (۲ پورت USB 2.0، ۲ پورت USB 3.0)، ۴۰ پین GPIO، یک کانکتور دوربین برای ماژول دوربین رزبری پای، و یک اسلات کارت SD است. همه اینها روی بردی به اندازه ۸۸ میلیمتر x ۵۸ میلیمتر x ۱۹.۵ میلیمتر قرار دارد و با یک منبع تغذیه USB-C با جریان ۳ آمپر کار میکند. این دستگاهها از ۳۵ دلار آمریکا شروع میشوند، که بسیار ارزانتر از یک رایانه شخصی یا مک است.
|
|
|
|
|
|
> 💁 همچنین یک Pi400 وجود دارد که یک رایانه همهکاره با یک Pi4 درون یک صفحهکلید است.
|
|
|
|
|
|

|
|
|
|
|
|
Pi Zero بسیار کوچکتر و کممصرفتر است. این دستگاه دارای یک پردازنده تکهستهای ۱ گیگاهرتزی، ۵۱۲ مگابایت رم، WiFi (در مدل Zero W)، یک پورت HDMI، یک پورت micro-USB، ۴۰ پین GPIO، یک کانکتور دوربین برای ماژول دوربین رزبری پای، و یک اسلات کارت SD است. اندازه آن ۶۵ میلیمتر x ۳۰ میلیمتر x ۵ میلیمتر است و انرژی بسیار کمی مصرف میکند. قیمت Zero ۵ دلار آمریکا است، و نسخه W با WiFi ۱۰ دلار آمریکا است.
|
|
|
|
|
|
> 🎓 پردازندههای هر دوی این دستگاهها ARM هستند، برخلاف پردازندههای Intel/AMD x86 یا x64 که در اکثر رایانههای شخصی و مکها یافت میشوند. این پردازندهها مشابه پردازندههایی هستند که در برخی میکروکنترلرها، تقریباً تمام تلفنهای همراه، Microsoft Surface X، و مکهای جدید مبتنی بر Apple Silicon یافت میشوند.
|
|
|
|
|
|
همه انواع رزبری پای یک نسخه از لینوکس دبیان به نام Raspberry Pi OS را اجرا میکنند. این سیستمعامل بهصورت یک نسخه سبک بدون دسکتاپ، که برای پروژههای "بدون سر" که به صفحهنمایش نیاز ندارند عالی است، یا یک نسخه کامل با یک محیط دسکتاپ کامل، شامل مرورگر وب، برنامههای اداری، ابزارهای کدنویسی و بازیها در دسترس است. از آنجا که این سیستمعامل نسخهای از لینوکس دبیان است، میتوانید هر برنامه یا ابزاری که روی دبیان اجرا میشود و برای پردازنده ARM داخل Pi ساخته شده است را نصب کنید.
|
|
|
|
|
|
#### وظیفه
|
|
|
|
|
|
رزبری پای را بررسی کنید.
|
|
|
|
|
|
اگر از رزبری پای برای این درسها استفاده میکنید، درباره اجزای سختافزاری مختلف روی برد مطالعه کنید.
|
|
|
|
|
|
* میتوانید جزئیات مربوط به پردازندههای استفاده شده را در [صفحه مستندات سختافزار رزبری پای](https://www.raspberrypi.org/documentation/hardware/raspberrypi/) پیدا کنید. درباره پردازنده استفاده شده در Pi خود مطالعه کنید.
|
|
|
* پینهای GPIO را پیدا کنید. درباره آنها در [مستندات GPIO رزبری پای](https://www.raspberrypi.org/documentation/hardware/raspberrypi/gpio/README.md) بیشتر بخوانید. از [راهنمای استفاده از پینهای GPIO](https://www.raspberrypi.org/documentation/usage/gpio/README.md) برای شناسایی پینهای مختلف روی Pi خود استفاده کنید.
|
|
|
|
|
|
### برنامهنویسی رایانههای تکبردی
|
|
|
|
|
|
رایانههای تکبردی رایانههای کاملی هستند که یک سیستمعامل کامل را اجرا میکنند. این بدان معناست که طیف گستردهای از زبانهای برنامهنویسی، فریمورکها و ابزارها برای کدنویسی آنها در دسترس است، برخلاف میکروکنترلرها که به پشتیبانی از برد در فریمورکهایی مانند آردوینو متکی هستند. اکثر زبانهای برنامهنویسی کتابخانههایی دارند که میتوانند به پینهای GPIO دسترسی داشته باشند تا دادهها را از حسگرها و عملگرها ارسال و دریافت کنند.
|
|
|
|
|
|
✅ با چه زبانهای برنامهنویسی آشنا هستید؟ آیا این زبانها روی لینوکس پشتیبانی میشوند؟
|
|
|
|
|
|
|
|
|
### استفاده از کامپیوترهای تکبردی در استقرارهای حرفهای اینترنت اشیا
|
|
|
|
|
|
کامپیوترهای تکبردی نه تنها به عنوان کیتهای توسعهدهنده، بلکه برای استقرارهای حرفهای اینترنت اشیا نیز استفاده میشوند. این دستگاهها میتوانند راهی قدرتمند برای کنترل سختافزار و اجرای وظایف پیچیده مانند اجرای مدلهای یادگیری ماشین فراهم کنند. به عنوان مثال، [ماژول محاسباتی Raspberry Pi 4](https://www.raspberrypi.org/blog/raspberry-pi-compute-module-4/) تمام قدرت Raspberry Pi 4 را ارائه میدهد، اما در قالبی فشردهتر و ارزانتر، بدون اکثر پورتها، که برای نصب در سختافزارهای سفارشی طراحی شده است.
|
|
|
|
|
|
---
|
|
|
|
|
|
## 🚀 چالش
|
|
|
|
|
|
چالش درس قبلی این بود که تا جایی که میتوانید دستگاههای اینترنت اشیا را که در خانه، مدرسه یا محل کارتان وجود دارند، فهرست کنید. برای هر دستگاه در این فهرست، فکر میکنید که این دستگاهها بر پایه میکروکنترلرها ساخته شدهاند یا کامپیوترهای تکبردی، یا حتی ترکیبی از هر دو؟
|
|
|
|
|
|
## آزمون پس از درس
|
|
|
|
|
|
[آزمون پس از درس](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/4)
|
|
|
|
|
|
## مرور و مطالعه شخصی
|
|
|
|
|
|
* [راهنمای شروع به کار Arduino](https://www.arduino.cc/en/Guide/Introduction) را بخوانید تا اطلاعات بیشتری درباره پلتفرم Arduino به دست آورید.
|
|
|
* [مقدمهای بر Raspberry Pi 4](https://www.raspberrypi.org/products/raspberry-pi-4-model-b/) را مطالعه کنید تا بیشتر با Raspberry Pi آشنا شوید.
|
|
|
* درباره برخی از مفاهیم و اختصارات در مقاله [What the FAQ are CPUs, MPUs, MCUs, and GPUs در مجله مهندسی برق](https://www.eejournal.com/article/what-the-faq-are-cpus-mpus-mcus-and-gpus/) بیشتر یاد بگیرید.
|
|
|
|
|
|
✅ از این راهنماها، همراه با هزینههایی که با دنبال کردن لینکهای موجود در [راهنمای سختافزار](../../../hardware.md) نشان داده شدهاند، استفاده کنید تا تصمیم بگیرید که میخواهید از چه پلتفرم سختافزاری استفاده کنید، یا اینکه ترجیح میدهید از یک دستگاه مجازی استفاده کنید.
|
|
|
|
|
|
## تکلیف
|
|
|
|
|
|
[مقایسه و تضاد میکروکنترلرها و کامپیوترهای تکبردی](assignment.md)
|
|
|
|
|
|
**سلب مسئولیت**:
|
|
|
این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه میشود از ترجمه حرفهای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. |