Android Things – OS for IoT and embedded devices

Android Things lets you build smart, connected devices for a wide variety of consumer, retail, and industrial applications. It is an operating system released by Google for IoT and embedded devices. It’s based on Android, which in turn uses the Linux kernel. It therefore has support for multitasking and virtual memory. It’s meant to fit on devices with a limited memory footprint, although 512 MB is the minimum RAM requirement. AndroidThings therefore targets a different IoT segment compared to microcontroller-based IoT devices. It was back in May 2015 that Google announced Project Brillo as its IoT operating system, but having looked at the feedback it received from developers about Brillo, Google decided to ditch it and create Android Things.

IoT Developers can creates and builds IoT apps easily via Android Things.

Why Android Things

AndroidThings can run on both 32-bit and 64-bit platforms, on both ARM and x86-based processors. Google certifies SoMs that work with AndroidThings and also provides the necessary BSPs. The modular design of SoMs enables developers to use them on a development board while prototyping and reuse them on any custom carrier board designed for end products. Development boards such as NXP iMX7D and Raspberry Pi 3 are available for fast prototyping.

AndroidThings provides turnkey hardware designs to solve the problems inherent in building an Internet of Things (IoT) device:

  • Building and deploying devices is costly and slow.
  • Device certification and network compatibility is expensive.
  • System Integration (SI) requires deep technical expertise.
  • Scaling to production-level volumes is cost prohibitive for many small- to mid-sized companies.
  • Even large companies face challenges when bringing-up hardware while also maintaining an OS.

Android Things is uniquely positioned to solve these problems, today. Build devices with certified System on Modules (SoMs) and development boards that simplify the prototype to production process.

Security and scalability

We provide the system image, updates, and fixes so you can focus on creating compelling products. In addition, you can push these system updates and your own app updates to devices using the AndroidThings Console.

Android Things vs Android

Comparing the architectures of Android and Android Things. Source: Mahmoudi, 2017.
Comparing the architectures of Android and AndroidThings. Source: Mahmoudi, 2017.

AndroidThings uses the same lower layers of the stack as Android. For the application framework, while some APIs are not available in Android Things, the Things Support Library has been added. This library provices low-level hardware access (GPIO, PWM, I2C, SPI, UART, etc.), which is not possible with Android.

System apps and content providers typical on Android phones are not installed. Generally, APIs that are not available are those that require user input or authentication. Displays are optional. There’s no Play Store access for users to download and install apps. As developers, you will probably ship AndroidThings and your apps on your own custom hardware.

AndroidThings 1.0 Features and APIs

Android Things 1.0 introduces a variety of new features and capabilities for users and developers.

System

  • Home Activity Support – Android Things expects one app to expose one “home activity” in its manifest as the main entry point for the system to automatically launch on boot. This activity must contain an intent filter that includes both CATEGORY_DEFAULT and CATEGORY_HOME.
  • AndroidThings 1.0 allows apps to control and monitor the process of applying over-the-air (OTA) software updates from the Android Things Console.

Connectivity

  • Bluetooth – Android Things 1.0 enchances the core Android Bluetooth APIs with additional features for device state management.
  • LoWPAN – Connect your devices to IP-based Low-Power Wireless Personal Area Networks (LoWPAN) in Android Things 1.0, including Thread networks.

Peripherals

  • Peripheral I/O – The Peripheral I/O APIs allow your apps to communicate with sensors and actuators using industry standard protocols and interfaces. The following interfaces are supported: GPIO, PWM, I2C, SPI, UART. Open a connection to any of these interfaces with the or list the available ports using the PeripheralManager.

  • User-space Drivers – AndroidThings 1.0 enables apps to extend existing Android framework services and inject hardware events with user-space drivers.

Date/Time

Adjust the date/time settings of the device in Android Things 1.0 with the TimeManager. This includes control of the clock time and time zone, as well date/time formats and automatic time syncing with the network.

Cloud IoT Core: Enables IoT data flow management within Google Cloud Platform.

Hardware Platforms

As on May 2018, the following are supported for production:

  • NXP i.MX8M (ARM Cortex A53, 64-bit + QC7000Lite GPU)
  • Qualcomm SDA212 (ARM Cortex A7, 32-bit + QC Adreno 304 GPU)
  • Qualcomm SDA624 (ARM Cortex A53, 64-bit + QC Adreno 506 GPU)
  • MediaTek MT8516 (ARM Cortex A35, 64-bit)

Following are for prototyping and testing only:

  • NXP i.MX7D (ARM Cortex A7, 32-bit)
  • Raspberry Pi 3 Model B (ARM Cortex A53, 64-bit)

Conclusion

AndroidThings on a dual-core CPU with 512 MB RAM is not the right pick for just blinking LEDs or collecting and sending few bytes of data. It’s better suited for gateways and edge devices that require local processing. Android Things is unsuitable for a range of processors from 8-bit MCUs to 32-bit ARM Cortex M-series cores. Devices powered by AndroidThings will also consume much more power than MCUs, although they may be better at implementing security.


You may like also:


 

Harshvardhan Mishra

I am an IoT (Internet of Things) Enthusiast and Blogging is my Passion. Follow and send tweets me on @harshvardhanrvm

2 thoughts on “Android Things – OS for IoT and embedded devices

Leave a Reply

%d bloggers like this: