Grove Comes to Embedded


Hardware interoperability is hard!

While modifying software to suit your different needs is relatively straightforward, hardware pieces tend to be quite finished by the time they are being used making modifications less than trivial. You want to use a different IC, you need more sensors, or want to change your output device? All of these require custom work instead of plug-and-play solutions.

There are some examples of projects with the aim of making such hardware interoperable between devices for the benefit of us all, with the most successful example being the shields for Arduino. Moving beyond just Arduino boards, you can see shield connectors being used in a lot more places. While a great step forward they are still not the ultimate solution.  Some drawbacks include their large size for many common accessories as well as difficulty in using more than a handful at a time, as stacking can become troublesome very quickly. Fortunately there’s a new system that complements these existing solutions very well and improves usability tremendously!

Enter Grove

The Grove system, designed by Seeed Studio, is taking maker computing platforms by storm. The system is designed to have a standardized physical connector, predictable pinouts, and common board sizes.

The standardized physical connector includes 4 pins, with pinouts for Digital, Analog, and I2C connectors (as much as I’ve seen so far), and can be attached quite securely. Board dimensions start at 20x20mm and are available in multiples of that with a puzzle-style outline (other common sizes include 20x40mm or 40x60mm).

I’ve just counted and they list 106 different accessories on their wiki, most of which can be used with all compatible devices including developer boards like ArduinoIntel Edison and Galileo, BeagleBone Black and Seeed’s Grove focused BeagleBone Green, LinkIt OneRaspberry Pi, and more… It’s amazing to see how many interesting use cases this new-found interoperability is enabling.

Apply this to an Embedded System: GroveHat

The VAB-820 is maybe VIA’s most popular embedded ARM developer platform as it has a number of digital I/O and I2C pins available through onboard headers. I thought it would be useful (and a lot of fun) to break those pins out to Grove compatible connectors so we all could start to play with the 100+ gadgets available! It took an evening sitting with KiCad to design the board and then about a week for them to be printed by Seeed’s Fusion PCB service. Now the results are in.

GroveHat adapter for the VAB-820
GroveHat adapter for the VAB-820

I wanted to keep things simple for the first version. My design includes two connectors for the I2C3 bus, as I2C is very versatile, as well as two digital I/O connectors that make 2 or 4 digital lines available (based on the similar design of the Grove Base Shield v1.3).

GroveHat PCB Layout (prototype)

The first thing was to hook the board up with the Grove LCD + RGB Backlight (one of my favorite accessories so far). It was really fun to see the colors lighting up and things working as they should!

GroveHat used with a Grove LCD RGB Backlight. Yeah indeed!
GroveHat used with a Grove LCD RGB Backlight. Yeah indeed!

I’ve put together a small practical demo to show GroveHat breakout in action. Here’s the video of the VAB-820 running Linux and using a system monitoring script written in Python to display the current CPU and memory utilization in color!

One interesting thing to note is that so far Grove-compatible devices seem to be running bare firmware or Linux. The VAB-820 appears to be the first system where you can use all of this hardware power with Android! That is enabled by the VIA Smart ETK (Embedded Tookit), which provides an API for the digital I/O and I2C (among other things).

The source code and Gerber files for GroveHat is available on Github under the CERN Open Hardware License. Please also note that this is a side-project, not an official accessory by VIA!


The development does not stop with these initial tests as there are a number of things I’d like to improve.

For the board itself I think there’s space to:

  • improve the layout (matching the VAB-820 outline better)
  • add more connectivity (but not too much)
  • add some decoupling capacitors to the power lines for better reliability

And on the software side I’m thinking to:

  • create more demos for both Linux and Android
  • check out the GPIO control from Linux (which I’m less familiar with than though I2C)

Your turn!

What would you use a powerful embedded system, like the VAB-820 is, with Grove for? If you build anything with GroveHat or Grove in general please let us know, we are always very happy to hear about your projects!

VIA Technologies, Inc.