SeeedStudios has their own system of prototyping hardward called Grove which uses four pin connectors to connect sensors, actuators and subsystems together to a central controller which can be arduino based or MSP430 based. Recently, they have introduced an interface to the Rapberry Pi called the grovepi+ which is a Raspberry Pi Hat with an Atmega328P which allows the RPi to take advantage of the grove widgets. I was one of the people who got their hands on one of the pre-review units in a Kit form and I decided to do a little something with it. In this article I will go through the basic kit and it’s contents and my first impressions since this is the first time I am using the Grove System. I had a few preconceptions and I will discuss my experience with the kit so far along with a project plan I have going. Lets go!
EDIT: You can purchase the kits for the grove Pi plus by Clicking Here from Seeed Studios.
The Grove Advantage
In the arduino world, everything is a shield weather it’s a GPRS module or a simple LED or anything in between. This sounds good since everything is standardized, BUT there is one small issue- Fixed PCB Size. Imagine putting an LED on an Arduino Size PCB and then realizing after the first prototype that you want to change the pin location. Wash Rinse and repeat and the costing will eat through your budget. The Grove has the advantage with making everything connect to the main board using a 4pin connector and that too can be moved on demand. My work scenario is me trying to rapidly produce a demo for a seminar or something where I just pick up the modules I need, connect them, test them and move on. Its that simple! Best part is for I2C Devices which means I can have as many devices as the address space allows.
The Grove Drawback
No system is perfect and the grove system has it’s drawbacks. The first one being that the central board usually have a fixed number of connectors since each connector is 4 pin and you have just that much board space. If you want say 10 digital devices and 5 analog ones, then it’s gonna be a problem. The second problem is the cable lengths. It may not matter much but every wire will drop a small potential and longer wires will cause serious issues with ADC peripherals. I have yet to run into any till now but then I am just starting to explore this system. Additionally the I2C peripheral clock frequency will also be limited by the cable lengths since longer cables will cause issues with higher frequency signals.(Unless you use specific cables and connectors.)
The Kit Impression
Below is an image of the kit contents scattered. My first impression was…”Hey an RGB LCD! Cool! and an Ultrasonic Ranger. Nice!”
The other peripherals are simple but can be useful like LEDs and buttons. The grovepi+ itself came with extension headers which means I can stack other hats on top. There is the obvious atmega328P but I did not find a USB connector. The previous version had one and the grovePi could be programmed like an arduino. Sounds like a grovePi minus? Well yes and no. This particular board is meant as a hat and even though having a USB header would make this multiuseful, it’s still pretty good and I will explain in a while. There are two connectors labeled RPISER and SERIAL which was a bit confusing and I was unable to find the schematic online. The github repo is yet to be updated I guess but I have a multimeter so I would probe the connections later.
The kit feels it has a lot of knick knacks and looks to be complete. It would have been nice to have a motor driver included, but then we need some motors and a chassis and the list goes on. All in all a good start.
How does it work?
Being a hardware hacker, the first thing I usually do with any tech is get the schematic or make one and then get the datasheets of the parts on it. With the absence of a schematic I had to trace out the circuit old-school style. The basic system is simple and pretty straight-forward. I found it to be similar to the older version and the block diagram is shown below.
The Atmega328P talks to the RPi via SPI and the firmware is prolly designed to be an SPI Slave. I have yet to probe the system completely, so I am not completely sure if thats the end of it. The previous version uses I2C to talk to the 328P and it still may. The diagram above shows that code can be loaded which I am going to experiment with but that should be possible since the software install includes the arduino IDE with AVR Dude. This means you can connect the GrovePi+ to the RPi and boot it up. Write sketches using the arduino IDE and upload like a normal arduino. You prolly have to use a different programmer option and again I have not covered this part since I wanted to see what it can do out of the box. There is another chip which is basically a buffer and it’s there because the RPi works GPIOs at 3.3V and our arduino and everything else uses 5V. The buffer acts like an interface between the atmega, I2C, SPI AND… the RPI Serial. This means you can use an FTDI module at 5V to connect to the serial port of the Pi Directly! No level conversion needed. The Digital IOs being used are connected to the Atmega and NOT the RPi directly which may be a good and bad thing at the same time.
The RPISER is connected to the RPi itself and the SERIAL is the Atmega serial. In theory you if you can get an arduino bootloader onto the atmega then you should be able to bridge the serials and then program it like a normal arduino- right? Wrong! No reset button to trigger the bootloader! More on this later.
Everything that connects to the I2C ports can talk directly to the RPi but thanks to the buffers, it can be 5V friendly. Neat!
The software install instructions are given on the seeedstudios.com website and are pretty straightforward. The github code and examples are CLEARLY not updated and I feel it requires a separate repo all together. I will put up my version of the code once I have cleaned up things. The python install script needs to be run as sudo else it won’t install some things. I found out the hard way but it was a good exercise.
Bottom line- Everything works at 5V and with the Atmega. The I2C is also 5V but connects directly to the Pi.
My little project
I made a raspberry Pi Robot which used the RPiSOC which is very similar to the GrovePi. Since I have some new shiny parts, its time to upgrade. Below is an image of my current setup with some necessary blocks connected.
I bought a Motor Driver compatible with the grove system and it works on the I2C bus. The code is expected to be in Python and I am still playing around with it. I ran the Temperature and Humidity Demo and it says it’s 200 degrees in my room. It needs calibration which means I will do some experiments with the code and how the whole thing will work. I have an RPi Camera which should stream live video over the LAN at a good frame Rate and I will 3D print some camera mounts to make a decent build. I am still researching and planning and in the next post I will be going into the details of the RPi Robot.