ทดลอง Windows10 IoT Core บน Raspberry Pi 2

นี่คือครั้งแรกของการนำเสนอแนวทางการใช้งาน Windows10 IoT บนบอร์ดคอมพิวเตอร์ Raspberry Pi 2 ฉบับภาษาไทย ทดสอบจริง ลองจริง เพื่อเมกเกอร์ไทยทุกคน

หลังจากที่ไมโครซอฟต์ได้ออกระบบปฏิบัติการ Windows10 และได้ทำตามที่สัญญาคือ สนับสนุนให้บอร์ด Raspberry Pi 2 (ต่อไปเขียนย่อเป็น RPi2) สามารถใช้งานกับ Windows10 ได้ฟรี โดยเปิดให้ดาวน์โหลดไฟล์อิมเมจสำหรับเขียนลง microSD การ์ด เพื่อนำไปบูต RPi2 เข้าสู่การทำงานของ Windows10 อย่างไรก็ตาม Windows10 ที่ใช้กับ RPi2 นี้เป็น Windows10 IoT Core ที่เน้นใช้งานเขียนโปรแกรมเพื่อสั่งให้ RPi2 ติดต่อกับฮาร์ดแวร์ ตัวตรวจจับแบบต่างๆ เพื่อส่งข้อมูลให้กับคอมพิวเตอร์พีซีหรือเครื่องเซิร์ฟเวอร์ ไม่ได้เน้นใช้งานเป็นเครื่องเดสก์ทอปในแบบเดียวกับ Raspbian

หลักการและแนวทาง
ในการเขียนโปรแกรมเพื่อสั่งงาน RPi2 ที่ทำงานบน Windows10 IoT Core จะต้องเขียนโปรแกรมภาษา C++ หรือ C# ของไมโครซอฟต์ โดยทางไมโครซอฟต์แนะนำให้ใช้กับ Visual Studio 2015 โดยได้ออกรุ่น Community ที่อนุญาตให้ใช้งานได้ฟรี มีข้อจำกัดเพียงเรื่องเดียวคือ ห้ามไม่ให้พัฒนาแอปพลิเคชั่นหรือโปรแกรมที่ใช้ในระดับองค์กร (Enterprise) เท่านั้น

การพัฒนาโดยใช้ Visual Studio 2015 มีขั้นตอนซับซ้อน เหมาะกับนักพัฒนาที่ชำนาญการเขียนโปรแกรมค่ายไมโครซอฟต์ก่อนหน้านี้ ทำให้นักพัฒนาจำนวนมากเหล่านี้สามารถเขียนโปรแกรมควบคุมฮาร์ดแวร์ได้ง่ายขึ้น

ในบทความนี้จะนำเสนอตัวอย่างขั้นตอนการเขียนโปรแกรมภาษา C# เพื่อให้ได้แอปพลิเคชั่นที่รันบน RPi2

ขั้นตอนและวิธีการ
(1) เตรียมคอมพิวเตอร์พีซีให้พร้อม

(1.1) ตรวจสอบว่า Windows10 ที่ใช้เป็นรุ่น 10240 หรือใหม่กว่าหรือไม่ ตรวจสอบได้โดยคลิกปุ่ม start แล้วพิมพ์ winver แล้วกดปุ่ม Enter โปรแกรมจะเปิดหน้าต่าง About Windows ดังรูปที่ 1

windows10-raspberryPi-001

(1.2) จากนั้นติดตั้งโปรแกรม Visual Studio Community 2015 ซึ่งเป็นรุ่นที่ ไมโครซอฟต์อนุญาตให้ใช้งานได้ฟรีดาวน์โหลดได้จาก https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx โดยมี 2 ทางเลือกคือ ดาวน์โหลดไฟล์ .exe ขนาดเล็กสำหรับช่วยดาวน์โหลด โปรแกรมผ่านอินเทอร์เน็ต และดาวน์โหลดเป็นไฟล์ .iso ผู้เขียนเลือกแบบ .iso จึงได้ไฟล์ vs2015.com_enu.ISO ขนาด 3.9GB (ใช้เวลาดาวน์โหลดพอสมควร) เมื่อดาวน์โหลดเรียบร้อย ให้ดับเบิลคลิกเปิดไฟล์ .ISO มันจะจำลองไดรฟ DVD ให้ทันที (ตัวอย่างของผู้เขียนเป็นไดร์ฟ d:) ให้คลิกเปิดดูไฟล์ที่อยู่ในไดรฟนี้ ดับเบิลคลิกไฟล์ vs_community.exe ดังรูปที่ 2 เพื่อทำการติดตั้งโปรแกรม

windows10-raspberryPi-002

(1.3) ในการติดตั้งโปรแกรมให้เลือกเป็นแบบ Custom เพื่อเลือกกำหนดว่าจะติดตั้งโปรแกรมส่วนใดบ้าง ดังรูปที่ 3.1คลิกเลือกให้ติดตั้ง Universal Windows App Development Tools เพิ่ม ดังรูปที่ 3.2

windows10-raspberryPi-003

(1.4) ตรวจสอบรุ่นของ Visual Studio ว่าเป็นรุ่น 14.0.23107.0 D14Rel หรือไม่ และตรวจสอบรุ่นของ Visual Studio Tools for Universal Windows Apps คือ รุ่น 14.0.23121.00 D1400B ขึ้นไป หรือไม่ ซึ่งทำได้โดยเปิดโปรแกรม Visual Studio คลิกเลือกเมนู Help> About Microsoft Visual Studio ดังรูปที่ 4

windows10-raspberryPi-004

(1.5) ติดตั้ง Windows IoT Core Project Templates จาก https://visualstudiogallery.msdn.microsoft.com/06507e74-41cf-47b2-b7fe-8a2624202d36 เพื่อดาวน์โหลดไฟล์ WindowsIoTCoreProjectTemplates.vsix เมื่อดาวน์โหลดเสร็จ ดับเบิลคลิกไฟล์เพื่อติดตั้งเทมเพลตนี้ โปรแกรมจะแจ้งให้ทราบว่า
เมื่อคลิก Install แสดงว่าผู้ใช้ยอมรับข้อความลิขสิทธ์ข้างต้นดังแสดงในรูปที่ 5 ให้คลิก Install

windows10-raspberryPi-005

(1.6) เปิดการทำงาน enabled developer
mode ที่คอมพิวเตอร์ซึ่งรัน Windows10 เพื่อให้สามารถดาวน์โหลดโปรแกรมไปยัง RPi2 และใช้คอมพิวเตอร์ตัวเดียวกันนี้ในการดีบักโปรแกรมที่รันบน RPi2 ได้ โดยมีขั้นตอนดังนี้
(1.6.1) ในคอมพิวเตอร์ทำการคลิกเครื่องหมาย Windows ที่มุมล่างซ้าย เพื่อเลือก Setting คลิกเลือก Update & security
(1.6.2) ที่ด้านซ้ายมือ คลิกเลือกหัวข้อ For developers
(1.6.3) ที่หน้าต่างขวามือ คลิกเลือก Developer mode ดังรูปที่ 6

windows10-raspberryPi-006

(2) จัดเตรียม RPi2 ให้พร้อมรัน Windows10 IoT core
ส่วนของฮาร์ดแวร์ที่ต้องจัดเตรียมให้พร้อม ประกอบด้วย

  1. คอมพิวเตอร์ที่รัน Windows10
  2. บอร์ด Raspberry Pi 2
  3. microSD การ์ด 8GB class10 ขึ้นไป
  4. แหล่งจ่ายไฟ 5V หัวต่อเป็น micro USB
  5. จอมอนิเตอร์ HDMI
  6. สายอีเทอร์เน็ต (สายแลน)
  7. ตัวอ่าน micro-SD การ์ด

(2.1) ทำการติดตั้ง Windows10 IoT Core tools โดยมีขั้นตอนต่างๆ ดังนี้

(2.1.1) ดาวน์โหลดไฟล์อิมเมจของ Windows10 IoT Core จาก http://ms-iot.github.io/content/en-US/Downloads.htm บันทึกเป็นไฟล์ IOT Core RPi.iso ลงในฮาร์ดดิสก์ของคอมพิวเตอร์

(2.1.2) ดับเบิลคลิกไฟล์ IOT Core RPi.iso ระบบปฏิบัติการจะติดตั้งไฟล์นี้ให้เป็นไดรฟ DVD เสมือน ทำการคลิกเปิดดูไฟล์ด้านใน ค้นหาไฟล์ Windows_10_IoT_Core_RPi2.msi

windows10-raspberryPi-007

(2.1.3) ดับเบิลคลิกไฟล์ Windows_ 10_IoT_Core_RPi2.msi เพื่อติดตั้งโปรแกรมตอบรับในทุกขั้นตอนการติดตั้ง จะพบไฟล์ flash.ffu ซึ่งเป็นไฟล์อิมเมจที่ใช้เขียนลง microSD การ์ด เพื่อใช้ในการบูต RPi2 ไฟล์นี้จะอยู่ที่ C:\Program Files(x86)\Microsoft IoT\FFU\RaspberryPi2

(2.1.4) เมื่อติดตั้งโปรแกรมเสร็จแล้วให้ปลดหรือ Eject DVD ไดรฟเสมือนนี้ ทำได้โดยคลิกเมาส์ปุ่มขวาที่ไดรฟเสมือน แล้วเลือก Eject

(2.2) เขียนไฟล์อิมเมจ Windows10 IoT Core ลงบน microSD การ์ด

(2.2.1) เสียบ microSD การ์ด ลงในตัวอ่านการ์ด

(2.2.2) เรียกโปรแกรม WindowsIoTImageHelperทำได้โดยคลิกเครื่องหมายวินโดวส์ที่มุมล่างซ้าย พิมพ์ข้อความ WindowsIoT เพื่อค้นหาโปรแกรม จะพบ 2 โปรแกรมให้คลิกเลือก WindowsIoT ImageHelper ดังรูปที่ 8

windows10-raspberryPi-008

(2.2.3) ตัวโปรแกรมจะค้นหา SD การ์ดที่มีในคอมพิวเตอร์ คลิกเลือก SD การ์ดที่ต้องการ จากนั้นคลิกปุ่ม Browse เลือกไฟล์ flash.ffu เมื่อเลือกแล้ว ให้คลิกปุ่ม Flash ดังรูปที่ 9

windows10-raspberryPi-009

(2.2.4) เมื่อเขียน micro-SD การ์ดเสร็จแล้ว ให้เตรียมถอดการ์ดออก โดยคลิก Safety Remove Hardware ใน task tray หรือค้นหา USB device ใน File Explorer เมื่อพบแล้ว คลิกเมาส์ปุ่มขวาเลือกเมนู Eject ขั้นตอนนี้สำคัญมาก หากลืมทำ อาจทำให้ไฟล์อิมเมจที่เขียนลงในmicro-SD การ์ดเสียหายได้ เมื่อคลิก Eject แล้ว รอสักครู่ จากนั้นดึง microSD การ์ดออก

(3) บูตระบบ
หลังจากที่เขียนไฟล์อิมเมจให้กับ microSD การ์ดแล้ว ให้นำ microSD การ์ดมาเสียบในบอร์ด RPi2 ต่ออุปกรณ์ต่างๆ ให้พร้อมทำงาน โดยมีตำแหน่งจุดต่อต่างๆ แสดงดังรูปที่ 10 โดยมีขั้นตอนต่างๆ ดังนี้

windows10-raspberryPi-010

(3.1) นำ microSD การ์ด ที่เขียนไฟล์อิมเมจแล้วเสียบเข้ากับ RPi2 (เป็นซ็อกเก็ตที่อยู่ด้านใต้ของ RPi2 ตำแหน่งที่มีลูกศรชี้หมายเลข (#1 ของรูปที่ 10)

(3.2) ต่อสาย LAN ระหว่าง RPi2 กับฮับ/สวิตช์ (#2 ของรูปที่ 10) ต้องแน่ใจว่าบอร์ด RPi2 และคอมพิวเตอร์ที่ใช้พัฒนาโปรแกรมอยู่ในวงแลนวงเดียวกัน (ในตัวอย่างทั้งบอร์ดและคอมพิวเตอร์กำหนดให้รับค่า IP แอดเดรสจาก DHCP Server ตัวเดียวกันจึงอยู่ในวงแลน เดียวกัน)

(3.3) ต่อสาย HDMI เชื่อมต่อระหว่าง RPi2 กับจอมอนิเตอร์ (#3 ของรูปที่ 10)

(3.4) ต่ออะแดปเตอร์จ่ายไฟ 5V 2A ให้กับ RPi2 โดยต่อกับพอร์ต micro USB (#4 ของรูปที่ 10)

(3.5) หลังจากจ่ายไฟให้ RPi2 มันจะบูต
เข้าการทำงานของ Windows10 IoT Core อัตโนมัติ ขั้นตอนนี้จะใช้เวลาหลายนาที หลังจากที่พบโลโก้ของ Windows หน้าจอจะดับไปประมาณหนึ่งนาที ไม่ต้องกังวล ในการบูตครั้งแรกจะเข้าสู่หน้าจอ ให้เลือกภาษาของ WindowsIoT Core ให้นำเมาส์มาต่อเพื่อเลือกภาษา หรือให้รอ 1-2 นาทีเพื่อข้ามขั้นตอนนี้

(3.6) เมื่อบูตเครื่องสำเร็จแล้ว โปรแกรม DefaultApp จะทำงานและแสดงหมายเลข IP แอดเดรส ของ RPi2 ดังรูปที่ 11 ให้สังเกตชื่อเครื่องที่ช่อง Device name ค่าที่กำหนดไว้ก็คือ miniwinpc

windows10-raspberryPi-011

(3.7) ในการรีโมตเข้า Windows10 IoT Core เพื่อเปลี่ยนชื่อเครื่อง รหัสผ่าน ทำได้โดยใช้โปรแกรม PowerShell หรือจะเชื่อมต่อแบบ SSH ได้เช่นกัน ถ้าไม่ได้เปลี่ยนชื่อ ชื่อของบอร์ด RPi2 จะเป็น miniwinpc

(4) ทดลองโปรแกรมภาษา C# ให้ทำงานบน RPi2 ที่ทำงานบน Windows10 IoT Core
โปรแกรมที่ทำงานบน RPi2 มี 2 โหมดคือ headed และ headless

ในโหมด headed โปรแกรมจะทำงานพร้อมกับแสดง User Interface (UI) ที่รับค่าจากผู้ใช้และแสดงผล

ส่วนโหมด headless โปรแกรมจะทำงานโดยไม่มี UI สำหรับติดต่อกับผู้ใช้งานทำให้ประหยัดทรัพยากรของระบบ ในโหมด headless แอปพลิเคชั่นจะทำงานเป็น services

หลังจากที่ติดตั้ง Visual Studio 2015 Community ในหัวข้อนี้จะทดลองโปรแกรมภาษา C# เพื่อควบคุมอุปกรณ์ฮาร์ดแวร์ของ RPi2 โดยทางไมโครซอฟต์ได้จัดเตรียมตัวอย่างโปรแกรมพร้อมไฟล์โปรเจ็กต์ภาษา C# และ C++ ให้ดาวน์โหลดมาทดลองได้จาก https://github.com/ms-iot/samples/archive/develop.zip จะได้ไฟล์ชื่อ samples-develop.zip ขนาด 128MB เมื่อดาวน์โหลดเสร็จให้ขยายไฟล์ บันทึกเก็บในฮาร์ดดิสก์ ให้ระวังว่า โปรแกรมเหล่านี้ไม่สามารถรันบนคอมพิวเตอร์พีซีทั่วไปได้ ต้องรันบน RPi2 ที่รัน Windows10 IoT Core เท่านั้น

(4.1) การเปิดไฟล์โปรเจ็กต์ใน Visual Studio หลังจากขยายไฟล์ samples-develop.zip ให้ค้นหาโฟลเดอร์ samples-develop\Blinky คัดลอกโฟลเดอร์นี้ไปยังฮาร์ดดิสก์ของคอมพิวเตอร์ จากนั้นเปิดโฟลเดอร์ samples-develop\Blinky\CS ดับเบิลคลิกเปิดไฟล์ Blinky.csproj ซึ่งเป็นไฟล์โปรเจ็กต์สำหรับ
ภาษา C# ไฟล์นี้จะถูกเปิดขึ้นใน Visual Studio 2015

(4.2) จัดเตรียมอุปกรณ์ทดลอง ในไฟล์โปรเจ็กต์นี้เป็นโปรแกรมภาษา C# ที่กำหนดให้ RPi2 ควบคุม LED ที่ต่อกับขา GPIO5 ของ RPi2 ติดดับทุกๆ 0.5 วินาที เพี่อให้เห็นการทำงานจะต้องเตรียมอุปกรณ์ ดังนี้

  • LED 3 หรือ 5 มม. สีตามต้องการ
  • ตัวต้านทาน 220Ω 1/4W 5%
  • แผงต่อวงจรหรือเบรดบอร์ดและสายเชื่อมต่อ 2 เส้น

(4.3) ต่อวงจร

(4.3.1) ต่อขาสั้น (แคโทด) ของ LED กับจุดต่อ GPIO 5 (ขาหมายเลข 29 ของขั้วต่อ 40 ขาของ RPi) ขาต่อของ RPi2 แสดงได้ดังรูปที่ 12

windows10-raspberryPi-012

(4.3.2) ต่อขายาว (แอโนด) ของ LED เข้ากับตัวต้านทาน

(4.3.3) ต่อขาตัวต้านทานอีกข้างหนึ่งไปยังจุดต่อไฟเลี้ยง +3.3V ของ RPi2

(4.3.4) ให้ระวังเรื่องขั้วของ LED ถ้าต่อกลับข้างจะไม่สว่าง (การต่อวงจรแบบนี้ LED จะสว่างเมื่อขา GPIO 5 มีสถานะเป็น LOW หรือ ‘0’ หรือเรียกว่า Active Low) ตัวอย่างการต่อวงจรจริงแสดงได้ดังรูปที่ 13

windows10-raspberryPi-013

(5) Build ไฟล์โปรเจ็กต์ส่งแอปไปรันที่ RPi2

(5.1) ดับเบิลคลิกไฟล์ Blinky.csproj เพื่อเปิดไฟล์โปรเจ็กต์ใน Visual Studio ทำการเปลี่ยนสถาปัตยกรรมของบอร์ดที่ใช้จาก x86 เป็น ARM เพื่อให้ตรงกับ RPi2 และคลิกที่ทูลบาร์ Local Machine เปลี่ยนเป็น Remote Machine ดังรูปที่ 14

windows10-raspberryPi-014

(5.2) Visual Studio จะแสดงหน้าต่าง Remote Connections ที่ช่อง Address ให้พิมพ์ชื่อบอร์ด RPi2 ที่รัน Windows10 IoT Core ถ้าไม่ได้เปลี่ยนชื่อ ชื่อของบอร์ดคือ miniwinpc หรือจะพิมพ์หมายเลข IP แอดเดรสก็ได้ ดังรูปที่ 15

windows10-raspberryPi-015

(5.3) หลังจากที่เลือกอุปกรณ์ remote connection ที่จะส่งโปรแกรมไปทดสอบการทำงานแล้ว ในการเลือกครั้งต่อไปจะไม่แสดงหน้าต่าง Remote Connections ให้เลือกบอร์ด RPi2 อีกแล้ว ถ้าต้องการกำหนดค่าใหม่หรือแก้ไขค่าเหล่านี้ ให้แก้ไข Project properties โดยคลิกเลือกเมนู Project > Blinky Properties ที่แท็บด้านซ้ายให้เลือก Debug ที่ช่อง Remote Machine ด้านขวามือให้เปลี่ยนชื่อเครื่องหรือเปลี่ยน IP แอดเดรสได้ตามต้องการดังรูปที่ 16

windows10-raspberryPi-016

(5.4) เมื่อกำหนดค่าเรียบร้อยแล้ว กดปุ่ม F5 ใน Visual Studio เพื่อสร้างไฟล์แอปพลิเคชั่นหรือ Build ในการสร้างไฟล์ถ้าขาดแพ็กเกจตัวใดที่ไม่ได้ติดตั้งบน Visual Studio จะมีการแจ้งเตือนให้ผู้พัฒนาหรือใช้งานทำการดาวน์โหลดและติดตั้งให้เสร็จก่อน จึงจะดำเนินการต่อไปได้ เมื่อสร้างไฟล์แอปพลิเคชั่นสำเร็จ จะส่งไปรันที่ RPi2 อัตโนมัติ สังเกตที่หน้าจอมอนิเตอร์ที่แสดง LED จำลองและ LED จริงที่ต่อกับขา GPIO5 จะกะพริบพร้อมกันดังรูปที่ 17

windows10-raspberryPi-017

(5.5) เมื่อทดสอบโปรแกรมเสร็จแล้ว ให้หยุดการดีบักด้วยการกดปุ่ม shift+F5

(6) พิจารณาส่วนของโปรแกรม

ส่วนของโปรแกรมตัวอย่างจะง่ายตรงไปตรงมา เริ่มจากกำหนดให้ไทเมอร์ทำงานทุกๆ 500 มิลลิวินาที เมื่อครบเวลาจะเรียกอีเวนต์ Tick ในอีเวนต์นี้จะสั่งกลับสถานะของขาพอร์ต GPIO5 คำอธิบายอย่างสรุปของโปรแกรมตัวอย่างมีดังนี้

(6.1) โปรแกรมในส่วนของไทเมอร์แสดงได้ดังนี้

public MainPage()

{

    // …

time = new Dispatcher Timer();

timer.Interval = TimeSpan.

FromMilliseconds(500);

    timer.Tick += Timer_Tick;

    InitGPIO();

    if (pin != null)

    {

      timer.Start();

    }

    // …

}

private void Timer_Tick(object sender, object e)

{

    if (pinValue == GpioPinValue.High)

  {

        pinValue = GpioPinValue.Low;

      pin.Write(pinValue);

      LED.Fill = redBrush;

  }

  else

  {

        pinValue = GpioPinValue.High;

      pin.Write(pinValue);

      LED.Fill = grayBrush;

  }

}

(6.2) ส่วนของโปรแกรมกำหนดค่าเริ่มต้นของ GPIO

ก่อนใช้งานขา GPIO จะต้องเตรียมความพร้อมหรืออินิเชียลเสียก่อน ซึ่งแสดงโปรแกรมได้ดังนี้ (ให้สังเกตว่ามีการเรียกใช้ Windows.Device.Gpio ซึ่งเป็นคลาสตัวใหม่ของ WinRT)

using Windows.Devices.Gpio;

private void InitGPIO()

{

   var gpio = GpioController.GetDefault();

    // Show an error if there is no GPIO controller

    if (gpio == null)

    {

       pin = null;

      GpioStatus.Text = “There is no GPIO controller on this device.”;

       return;

    }

pin = gpio.OpenPin(LED_PIN);

pinValue = GpioPinValue.High;

pin.Write(pinValue);

pin.SetDriveModeGpioPinDrive
Mode.Output);

   GpioStatus.Text = “GPIO pin initialized correctly.”;

}

อธิบายได้ดังนี้
(6.2.1) เริ่มต้นด้วยการใช้ GpioController.
GetDefault() เพื่อตรวจสอบว่า มีอุปกรณ์ GPIO controller หรือไม่
(6.2.2) ถ้าบอร์ดที่ใช้ไม่มี GPIO controller
ฟังก์ชั่นคืนค่าเป็น null ในโปรแกรมจะแสดงข้อความ “There is no GPIO controller on this device.” แล้วออกจากฟังก์ชั่น
(6.2.3) ถัดมาเปิดการทำงานของขาที่ต้องการด้วยการเรียกฟังก์ชั่น gpio.OpenPin() โดยป้อนค่า LED_PIN ให้ฟังก์ชั่น
(6.2.4) เมื่อเปิดใช้งานขา GPIO และได้ออปเจ็กต์ pin แล้ว ในการทำงานเริ่มแรกสุดต้องการให้ LED ดับ จึงต้องกำหนดสถานะของขานี้ให้เป็น High โดยเรียกฟังก์ชั่น pin.Write()
(6.2.5) ท้ายสุดให้กำหนดโหมดการทำงานของ pin เป็นเอาต์พุต โดยเรียกฟังก์ชั่น pin.SetDriveMode(GpioPinDriveMode.Output)
(6.3) ฟังก์ชั่นควบคุมการติดดับของ LED
(6.3.1) ถ้าต้องการให้ LED ติด เรียกฟังก์ชั่น pin.Write() โดยป้อนค่า GpioPinValue.Low ให้แก่ฟังก์ชั่น ดังนี้
pin.Write(GpioPinValue.Low);
(6.3.2) ถ้าต้องการให้ LED ดับ เรียกฟังก์ชั่น pin.Write โดยป้อนค่า GpioPinValue.High ให้แก่ฟังก์ชั่น
pin.Write(GpioPinValue.High);

บทสรุป
จากตัวอย่างที่นำเสนอจะเห็นว่า RPi2 เมื่อติดตั้งระบบปฏิบัติการ Window10 IoT Core แล้ว มันจะทำงานเป็นเสมือนบอร์ดควบคุมที่รับแอปพลิเคชั่นที่พัฒนาเสร็จแล้วจากคอมพิวเตอร์ที่ติดตั้ง Windows10 มารัน ไม่ใช่ ทำหน้าที่เป็นคอมพิวเตอร์ขนาดเล็กที่รันระบบปฏิบัติการ Windows10 เหมือนกับกรณีที่ RPi2 ติดตั้งระบบปฏิบัติการ Raspbian แต่อย่างใด

ด้วยแนวทางนี้ จะช่วยให้นักพัฒนาโปรแกรมด้วย C# มีทางเลือกในการติดต่อกับฮาร์ดแวร์ภายนอกผ่านทางบอร์ด RPi2 โดยใช้ความรู้ด้านการเขียนโปรแกรมด้วย C# แบบเดิม ไม่ต้องไปเรียนรู้เพื่อเขียนโปรแกรมบนฮาร์ดแวร์เหมือนกับที่มีการทำกันอยู่แล้วด้วยบอร์ดไมโครคอนโทรลเลอร์

ดังนั้น หากใครต้องการใช้งาน RPi2 กับ Windows10 ในแบบคอมพิวเตอร์จริงๆ คงต้องรอ ไปก่อน