GROVE - Starter Kit v1.1b

The Grove system is a modular, safe and easy to use group of items that allow you to minimise the effort required to get started with microcontroller-based experimentation and learning. Although there are many choices available for microcontroller development environments, the Grove system will work very well with the Arduino system.

What is new in Grove Starter Kit v1.1b:

The Grove Starter Kit v1.1b consists of the following items, as pictured below:




Now let's look at each component in more detail.

Grove Base Board

First we start with the Grove base shield board. Grove Base board is the new version of Electronic Brick Shield.The Grove base Shield is compatible with Seeeduino v2.21 (168p and 328p), and Arduino UNO and Duemilanove. We standardize all the connectors into 4 pins(Signal 1,Signal 2,VCC and GND) 2mm connectors, which simplify the wiring of electronics projects. The 4-pin buckled connectors also make the wiring situation more stable. We build all kinds of Grove units to match up with Grove Base Board. Still, you need not worry about compatibility between the Grove Grove Shield and your existing Electronic Bricks. We have many kinds of converter cables(still increasing) to deal with backwards-compatibility. The Grove is very similar in fashion to an Arduino shield board, and in fact is used as such with our Seeeduino or Mega board. In v1.0b, we move the analog connectors inward a little so that it will fit the higher power connector and USB connector. Here is a top-down view:

The purpose of the Grove base shield is to allow easy connection of any microprocessor input and output pins to the Grive units. Each socket is clearly labelled with its matching I/O pin. For a more detailed examination of the Grove, please consider the following diagram:

For those working with Seeduino or Arduino boards, the layout should be quite familiar. The labels on the "Power" header pins may be confusing - the new Arduino Uno has two ground pins between the Vin and 5v, and label "GND" twice, but the Grove labels match the Duemilanove which label "GND" once, wider, to indicate both pins.

There is one small thing to take note of when connecting to analog or digital sockets. Each socket contains 5V, GND, and two I/O pin connections:

When using the digital I/O, note the staggered alignment of the pins – that is, one socket handles D1 and D2, the next D2 and D3, and so on. If you are going to use an input Grove units and an output Grove which have two signal pins simultaneously (now the starter Kit v1.0b doesn't have two signal pins Grove), separate your wires so that a socket is between them as such:

Wires for two signal Grove units cannot sit side-by-side on the Grove Base board because one pin (such as D2) will be multi-using. Or, if two Grove units only use one digital pin, such as the tilt switch and the piezo, they can sit together on the Grove Base board as they only use one of the digital lines in the connecting wire and therefore will not interfere with each other. It is the same as the Analog I/O sockets. Make sure you know the silkscreen of each socket before you start wiring.

Grove units

Each "Grove" is a peripheral board that connects to the Grove System "Grove" shield using a consistent 4-wire connectorised cable. The connector leads are Ground, Vcc, D2, and D1, where the D1 and D2 leads may be digital or analog input or output, depending on the equipment on the Grove units. The same format also supports I2C (IIC) signalling, and several of the Grove Base shield connectors are tied to Analog pins 4 and 5 to support it for future I2C-based Grove units.


Next, let's examine each of our “Grove units”, and then use each on in an example Arduino sketch that we can use with our Seeeduino boards...

Grove - Button

This new version of button Grove contains one independent button, which are configured with pull-down resistor – ready for use with our microcontrollers as digital input. The button signals the SIG(D1) wire,NC(D2) is not used on this Grove .

ButtonSchematic

Grove - LED

This new version of LED Grove consists of one green LED. It operates from SIG(D1). Perfect for use on Seeeduino digital outputs, or also can be controlled using pulse-width modulation. Each LED has a current-limiting resistor, which protects the LED and the Arduino from high current.

LED Grove Schematic

Now we can use Button module and LED module to make a small project: The LED will on when pushing the button otherwise the LED stays off. You will need a Grove - Basic Shield to connect those two Grove units to Seeeduino/Arduino. Connect Button module to D8 of Grove and LED module to D6; Then download the following sketch to Seeeduino/Arduino.

Connect the Grove units like the following Picture shows:


const int buttonPin = 8;     // the number of the pushbutton pin
const int ledPin =  6;      // the number of the LED pin

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);      
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);     
}

void loop(){
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);  
  } 
  else {
    // turn LED off:
    digitalWrite(ledPin, LOW); 
  }
}

Grove - Tilt switch

The tilt switch Grove is the equivalent of a button, and is used as a digital input. When the switch is level it is open, and when tilted, the switch closes. We can see from the schematic that it is wired to the SIG(D1) line, NC(D2) is not used on this Grove ; So the SIG(D1) outouts LOW when open and HIGH when due to the surface-mount resistor .

Tilt switch Grove Schematic

Grove - Buzzer

This is a simple yet enjoyable Grove to use. The piezo can be connected to digital outputs, and will emit a tone when the output is high. Alternatively it can be connected to an analog pulse-width modulation output to generate various tones and effects.

Buzzer Grove Schematic

The following example shows that Piezo Buzzer will beep as an alarm when Tilt Swtich is tilted.You will need a Grove - Basic Shield to connect those two Grove units to Seeeduino/Arduino. Connect Tilt switch Grove to D3 of Grove Base Board and Piezo Buzzer module to D9; Then download the following sketch to Seeeduino/Arduino.

Connect the Grove units like the following Picture shows:


const int tiltPin = 3;     // the number of the tilt pin
const int buzzerPin =  9;      // the number of the buzzer pin

// variables will change:
int tiltState = 0;         // variable for reading the tilt status

void setup() {
  // initialize the buzzer pin as an output:
  pinMode(buzzerPin, OUTPUT);      
  // initialize the tilt pin as an input:
  pinMode(tiltPin, INPUT);     
}

void loop(){
  // read the state of the tilt value:
  tiltState = digitalRead(tiltPin);

  // check if the tilt is close.
  // if it is, the tiltState is HIGH:
  if (tiltState == HIGH) {     
    // turn buzzer on:    
    digitalWrite(buzzerPin, HIGH);  
  } 
  else {
    // turn buzzer off:
    digitalWrite(buzzerPin, LOW); 
  }
}

Grove - Rotary Angle Sensor

The potentiometer Grove produces analog output between 0 and Vcc (5V DC with Seeeduino) on its SIG(D1) Pin. The D2 Pin is NC(not used). The angular range is 300 degrees with a linear change in value. The resistance value is 10k ohms, perfect for Arduino use. This may also be known as a “rotary angle sensor”.

Potentiometer Schematic

The following example shows that Seeeduino/Arduino reads Potentiometer Grove from A0(analog input pin 0), maps the result to a range from 0 to 255 and uses the result to set the pulsewidth modulation (PWM) of D9(digital output pin 9). You will need a Grove - Basic Shield to connect those two Grove units to Seeeduino/Arduino. Connect Potentiometer Grove to A0 of Grove Base board and LED Grove to D9; Then download the following sketch to Seeeduino/Arduino.

Connect the Grove units like the following Picture shows:


const int analogInPin = 0;  // Analog input pin that the potentiometer is attached to
const int analogOutPin = 9; // Analog output pin that the LED is attached to

int sensorValue = 0;        // value read from the pot
int outputValue = 0;        // value output to the PWM (analog out)

void setup() {
  // none
}

void loop() {
  // read the analog in value:
  sensorValue = analogRead(analogInPin);            
  // map it to the range of the analog out:
  outputValue = map(sensorValue, 0, 1023, 0, 255);  
  // change the analog out value:
  analogWrite(analogOutPin, outputValue);           

  // wait 10 milliseconds before the next loop
  // for the analog-to-digital converter to settle
  // after the last reading:
  delay(10);                     
}

Grove - Relay

http://www.seeedstudio.com/depot/images/product/relays.jpg

The Relay Grove is a digital normally open switch that controls a relay capable of switching much higher voltages and currents than your normal Arduino boards. When set to HIGH, the LED will light up and the relay will close allowing current to flow. The peak voltage capability is 250V at 10 amps.

Please exercise great care when working with mains voltages— if in doubt contact a professional such as a licensed electrician for help.

Relay Schematic

The following example shows that Relay Grove close when Tilt Swtich is level; and open when Tilt Swtich is tilted.You will need a Grove - Basic Shield to connect those two Grove units to Seeeduino/Arduino. Connect Tilt switch Grove to D3 of Grove Base Board and Relay Grove to D9; Then download the following sketch to Seeeduino/Arduino.

Connect the Grove units like the following Picture shows:


const int tiltPin = 3;     // the number of the tilt pin
const int relayPin =  9;      // the number of the relay pin

// variables will change:
int tiltState = 0;         // variable for reading the tilt status

void setup() {
  // initialize the relay pin as an output:
  pinMode(relayPin, OUTPUT);      
  // initialize the tilt pin as an input:
  pinMode(tiltPin, INPUT);     
}

void loop(){
  // read the state of the tilt value:
  tiltState = digitalRead(tiltPin);

  // check if the tilt is close.
  // if it is, the tiltState is HIGH:
  if (tiltState == LOW) {     
    // turn relay on:    
    digitalWrite(relayPin, HIGH);  
  } 
  else {
    // turn relay off:
    digitalWrite(relayPin, LOW); 
  }
  delay(10);
}

Grove - Temperature Sensor

The temperature sensor Grove uses a thermistor which returns the ambient temperature in the form of a resistance value, which is then used to alter Vcc (5V with our Seeeduinos). Our board then converts this voltage value measured by an analog input pin to a temperature. The operating range is -40 to 125 degrees Celsius, with an accuracy of ±1.5ºC.

As the temperature increases, the resistance value of the sensor decreases:

Although the calculation of the actual temperature can seem quite complex, it is simple to execute. For an example of how this is done, please refer to project seven described later in this guide.

Temperature Sensor Grove Schematic

Grove - Serial LCD

This has been upgrated to Serial LCD v1.0b.This consists of two parts, a module holding an 16 character by 2 line LCD, and the Grove itself(most may receive the two-units-soldered together-version). The LCD has an interface that is easily used under the Arduino IDE using the special Seeedstudio SerialLCD v1.0b library.

Before using your LCD Grove , download the library from: http://garden.seeedstudio.com/images/e/e3/SerialLCD_v1.0b_library.zip ,or click Seeedstudio SerialLCD v1.0b library. Then extract the “SerialLCD-Library.zip” folder and copy it into your Arduino libaries folder, usually located at ..\Arduino-xx\libraries.

Please see project six described later on in this guide.For a detailed information on how to use your Serial LCD Grove ,you can go to Grove - Serial LCD page,there are plenty of examples.


The following example shows that Seeeduino/Arduino reads Temperature Sensor Grove from A0(analog input pin 0), and use Serial LCD Grove to display the temperatuer. You will need a Grove - Basic Shield to connect those two Grove units to Seeeduino/Arduino. Connect Potentiometer Grove to A0 of Grove Base board and Serial LCD Grove to D11; You also need the Seeedstudio SerialLCD v1.0b library to make the Serial LCD to work.Then download the following sketch to Seeeduino/Arduino.

Connect the Grove units like the following Picture shows:


#include <SerialLCD.h>
#include <SoftwareSerial.h> //this is a must
#include <math.h>
// initialize the library
SerialLCD slcd(11,12);//this is a must, assign soft serial pins

const int tempPin = 0; 

void setup() {
  // set up
  slcd.begin();
  // Print a message to the LCD.
  slcd.print("Temperature is:");
}

void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  slcd.setCursor(0, 1);
  // print the number of seconds since reset:
//  float TT = readTemp();
  SLCDprintFloat( readTemp() ,1);
  slcd.print(" Celsius");  
  delay(1000);
}

void SLCDprintFloat(double number, uint8_t digits) 
{ 
  // Handle negative numbers
  if (number < 0.0)
  {
     slcd.print('-');
     number = -number;
  }

  // Round correctly so that slcd.print(1.999, 2) prints as "2.00"
  double rounding = 0.5;
  for (uint8_t i=0; i<digits; ++i)
    rounding /= 10.0;
  
  number += rounding;

  // Extract the integer part of the number and print it
  unsigned long int_part = (unsigned long)number;
  float remainder = number - (float)int_part;
  slcd.print(int_part , DEC); // base DEC

  // Print the decimal point, but only if there are digits beyond
  if (digits > 0)
    slcd.print("."); 

  // Extract digits from the remainder one at a time
  while (digits-- > 0)
  {
    remainder *= 10.0;
    float toPrint = float(remainder);
    slcd.print(toPrint , DEC);//base DEC
    remainder -= toPrint; 
  } 
}

float readTemp()
{
  const int B=3975; 
  double TEMP;
  int sensorValue = analogRead( tempPin );
  float Rsensor;
  Rsensor=(float)(1023-sensorValue)*10000/sensorValue;
  TEMP=1/(log(Rsensor/10000)/B+1/298.15)-273.15;
  return TEMP;
}

Grove - Protoshield

This Grove module allows you to add your own circuitry or components to your Grove system prototypes. This allows you access to all four lines from the connector cable – S0, S1, VCC and GND. There is also an extra normally-open button to take advantage of. The hole spacing makes using normal DIP-format ICs and other components very simple. You may wish to purchase more for future use in advance.

Features

Hardware Installation

Here is how to assemble Stardle Kit with Starter bundle harness.

http://www.seeedstudio.com/depot/images/product/sbundle01_03.jpg

For more infornation you can go to Starter bundle harness.

Example

Now you should be familiar with your Grove Base Board and Grove units, so let's examine them in more detail with the following projects:

They are written for use with the Arduino environment. All of the following projects can be made with only a Seeeduino board and the Grove starter Kit. If you have not already done so, download and install the latest version of the Arduino IDE from: http://arduino.cc/en/Main/Software.

Furthermore, if you are using a Seeeduino or Seeeduino Mega, make sure you have the switches set to 5V and auto, as such:

This ensures the board is running at 5V DC from the USB cable, and that the board will auto-reset upon uploading your sketch. Otherwise you will have to manually reset your Seeeduino before the sketch starts operation.


By now we hope you have enjoyed experimenting with your Seeeduino and the Grove starter Kit. You will find it simple and convenient to use this system to develop your ideas and prototypes. For technical support please email info@seeedi.com.

In the meanwhile, don't forget to regularly check the Seeedstudio Bazaar website for new Grove units and other interesting and useful products at: http://seeedstudio.com/depot/


Support

If you have questions or other better design ideas, you can go to our forum or wish to discuss.


Version Tracker

Revision Descriptions Release Date
GROVE Starter Kit v1.0b draft release Dec 31, 2010
GROVE Starter Kit v1.1b draft release May 19, 2011

Bug Tracker

There is no bug found until now. Have you found? Please write them here, we want to know what you have to say!

Additional Idea

What do you think of our GROVE System and GROVE - Starter Kit? Don't forget that we always welcome your views on our goods and services so that we can continue to meet all your stock requirements. You can write them here or go to Seeedstudio Wish page.

How to buy

Click here to buy GROVE - Starter Kit ,or other products you like.

Licensing

This documentation is licensed under the Creative Commons Attribution-ShareAlike License 3.0 Source code and libraries are licensed under GPL/LGPL, see source code files for details.

External Links

Links to external webpages which provide more application ideas, documents/datasheet or software libraries

Copyright (c) 2008-2016 Seeed Development Limited (www.seeedstudio.com / www.seeed.cc)
This static html page was created from http://www.seeedstudio.com/wiki