پیاده‌سازی یک پروژه اینترنت اشیا
Windows 10 IoT چیست و چگونه از آن به شکل کاربردی استفاده کنیم؟
بردهای کوچک رزبری پای یا به قول اهل فن کامپیوترهای مینیاتوری با وجود ظاهر کوچکی که دارند، کارهای بزرگی انجام می‌دهند. زمانی‌که درباره این بردها صحبت می‌کنیم، نگاه‌ها به سمت لینوکس و متن‌باز دوخته می‌شود، اما مایکروسافت برای این بردهای کوچک نسخه خاصی از سیستم‌عامل ویندوز به‌نام Windows 10 IoT را طراحی کرده که به توسعه‌دهندگان اجازه می‌دهد برنامه‌های جالبی برای این بردها طراحی کنند.

برخی از توسعه‌دهندگان سوال می‌کنند که چگونه باید از سیستم‌عامل فوق همراه با بورد رزبری‌پای استفاده کرد. شاید شنیدن این جمله خالی از لطف نباشد که بدانید افرادی که به‌طور مستمر با اینترنت در ارتباط هستند و روزانه فایل‌های سنگینی از اینترنت دانلود می‌کنند به جای آن‌که کامپیوتر گران‌قیمت خود را تمام وقت روشن بگذارند، به سراغ بوردهای رزبری‌پای می‌روند، بورد را پیکربندی می‌کنند، سیستم‌عامل موردنظر را روی آن نصب می‌کنند، بورد را به شبکه وای‌فای متصل می‌کنند و فرآیند دانلود فایل‌ها را آغاز می‌کنند. در این مقاله قصد داریم به شکلی اجمالی و در قالب یک پروژه عملی اینترنت اشیا نحوه به‌کارگیری و برنامه‌نویسی سیستم‌عامل ویندوز 10 اینترنت اشیا را برای یک بورد رزبری‌پای بررسی کنیم.

پیش‌نیازهای لازم

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

  • کامپیوتر شخصی که سیستم‌عامل ویندوز 10 روی آن نصب شده است.
  • بورد رزبری پای 2 همراه با منبع تغذیه مناسب.
  • کارت حافظه با ظرفیت 8 گیگابایت.
  • کابل HDMI.
  • کابل اترنت.
  • یک مانیتور برای اتصال بورد به مانیتور و یک مانیتور برای اتصال به کامپیوتر شخصی
  • نصب ویژوال استودیو و مولفه‌های سازگار با Microsoft IoT روی کامپیوتر شخصی

آماده‌سازی محیط

در اولین گام باید بوردرزبری پای را تهیه کنید. در ادامه باید ابزارها و سیستم‌عامل مربوطه را دانلود کنید. پیشنهاد می‌کنم نسخه ویندوز 10 اینترنت اشیا را از سایت رسمی مایکروسافت به نشانی ‌http://go.microsoft.com/fwlink/?LinkId=616847 دانلود کنید. فایل فوق حجمی نزدیک به 500 مگابایت دارد و در قالب یک ایمیج به‌نام IOT Core Rpi آماده استفاده است. در کامپیوتر مجهز به ویندوز 10 روی ایمیج فوق دوبار کلیک کنید و آن‌را روی یک درایو مجازی باز کنید. فایل اجرایی درون این ایمیج Windows_10_IoT_Core-Rpi2 نام دارد که باید نصب شود.

 فایل فوق ابزارهایی که به آن‌ها نیاز دارید را در مسیر C:\Program Files (x86)\Microsoft IoT\FFU\RaspberryPi2 نصب می‌کند. فایلی که به آن نیاز داریم FLASH.FFU است و نشان دهنده ایمیج سیستم‌عامل است. فرمت فایلی FFU توسط مایکروسافت و برای نصب ویندوز ساخته شده است. برای آن‌که کارت حافظه را برای بوت کردن بوردرزبری پای آماده کنیم، باید برنامه WindowsIoTImageHelper را اجرا کنیم. ابزار فوق در اصل رابطی است که اجازه می‌دهد ایمیج FFU روی کارت حافظه نصب شود. کارت حافظه را به سیستم متصل کنید، آدرس ایمیج را وارد کنید و دکمه FLAH را کلیک کنید. کمی صبر کنید تا فرآیند فوق به اتمام برسد.

اولین راه‌اندازی Windows 10 IoT Core

زمانی که فرآیند انتقال ایمیج به کارت حافظه به‌اتمام رسید، کارت حافظه را به بوردرزبری پای متصل کنید. در اولین راه‌اندازی لازم است برخی از تنظیمات همچون زبان و شبکه وای‌فای را پیکربندی کنیم. پس از بوت شدن بورد، صفحه‌نمایش همانند شکل 3 ظاهر می‌شود.


شکل 3

در ایمیج فوق کاشی‌هایی همانند سیستم‌عامل ویندوز 8 وجود ندارد، زیرا نسخه فوق بر مبنای ویندوز 10 طراحی شده و کاشی‌ها از جمله مولفه‌های حذف شده در این نسخه هستند. دقت کنید هدف از طراحی نسخه اینترنت اشیا ویندوز 10 این نیست که بتوانید یک پکیج نرم‌افزاری همچون آفیس را روی بورد نصب کنید، بلکه هدف ارائه قدرت پردازشی ویندوز است تا امکان توسعه برنامه‌های یونیورسال برای بوردها فراهم شود. پس اگر منوی شروع ویندوز را مشاهده نکردید تعجب نکنید.

نصب و راه‌اندازی برنامه‌ کاربردی

اکنون باید بورد رزبری که سیستم‌عامل Windows 10 IoT Core روی آن نصب شده آماده استفاده باشد. در ادامه باید ماوس و صفحه‌کلید و یک مانیتور به بورد متصل کنید. اکنون آماده هستیم تا برنامه کاربردی خود را توسط محیط توسعه یکپارچه ویژوال استودیو بنویسیم. اگر دسترسی به نسخه حرفه‌ای ویژوال استودیو وجود ندارد، نسخه رایگان Visual Studio Community در دسترس است، هرچند دسترسی به نسخه حرفه‌ای این محصول برای کاربران ایرانی مشکل نیست! دقت کنید برای انجام این پروژه باید بورد و کامپیوتر به شبکه یکسانی متصل باشند. اگر هر دو به شبکه متصل شده‌اند باید رزبری پای را در ابزار windows IoT Core Watcher مشاهده کنید. ابزار فوق در زمان نصب IoT Core Rpi به شکل خودکار روی کامپیوتر نصب می‌شود. اگر رزبری پای را مشاهده کنید نشان می‌دهد که همه کارها به درستی انجام شده و آماده استفاده است.

 

در پروژه فوق قصد داریم برنامه کلاسیک Hello World را بسازیم. زمانی‌که برنامه‌هایی برای Windows 10 IoT Core دو گزینه در اختیار داریم. برنامه‌هایی که از رابط گرافیکی (ماوس و صفحه‌کلید) پشتیبانی می‌کنند طراحی کنیم یا به سراغ طراحی برنامه‌های بدون رابط کاربری برویم. در این پروژه به دنبال ساخت برنامه‌ای بدون رابط کاربری همچون ماوس و صفحه‌کلید هستیم. ویژوال استودیو را باز کنید، گزینه Windows Universal را انتخاب و سپس مدل Blank App را انتخاب کنید.

ویژوال استودیو قالب Blank App را همراه با یکسری فایل ایجاد می‌کند. یکی از فایل‌های این پروژه MainPage.xaml است. فایل‌های زمل (XAML) رابط کاربری را توصیف می‌کنند. در مثال فوق، این فایل تنها یک شالوده زیربنایی ارائه می‌کند و فاقد هیچ‌گونه محتوایی است. به عنوان اولین آزمایش در نظر داریم پیام Hello World در وسط صفحه‌نمایش نشان داده شود؛ بنابراین فایل MainPage.xaml را ویرایش می‌کنیم.

در قطعه کد شکل 6 یک کادر متنی استفاده کردیم و رنگ آن‌را با دستور Foreground=Blue آبی و طراز متن در مرکز صفحه را با HorizontalAlignment=“Center” و VerticalAlignment=“Center” تنظیم کردیم. برنامه یونیورسال آماده است. برای آزمایش برنامه فوق در ویژوال استودیو ابزارهای خاصی تعبیه شده است. بهتر است ابتدا برنامه را با کامپیوتر اجرا کنید. روی دکمه اجرای برنامه که به شکل یک فلش کوچک است کلیک کنید.

اگر پیغام خطایی مشاهده نکردید، صفحه‌ای باز می‌شود که در وسط صفحه نوشته Hello World به رنگ آبی نشان داده می‌شود، اما هدف این است که برنامه روی بورد رزبری پای اجرا شود. برای انجام این‌کار باید یک قدم اضافی‌تر برداریم. در کنار دکمه اجرای برنامه، منویی برای انتخاب زیرساختی که نرم‌افزار باید روی آن اجرا شود وجود دارد. بوردهای رزبری‌پای بر مبنای فناوری آرم ساخته می‌شوند، پس باید از منو فوق این معماری را انتخاب کنیم. در حال حاضر در این منو گزینه Local Computer انتخاب شده است.

با توجه به این‌که قصد داریم برنامه روی بورد رزبری پای اجرا شود باید گزینه remote computer را انتخاب کنیم. با انتخاب گزینه فوق، پنجره‌ای برای دریافت مشخصات آی‌پی و اطلاعات هویتی بورد ظاهر می‌شود (در این مرحله گزینه none را انتخاب کنید.). اطلاعات فیلد را خالی گذاشته و گزینه اجرا را انتخاب کنید. این مرتبه برنامه به‌طور مستقیم روی بورد رزبری‌پای اجرا می‌شود و نوشته Hello World در مرکز مانیتوری که متصل به بورد رزبری پای است ظاهر می‌شود. کاری که انجام دادیم در ظاهر ساده، اما مهم بود، زیرا توانستیم برنامه خود را روی هر دو محیط کامپیوتر محلی و دستگاه راه دور اجرا کنیم. در حقیقت پیش از اجرای برنامه‌ها روی بورد رزبری پای بهتر است آن‌ها را در محیط شبیه‌سازی شده اجرا کنیم تا مشکلات شناسایی و برطرف شوند. اجازه دهید کار بیشتری انجام دهیم، فرض کنید قصد کنترل یک خروجی را داریم. در سناریو فوق قصد داریم یک LED را با کلیک روی دکمه‌ای که روی صفحه‌نمایش مانیتور قرار دارد روشن کنیم به‌طور مثال، یک LED را به پایه 18 رزبری متصل کرده‌ایم و از طریق کلیدی که درون برنامه قرار گرفته قصد کنترل آن‌را داریم.

با توجه به این‌که هنوز با سخت‌افزار بورد ارتباط برقرار نکرده‌ایم، پکیج مربوطه را نداریم. برای دانلود پکیج مربوطه در ویژوال استودیو در منوی View Solution Explorer روی Reference راست‌کلیک کنید تا منو context menu appear ظاهر شود. در پنجره ظاهر شده گزینه Add References را انتخاب کنید، در پنجره ظاهر شده گزینه Windows Universal را انتخاب کنید و در کادر جست‌وجو IoT را تایپ کنید. فهرست نتایج جست‌وجو Windows IoT Extension SDK را انتخاب و Ok را کلیک کنید تا بسته فوق نصب شود.

بسته فوق تمامی ماژول‌هایی که برای کار با سخت‌افزار نیاز دارید را روی کامپیوتر نصب می‌کند. در پروژه فوق ما از کلاس‌هایی که برای تعامل با GPIOs بورد نیاز است استفاده می‌کنیم. اکنون باید کدها را ویرایش کنیم. فایل MainPage.xaml را باز کنید تا رابط کاربری را ویرایش کنیم. کدهای نشان داده شده در شکل 11 را در فایل فوق وارد کنید.


شکل 11

در قطعه کد فوق از StackPanel استفاده کردیم که یک عنصر کنترل‌کننده محتوا است و اجازه می‌دهد عناصر در ستون‌های متوالی قرار بگیرند. درون عنصر فوق یک کادر متنی (TextBlock) وجود دارد که عنوان صفحه را کنترل می‌کند. در پایین این کادر یک دکمه فعال‌کننده اضافه کردیم. ویژگی Click=”Button_Click” نشان می‌دهد زمانی‌که دکمه فشار داده می‌شود متد Button_Click اجرا می‌شود. کد رویداد فوق در شکل 12 نشان داده شده است.


شکل 12 

‌دکمه فوق عملکرد یک سوییچ را دارد که وضعیت آن با متغیر State تعیین می‌شود. برچسب LED برای روشن یا خاموش کردن LED استفاده می‌شود. تعامل با GPIO از طریق آیتم pin انجام می‌شود. بدیهی است که آیتم فوق باید تعریف، پیکربندی و مشخص شود تا بتواند کار کند. کدهای مربوط به آیتم فوق در شکل 13 نشان داده می‌شود.


شکل 13

‌ InitGPIO ابتدا نمونه‌ای از GpioController را به دست می‌آورد. زمانی‌که نمونه‌ای از کنترل‌کننده به دست آمد، برای ساخت آیتم pin از آن استفاده می‌شود. در تابع فوق pin عملکردی شبیه به پایه متصل به LED را دارد و آن‌را پیکربندی می‌کند. در تابع فوق، پایه 18 در وضعیت خروجی و سطح پایین به شکل پیش‌فرض مقداردهی شده است. تابع InitGPIO توسط بوت برنامه فراخوانی مجدد می‌شود. شکل 14 نمای بصری برنامه را نشان می‌دهد.


شکل 14

پنل پیکربندی

در این مقاله نحوه تعامل و نوشتن یک برنامه ساده برای رزبری پای را بررسی کردیم. ساخت برنامه برای رزبری پای ممکن است سخت باشد، اما تعامل با آن ساده است، زیرا Windows 10 IoT Core یک رابط تحت وب مدیریتی ارائه می‌کند که از طریق آدرس http://minwinpc.local:8080 در دسترس است. آدرس فوق با نام پیش‌فرض به بورد تخصیص داده شده، اما می‌توان آدرس را تغییر داد یا به جای minwinpc.local از آدرس آی‌پی بورد استفاده کرد. نام کاربری و گذرواژه پیش‌فرض به ترتیب Administrator و p@ssw0rd است. در رابط کاربری فوق امکانات جالبی همچون گزارشی از فرآیندهای اجرا شده، تحلیل بار پردازنده مرکزی، مصرف حافظه اصلی و عملکردهای دیگر وجود دارد.

برای دریافت کدهای کامل پروژه فوق به آدرس https://github.com/guglielmino/rpi-universalapp-ledsample مراجعه کنید.


ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را می‌توانید از کتابخانه‌های عمومی سراسر کشور و نیز از دکه‌های روزنامه‌فروشی تهیه نمائید.

ثبت اشتراک نسخه کاغذی ماهنامه شبکه     ثبت اشتراک نسخه آنلاین

کتاب الکترونیک +Network راهنمای شبکه‌ها

  • برای دانلود تنها کتاب کامل ترجمه فارسی +Network  اینجا کلیک کنید.

کتاب الکترونیک دوره مقدماتی آموزش پایتون

  • اگر قصد یادگیری برنامه‌نویسی را دارید ولی هیچ پیش‌زمینه‌ای ندارید اینجا کلیک کنید.

برچسب: 

مطالب پربازدید

توسعه و پشتیبانی توسط : ایران دروپال
پشتیبانی توسط ایران دروپال