Windows 10 IoT
مقدمه
وقتی حرف از رزبری پای می شود ، ناخودآگاه به یاد لینوکس و دنیای متن باز می افتیم، قطعا اگر دنیای متن باز وجود نداشت، شاهده این چنین پیشرفت های تکنولوژیکی نبودیم ، شاید گوشی هوشمندی با سیستم عامل اندروید وجود نمی داشت یا سیستم هایی این چنین کوچک و انعطاف پذیر و قدرتمند. کمکم با رشد چشمگیر باز سیستم های توکار(embedded) و داغ شدن مباحثی مثل خانه هوشمند و سیستم های IOT ، بلاخره غول دنیای نرمافزار سورس بسته (مایکروسافت) به دنیای متن باز علاقه نشان داد و برای اولین بار سیستم عامل خود را تغییر داد.
البته قبلا بارها و بارها شاهد کپی برداری مایکروسافت از ایده های متن باز و استفاده از این ایده ها در محصولات این شرکت بوده ایم اما این اولین باری است که مایکروسافت سیستم عامل ویندوز را بر روی یک سخت افزار متن باز با معماری ARM پیاده سازی میکند. البته ویندوز مورد نظر با آن چیزی که از ویندوز می شناسید کاملا متفاوت است. تنها چیزی که پیاده سازی شده است هسته سیستم عامل است. به این معنا که شما قادر خواهید بود با استفاده از پلتفرم برنامه نویسی ماکروسافت (یعنی دات نت و ویژوال استودیو) برنامه مورد نظر خود را برای رزبری پای اجرا کنید.
همیشه یکی از دغدغههای اصلی افراد تازه کاری که قصد استفاده از بردهای رزبری پای را دارند ، مساله نوشتن برنامه است ، چرا که بیشتر افراد با ساختار لینوکس آشنایی لازم را ندارند و همچنین با زبان هایی مثل C یا پایتون زیاد آشنا نیستند و شاید نوشتن یک برنامه چه کامندلاین چه گرافیکی برایشان یک کار پیچیده به حساب بیاید. با استفاده از ساختار ارائه شده از سوی ماکروسافت ، احتمالا افراد بیشتری قادر به برنامه نویسی برای این گونه برد ها باشند.
در ادامه به نحوه راه اندازی ویندوز 10 برای برد رزبری پای می پردازیم و همچنین آموزش خواهیم داد که چگونه با استفاده از ویژوال استودیو قادر خواهید بود برنامه مورد نظر خود را برای کنترل ورودی و خروجی ها بنویسید. پس با سیسوگ همراه باشد.
رزبری پای و نصب ویندوز 10
در این مقاله قصد داریم روش نصب ویندوز 10 بر روی رزبری را آموزش دهیم و سپس برنامهای نوشته و روی آن تست کنیم.
قبل از درگیر شدن با ویژگیهای فنی، ملزومات موردنیاز سیستمعامل را در زیر لیست میکنیم:
- ویندوز 10 نصبشده بر روی کامپیوتر.
- رزبری 2 به همراه منبع تغذیهی مناسب.
- کارت حافظه با حداقل 8 گیگ ظرفیت.
- کابل HDMI.
- کابل شبکه.
- یک مانیتور برای اتصال به برد رزبری.
برای نصب بهصورت عرف به یک کامپیوتر که سیستمعامل آن ویندوز 10 باشد احتیاج داریم. (راههایی برای نصب در دیگر سیستمعاملها مثل لینوکس و ورژنهای قبلی ویندوز وجود دارد، ولی ما از روش رسمی و معمول آن استفاده میکنیم.)
آمادهسازی شرایط
قدم اول تهیهی برد رزبری است. در مرحلهی بعد ابزارها و سیستمعامل را از اینترنت دانلود میکنیم. سیستمعامل بهصورت image و با نام “IOT Core Rpi” دریافت میشود. در ویندوز این “ایمج” را با دو بار کلیک کردن روی آن، بهصورت درایو مجازی، باز میکنیم. فایل اجرایی با نام “Windows_ 10_IoT_Core_Rpi2” در آن قرار دارد. فایل را نصب میکنیم.
پس از نصب، ابزارهای موردنیاز در مسیر “C:Program Files (x86)Microsoft IoTFFURaspberryPi2” قرار میگیرد.
فایل موردنظر ما “FLASH.FFU” نام دارد. فرمت FFU توسط مایکرو سافت برای نصب ویندوز ساخته شده است.
برای اینکه کارت حافظه را برای بوت کردن رزبری آماده کنید، لازم است “WindowsIoTImageHelper” اجرا کنید که یک رابط برای ریختن فایل FFU بر روی کارت حافظه است.
آدرس ایمج را داده و گزینه “FLASH” را انتخاب میکنیم. پس از اندکی صبر، پروسه تمام میشود.
اولین راهاندازی ویندوز 10
وقتی که پروسهی نوشتن بر روی کارت حافظه تمام شد، آن را به رزبری متصل میکنیم. برای اولین راهاندازی لازم است کمی تنظیمات در زمینههای زبان و شبکه وایفای انجام دهیم. پس از بوت شدن، صفحهی زیر نمایش داده میشود:
در این ویندوز سیستم “کاشی” مشابه با ویندوز 8 وجود ندارد و حتی خبری از منوی استارت هم نیست. همانطور که در پایین صفحه هم مشخص شده است، این نسخه از ویندوز برای توسعهدهندگان ارائه شده و هدف آن نصب و اجرای برنامههای نوشتهشده با ویژوال استودیو است.
نصب و راهاندازی برنامهی خودمان در ویندوز رزبری پای
محیط رسمی توسعهی مایکروسافت، ویژوال استودیو است که خوشبختانه آن را بهصورت رایگان ارائه کرده است. پس آن را دانلود کرده و بر روی کامپیوتر خود نصب میکنیم.
خب اگر تا اینجا مراحل گفتهشده را صحیح پیش رفته باشیم باید ابزارهای زیر را در اختیار داشته باشیم:
- یک برد رزبری که سیستمعامل “Windows 10 IoT Core” روی آن نصب شده است. (رزبری را به موس و کیبرد و یک مانیتور متصل کنید.)
- یک کامپیوتر که روی آن ویژوال استودیو نصب شده است.
حتما لازم است برای انجام کار رزبری و کامپیوتر به یک شبکه متصل شده باشند. درصورتیکه این امر انجام شده باشد باید رزبری را در ابزار “Windows IoT Core Watcher” ببینیم. این ابزار در زمان نصب “IOT Core Rpi” بصورت خودکار نصب شده است. مشاهده رزبری به معنی نصب صحیح و آمادهی کار بودن است.
ویژوال استودیو را اجرا کرده و یک پروژهی “Blank App” ایجاد کنید و آن را توسعه دهید. برای این سیستم در دو روش میتوان برنامه نوشت: 1. با رابط کاربری مثل موس، کیبرد و مانیتور و 2. بدون رابط کاربری.
در اینجا بیشتر برنامههای بدون رابط کاربری مثل موس و کیبرد مدنظر است (مانند برنامههایی که برای آردوینو مینویسیم)؛ برنامههایی که بهطور مستقیم با سنسورها و ورودی و خروجیها کار میکنند.
ویژوال استودیو برنامه را ایجاد میکند و تعدادی فایل هم همراه با آن میسازد. در این بین فایل “MainPage.xaml” را نیز پیدا خواهید کرد. فایلهای XAML برای توصیف رابط کاربری استفاده میشوند. در این مثال، این فایل فقط اسکلتبندی پایه را شامل میشود و هیچ محتوایی ندارد. برای اولین تست میخواهیم پیام “Hello World” در وسط صفحه به نمایش در بیاید. همانطور که در کد زیر نشان داده شده است، محتوای “MainPage.xaml” را تغییر میدهیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <Page x:Class=”App2.MainPage” xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” xmlns:d=”http://schemas.microsoft.com/expression/blend/2008” xmlns:local=”using:App2” mc:Ignorable=”d”> xmlns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2006” <TextBlock Foreground=”Blue” HorizontalAlignment=”Center” <Grid Background=”{ThemeResource ApplicationPageBackgroundThemeBrush}”> VerticalAlignment=“Center” FontSize=“64”>Hello World</TextBlock> </Page> </Grid> |
در آن از یک تکست باکس استفاده کردیم و رنگ آن را با دستور (with Foreground=“Blue”) آبی کردهایم و توسط دستورات ( HorizontalAlignment=“Center”) و (VerticalAlignment=“Center”) آن را در مرکز صفحه قرار دادهایم.
اولین برنامهی ما آماده است. برای تست برنامه در ویژوال استودیو ابزارهایی قرار داده شده است. برای تست بهتر است برنامه را ابتدا در کامپیوتر اجرا کنیم. برای این منظور کافی است دکمهی اجرا که به شکل یک فلش کوچک است را بزنیم:
درصورتیکه روال را درست انجام دهید یک صفحه باز میشود و در مرکز آن نوشتهی آبی رنگ “Hello World” نمایش داده میشود. نتیجهی خوبی است ولی هدف ما اجرای برنامه روی رزبری بود. برای این منظور یک قدم دیگر لازم است: در کنار منویی که گزینه اجرا قرار دارد، میتوانید انتخاب کنید که نرمافزار چه نوع کامپایلی را برای برنامه انجام دهد.
همانطور که میدانید رزبری بر اساس تکنولوژی ARM ساخته شده است. بنابراین از منو این معماری را انتخاب میکنیم. در کنار این منو، منوی دیگری نیز وجود دارد که در حال حاضر در آن گزینه “Local Computer” انتخاب شده است.
از آنجایی که ما میخواهیم برنامه را بر روی رزبری اجرا کنیم گزینهی “Remote Computer” را انتخاب میکنیم. با انتخاب این گزینه یک باکس نمایش داده میشود که مشخصات آیپی برد را میخواهد. آن را خالی بگذارید و گزینهی اجرا را بزنید. این بار نوشته در مرکز مانیتوری که به رزبری متصل است نمایش داده میشود.
هرچند مراحل انجام کار تا به اینجا بسیار ساده بود ولی ما به مرحلهی بسیار مهمی رسیدیم؛ با استفاده از این روش میتوانیم برنامهها را در کامپیوتر شبیهسازی و در نهایت روی رزبری اجرا کنیم.
در قدم بعدی سطح کار را کمی گسترش میدهیم تا بتوانیم یک خروجی را کنترل کنیم. برای مثال یک LED را به پایه 18 رزبری مانند شکل متصل کرده و در برنامه توسط یک کلید آن را کنترل میکنیم:
برای ریختن برنامه روی رزبری باید مراحل زیر را طی کنید:
در ویژوال استودیو در منوی “View Solution Explorer” روی “References” کلیک راست کنید و اجازه دهید پنجره context menu appear باز شود. در این پنجره گزینهی “Add Reference” را انتخاب کنید در پنجرهی بازشده در سمت چپ، گزینهی “Windows Universal” انتخاب کنید و در باکس جستوجو “IoT” را تایپ کنید. در نتایج جستجو “Windows IoT Extension SDK” را انتخاب کنید و گزینه OK را بزنید تا نصب شود.
بسته “Windows IoT Extension SDK” تمام ملزومات لازم برای کار کردن با سختافزار را در اختیار ما قرار میدهد. ما از آن برای کنترل GPIO استفاده میکنیم.
برنامهی زیر را در MainPage.xaml مینویسیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <Page x:Class=”App2.MainPage” xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” xmlns:d=”http://schemas.microsoft.com/expression/blend/2008” xmlns:local=”using:App2” mc:Ignorable=”d”> xmlns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2006” <StackPanel HorizontalAlignment=”Center” VerticalAlignment=”Center”> <Grid Background=”{ThemeResource ApplicationPageBackgroundThemeBrush}” > <TextBlock Foreground=”Blue” HorizontalAlignment=”Center” </StackPanel> FontSize=”48”>LED Control</TextBlock> <Button Click=”Button_Click” HorizontalAlignment=”Center” Margin=” 0,50,0,0” FontSize=”64” >OFF</Button> </Grid> </Page> |
یک عنصر StackPanel اضافه میکنیم که یک نوع عنصر کنترل محتوا است که بهطور خاص امکان قرار دادن عناصر را در یک ستون یکی پس از دیگری را ممکن میکند.
درون این StackPanel همان TextBlock موجود در مثال اول وجود دارد که نقش عنوان صفحه را به عهده دارد. در زیر آن یک دکمه وارد میکنیم که یک کنترل فعال است. ویژگی Click=“Button_Click” نشان میدهد که وقتی دکمه فشرده میشود متدی با نام Button_Click اجرا میشود.
برنامهی زیر را برای رویداد دکمه مینویسیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | bool state = false; const int LED_PIN = 18; GpioPin pin; private void Button_Click(object sender, RoutedEventArgs e) { state = !state; pin.Write(pinValue); var pinValue = state ? GpioPinValue.High : GpioPinValue.Low; } Button btn = (Button)sender; btn.Content = state ? “ON” : “OFF”; |
این دکمه بهعنوان سوئیچ عمل میکند که وضعیت آن را با متغیر “state” مشخص میکنیم. برچسب LED برای حالت روشن یا خاموش با “ON” یا “OFF” مشخص میشود.
کنترل GPIO با استفاده از آیتم pin انجام میشود. در کد زیر این آیتم را تعریف و پیکربندی میکنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 | private void InitGPIO() { var gpio = GpioController.GetDefault(); pin = gpio.OpenPin(LED_PIN); pin.SetDriveMode(GpioPinDriveMode.Output); pin.Write(GpioPinValue.Low); } |
تابع InitGPIO نقش پایهای که به LED متصل شده است را تعیین کرده و آن را پیکربندی میکند.
در این تابع، پایه 18 در حالت خروجی و سطح پایین بهصورت پیشفرض مقداردهی شده است.
پنل پیکربندی رزبری پای در ویندوز
توسعهی برنامه با رزبری ممکن است کمی پیچیده باشد ولی ارتباط با سختافزار آن بسیار ساده است. Windows 10 IoT یک رابط وب را برای تنظیمات خود در نظر گرفته است که از آدرس زیر میتوانید به آن دسترسی داشته باشید : http://minwinpc.local:8080
میتوان این آدرس را تغییر داد و یا بهجای minwinpc.local از آدرس آیپی برد استفاده کرد.
نام یوزر بهصورت پیشفرض “Administrator” و پسورد آن “p@ssw0rd” است. توصیه میکنیم رمز پیشفرض را عوض کنید.
در رابط کاربری گزینههای جالبی مانند گزارشی از فرایندهای اجراشده، تجزیه و تحلیل بار CPU و مصرف RAM و توابع جالب دیگر وجود دارد.
از لینک زیر میتوانید برنامهی نوشتهشده برای کنترل LED را دانلود کنید:
rpi-universalapp-ledsample-master.zip
امید است با این مقالهی مختصر توانسته باشیم کمکی به استفاده از این ابزار جالب و قدرتمند کرده باشیم.
سلام. من ویندوز Win10.Enterprise.LTSC.21H2 نصب کردم و با فعال ساز MAS_1.5_AIO فعالش کردم اما توی مشخصات به عنوان Windows 10 IoT Enterprise LTSC فعال شده. علتش چیه؟ مشکلی پیش میاد؟ نه برنامه ای نوشتم. نه مینیاتور و کابل hdmi و… هیچی. از بین پیش نیازهایی که گفتید فقط رم 8 گیگ دارم…
سلام من یه برنامه با پایتون تو لپتاب نوشتم و اونو به صورت exe در اوردم.حالا میخواستم بدونم میشه این فایل رو تو رزبپری که سیستم عامل ویندوز داره اجرا کرد؟
سلام
باید بدونید که ویندوزی که روی رزبری پای نصب میشه با ویندوزی که مشناسیم خیلی متفاوت هست
بستگی به این داره که از چه قابلیت های سیستم عامل استفاده کرده باشید
فکر کنم تستش کنید ساده ترین راه باشه 🙂 برای فهمیدن جوابش
البته فکر نکنم کار کنه چون معماری سخت افزار رزبریپای با pc متفاوت هست
یکی بر مبنای x86 هست و دیگری با arm
سلام 2 تا سوال داشتم یکی اینکه چطوری پرینتر رو تو این ویندوز نصب و فعال کنیم دوم اینکه آیا میشه برنامه های که با سی شارپ نوشتیم رو برا رزبری کامپایل بگیریم ؟
ممنون
نصب درایور پرینتر رو اطلاعی ندارم چطور میشه انجام داد ولی این که بخواید کد های c# رو بر روی ریزبری پای یا هر سیستم دیگه ای که مبتنی بر لینوکس هست اجرا کنید تنها نیازه از پروژه mono استفاده کنید 🙂
سلام میشه یه ویندوز معمولی (که متن با نیست ) رو روی این زیبری پای نصب کرد؟
مثلاً وینوز 10 پرو
سلام دوست عزیز – متاسفانه به دلیل متفاوت بودن ساختار CPU – ویندوز چنین امکانی رو نداره که روی دیگر پلتفرم های سخت افزاری نصب بشه
البته ویندوز های مخصوصی هست مثل ویندوز CE که اونا برای ARM گسترش پیدا کردند ولی نمیدونم هنوز آپدیت می شوند یا نه
ممنون از راهنمای تون
خواهش میکنم دوست عزیز
2-ایا برای نصب ویندوز نیاز به یک رم و رم ریدر هست ؟
نمیشه کاری کرد جای کمتری بخواد داخل قاب خود رزبری ؟
بله قطعا لازمه که کارت حافظه داشته باشید !
تشکر برای پاسخ گویی
خواهش میکنم دوست عزیز
سلام مرسی بابت مطلب
اما دو سوال
1-جدید ترین نوع رزبری پای نوع رزبری +3B اون هست که خودش از دو نوع RS و Eelement 14 هست
فرق این دو نوع چیه ؟
و ایا ویندوز iot رو اسن دو نوع نصب میشه ؟
(مال شرکت RS که مییدونم اما اون یکی رو نه )
ممنون میشم راهنمایی بفرمایید .
سخت افزار زرپری پای یکی هست ؛ حالا این که دو تا شرکت مختلف لایسنس تولیدش رو دارند احتمالا برای بحث های پشتیبانیشون هست و لازم نیست نگران تفاوت های اونها باشید.
و فکر میکنم برای نصب ویندوز هیچ مشکلی وجود نداشته باشه.