Растущий рынок Интернета вещей (IoT) насчитывает одних только Open Source-проектов несколько десятков, поэтому очевидно, что такой армаде разработчиков требуются аппаратные средства для экспериментов. Исходя из этого, Эрик Браун на портале Linux.com предлагает присмотреться к приспособленным для этих задач компьютерам на базе Linux и Open Source — начиная с микроконтроллерных (MCU) технологий и заканчивая одноплатными решениями. Позиционирование таких устройств выдаёт маркировка — большинство из них поступает на прилавки с лейблом «Применимо для IoT».

Если отбросить маркетинговую составляющую, то под категорию плат для IoT-разработок подпадают небольшие, потребляющие мало энергии и недорогие устройства, которые поддерживают беспроводную передачу данных и стандартные интерфейсы подключения. Они могут опционально комплектоваться камерой (требуется для некоторых приложений), но, как правило, дополнительные приборы для создания или потребления мультимедиаконтента негативно сказываются на общей продуктивности плат.

Говоря об IoT, эксперты отмечают, что основная задача этой технологии состоит в сборе данных с оконечных точек или передающих узлов. Для этого в работе экосистемы участвуют шлюзы. Это класс промежуточных устройств, принимающих данные от встроенных датчиков и пересылающих их в ЦОДы для дальнейшей обработки; они также требуются для обеспечения сетевого взаимодействия при подключении к оконечным точкам (низкоуровневым узлам) устаревшего промышленного оборудования. Учитывая, что шлюзы могут разворачиваться в удаленных районах и в большом количестве, они должны быть недорогими, лёгкими и эффективными.

IoT-модули и SBC (embedded single board computer, встроенный одноплатный компьютер) — это взаимозаменяемые классы устройств для работы в домашних или промышленных условиях. Что касается SBC, то они, как правило, в большей степени нацелены на работу с беспроводными подключениями, тогда как шлюзы — в особенности промышленные — подключаются через последовательные CAN-порты или посредством Ethernet-технологий типа EtherCAT.

MCU IoT

Атрибуты IoT — единицы данных разных типов — обрабатываются преимущественно процессорами, сбор данных из оконечных точек осуществляют микроконтроллеры. Они работают под управлением лёгких операционных систем в режиме реального времени, таких, к примеру, как система с открытым кодом FreeRTOS, или же MCU можно программировать при помощи программной среды разработки Arduino IDE.

Раньше ограниченная поддержка беспроводных модулей MCU по сравнению с процессорами приложений под управлением Linux или Windows Embedded делала их малопривлекательными решениями для IoT. На MCU работает крайне ограниченное число ОС Linux. Одна из них — uClinux, но у неё есть недостатки — она устаревшая и «признаёт» только специализированные и дорогие MCU.

В последние годы ситуация начала меняться в лучшую сторону: появились управляемые MCU комбинированные платы Arduino c поддержкой беспроводных сетевых коммуникаций на базе MIPS-архитектуры типа Qualcomm Atheros AR9331, что делает их пригодными для использования в IoT. Такие платы способны работать на таких надёжных и гибких дистрибутивах GNU/Linux для встраиваемых систем, как OpenWrt или Linino. Вдобавок к этому появилось множество гибридных решений Linux/Arduino SBC, включая Arduino Yún Mini и Arduino Tian (работает на базе чипсета Atheros AR9432).

Помимо Qualcomm свои решения предлагает и MediaTek. Пару лет назад эта компания предложила рынку платформу LinkIt ONE для разработки прототипов устройств сегмента носимой электроники и IoT, которая благодаря сочетанию аппаратных возможностей и программной поддержке стала достаточно популярной среди энтузиастов. Одним из выпущенных MediTek продуктов стала печатная плата LinkIt Smart 7688, работающая на базе Linux-дистрибутива OpenWRT. Основной процессор платы — SoC MT7688AN — отвечает в ней за обслуживание сети, USB и OpenWRT, а входы-выходы работают совместно с дополнительно установленным MCU ATmega32U4. Дополнительная микросхема расположена на обратной стороне платы.

За прошедший год недорогие микроконтроллеры с интерфейсом Wi-Fi, например, решение китайского производителя Espressif ESP8266 упростили создание IoT-устройств без необходимости нагружать основной процессор приложений под управлением Linux дополнительными задачами. MCU ESP8266 имеет открытый исходный код, работает на модифицированном ядре Tensilica RISC и может запускать скетчи (программы, написанные в среде Arduino). Правда, для этого чипсет требуется перепрошить на альтернативную открытую прошивку (на GitHub выложена инструкция, как это сделать). ESP8266 также может быть перепрограммирован для запуска FreeRTOS или ARM mbed IoT Device Platform, предназначенной для устройств на процессорах ARM Cortex-M.

ESP8266 нашёл применение на SBC производителя Arduino Srl — Arduino STAR Otto и Arduino Uno WiFi. Эти платы используются в проектах DIY (Do it yourself, сделай сам). Весной этого года началось производство ESP8285, совмещающей ESP8266 и флэш-память на 1 Мб. Espressif также выпустила микросхему ESP32 с двухъядерным 32-разрядным чипом Tensilica Xtensa LX6. Его характеристики включают 448-Кб ПЗУ, 520-Кб ОЗУ. Внешние ОЗУ/ПЗУ на SPI-интерфейсе поддерживают до 4 и16 Мб соответственно. Имеется поддержка Wi-Fi 802.11, Bluetooth v4.2 (в том числе Low Energy).

Espressif — не единственный производитель микроконтроллеров с интерфейсом Wi-Fi. Подобной разработкой отметилась компания Atmel. MCU ATSAMW25H18 состоит из ядра Atmel SAMD21 ARM Cortex-M0+ и Wi-Fi-чипа WINC1500 2.4 ГГц 802.11 b/g/n. Компания PINE64, занимающаяся разработкой отладочных плат и одноплатных компьютеров, в конце сентября сообщила о подготовке к производству собственного Wi-Fi-модуля PADI IoT Stamp на процессоре RTL8710AF (ядро ARM Cortex-M3, рабочая частота 83 МГц,1 Мб ROM, 1 Мб флэш-память, 512-Кб ОЗУ), ориентировочная стоимость которого будет 2 долл. Также, как и ESP8266, MCU RTL8710AF может работать на FreeRTOS.

MCU с поддержкой Wi-Fi для IoT-решений выпускает и Intel. Микроконтроллеры Quark D1000 предназначены для сбора информации с датчиков, более сложные решения — Quark D2000 и SoC Quark SE — способны на «сложную» обработку информации, опираются на x86-совместимые ядра Intel и могут работать на базе таких RTOS, как Zephyr. Intel Quark D1000 и D2000 служат основой для платформ, рассчитанных на обработку больших потоков данных. Yanzi Networks использует микроконтроллеры Intel Quark в своих решениях для мониторинга работы систем «умного» дома и «умного» офиса. Автоматизация управления освещением и другими типичными потребителями электроэнергии позволяет существенно снизить ежемесячные затраты. Honeywell создала на базе Intel Quark прототип системы мониторинга состояния производственной зоны.

Linux IoT

Недавнее исследование HackerBoards при поддержке сообщества Linux SBC установило, что наряду с домашней автоматизацией в сфере IoT будут набирать популярность промышленные приложения, такие как сбор данных и HMI (Human Machine Interfaces, человеко-машинный интерфейс). Для работы таких приложений задействуются высокоуровневые узлы IoT и требуются процессоры приложений под управлением Linux, Windows Embedded или Windows 10.

Linux обычно используется для обслуживания оконечных точек, а также тогда, когда требуется локальная обработка данных, запуск операционной панели управления или веб-сеансов. При этом оконечные точки должны поддерживать широкий спектр беспроводных радио-технологий, в том числе интегрированные камеры и аудио. Помимо оконечных точек Linux применяется и для обслуживания шлюзов, собирая статические данные с низкоуровневых IoT-узлов. Однако очень часто одноплатные компьютеры могут одновременно выполнять две задачи: выступать в роли шлюза начального уровня или служить высокоуровневой оконечной точкой.

Подобного рода задачи неплохо решает Raspberry Pi, одна из наиболее популярных плат для IoT. Изначально она не разрабатывалась для обслуживания любительских или коммерческих проектов IoT, но Raspberry Pi 3 с встроенным Wi-Fi и Bluetooth является недорогой, к тому же на рынке для неё доступно множество модулей и дополнений, ориентированных на применение в IoT-проектах.

К примеру, IBM, Element14 и EnOcean разработали для Raspberry Pi модуль EnOcean Pi. Используя его, разработчики могут создавать готовые «коробочки» для управления интеллектуальным домом, которые могут обрабатывать и визуализировать данные от беспроводных и безбатарейных датчиков и обеспечивать централизованный контроль над домом через беспроводное подключение. Шлюз EnOcean Pi можно также использовать для облачных сервисов и недорогой автоматизации зданий. Помимо участия в проекте EnOcean компания IBM является поставщиком ИИ-платформы Watson, которая применяется для аналитики в сфере IoT.

Многие IoT-платформы поддерживают одноплатную систему BeagleBone, которая лучше всего подходит для промышленных IoT и предоставляет многочисленные дополнения. По словам разработчиков, BeagleBone позволяет за 10 с загрузить GNU/Linux и в течение 5 мин начать разработку при помощи одного USB кабеля. BeagleBone Black построена на базе процессора Sitara XAM3359AZCZ100 семейства ARM Cortex A8, который работает на частоте 1 ГГц. Также на борту находится 512 Мб оперативной памяти DDR3L на шине с частотой 800 МГц и 4 Гб флэш-памяти eMMC, служащей жёстким диском. Варианты плат типа BeagleBone Green Wireless широко используются в индустрии IoT.

Если проекты требуют задействования ещё большей мощности, то в этом случае можно присмотреться к платам, на которые устанавливаются процессоры NXP семейства i.MX6 с архитектурой ARM Cortex-A9. Например, плата Advantech RSB-6410 может поставляться с четырёхъядерным процессором и 2 Гб оперативной памяти. В дополнение к оперативной памяти на плате установлен модуль eMMC объёмом 8 Гб. Плата поддерживает Linux Yocto. Имеется также поддержка SATA и базовых звуковых возможностей. Платы для коммерческих IoT-проектов поставляют такие вендоры, как HummingBoard, Udoo и Wandboard.

Atmel — ещё один изготовитель полупроводниковых электронных компонентов, который выпускает основанные на ядре Cortex-A5 системы на кристалле с заводским бутлоадером SAM-BA. Их можно обнаружить, например, на плате Artila Matrix, используемой для удалённого управления компьютером. К слову, в проектах IoT находит применение даже устаревшее ядро ARM9 — одноплатные компьютеры на его базе пользуются популярностью из-за его небольшого размера, дешевизны и низкого энергопотребления. На базе ARM9 работает CloudBit SBC — конструктор для онлайн-синхронизации, в комплект которого входит шесть модулей, блок питания и монтажная плата. Набор позволяет подсоединять десятки приводов, датчиков, зуммеров, диммеров, светодиодов и коллекторных двигателей. Конструктор производит компания LittleBits.

Производством IoT-модулей занимаются и другие производители. Набор Grove компании SeeedStudio является одним из самых популярных семейств сенсорных устройств. Производитель выпускает совместимые с интерфейсом Grove датчики движения PIR, бесконтактные термометры и т. п. Приобретя специальный модуль расширения, эти датчики можно будет подключать к Arduino UNO и совместимым платам, включая Intel Edison Kit для Arduino. Платы Creator Ci40, HobbitBoard, HummingBoard-Gate поддерживают аддоны другой компании — MikroElektronika. Они носят название Click.

Устройства сбора данных высшего класса работают в основном на гибридных ARM/FPGA-процессорах Zynq производства Xilinx. Одноплатные Linux-компьютеры на основе Zynq — Z-Turn, Snickerdoodle и Parallella. Аппаратной основой последнего является платформа Parallella Board — высокопроизводительный многоядерный компьютер, который может работать как независимый или как один из вычислительных блоков в IoT-системах. Всего есть три варианта исполнения Parallella Board: Microserver, Desktop, Embedded, которые отличаются используемыми процессорами и доступной периферией. Однако для всех трех исполнений есть общая основа: двухъядерный ARM Cortex-A9 процессор Zynq , FPGA, 16-ядерный RISC-сопроцессор Epiphany. Каждое из ядер снабжено собственной памятью и представляет собой независимый процессор.

Нужно заметить, что ARM Cortex-A7 постепенно вытесняет Cortex-A5, A8 и A9 из датчиков, низкоуровневых узлов и шлюзов начального уровня. Популярные однокристальные системы для применения в проектах IoT на его базе включают такие решения, как NXP i.MX6 UltraLite (UL) и двухъядерный чип Artik 5 производства Samsung. Чипы Allwinner преимущественно используются в клонах Raspberry и применяются в многочисленных проектах IoT, тогда как решения Rockchip, Samsung и Qualcomm применяются в мультимедийных устройствах. Вскоре на рынок начнут поступать ещё более новые решения на базе Cortex-A32. Это ядро является самым маленьким и самым энергоэффективным среди ядер архитектуры ARMv8-A. К примеру, энергоэффективность новинок на 25% превосходит показатель ядер Cortex-A7, демонстрируя при этом лучшую производительность и занимая меньше места.

Что касается Intel и x86, то после прекращения разработки Atom-чипов для смартфонов, процессорный гигант перенацелил их на рынок подключаемых устройств. Новинки входят в комплект для разработчиков под названием Intel Joule. По сути, Intel Joule представляет собой небольшую плату, которая подходит для тестирования устройств IoT, роботов, гарнитур виртуальной реальности, беспилотных летательных аппаратов и др. Одна из плат, именуемая Intel Joule 550x, основана на 4-ядерном процессоре Intel Atom T5500 с частотой 1,5 ГГц, вторая, более производительная версия, работает на Intel Atom T5700 с частотой 1,7 ГГц и имеет 4 Гб оперативной и 16 Гб встроенной памяти. Intel Joule поддерживает работу с Ostro Linux.

Другой проект Intel в области IoT — это процессоры Quark, предназначенные для работы с RTOS, оконечными точками и недорогими шлюзами. На Linux-чипе Quark X1000 работает недорогой шлюз Advantech UNO-1252G, более дорогие шлюзы типа Axiomtek ICO300-MI комплектуются чипами Atom.

Выпуском встраиваемых чипов занимается и AMD. Платы на базе G Series, предназначенные для решения IoT, задач выпускают такие компании, как Advantech, Congatec, GizmoSphere и др. Шлюзы класса hi-end предназначены для агрегации и обработки данных из других шлюзов и работают на более мощных платформах x86 и ARM. Такие системы перенаправляют потоки IoT-данных на облачные серверы для дальнейшей обработки.