На прошлой неделе мы рассказали про то, как видим Интернет Вещей. Про то, как в Microsoft Technology Center уже функционирует концепт умного офиса. Про то, как подключить Arduino к Raspberry Pi 2, а также про то, как с одноплатной системы можно собирать данные, отправлять и визуализировать в облаке Microsoft Azure. Прошлая неделя получилась именно такой – под знаком облака. Эта пройдёт под знаком Windows 10 – сегодня про общие моменты, в среду про AllJoyn, в пятницу – про все те интереснейшие партнёрства, которые мы заключили (Canonical, Arduino и др.) и про то, что они несут в этот мир.
Как мы уже писали, флагман нашего операционносистемостроения Windows 10, выходящий 29 июля, будет работать на достаточно компактных одноплатных системах, типа Raspberry Pi 2 или Intel Minnowboard MAX, которые могут стать основой домашних интеллектуальных систем, подключаемых к Интернету вещей. К ситуации, в которой мы можем написать приложение в Visual Studio и, собрав его под ARM либо x86, развернуть не только на десктопе, но и на плате, Microsoft шёл примерно с 2011 года (обязательно посмотрите про эту историю в очень интересном докладе Дона Бокса на WinHEC 2015), когда были предприняты первые шаги к объединению платформ. Теперь будет единая система, которая будет называться Windows 10, и иметь редакцию, по которой и будет определяться ее принадлежность. По редакциям окончательное понимание придёт позже, но уже сейчас известно, что их будет около 7. К устройствам прямое отношение имеют три:
- IoT Industrial (Intel-only, похожа на Windows 10 Enterprise, с учётом подстройки под конкретный сценарий, например, банкомат или торговый автомат);
- Mobile Enterprise (ARM, с поддержкой Universal Apps, оптимизированная под мобильные устройства и имеющая поддержку различных функций безопасности);
- IoT Core (версия, оптимизированная под устройства с ограниченными ресурсами, с поддержкой Universal Apps, но в режиме Single, и royalty-free).
Пока Mobile Enterprise и Industrial находятся в недоступном нашем рукам режиме, расскажем про IoT Core. IoT Core – это версия, оптимизированная под устройства, у которых на борту есть достаточно ограниченные ресурсы. Минимальные системные требования для Core – 256 мегабайт ОЗУ и 2 гигабайта хранилища. Плюс архитектура x86/ARM. На июль 2015 года доступна в гарантированно-рабочем виде для двух плат – Raspberry Pi 2 (ARM) и Intel Minnowboard MAX (x86). Процесс установки практически идентичен, за исключением подготовительных действий, которые на Minnowboard заключаются в манипуляциях в UEFI.
Разрабатывать на Windows 10 IoT Core можно уже сейчас, при этом разработчику доступны все приложения платформы Windows, а разработка таких приложений ведется тем же, как и любых других приложений и инструментов из Visual Studio, с использованием технологий C#/XAML, HTML/JS и др, что означает возможность разработки универсального приложения, которое будет с равным успехом (конечно, учитывая наличие или отсутствие привязки к какой-то специфичной функциональности) работать на PC, телефонах, Xbox или платах.
Резюмируя по разработке:
- IoT Core поддерживает Universal Platform API, включая Universal Drivers, и это является на данный момент основным методом разработки (C#/C++/JavaScript/HTML/XAML/DirectX). При этом поддерживаются консольные приложения (C/C++);
- Тем не менее, писать Native Win32 можно, но никакого вывода увидеть не получится, кроме как разве что в удалённой сессии;
- Windows desktop нет, командной строки нет. Зато есть Powershell Remoting и SSH;
- IoT Core содержит расширения API:
- GPIO, I2C, SPI, ADC, PWM, UART, AllJoyn
- Управление системными настройками (язык и др.)
- API Set
- Есть веб-сервер Node.js с используемым внутри Microsoft Chakra.
Однако необходимо учитывать отсутствие драйверов и поддержки для некоторых модулей (например, Wi-Fi), что блокирует часть сценариев. Но это всё будет – проект молодой, и разработчики всё сделают.
Что уже делают на Windows 10 IoT Core? Например, хабы для домашних устройств. При условии того, что правильным образом будет использована встроенная функциональность AllJoyn, можно управлять окружающими устройствами. То есть быть управляющей панелью, собирая данные с сенсоров и других устройств.
Таким образом, теперь у разработчиков есть выбор – можно продолжать использовать всё то, что уже разработано на OSS, и подключать при необходимости облако для обработки данных, либо взять знакомые инструменты (Visual Studio, .NET) и создать универсальное приложение. Или, как уже пробуют, запустить Cocos2D :)
Как начать использовать? (краткий совет)
Достаточно просто. Зайдите на официальный сайт, выберите страницу с вашим устройством и идите по инструкции. С момента запуска программы инструкция претерпела не одну редакцию, и теперь всевозможные проблемы и нюансы уже описаны. Единственный момент – количество оборудования, которое нужно для запуска и тестирования. Еще из опыта использования – не все мыши корректно определяются. Самым надёжным способом является использование проводной мыши.
Я рекомендую хотя бы попробовать — для меня опыт подключения в виде удалённого отладчика платы в Visual Studio был достаточно интересен. Конечно, есть всяческие инструменты (один из моих любимых, VisualMicro, в их числе), которые расширяют функциональность VS, однако всегда приятно, когда что-то нужное идёт сразу в комплекте. Мы ещё будем писать про Windows 10 IoT, и показывать то, что можно сделать с ней, как связать с облаком и прочее. Спасибо за внимание :)
Комментарии (62)
HomoLuden
06.07.2015 10:56Однако необходимо учитывать отсутствие драйверов и поддержки для некоторых модулей (например, Wi-Fi), что блокирует часть сценариев. Но это всё будет – проект молодой, и разработчики всё сделают.
Wi-Fi не проблемаKlukonin
06.07.2015 13:34-5Использовать миниатюрный WiFi роутер с Linux на борту, ограничивая пропускную способность UARTом, для того чтобы подключить «малинку» с виндой, не поддерживающей штатный WiFi модуль? О да, вы знаете толк =)
HomoLuden
06.07.2015 14:04+2Во-первых, не с Linux, а с FreeRTOS или аналогом.
Во-вторых, не знаю как у малины, но у STM32F103, к примеру, USART на максимальной частоте 12 МБит. У девайса по ссылке максимальная частота пропускания до 3Мбит, если не ошибаюсь. Частота U(S)ART определяется частотой системной шины. Думаю у малины и, например, Beagle Bone UART будет не менее производительным.
Видео HD, быть может и не передать, но для передачи данных сенсоров и запросов в облако и обратно вполне достаточно.
Передергивать и эмоциями брызгать в данном случае считаю неуместным. Нужно говорить о конкретных кейсах применения.Klukonin
06.07.2015 14:40Ну, про UART я с вами спорить не буду, теоретически так все и обстоит.
Но так как я эти модули разбирал и реверсил — на тему операционной системы внутри готов поспорить. Там Linux.HomoLuden
06.07.2015 14:49Вы конкретно про USR'овские UART <> WiFi?
Я сейчас пользуюсь USR-wifi232-S. Помню в прошлом мне для этого или похожего устройства предлагали SDK с какой-то RTOS. Возможно перепутал. В любом случае, не понимаю показавшегося пренебрежительного тона в отношении описанного подхода.
Если речь о избыточности или дороговизне, то есть модули и почти вдвое дешевле, но с меньшими скоростями и функционалом.
Wedmer
06.07.2015 15:04linux влезает в 160 килобайт?
Klukonin
06.07.2015 15:25Вы удивитесь, но его в свое время даже в процессоры умудрялись вшивать.
А это конкретный модуль не знаю на чем. Не факт что там линукс.Wedmer
06.07.2015 15:48Вы выше утверждали
Но так как я эти модули разбирал и реверсил — на тему операционной системы внутри готов поспорить. Там Linux.
Пруфы есть?
HomoLuden
06.07.2015 15:59Я не берусь утверждать какое конкретно устройство Вы реверсили и на чем конкретно сделана прошивка для упомянутой мной модели…
Но вот есть описание SDK, которое, возможно, имеется в виду на странице описания к модулю.
Если погуглить по «pdf SimpleLink Wi-Fi CC3200 Software Development Kit (SDK)», то можно получить СС3200 SimpleLink Programmer Guide
В этом документе можно встретить диаграмму Figure 2. CC3200 Software Components
На ней указаны FreeRTOS и TI RTOS.
Мне кажется, что для таких низкопотребляющих решений Linux плохо подходит. Поправьте, если ошибаюсь.
PS: заметьте, TCP/UDP и DNS реализованы на FreeRTOS. Не вижу надобности в Linux.Klukonin
06.07.2015 16:10Микроконтроллеры с вайфаем — это отдельная песня. То что я ковырял — обычный роутер с урезанной openwrt на борту, залоченный под низкие битрейты. Ну и оформленный в аналогичном форм-факторе.
Если брать микроконтроллеры с вайфаем — есть меньше и дешевле. Но это уже другая тема.
Я лишь говорил о том что ради того чтобы погонять винду для IoT придется распрощаться с поддержкой железа, смириться с урезанной осью без многозадачности, да еще и потратиться на модули вроде этого. И я считаю это глупостью.HomoLuden
06.07.2015 16:43Если не будет возможности через как можно более тонкую прослойку пользоваться аппаратной частью и писать свои драйвера для интерфейсов, то это будет печально. Однако, и под Embedded Linux я, в свое время, не смог наладить нормальную вычитку ADIS16060, т.к. там необычный протокол SPI. Так что в плане доступности железа ситуация несильно отличается, судя по всему.
Напишут BSP для конкретной платформы — будут где-нибудь лежать файл-устройства — читай/пиши байтами. Сойдет для сельской местности.
Если аппаратных интерфейсов не будет, то, согласен, бессмысленный продукт.
А вот насчет многозадачности я видимо пропустил по тексту. Откуда информация что не будет многозадачности?
Klukonin
06.07.2015 14:41Windows 10 IoT core для STM32F103? Вы уверены?
HomoLuden
06.07.2015 14:44А я и не писал про stm32f103 как о платформе для W10. Привел пример принципиально возможных скоростей на UART, сомнения в которой были высказаны. Пример приведен для F103, т.к. нету данных по малине лично у меня. Предположение, что и там пропускная способность значительно выше, возможно, предполагавшихся 115200 подтверждаются вроде бы.
Wedmer
06.07.2015 14:45Имелось в виду, что на модуле wifi стоит проц с такой же архитектурой (Cortex-M4), что и у стмки.
HomoLuden
06.07.2015 14:54А упомянутой стмки даже слабее ЦП — Cortex-M3, если не путаю.
А у RPi 2 — Cortex A7
Однако утверждать что-то касаемо максимальной скорости UART только судя по семейству ЦП не буду. Ограничения могут быть как со стороны железа, так и со стороны загрузчика / ОС.Wedmer
06.07.2015 15:13Ну в CC3200 проц всего до 80Мгц гонится, поэтому сравнимо с трешкой.
HomoLuden
06.07.2015 15:48Тьфу… я Вас неправильно прочитал.
Судя по описанию SDK, на указанном модуле именно Cortex-M4
Klukonin
06.07.2015 15:41Говоря о конкретных задачах, использование IOT Core становится совсем нецелесообразным. Особенно при наличии мегадешевых ESP8266.
А гонять малину в качестве примитивного контроллера — это глупо.HomoLuden
06.07.2015 16:05Так как раз маргинальное устройство… шлюз вполне укладывается. Устройство, умеющее общаться с локальной сетью сенсоров, на котором крутится веб-приложение, способное общаться с облаком и играюшее роль файрволла.
Klukonin
06.07.2015 16:13Файрволом обычно выступает устройство для подключения к интернету. С этим мимо.
Для сбора данных с сенсоров есть более простые и дешевые альтернативы.HomoLuden
06.07.2015 16:47А почему мимо?!
Разьве нельзя плату с W10 использовать в качестве Router + Smart Home Gateway?
Организовать на этом модуле веб-интерфейс, dynDNS-клиент, например. Лишняя розетка в сетевом фильтре освободится.
Думаете RPi 2 будет слабоват, чтоб сразу обе функции выполнять?Klukonin
06.07.2015 20:13Эм… Вы вобще примерно прикидываете какая будет пакетная производительность? Не позорьтесь…
HomoLuden
07.07.2015 02:44Я не позорюсь, а спрашиваю. Можно просто ответить без лишних междометий…
Klukonin
07.07.2015 07:17Вы не спрашивали, вы утверждали. Я парировал и предложил думать прежде чем писать.
Пакетная производительность микроконтроллера… выше 1000 pps я пока не видел. Это без шифрования.
С шифрованием смело делите на три. Вы готовы вернуться во времена диалапа? =)HomoLuden
07.07.2015 12:57Разьве нельзя плату с W10 использовать в качестве Router + Smart Home Gateway?
Думаете RPi 2 будет слабоват, чтоб сразу обе функции выполнять?
Это вопросы.
Организовать на этом модуле веб-интерфейс, dynDNS-клиент, например. Лишняя розетка в сетевом фильтре освободится.
Это предполагавшиеся выгоды такого подхода.
Так-то и Ваш вопрос можно квалифицировать как утверждение, причем необоснованное.
Вы готовы вернуться во времена диалапа? =)
Klukonin
07.07.2015 14:00Не, если вы и правда настроены бодаться, то я могу обосновать.
Cмело делим на три, итого 300 ррs. 300 * 1500 = 450 Kbps.
Это как раз примерно старый добрый диалап со сжатием =)HomoLuden
07.07.2015 14:47Странный Вы человек. Вас просто спросили «а что если сделать так-то и так-то». Вместо простого ответа Вы то заявляете, что он позорится задавая вопросы специалисту (Вы же специалист), то чуть ли не ретроградом обзываетесь, то теперь и до намеков на барана дошло. :)
Этот тред мог закончится уже первым вашим коментарием в духе последнего, мол, у МК класса RPi производительность будет примерно столько-то pps, потому-то и потому-то, мол, для таких-то применений этого слишком мало.
Спасибо за очень содержательные ответы. Любопытства больше не имею. :)
HomoLuden
06.07.2015 11:01Как собирать под другие платформы? Например, BeagleBone Black или Cubie Board.
С WinCE, кажется, была возможность создать сборку под выбранное железо, написав некоторые низкоуровневые части.ahriman Автор
06.07.2015 14:26Пока мне неизвестно. Я очень надеюсь, что это будет, и сразу же напишу счастливую новость. :)
eta4ever
06.07.2015 12:51Ну, то есть, по-прежнему никаких плюсов относительно привычных малиновых пингвинов, кроме того, что кому-то привычнее C# и прочая MS-инфраструктура. Зато минусов много.
ahriman Автор
06.07.2015 14:29Смотря какие минусы — если отсутствие той или иной поддержки, то, как я писал в первой статье, они будут постепенно закрываться. Если что-то иное — напишите, я передам группе разработки (хотя и вы это можете сделать :)) Уверяю вас — внутри происходит большое количество общения, в том числе о развитии продукта, и о вашей обратной связи.
eta4ever
06.07.2015 15:27Я бы помечтал о следующем:
1) Нормальный вывод на экран, с поддержкой тачскрина из коробки. Чтобы можно было сделать именно что управляющую панель, работающую с простенькой SCADA.
2) Клиент MS RDP, чтобы приложения по RemoteAPP пускать. Получился бы крутой тонкий клиент.
3) Обратная совместимость с приложениями WinCE.
eta4ever
06.07.2015 15:42А если генеральная линия партии — сделать ардуину с вебмордой, то тогда уж портировать туда ардуинские библиотеки и сделать какую-то блочную систему построения этой самой вебморды, т.е., чтобы можно было расставлять контролы по страничке и связывать их с кодом.
Indemsys
06.07.2015 22:11Расшифруйте пожалуйста вот это — «с поддержкой Universal Apps, но в режиме Single, и royalty-free»
Что такое «Universal Apps»?
Что такое «режим Single»?
И в каком смысле royalty-free?
И почему для серьезных устройств навязывают Raspberry Pi 2.
Dima_Sharihin
07.07.2015 08:56+1>Universal Apps
Современная модель приложений для Windows 10, которая предполагает работу с новым API, а не Win32 API
>режим Single
Только одно приложение может быть запущено для отображения на дисплее(или вообще, тут не знаю). Ни рабочих столов, ничего от десктопной винды там не будет.
> в каком смысле royalty-free
Скорее всего, MS не будет брать мзду за этот огрызок винды, если вы ее запихнете в коммерческое устройство
Собственно на raspberry pi 2, на мой взгляд, Windows 10 IoT Core выглядит совершенно провально. Но я надеюсь, что ситуация с производительностью улучшится и оно будет работать лучше и функциональнее, чем обычная убунта.
gtament
07.07.2015 01:04Минимальные системные требования для Core – 256 мегабайт ОЗУ и 2 гигабайта хранилища. Плюс архитектура x86/ARM.
А на 386 пойдет?)Dima_Sharihin
07.07.2015 09:08На 386 нормой было 8-16 мегабайт оперативной памяти, а не 256.
И если мне не изменяет память, то сейчас все компилируется с поддержкой SSE под х86, то есть ни о какой «тройке» речи быть не может.
eta4ever
07.07.2015 14:14Кстати, интересно, на таком странном устройстве взлетит? А то валяется никому не нужная штука.
www.compactpc.com.tw/ebox-3300.htmDima_Sharihin
08.07.2015 11:10Запуститься-то может и запустится, но еще с восьмерки были проблемы с видеокартами, не реализующими WDDM
2.0.
Так что приобретение, на мой взгляд, сомнительное
upd: 2.0 это в десяткеeta4ever
08.07.2015 11:46Так в текущем состоянии все равно нормального вывода на экран нет.
А так, просто ищу, куда применить коробочку. Она свое уже десять раз отработала (использовалась как RDP клиент на Thinstation).
BOBS13
Если я правильно понимаю из всех обзоров, полноценной ОС не будет, и многозадачности то же не будет, домашний маленький медиа сервер на нем не развернешь?
Klukonin
Шел 2015 год, время расцвета интернета вещей и нового витка развития мультимедиа технологий. Microsoft выпускает ОС для встраиваемых систем без поддержки многозадачности…
Ребята просто опоздали лет на 20, ничего страшного. Они недавно для себя репозитории открыли. Пройдет время и подтянутся.
SgtRiggs91
Что помешает развернуть медиа-сервер? Спрашиваю из любопытства, не холивара ради.
Slipeer
Да собственно ничего… Только его придётся написать или портировать (скорее первое) под эту платформу.
BOBS13
Нет готового решения, обычный какой-то старый не запустишь, они все запускаются через Desktop. Значит что бы его развернуть нужно как-то извратиться(если вообще получится) или самому его написать.