Internet Explorer was retired on June 15, 2022
IE 11 is no longer accessible. You can reload Internet Explorer sites with IE mode in Microsoft Edge.
This is the core OS image that powers Windows IoT platform on Raspberry Pi 2 & 3. Windows 10 IoT Core is the smallest version of the Windows 10 editions that leverages the Windows 10 common core architecture. This edition enables building low-cost devices with fewer resources.
Important! Selecting a language below will dynamically change the complete page content to that language.
-
File Name:
14393.0.160715-1616.rs1_release_amd64fre_IOTCORE_RPi.iso
This is the core OS image that powers Windows IoT platform on Raspberry Pi 2 / 3. Windows 10 IoT Core is the smallest version of the Windows 10 editions that leverages the Windows 10 common core architecture. This edition enables building low-cost devices with fewer resources. Development for Windows 10 IoT Core leverages the Universal Windows Platform.
Learn more about Windows 10 IoT Core here.
-
Supported Operating Systems
Windows 10
Operating system
• Windows 10 (Build 10240 or higher) -
- Click the Download button on this page to start the download.
- Click Save to save this program to disk.
- Follow the rest of the instructions on the Setup Raspberry Pi page.
В связи с бурным развитием в последнее время технологий интернета вещей (IoT-технологий) многие компании стали разрабатывать операционные системы (ОС), специально «заточенные» для применения в IoT-технологиях. Одной из таких компаний является Microsoft, которая специально для этих целей выпустила операционную систему Windows 10 IoT core, которая уже успела полюбиться многим энтузиастам в мире электроники. В данной статье мы рассмотрим как установить Windows 10 IoT Core на плату Raspberry Pi и запустить на ней тестовое приложение.
Windows 10 IoT core – это самая маленькая версия операционной системы Windows, разработанная для применения в приложениях интернета вещей (IoT).
Для установки Windows 10 IoT core необходима специальная плата прототипирования, в нашем случае ее роль будет выполнять плата Raspberry Pi с установленной в нее SD картой. Для работы с Windows 10 IoT core понадобится всего лишь подать питание на плату Raspberry Pi, внешних монитора и клавиатуры не понадобятся. Windows 10 IoT core можно скачать и установить на ваш компьютер (мы это рассмотрим далее в статье). После установки Windows 10 IoT core необходимо просто подать питание на плату Raspberry Pi и она автоматически соединится к вашей сети и к вашему компьютеру на Windows. Вы можете писать код программы на Visual Studio и после этого перебрасывать код этой программы удаленно на плату, также вы можете удаленно производить отладку этой программы.
Операционная система Windows 10 IoT имеет сформировавшееся «живое» сообщество пользователей, которое разработало уже достаточно много кодов и проектов в рамках данной системы, среди которых вы легко можете найти прототип для проектируемого вами устройства. Windows 10 IoT core отличается хорошей устойчивостью и стабильностью работы, безопасностью и хорошей масштабируемостью. Для работы с Windows 10 IoT core доступно достаточно большое количество разнообразных электронных плат.
Необходимые компоненты
- Плата Raspberry Pi 2 или выше (купить на AliExpress).
- SD карта объемом не менее 8 Гб.
- Модуль чтения SD карт (или компьютер с таким ридером).
- HDMI кабель.
- Источник питания 5V 2A с разъемом microUSB.
- Монитор с HDMI.
- Мышка и USB клавиатура (опционально).
Установка Windows 10 IoT Core на Raspberry Pi
1. Вначале вам необходимо скачать панель инструментов Windows 10 IoT core на свой компьютер или ноутбук. Мы будем устанавливать эту операционную систему на SD карту с помощью данной панели инструментов. Скачать эту панель инструментов вы можете по следующей ссылке. После скачивания установите ее на свой компьютер.
2. Теперь нам необходимо установить наше устройство в этой панели. Для этого откройте панель инструментов (Dashboard) и нажмите в левой ее части на ссылку Set up a new device (установить новое устройство). Если у вас есть аккаунт Microsoft, то войдите в него, если нет – то нажмите Skip this step (пропустить данный шаг).
3. Вставьте SD карту в модуль чтения SD карт и вставьте его в ваш компьютер. В следующем окне панели инструментов выберите тип устройства (Device type) – Broadcomm, сборку ОС (OS build) – Windows 10 Iot core. Затем выберите свою SD карту, введите имя устройства (device name) и пароль (на свое усмотрение) как показано на приведенном ниже рисунке.
После этого нажмите кнопку Download and install (скачать и установить). Установка займет некоторое время, зависящее от скорости вашего интернет соединения.
После нажатия кнопки Download and install вы увидите прогресс скачивания дистрибутива Windows 10 Iot core и запись его на вашу SD карту.
4. После того как запись Windows 10 Iot core на SD карту будет закончена, выньте SD карту из вашего компьютера и вставьте ее в вашу плату Raspberry Pi. Подключите плату Raspberry Pi к монитору с помощью HDMI кабеля и подайте питание на плату. Установка Windows 10 Iot займет несколько минут. Следуйте инструкциям, которые будут появляться на экране монитора.
5. После этого вы увидите на экране домашнюю страницу Windows 10 IoT Core. На этой странице вы найдете некоторую полезную информацию: IP адрес вашей платы Raspberry Pi, подключенные устройства и т.д.
В левой панели главной страницы Windows 10 IoT Core будет 4 вкладки: Device info (информация об устройствах), Command line (командная строка), Browser (браузер) и Tutorials (обучающие материалы). Также в левом нижнем углу будет кнопка для открытия меню настроек (Settings menu).
На этом установка Windows 10 IoT Core на вашу плату Raspberry Pi будет закончена. Теперь вы сможете управлять работой вашей платы Raspberry Pi из панели настроек Windows 10 IoT на вашем компьютере.
Подключение к Raspberry Pi из панели инструментов Windows 10 IoT на компьютере
1. Откройте панель инструментов Windows 10 IoT на вашем компьютере и выберите в ней вкладку My devices (мои устройства). После этого вы увидите свою плату Raspberry Pi в списке устройств. Убедитесь в том, что плата Raspberry Pi и ваш компьютер подключены к одной и той же Wi-Fi.
Если вы не видите свою плату Raspberry Pi в списке устройств, перезагрузите плату и обновите список устройств в панели настроек Windows 10 IoT.
2. В списке устройств сделайте двойной клик мышкой и откройте окно с устройствами (Open windows device portal) в вашем браузере.
3. Вкладка, которая откроется в вашем браузере, попросит у вас сертификат (credentials) вашей платы Raspberry Pi. Введите в качестве имени пользователя (Username) слово Administrator и пароль, который вы ввели ранее (в процессе установки ОС).
После этого вы увидите окно, показанное на следующем рисунке, на котором будет представлен весь функционал (возможности) по управлению Raspberry Pi с помощью Windows 10 IoT.
4. Вы можете запустить на выполнение демо приложение с помощью встроенного примера кода. Для этого нажмите на Quick-run samples в пункте Apps как показано на рисунке ниже. Вы увидите 4 проекта с доступными для них фрагментами кода.
5. В данной статье мы рассмотрим пример «Hello world». Кликните на иконку этого проекта и затем на кнопку Deploy and run. После этого на экране монитора у вас появится следующая картинка:
Вы можете протестировать работу и других представленных примеров. Для более подробной информации по созданию приложений с помощью Windows 10 IoT core вы можете обратиться к официальной документации компании Microsoft по следующей ссылке.
Видео, демонстрирующее работу проекта
Загрузка…
1 522 просмотров
Привет, Хабр.
Наверное каждый разработчик на определенном этапе задумывался о собственном IoT-проекте. Internet of Things сейчас поистине вездесущ и многим из нас хочется попробовать свои силы. Но не все знают, с чего начать и за что браться в первую очередь. Сегодня давайте посмотрим, как легко и непринужденно запустить свой собственный IoT-проект под Raspberry Pi 2, используя Windows 10 IoT Core и DeviceHive.
Деплоим Windows 10 приложения на Raspberry Pi 2
Для начала давайте установим Windows 10 IoT Core на Raspberry Pi. Для этого нам потребуется Windows 10 IoT Core Dashboard, который можно взять вот здесь. Там же можно при желании скачать отдельно ISO-образ, но особого смысла в этом нет — инструмент сделает это за вас.
Затем мы загружаем образ на misroSD-флешку.
Подключаем флешку к Raspberry и включаем. Первую загрузку ОС придется подождать, мгновенной она, конечно, не будет. Когда устройство «оживет» — подключаем Raspberry к локальной сети по Ethernet. Снова открываем Windows 10 IoT Core Dashboard и видим в списке «Мои устройства» заветную строчку. К слову, можно обойтись и без проводного подключения – список WiFi-донглов, поддерживаемых Windows 10 IoT Core, находится тут.
Далее нам понадобится Visual Studio 2015. Если она у вас все еще не установлена (хотя вы бы вряд ли читали эту статью в таком случае), можно скачать Community Edition.
Создаем новый или же открываем существующий Windows Universal проект. Кстати, если в проекте не нужен UI, можно создать Headless Application, выбрав тип проекта Windows IoT Core Background Application.
Выбираем деплой на Remote Machine.
Вводим адрес Raspberry. Посмотреть его можно на стартовом экране Win10 IoT Core или в Windows 10 IoT Core Dashboard.
Собственно, Internet of Things
Раз уж у нас статья о embedded — «моргать светодиодами» придется в любом случае. Хорошо, что мы имеем дело с DeviceHive, у которого заготовлены инструменты на все случаи жизни и все платформы. Поэтому светодиод будет виртуальный и тоже на .NET.
Клонируем master-ветку DeviceHive.NET репозитория с GitHub. На момент написания статьи рабочие примеры для Win10 IoT были именно там.
Открываем solution DeviceHive.Device и в файле Program.cs проекта VirtualLed настраиваем доступ к песочнице DeviceHive.
using (var service = new RestfulDeviceService("http://playground.devicehive.com/api/rest"))
{
// create a DeviceHive network where our device will reside
var network = new Network("Network WPNBEP", "Playground Network", "%NETWORK_KEY%");
//...
}
Если вы интересуетесь IoT, но по какой-то немыслимой причине еще не обзавелись DeviceHive Playground – это можно сделать здесь.
А управлять нашим «светодиодом» будет… Нет, пока не Raspberry, а клиент виртуального светодиода. Пример находится в проекте VirtualLedClient солюшена DeviceHive.Client. Его тоже нужно настроить в файле Program.cs:
var connectionInfo = new DeviceHiveConnectionInfo("http://playground.devicehive.com/api/rest", "%ACCESS_KEY%");
Самое интересное
Наше приложение на Raspberry Pi будет не просто кнопочкой включения/выключения светодиода, а практически полноценной админкой всех IoT-устройств нашей DeviceHive-сети. При желании, конечно, можно упростить его до той самой «кнопочки» или наоборот расширить, например, до клиента, управляющего роботом телеприсутствия.
Готовое приложение находится в том же репозитории, в solution DeviceHive.WindowsManager.Universal. Не будем останавливаться на нюансах гайдлайнов Win10 – корни приложения растут еще из Win8. Не будет тут и MVVM – все и так знают, как его применять. Давайте сосредоточимся на главном: нам нужна консоль мониторинга и управления устройствами, подключенными к DeviceHive, под Windows 10 на Raspberry Pi2.
Для DeviceHive реализовано три клиентских библиотеки:
- DeviceHive.Client – для «большого» .NET 4.5 и выше. Использует WebSocket4Net.
- DeviceHive.Client.Portable – для Windows 8.1 и Windows Phone 8.1. Использует нативные WebSockets.
- DeviceHive.Client.Universal – для всех редакций Windows 10, в том числе для Win10 IoT Core. Именно она используется в нашем приложении.
Наследуем ClientService от DeviceHiveClient и инициализируем его сеттингами:
DeviceHiveConnectionInfo connInfo;
if (!String.IsNullOrEmpty(Settings.Instance.CloudAccessKey))
{
connInfo = new DeviceHiveConnectionInfo(Settings.Instance.CloudServerUrl, Settings.Instance.CloudAccessKey);
}
else
{
connInfo = new DeviceHiveConnectionInfo(Settings.Instance.CloudServerUrl, Settings.Instance.CloudUsername, Settings.Instance.CloudPassword);
}
current = new ClientService(connInfo, new RestClient(connInfo));
А также указываем не использовать LongPolling, а только WebSocket, дабы не упираться в лимит одновременных HTTP-запросов:
SetAvailableChannels(new Channel[] {
new WebSocketChannel(connectionInfo, restClient)
});
Загружаем список девайсов и группируем их по сетям в MainPage:
var deviceList = await ClientService.Current.GetDevicesAsync();
var networkList = (await ClientService.Current.GetNetworksAsync()).FindAll(n => n.Id != null);
foreach (Network network in networkList)
{
var devices = deviceList.FindAll(d => d.Network?.Id == network.Id);
if (devices.Count > 0)
{
networkWithDevicesList.Add(new NetworkViewModel(network) { Devices = devices });
}
}
А вот и наш виртуальный светодиод:
Переходим на DevicePage, подгружаем информацию о нем:
Device = await ClientService.Current.GetDeviceAsync(deviceId);
Переключаемся на вкладку с уведомлениями. Уведомления отправляются от управляемого устройства к управляющему устройству. В нашем случае – от VirtualLedClient к VirtualLed.
Инициализируем автоподгружающийся список с «бесконечным» скроллом:
NotificationFilter filter = new NotificationFilter()
{
End = filterNotificationsEnd,
Start = filterNotificationsStart,
SortOrder = SortOrder.DESC
};
var list = new IncrementalLoadingCollection<Notification>(async (take, skip) =>
{
filter.Skip = (int)skip;
filter.Take = (int)take;
return await ClientService.Current.GetNotificationsAsync(deviceId, filter);
}, 20);
Если не определена конечная дата фильтрации списка нотификаций, подписываемся на новые уведомления, которые будут приходить через вебсокет:
notificationsSubscription = await ClientService.Current.AddNotificationSubscriptionAsync(new[] { deviceId }, null, async (notificationReceived) =>
{
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
lock (NotificationsObservable)
{
if (!NotificationsObservable.Any(c => c.Id == notificationReceived.Notification.Id))
{
NotificationsObservable.Insert(0, notificationReceived.Notification);
}
}
});
});
Если попробовать переключать наш виртуальный светодиод, то уведомления о его новом состоянии тут же отобразятся в списке.
Если поменять настройки фильтрации, то автоподгружающийся список заново инициализируется с новым фильтром.
Теперь пришла очередь вкладки команд. Команды похожи на нотификации, но направлены от управляющего устройства к управляемому, а также могут иметь статус и результат выполнения.
CommandFilter filter = new CommandFilter()
{
End = filterCommandsEnd,
Start = filterCommandsStart,
SortOrder = SortOrder.DESC
};
var list = new IncrementalLoadingCollection<Command>(async (take, skip) =>
{
filter.Skip = (int)skip;
filter.Take = (int)take;
return await ClientService.Current.GetCommandsAsync(deviceId, filter);
}, 20);
Аналогично подписываемся на новые команды:
commandsSubscription = await ClientService.Current.AddCommandSubscriptionAsync(new[] { deviceId }, null, async (commandReceived) =>
{
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
lock (CommandsObservable)
{
if (!CommandsObservable.Any(c => c.Id == commandReceived.Command.Id))
{
CommandsObservable.Insert(0, commandReceived.Command);
}
}
});
});
Поскольку мы делаем инструмент не только для мониторинга, но и для управления устройствами в DeviceHive сети, нужно реализовать возможность отправки команд:
var parameters = commandParams.Text != "" ? JObject.Parse(commandParams.Text) : null;
var command = new Command(commandName.Text, parameters);
await ClientService.Current.SendCommandAsync(deviceId, command, CommandResultCallback);
При отправке команды мы подписались на ее обновление методом CommandResultCallback. Обрабатываем результат выполнения команды:
foreach (Command cmd in CommandsObservable)
{
if (command.Id == cmd.Id)
{
// Command class doesn't implement INotifyPropertyChanded to update its result,
// so old command is replaced by command with result:
var index = commandsObservable.IndexOf(cmd);
commandsObservable.RemoveAt(index);
commandsObservable.Insert(index, command);
break;
}
}
Чтобы не копировать команды вручную, нужно предусмотреть клонирование команд. Выделяем, клонируем, если нужно – редактируем, отправляем.
Задача выполнена! Как видите, Raspberry Pi 2 c Windows 10 IoT Core и DeviceHive – отличное решение для практически любой задачи в контексте Internet of Things. Прикрутите пару кнопок, dashboard и подключите Raspberry Pi к телевизору в гостиной – мониторинг и управление умным домом готово. Купили лишних Raspberry? Не вопрос, библиотека DeviceHive.Client умеет работать не только в качестве управляющего клиента, но и в качестве управляемого девайса – реализуем Headless Application, подключаем датчики/реле и устанавливаем Raspberry Pi по дому. Ограничивает вас лишь ваша фантазия.
Заключение
Появление Windows 10 IoT Core – это именно то, чего ждали embedded-разработчики. Когда ресурсов даже самого мощного микроконтроллера на .NET Micro Framework (для которого, кстати, тоже есть реализация DeviceHive) не хватает, а ставить полноценный компьютер на Windows – все равно, что стрелять из пушки по воробьям, то Windows 10 IoT Core – настоящее спасение. И пусть пока есть нюансы с аппаратным ускорением графики и недостатком драйверов для некоторых USB-устройств – это всё простительно. Ведь еще недавно мы только мечтали, чтобы Windows-приложения, работающие на настольных ПК и планшетах запускались не только на телефонах, но и на микрокомпьютерах. А теперь – это реальность, добро пожаловать в «сегодня».
Об авторе
Антон Седышев — Senior .NET-разработчик «DataArt »
В IT работает с далекого 2003, к команде DataArt присоединился в 2012. Ранее занимался разработкой веб- и мобильных проектов, автоматизицией логистических процессов на складах крупной международной компании. Сейчас выступает в роли ведущего .NET-разработчика и идеолога Microsoft-сообщества DataArt. Занимается разработкой приложений на Windows Phone и Windows 10, сервисом DeviceHive и embedded-технологиями вообще. В свободное время работает над собственным OpenSource embedded-проектом по интеграции .NET Micro Framework устройства в автомобили BMW.
Microsoft Windows is a prevalent operating system, and now with the increasing popularity of the Internet of Things Microsoft decided to design its operating systems exclusively for IoT. Windows 10 IoT Core is a version of Windows 10 that is designed for smaller devices with or without a display that runs on both ARM and x86/x64 devices. Windows 10 IoT core works only on Raspberry Pi 2 and 3; it doesn’t work on Raspberry Pi’s lower versions.
Here, we are going to demonstrate that how to install Windows 10 IoT core in Raspberry Pi. Earlier, we have explained How to Install Raspbian OS in Raspberry Pi.
Components Required
- Raspberry Pi 2 or 3
- 8GB or larger microSD card
- SD card reader
- HDMI cable
- 5V 2A micro USB power supply
- Mouse and USB keyboard
Difference between Windows 10 and Windows 10 IoT core
Windows 10 is a Microsoft operating system for personal computers, Laptops, and tablets while Windows 10 IoT core is a Microsoft operating system for embedded devices and internet of things devices like Raspberry Pi. Using Windows 10 IoT core, we can do exciting projects using Microsoft Azure, Cortona, and many other tools and IoT platforms. Windows 10 IoT core is specially designed for industry, and it has a very robust structure and proven security.
Installing Windows 10 IoT Core on Raspberry Pi
Start with installing windows 10 IoT core on your Raspberry Pi, for that we need to download Windows 10 IoT core dashboard in laptop. IoT core dashboard is used to flash the Windows 10 IoT core in the SD card.
You can download the setup.exe file for the Dashboard from the below link:
(http://go.microsoft.com/fwlink/?LinkID=708576)
After downloading, install it and run the IoT core dashboard. Now, click on ‘Set up a New Device’. If you don’t have a Microsoft account, then click on ‘Skip this step’.
Now format the SD card using SD Card Formatter and plug-in into your laptop. In device setup window choose the Device type as Broadcomm and, OS build as Windows 10 Iot Core. In the drive menu, select your SD card and enter your device name and password.
Now accept the license terms and condition. Then, click on ‘Download and Install’.
After this, a command window will appear with installation progress.
After flashing the installation, remove the SD card from laptop and plug it into Raspberry Pi. Now, connect the HDMI cable to monitor then connect the keyboard and mouse with Raspberry Pi. At last, connect the power supply to start the Raspberry Pi.
After some time it will ask for language and location setup, same as we install windows in the Laptops.
Hence, after the setup it will take you to the home page.
Therefore, we have successfully installed the Windows 10 IoT core is on Raspberry Pi. Also, check our previous tutorial for installing Raspbian OS in Raspberry Pi.
Плата микрокомпьютера Raspberry Pi 3
Честно говоря, идея опробовать одноплатный компьютер Raspberry пришла ко мне неожиданно. Опыт по Arduino и прочим ESP имеется, с «большими» ПК и серверами тоже. А вот промежуточный вариант, представленный сонмой разнокалиберных устройств, мной как-то совсем не изучен. А еще мне хотелось опробовать в деле, что же такое Windows IoT и для чего можно применить новинку от Microsoft. Выбор устройства оказался совсем очевидным: Raspberry Pi 3 с 1 Гб ОЗУ на борту, самое что ни на есть популярнейшее устройство. Конечно, различные Pine64 поджимают, но тут популярность играет на руку. Чем выше популярность, тем меньше проблем совместимости.
Обратная сторона Raspberry Pi 3. Виден чип ОЗУ.
И вот, спустя месяц ожидания, хорошо упакованная коробчонка с Raspberry обосновалась на моем столе. Я сразу же взял полный комплект: плата, мощный блок питания, радиаторы для чипов и пластиковый корпус. Придраться к комплектации и качеству изготовления сможет только самый мерзкий и дотошный критик. Все оборудование сделано на совесть. Плата с отмытым флюсом, пайка надежная, USB-порты на месте все, как и должно быть. Блок питания не свистит и не греется с избытком. Радиаторы чистые, с комплектным скотчем 3M для приклейки их к чипам. Корпус из пластика, хоть и маркий, но удобный в использовании. Если требуется, его можно открыть и протереть плату тряпочкой. А через многочисленные отверстия отлично подключаются кабеля для внешних устройств. Ладно, хватит описывать то, что давно всем известно. Настало время установки Windows.
Я еще помню времена, когда Windows устанавливался с дискетки. Потом уже операционка поставлялась на CD-диске, затем на DVD. А сейчас же все делается посредством простых «флешек». С Windows IoT и Raspberry все немного иначе.
Микрокомпьютер Raspberry Pi 3 в пластиковом блестящем корпусе и с установленными радиаторами
Существует как минимум два способа установки Windows IoT на Raspberry. Первый способ — воспользоваться услугами официального сайта Raspberry и скачать либо готовый образ Windows IoT, либо загрузить его через специализированный установщик NOOBS. Второй способ изобретен Microsoft. Он немного хитрее и именно им я и воспользуюсь. Да, способ применим только если на вашем рабочем компьютере используется зарегистрированная версия Windows 10. Иначе путь может быть осилен только первым способом.
Шаг 1. Скачиваем Windows IoT Dashboard
Dashboard — специальная утилита, позволяющая подготавливать носители, а в случае Raspberry Pi 3 это MicroSD, для запуска Windows IoT. Скачать утилиту можно с сайта Microsoft. Для бесплатной загрузки и использования доступны только две версии Windows IoT: Core и Insider Preview. Различий между ними не так много. Core — стабильная система, подходящая для большинства разработчиков, а Insider Preview позволят энтузиастам испытывать легкое волнение от новых «фич» и «багов».
Для версии Core существует одно, не очень существенное ограничение. Тут можно запускать только одно приложение UWP (Universal Windows Platform). Вернее, запускать их можно несколько, но активным в один момент времени будет только одно. Аналогичным образом работает и Insider Preview. В общем-то обе эти системы ориентированы на устройства с ограниченными ресурсами, к которым относится и Raspberry. Поэтому ограничение вполне разумное. А если хочется большего, то придется приобретать версию Enterprise.
Шаг 2. Подготавливаем карту памяти, устанавливаем на нее систему
Все делается в том же Dashboard. Выбираем тип платы, вставляем карту памяти, вводим сетевое имя устройства, меняем пароль. Кстати, по умолчанию, а иногда пароль, введенный на стадии подготовки карты не срабатывает, используется связка Administrator/p@ssw0rd в качестве пары логина и пароля. Тут же можно прописать и подключение к вашей Wi-Fi сети.
Если выбранный дистрибутив не был ранее скачен на компьютер, то Dashboard автоматически его скачивает. Далее происходит запись на карту памяти.
Шаг 3. Первый запуск Raspberry с Windows IoT на борту
После установки карты памяти, можно смело подключать плату к сети Ethernet (или не подключать, если настроен Wi-Fi), да подавать питание. Первая загрузка происходит дольше, чем все последующие, поскольку происходит первичное развертывание операционной системы. В моем случае первичная загрузка заняла минуты три или четыре. Первичная настройка может производиться в полностью Headless режиме, нет необходимости подключать дисплей или клавиатуру. Что, согласитесь, очень удобно, особенно если устройство у вас уже физически интегрировано куда-нибудь в подвал и приварено стальной арматурой к бетонному блоку, чтобы вандалы не уволокли.
Антенна с поддержкой Wi-Fi и Bluetooth на чипе у Raspberry Pi 3
Кстати, на Raspberry 3 есть два светодиода. Красный сигнализирует, что питание на плату подается. А зеленый горит, когда есть обращения к карте памяти. С Windows IoT зеленый светодиод бесполезен, по крайней мере в текущей редакции системы. Он ничего не сигнализирует, просто не горит и все.
Шаг 4. Дальнейшая настройка
После прохождения первоначальной настройки к устройству уже можно обращаться по сети и использовать его на полную. Если же в сети его, по каким-то причинам, не видно. То тогда придется подключить монитор и клавиатуру, а затем выполнить настройку сети через интерфейс Windows IoT.
Если же с сетью все в порядке, то основным способом настройки системы является Web-интерфейс. Попасть в него можно через тот же Dashboard. В разделе My Devices отображаются все ваши Windows IoT устройства доступные в вашей сети. Жмакаем правой кнопкой и выбираем панель управления устройством.
Под нагрузкой (установка апдейтов) плата греется до существенных значений. Радиаторы холоднее, чем сама плата, видимо используемый скотч 3M не очень здорово проводит тепло. Необходимо отклеить радиаторы от чипов, заменить скотч на нормальный термоинтерфейс.
Кстати, на удивление, отрабатывает Web-сервер в Windows IoT куда быстрее, чем даже на моем микросервере. Через интерфейс можно настроить все, что положено настраивать обычному пользователю, включая пароль доступа, пин-код для удаленной отладки и прочее вкусности. Не обойдены стороной и любимые Microsoft обновления для системы. Да, Windows IoT обновляется аналогично своим собратьям для больших ПК. Процесс обновления кстати не быстрый, а железо раскаляется от нагрузки.
Отдельно хочу упомянуть про мониторинг нагрузки на плату. На соответствующей вкладке доступны различные показометры, что вполне удобно, хотя бы с целью определения нагрузки на плату самой операционной системой. Графики наглядны и отображают сведения в режиме реального времени.
Что еще? Я заметил, что Dashboard хитро подготавливает карту памяти для записи. Вне зависимости от ее объема он ее форматирует как карту на 64 Гб. Возможно, что такой подход нужен для установки Windows IoT, но вот после, когда передумаете использовать Windows IoT, стоит не забыть и переформатировать карту под ее истинный размер. Иначе могут возникать различные коллизии, например, операционная система видит, что на карте осталось еще куча места, поэтому не ограничивает себя и пишет множество данных на карту, не стирая старое. А потом бац и система становится нестабильной, вплоть до невозможности ее загрузки.
Как управлять Raspberry с установленной Windows IoT
Вариантов тут несколько. Самое первое и самое простое, что может прийти в голову — использование монитора и клавиатуры. Подключаем и попадаем в интерфейс Windows IoT. Тут же можно слегка подшаманить сетевые настройки, перезагрузить плату, запустить установленные приложения.
Если вариант прямого управления не подходит, то можно (и даже нужно) управлять платой по сети. В настоящее время для этих целей присутствует целых три способа. Можно управлять Windows IoT через штатное средство Windows PowerShell. Легче всего подключиться к удаленной системе все через тот же Dashboard. Либо можно воспользоваться подключением по SSH. Тут уж подключаться можно вообще с любой системы, хоть из-под Windows, хоть с Android, а в Linux SSH так вообще стандартное средство. Даю наводку, для Windows можно использовать сверхпопулярный терминал PutTTY.
Но к плате можно подключиться и иным способом. Прямиком в графический интерфейс. Для этого необходимо включить удаленный доступ на плате, лучше всего это сделать через веб-интерфейс (самая нижняя вкладка). А затем скачать через Windows Store приложение для доступа к Windows IoT. Его вызов возможен так же через Dashboard. К моему стыду, мне так и не удалось подключиться к плате при помощи графического интерфейса. Приложение просто отказывалось подключаться и все, а все советы по поводу модификации конфигурационного файла не помогали, т.к. в актуальной версии Windows IoT эти советы уже внедрены в конфигурацию. Тем не менее, такая возможность существует.
Что можно запускать на Windows IoT?
Самый интересный для меня вопрос. На текущий момент (начало весны 2017), Windows IoT очень стремительно развивается и постоянно модернизируется. Но выбор ПО, вернее программных платформ, для системы ограничен. Microsoft делает ставку исключительно на UWP, как на новую парадигму ПО, работающего одинаково на всех устройства экосистемы Windows. Поэтому приложения UWP должны работать на Windows IoT Core почти без вопросов. Другое дело, что они будут так работать, но на текущий момент могут наблюдаться несовместимости, связанные с неполноценной поддержкой всех API доступных в UWP. Кроме UWP можно попробовать запустить Win32 приложения, по слухам от очевидцев, работать нормально с ними все равно не выйдет. Никакого ввода-вывода от приложений Win32 добиться не выйдет, только доступ извне, например, по сети на каком-то порту.
Для чего и выводы
Эксперимент по скрещиванию продукции Microsoft и крошечного компьютера Raspberry можно считать успешным. Связка работает, обновления ставятся, в сети видно. Вот только совсем непонятно для чего его использовать. Запустить нужное мне ПО под Windows IoT не представляется возможным. Тот же SoftEther VPN или FAR даже и не установить на плате. Нужных мне UWP приложений под рукой тоже нет. Остается только заниматься разработкой. А вот тут у Microsoft запасен такой козырь в рукаве, против которого мало кто сдюжит. Разрабатывать приложения, на множестве языков, для Windows IoT можно с использованием среды Visual Studio. С использованием всей ее мощи, включая развитые средства профилирования и отладки.
Но и тут есть одно, небольшое «но». Да, Raspberry обладает хорошо развитым интерфейсом связи с внешним миром. К плате можно подключить, хоть черта лысого. Да и производительности предостаточно. Но на мой взгляд, при наличии копеечных плат ESP8266 делающий все тоже самое, только куда дешевле и немного проще, целесообразность использования почти полноценного компьютера с реальной операционной системой и чрезмерной производительностью, излишне. Для реализации простых проектов по автоматизации ресурсов ESP8266 более чем достаточно. Впрочем, наверняка найдутся задачи, в которых Windows IoT вкупе с платами типа Raspberry придутся как нельзя кстати, но произойдет сие скорее всего в корпоративном секторе, например, некоторые банкоматы, наконец-то перейдут с уже устаревшей OS/2 на современную платформу.
Если же попытаться сформулировать вывод, например, для чего мне нужна плата Raspberry, то очень быстро приходишь к выводу, что в принципе ни для чего. Все, что мне нужно запрограммировать в плане автоматизации или поумневшего дома, отлично реализуется на чипах ESP и куда дешевле. Делать из Raspberry какой-то Hub при наличии полноценных серверов — тоже смысла не много. Разве что только установить на Raspberry операционную систему семейства Linux и организовать очередной серверок? Кстати, именно так я и поступлю.
Полезные ссылки:
Официальный FAQ по Windows IoT от Raspberry
Официальный сайт Microsoft по Windows IoT
Официальные образы операционных система для Raspberry и загрузчик NOOBS.