How do you feel about this article? Help us to provide better content for you.
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
What do you think of this article?
With serious performance and advanced capabilities shoehorned into a diminutive form factor , the Intel Joule 570x takes IoT development up a gear — or three.
When the Intel Edison landed it raised the bar for IoT development platforms, with its dual-core Intel Atom CPU, 1GB RAM and 4GB flash storage, plus Bluetooth and WiFi all packed into an impressively tiny footprint. Well, some 2 years on and Intel have pulled it off once again, but this time with the similarly tiny Joule boasting specifications you’d more expect to see in a laptop.
Joule 570x hardware summary
Image source: intel.com
- 1.7GHz (2.4GHz burst) Intel Atom quad-core 64-bit, with 4MB L1 cache
- 4GB RAM
- 16GB on-board flash plus external storage support (SDIO)
- Intel HD GPU (18x Executions Units) and HDMI v1.4b
- Hardware encode and decode support includes H.264, MVC, VP8 and VP9
- Integrated IEEE 802.11agn + ac and BT 4.2 wireless
- 2x 100-pin expansion, with up to 48x GPIO (4x PWM)
- USB 3.0
- 48 x 24 x 3.5mm!
The Joule is clearly not designed for simply hooking up to temperature and humidity etc. sensors — although you could easily do this — and so what sort of applications is it intended for? To start with those which you were previously only able to make work with a desktop, laptop or perhaps a much larger SBC, which require plenty of horsepower, connectivity and quite possibly video input/output.
Intel provided examples include an earthquake detector that makes use of both a digital accelerometer and live online data, a line follower robot, range finder and TI SensorTag demos. However, it has to be said that none of these appear as though they truly put the Joule’s capabilities to the test and they barely scratch the surface of what a platform such as this makes possible.
More interestingly, integrated support for the Intel RealSense depth sensing cameras is mentioned and this is a pairing that makes perfect (real? Apologies...) sense, with interfacing on either side via USB 3.0 and the Joule easily capable of supporting applications that integrate computer vision.
Expansion Board
Image source: intel.com
As with the Edison, fine pitch, high-speed connectors enable integration with custom solutions and in the case of Joule, these are a pair of 2x50-pin Hirose sockets. Thankfully, an expansion/breakout board is provided as part of the 570x Developer Kit, with two far more prototyping friendly 20-pin 0.1” pitch headers giving access to SPI, I2C, I2S, UARTs, PWM, GPIO, power and more.
The expansion board also provides:
- Power supply, level-shifting and filtering
- Battery holder for the RTC
- Connector for a MIPI display
- Power and user/general purpose buttons
- USB C (firmware update)
- USB 3.0 host
- Micro USB (console UART)
- Micro HDMI
Hello Ostro
Linux support comes courtesy of the Ostro Project and I must admit that, despite considering myself as being a Linux and open source advocate, this was completely new to me. Furthermore, the prospect of a custom Linux distribution with home grown tooling etc. that you’d have to get to grips with was a concern. But fear not, as it turns out that Ostro is a reference distribution built using tools from Linux Foundation workgroup, the Yocto Project — of which Intel is a member.
The Yocto Project provides its own reference Linux distribution, Poky, which has enjoyed reasonable success and been shipped with many development platforms, including Intel Edison and Galileo. However, while Poky is targeted at general embedded applications, Ostro has a very clear IoT focus, optimised for secure device-to-device communications and software updates, along with many other advanced features being provided via the IoTivity framework.
Handily, Ostro is available in two versions: base Ostro OS for headless devices and Ostro OS XT for devices with graphics and media support. Ostro is also supported on the Edison and Galileo, along with MinnowBoard Turbot, BeagleBone Black and a Gigabyte small form factor PC.
Setting up
As you might expect, Intel provide plenty of detailed documentation and the Joule Module User Guide takes you all the way from requirements and loading an O/S, through configuring WiFi and development options, to troubleshooting.
The latest Ostro image is first downloaded and then can be written out using a Linux PC with:
$ unxz ostro-xt-image-swupd-intel-corei7-64.dsk.xz
$ sudo dd if=ostro-xt-image-swupd-intel-corei7-64.dsk of=/dev/mmcblk0 bs=4M
Note that the dd “of” argument may be different with other distributions and hardware!
With the Micro SD card inserted into the Expansion Board, 12VDC can then be applied via the barrel connector and the Joule module will boot, with a serial console available via the Micro USB.
When connecting via the serial console it goes straight to a root shell provided by Busybox, instead of a login prompt. The top utility can be seen running in the above image, showing details of running processes and resource utilisation.
ConnMan is used for managing network interfaces and this is not something I personally have much experience with. I was a little confused by the section in the User Guide concerned with configuring the wireless interface and after a little reading up, I used the following sequence of commands to configure the Joule module to connect to our WPA2 secured office network:
# connmanctl
connmanctl> scan wifi
connmanctl> services
connmanctl> agent on
connmanctl> connect wifi__managed_psk
At this point entering the password (pre-shared key) when prompted.
Next I followed the instructions in the User Guide to configure SSH access. Following which I could SSH into the module and proceeded to update the middleware libraries.
Development
Creating a new project in intel IoT Studio
There is no shortage of development options for the Joule and two official IDEs are provided: Intel IoT Studio for C/C++ and Intel XDK for node.js applications. In addition to which you can just as easily do development directly on the Joule itself, via node.js/JavaScript, C++ and Python. In each case access to GPIO and sensors with built-in support is simplified via MRAA, which also provides application portability across Edison, Galileo, MinnowBoard and other platforms.
Of course, developing applications via other languages is also possible and where packages are not provided, this should just be a matter of building from source and optionally packaging for Ostro.
RealSense
The Intel RealSense is an eminently compact solution that integrates 1080p RGB and infra red cameras, plus an infra red projector, that is available in front and rear facing versions. The former being short range and intended for use in facial recognition, gesture-based interaction and video conferencing etc. While the rear facing type is longer range and intended for use with applications such as object scanning and augmented reality.
In the above image can be seen a prototyping solution that we put together with the Intel Joule 570x Developer Kit and longer range Intel RealSense SR200, plus a simple acrylic base and camera support, along with a small breadboard for use with the GPIO broken out by the Expansion Board.
In a future post I plan to take a look at the RealSense SDK and example applications used together with the Intel Joule 570x.
First impressions
That Intel managed to pack all the performance of the Joule 570x into a footprint smaller than a memory module used in a laptop is incredible. The integration of a GPU with HDMI interface, WiFi, Bluetooth and USB 3.0 serves to underline the fact that this is not your typical IoT platform and is aimed at more advanced uses, far beyond simple sensors, displays and actuators.
The Ostro Project looks very interesting indeed and it’s reassuring to see that this is based on standard embedded Linux tooling and metadata, with a considered IoT focus and capabilities that will be welcomed by those working on mass market products that need to scale.
Looking forward to trying out the Joule 570x with the RealSense SR200 and provided examples!
Comments