Friday, March 31, 2017

Gumstix Says "Hello World" to Arduino® with Geppetto D2O and Intel® Curie™

In the world of the Internet of Things and embedded systems, there is a whole class amateur designers and developers who thrive in the realm rapidly iterative prototype development.  We dub these people 'Makers' and recognize them as the innovators and creative thinkers of the amateur electronics world.  The Internet is teeming with their blogs, walkthrus, git repos, and YouTube channels and we love 'em! Nowhere else will you find a Bluetooth-controlled cat-feeding rube goldberg machine made entirely of Lego, cardboard, plywood and a little microcontroller development board.  No, I haven't witnessed this project myself, but I'm about 95% sure it's out there somewhere.

One thing many of them have in common is a love of the well-known Arduino®/Genuino® platform.  One of the best things about Arduino devices is that they're so easy to program.  People of all ages - students, hobbyists, artists, engineers, and more - are taking these inexpensive devices and a desire to learn and create, and using them to - as Mr. Bill Nye (@billnye) would say - "...Change the world!"

Image: John Park (, @jedgarpark)
In my experience, classic programming of microcontrollers, or as we call them in the biz, MCUs, involves tedious and tiresome "bare-wire" programming in low-level languages such as C and often regresses into embedded assembly language.  Not to mention each brand of chip requires a different assembler inside the compiler toolchain.  With a lot of time and some trial and error, an experienced developer can produce a working product, but the barrier to entry is so high, you rarely see hobbyists messing around with this stuff.

More and more Arduino-compatible devices are surfacing and, as they do, new applications for the platform are discovered.  There seems to be no end to the enabling power Arduino provides to its users.

Intel recently released the Arduino 101, using the new Curie module - a miniscule 32-bit MCU, with plenty of value-added features, including Bluetooth and a gyro-accelerometer.  There's also a dedicated and programmable signal processing unit and 32-bit x86 processing power.

Just in time for Arduino Day 2017, Gumstix is announcing the addition of the Arduino-compatible Intel Curie module to the Geppetto module library.  What this means is that ANYONE can custom-design their own Arduino 101 board and take that amazing maker project out of its rat's-nest of wires, cables, and breadboards and into a product!  The added bonus is that you don't have to start your sketch from scratch because If you assign your pins carefully, your code should work right away.

I already mentioned that the Gumstix Radium 96BIE - a 96 Boards IoT Edition board using the Intel Curie module - was released in a previous post, and now I can confirm that it's Arduino compatible.  Oh yes, I personally made that built-in LED blink!  I have yet to put it through its paces, but I will.

So what are you going to make with Arduino and Geppetto?  Me?  I'm still excited about quadcopters after my drone demo project, so I've put together a micro-drone control board. It's less than 5x4 cm in size and includes ADCs, PWMs, GPIOs, GPS, I2C, USB... I love acronyms, don't you? Aaanyway, no one's building it yet but the design is there for you to look at and should give you an idea of what Geppetto can help you to with the Intel Curie, Arduino and your very own board design.

Friday, March 17, 2017

Gumstix Pi Compute Boards are CM3-Ready

If you follow me on twitter (@gstixguru), you might know that I recently ordered an RPi CM3.  Lots of people have been contacting us to find out how well our Pi Compute boards support the new, faster module, so I found a bit of time to play around with it.  I'd worked with the original CM on our dev board for my GPS and RTK project a year ago with great success, and was looking forward to getting back to the Pi Compute boards.

First Steps

As always, my first step was to flash a brand new image onto the CM's eMMC.  I downloaded the latest Raspbian Jessie Lite ISO and mounted my CM on a Gumstix Pi FastFlash.  Next, I ran rpiboot, plugged the board into my USB hub and CROSSED MY FINGERS!

RPi CM3 on a FastFlash getting flashed. Pardon the clutter.
So what happened next?  Exactly what should:  the eMMC was mounted to my file system like any unpartitioned flash drive would be.  So I dd'ed the image, moved the module over to the Gumstix Pi Compute Dev Board and got ready to Pi.

First Boot

At first, all I wanted was proof of life.  That and I was sure the default wpa supplicant and network interfaces config would not get me on the WiFi network.  So I screen'ed in and powered up the board.  And yes, the console came to life, spewing forth those familiar Linux startup messages.  No kernel panic, no errors, no problem.  So far so good. Raspbian Lite was up and running.  Oh, all the things I should test: GPIOs, I2C, SPI....  BORING!

Let's start with USB (Oh, and get the WiFi up and running while we're at it; screen is not my friend and SSH makes me smile:).  The WiFi dongle goes into the port and lsusb shows a list of devices.  And there it is.

Bus 001 Device 002: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter

Beautiful.  I fix up /etc/network/interfaces and add the office WiFi network to wpa_supplicant.config and shut it down.  Time to set this asside and get back to my other tasks.

Day 2

Before ditching the USB console connection, I have to go into raspi-config and enable the SSH host, and reconfigure the daemon:

sudo rm /etc/ssh/ssh_host_*
sudo dpkg-reconfigure openssh_server
After a restart, ssh works fine.

Let's got straight up the food chain to the camera!  That's what I want to see!  I want to get that Sony IMX219 taking stills and recording videos.  I want to see those LVDS signals in action.  The CSI-2 camera connector is by far my favorite feature of the dev board.  So while I was in raspi-config, I made sure to enable the camera as well.

Here's my Frankenberry Pi camera rig, ready to go, I hope.
So I hooked it up, fired up the module and... nothing.  Did I forget something?  Of course I did! I needed the device tree overlay blob for the camera.  Oops.  OK, so I grab the binary, -- I get the one for both camera and display, just because I can -- copy it to the boot partition and restart.

And did it work?  See for yourself:
Me and my clipboard.
Edit: Here's me trying to pretend I'm not being recorded by the Pi Camera:


I also took a few minutes and got the USB-Ethernet board fired up, and yes, everything works great.
I am very happy.  Stay tuned!  I have a Raspberry Pi DSI display around here somewhere and I want to get that up and running too.

Friday, March 3, 2017

The New Active Cooling System for Intel® Joule™ Module

Having spent some time now with the  Intel® Joule™ module, I have found it to be a powerful tool in embedded and IoT technology.  But as we all know in this field, with great power comes great heat dissipation needs.  Like the CPU in your laptop, the Joule runs hot so, like the CPU in your laptop, it's a good idea to use something a bit more potent than 2 x 2 cm heatsink that comes with your module if you're going to be doing any major computation.

Well Gumstix now has an active cooling system, tailor-made for the Intel Joule module, in our online store.  You can order yours here.  To make everyone's life simpler, I'm writing a short how-to guide for installing it, and I'm giving you a preview right here.

Active Cooling System For Intel® Joule™ Module


Installation Guide

This active heat dissipation unit provides a low-profile fan and heatsink solution for the Intel® Joule™ module.

Kit Contents

KIT054 contains a plastic heatsink shroud, 4 mounting screws, a Sunon Maglev MC30100V2 DC fan with 3-pin TE AMP connector, and a custom heatsink with a thermal interface material pre-adhered.  

Maglev MC30100V2 Technical Details: 

  • Air Flow:  3.7 CFM 
  • Speed:       7500 RPM
  • Noise:        24.0 dB
  • Power:      
    • 5.0 V
    • 72 mA
    • 0.36 W

Assembly Instructions

1. Mount module to expansion board

To mount the module to the board's connector, center it over the silkscreened footprint and press down over top of the module's connectors, as indicated in the adjacent image.  There will be an audible click when mounted properly.

2. Attach Heatsink

Before attaching the heatsink, remove the plastic membrane covering the thermal compound on its underside.  This paste will accelerate the dissipation of heat by forming a thermally conductive conduit between the sink and module.  Center the heatsink over the module and mount it with the provided screws, as in the image below, with a 1.6mm Phillips screwdriver.  The screws attach directly to the expansion board, securing the module and heatsink.

3. Mount Fan to Shroud

Attach the fan to the plastic shroud by pushing it into the the central cavity of the shroud, sticker side down, from the underside.  Ensure that the fan's wires are not pinched between the fan and the shroud's mounting tabs.  Apply pressure evenly on the left and right side of the fan until it snaps into place.

4. Mount Shroud and Fan to Heatsink

To complete active cooling system's assembly, attach the shroud and fan to the heatsink.  Place the shroud on top of the heatsink so that the fan fits in the cut-away region. Ensure the fan's wires pass between the fins of the heatsink and aren't being pinched.  Apply pressure to the left and right sides of the shroud until it snaps in place.

5. Connect Wires to Power Supply or Fan Control Connector.

The active cooling system's fan requires a 5V power supply and some Geppetto boards include a fan connector.  Either connect the fan's red wire to a 5V header pin and the black wire to GND, or insert the fan's connector into the board's connector if present.  The system is now ready for operation.

If any components are missing from the package, please contact

Intel, the Intel logo and Intel Joule are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or other countries.