Android Things Dev Preview 2 может быть тем, что нам нужно!


Android Things — это попытка Google проникнуть в мир Интернета вещей. Первый предварительный просмотр не впечатлил, но теперь у нас есть Developer Preview 2, и он, похоже, решает многие проблемы. Это может быть операционная система Интернета вещей, которую мы все используем. Обновлено: все еще недостаточно быстро.

Нет сомнений в том, что использование Android в качестве ОС IoT имеет много преимуществ — в основном, простоту создания пользовательского интерфейса и интеграцию с другими сервисами Google Play. Однако когда дело доходит до создания программ Интернета вещей, вам нужно нечто большее. Вам нужна не только возможность взаимодействия с рядом довольно стандартных датчиков, вам нужна скорость, чтобы иметь возможность работать с обоими настраиваемыми устройствами и работать со многими устройствами одновременно. Независимо от того, какие разумные ограничения ставят программисты ОС на то, что можно сделать, программист IoT захочет большего.

В ходе нашего исследования первого превью Вещи «Начало работы с Android Вещи» от Google быстро стало ясно, что это еще не та ОС, которую можно было бы использовать для новых вещей. Java-контроль линий GPIO в Java был в 5000 раз медленнее, чем выполнение той же работы с использованием C.

Ясно, что этого будет недостаточно для нестандартных драйверов и, вероятно, недостаточно для управления группами датчиков.

Чтобы получить нужную нам скорость, одна из возможностей состоит в том, чтобы дать возможность писать собственные драйверы или даже общий код на C. Учитывая, что Android уже имеет способ смешивать C и Java, то есть NDK, казалось удивительным, что это не особенность Preview 1. Хорошая новость в том, что это особенность Preview 2.

Android Things поддерживает стандартный Android NDK. Мы выпустили библиотеку для обеспечения собственного доступа к Peripheral API (PIO), чтобы разработчики могли легко использовать свой существующий собственный код.

Ключ, похоже, новая библиотека NativePIO:

Собственные API-интерфейсы PIO позволяют писать код C / C ++ для управления периферийными устройствами GPIO, PWM, I2C, SPI и UART, которые обращаются к той же базовой периферийной службе, что и стандартные API-интерфейсы PIO. Это позволяет вам написать приложение Android Things исключительно на C / C ++ или расширить приложение Android Things на основе Java с помощью кода C или C ++, который использует собственные API-интерфейсы PIO (например, перенос существующих драйверов, написанных для других встраиваемых платформ).

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

Идея разрешить программистам Интернета вещей создавать драйверы пользовательского пространства — хорошая идея, и теперь, когда вы можете дополнить ее, написав на C, она должна позволить делать практически все, что угодно. Например:

код вашего драйвера может считывать вывод GPIO и запускать обычное событие Android KeyEvent или считывать данные с внешнего GPS через последовательный порт и передавать его в API-интерфейсы местоположения Android. Это позволяет любому приложению внедрять аппаратные события в структуру без настройки ядра Linux или HAL.

Есть только две вещи, которые могут сделать это ужасно неправильным — недостаток скорости или непростота. На данный момент трудно увидеть, где в системе может быть потеряна скорость, но для среднего программиста Интернета вещей это может показаться усложнением чего-то, что уже достаточно сложно.

Решением проблемы простоты использования, скорее всего, являются модификации и расширения Android Studio. На данный момент проект Things использует NDK обычным образом, но вам нужно скопировать нужные файлы вручную. Очевидно, нам нужен мастер нового проекта и еще несколько помощников.

Также новинкой является поддержка USB-аудио для Edison, Joule и Pi. Фактически, поддержка Joule также является новой, и теперь вы можете запускать Android Things на Joule, Edison, Pi и NXP Pico.

Я оставил самое поразительное развитие до конца — момента «еще одна вещь». Android Things теперь поддерживает TensorFlow. Да, вы можете создавать нейронные сети AI на устройстве IoT. В предоставленном образце показано распознавание объекта с помощью камеры.

Образец TensorFlow, определяющий породу собаки (американский стаффордширский терьер) на Raspberry Pi 3 с камерой

Следите за обновлениями, посвященными началу работы с Google Android Things, с оценкой того, насколько быстро и легко использовать код C / C ++.

Как указано в заголовке, с охватом нижнего уровня с помощью C / C ++ и NDK и верхнего уровня с помощью AI, Speech API и т. Д., Это может быть ОС IoT, на которую следует обратить внимание — но только если Google сможет получить все вместе делают его достаточно простым в использовании.

Обновлять:

После опробования подхода NDK к работе с линиями GPIO, печальные новости заключаются в том, что он едва ли быстрее Java. См. Начало работы с Google Android Things — предварительный просмотр 2. Это разочаровывает и опровергает многие из моих мнений, высказанных в этой новости. Для непосредственного взаимодействия или выполнения чего-либо, что требует Android, все еще слишком медленно даже на Pi 3.


Добавить комментарий