Arduino Beginner Kit
Arduino Beginner Kit
Arduino Beginner Kit
User Manual
Grove Beginner Kit For Arduino®
Hardware Overview
1
Grove Beginner Kit For Arduino®
Index
1 …………….. Harware Overview
69 …………… Resources
2
Grove Beginner Kit For Arduino®
Note:
By default, Grove modules are connected to Seeeduino via PCB stamp holes. This means you
don’t need to use Grove cables to connect if not broken out. The default pins are as follow:
LED Digital D4
Buzzer Digital D5
Button Digital D6
Light Analog A6
Sound Analog A2
Breakout Instruction
Attention:
Please be careful not to cut your hands when using a knife
If you prefer to use the modules in elsewhere then you can simply follow the procedures to break
the modules out!
Step 1
Use a knife or a sharp object to cut at the stamp holes that connect the sensors together
Step 2
Shake the modules up and down and it should come out quite easily!
3
Grove Beginner Kit For Arduino®
Part List
Modules Quantity
Sensors
3-Axis Accelerometers x1
Air Pressure x1
Light Sensor x1
Sound Sensor x1
Input Modules
Rotary Potentiometer x1
Button x1
Output Modules
LED x1
Buzzer x1
Display Module
OLED Display x1
Grove Cables x6
4
Grove Beginner Kit For Arduino®
Learning Objectives
Basics of Open Source Hardware Systems.
Basic Arduino Programming.
Communication principles and methods for sensors.
Hands-on implementation of Open Source Hardware projects.
5
Grove Beginner Kit For Arduino®
6
Grove Beginner Kit For Arduino®
3. Click Tools -> Port to select the correct Port (the Serial Port showed in Device Manager
in the previous step). In this case, COM6 is selected. For Mac OS users, it should be
/dev/cu.SLAB_USBtoUART .
7
Grove Beginner Kit For Arduino®
1. Create a new Arduino file and name it Hello.ino , then copy the following code into it:
void setup() {
Serial.begin(9600); // initializes the serial port with a baud rate of
9600
}
void loop() {
Serial.println("hello, world"); // prints a string to a serial port
delay(1000); //delay of 1 second
}
5. In the upper left corner of the Arduino IDE, there are two buttons, Verify and Upload. First,
press the Verify button(✓) to compile. After the compilation is successful, press the upload
button(→).
6. Navigate to Tools -> Serial Monitor , or click the Serial Monitor in the upper right
corner(Magnifier Symbol), you can see the program running results:
Note: If you installed the portable Arduino IDE from our USB Drive, you can find all the module
demos in the Files -> Sketch Book, as well as all the module libraries, are pre-installed with
Arduino IDE!
8
Grove Beginner Kit For Arduino®
Note:
All modules are pre-wired on a single circuit board, so no cables and soldering are needed.
However, if you break out the modules and want to connect them with Grove cables, please
kindly check the Breakout Guide.
9
Grove Beginner Kit For Arduino®
Lesson Guide
Background Information:
What is Digital Signal
Digital signal: Digital signal refers to the value of the amplitude is discrete, the amplitude is
limited to a finite number of values. In our controller, the digital signal has two states: LOW(0V) for
0; HIGH(5V) for 1. So sending a HIGH signal to LED can light it up.
Components Involved
1. Seeeduino Lotus
2. Grove LED
3. Grove Cable(If Broken out)
10
Grove Beginner Kit For Arduino®
Hardware connection
Module connection
Default connection by PCB stamp hole.
Connect the Seeeduino to the computer through the USB cable.
Software Code
Open Arduino IDE.
Copy the following code, click Verify to check for syntax errors. Verify that there are no
errors, and you can upload the code.
//LED Blink
//The LED will turn on for one second and then turn off for one second
int ledPin = 4;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}
11
Grove Beginner Kit For Arduino®
Code Analysis
setup(){
}
The setup() function is called when a sketch starts. Use it to initialize variables, pin modes,
start using libraries, etc. The setup() function will only run once, after each powerup or reset of
the Arduino board.
loop(){
}
After creating a setup() function, which initializes and sets the initial values, the loop()
function does precisely what its name suggests, and loops consecutively, allowing your program
to change and respond. Use it to actively control the Arduino board.
int ledPin = 4;
Description:
Syntax:
Parameters:
pinMode(ledPin, OUTPUT);
Description:
Configures the specified pin to behave either as an input or an output. See the Digital Pins page
for details on the functionality of the pins.
As of Arduino 1.0.1, it is possible to enable the internal pull-up resistors with the mode
INPUT_PULLUP . Additionally, the INPUT mode explicitly disables the internal pullups.
Syntax:
pinMode(pin, mode)
Parameters:
12
Grove Beginner Kit For Arduino®
digitalWrite(ledPin, HIGH);
Description:
If the pin has been configured as an OUTPUT with pinMode(), its voltage will be set to the
corresponding value: 5V (or 3.3V on 3.3V boards) for HIGH , 0V (ground) for LOW .
If the pin is configured as an INPUT, digitalWrite() will enable (HIGH) or disable (LOW) the internal
pullup on the input pin. It is recommended to set the pinMode() to INPUT_PULLUP to enable the
internal pull-up resistor. See the Digital Pins tutorial for more information.
If you do not set the pinMode() to OUTPUT, and connect an LED to a pin, when calling
digitalWrite(HIGH), the LED may appear dim. Without explicitly setting pinMode(), digitalWrite()
will have enabled the internal pull-up resistor, which acts as a large current-limiting resistor.
Syntax:
digitalWrite(pin, value)
Parameters:
When we set the ledPin as output, HIGH means sending high level to the pin, LED turns on.
digitalWrite(ledPin, LOW);
When we set the led as output, low stands for sending low level to the pin, LED turns off.
delay(1000);
Description:
Pauses the program for the amount of time (in milliseconds) specified as a parameter. (There are
1000 milliseconds in a second.)
Syntax:
delay(ms)
13
Grove Beginner Kit For Arduino®
Parameters:
ms: the number of milliseconds to pause. Allowed data types: unsigned long.
Breakout Guide
If modules are broken out from the board. Use a Grove cable to connect the Grove LED to
Seeeduino Lotus’s digital interface D4.
14
Grove Beginner Kit For Arduino®
Components Involved
1. Seeeduino Lotus
2. Grove LED
3. Grove Button
4. Grove Cables(If broken out)
Hardware connection
Module connection:
Default connection by PCB stamp hole.
The Seeeduino is then connected to the computer via a USB cable.
Hardware analysis:
Input: Button
Control: Seeeduino
15
Grove Beginner Kit For Arduino®
Both the sensor and the LED use digital signals, so they should be connected to digital
interfaces.
Software code:
Open Arduino IDE.
Copy the following code, click Verify to check for syntax errors. Verify that there are no
errors, and you can upload the code.
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);
16
Grove Beginner Kit For Arduino®
Code Analysis
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
17
Grove Beginner Kit For Arduino®
buttonState = digitalRead(buttonPin);
Description:
Reads the value from a specified digital pin, either HIGH or LOW .
Syntax:
digitalRead(pin)
Parameters:
This function is used to read the states of digital pins, either HIGH or LOW. When the button is
pressed, the state is HIGH, otherwise is LOW.
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
Description:
The if…else allows greater control over the flow of code than the basic if statement, by allowing
multiple tests to be grouped. An else clause (if at all exists) will be executed if the condition in the
if statement results in false. The else can proceed another if test, so that multiple, mutually
exclusive tests can be run at the same time.
Each test will proceed to the next one until a true test is encountered. When a true test is found,
its associated block of code is run, and the program then skips to the line following the entire
if/else construction. If no test proves to be true, the default else block is executed, if one is
present, and sets the default behaviour.
Note that an else if block may be used with or without a terminating else block and vice versa. An
unlimited number of such else if branches are allowed.
18
Grove Beginner Kit For Arduino®
Syntax:
if (condition1) {
// do Thing A
}
else if (condition2) {
// do Thing B
}
else {
// do Thing C
}
The usage of the statement is: if the logical expression in parentheses is true, execute the
statement in curly braces after if, if not, execute the statement in curly braces after the else. If
the state of the button is high, the LED pin outputs a high level and turn the LED on, else turn
LED off.
Breakout Guide
Use a Grove cable to connect the Grove LED to Seeeduino Lotus’s digital interface D4. Connect
the Grove Button to digital interface D6.
19
Grove Beginner Kit For Arduino®
Background Information:
What is Analog Signal
Analog signals: Signals vary continuously in time and value, and the amplitude, frequency, or
phase of the signal changes continuously at any time, such as the current broadcast sound
signal, or image signal, etc. The analog signal has sine wave and triangle wave and so on. The
analog pins of your microcontroller can have between 0V and 5V is mapped to a range between 0
and 1023 where 1023 is mapped as 5V and 512 is mapped as 2.5v and etc.
Components Involved
1. Seeeduino Lotus
2. Grove LED
3. Grove Rotary Switch
4. Grove Cables(If broken out)
20
Grove Beginner Kit For Arduino®
Hardware connection
Module connection:
Default connection by PCB stamp hole.
The Seeeduino is then connected to the computer via a USB cable.
Hardware analysis:
Input: Rotary Potentiometer
Control: Seeeduino Lotus
Output: LED module
The input is an analog signal, so it is connected to the analog signal interface, the LED module is
connected to the digital signal interface.
21
Grove Beginner Kit For Arduino®
Software Code
Open Arduino IDE.
Copy the following code, click Verify to check for syntax errors. Verify that there are no
errors, and you can upload the code.
void setup() {
// declare the ledPin as an OUTPUT:
pinMode(ledPin, OUTPUT);
}
void loop() {
// read the value from the sensor:
rotaryValue = analogRead(rotaryPin);
// turn the ledPin on
digitalWrite(ledPin, HIGH);
// stop the program for <sensorValue> milliseconds:
delay(rotaryValue);
// turn the ledPin off:
digitalWrite(ledPin, LOW);
// stop the program for for <sensorValue> milliseconds:
delay(rotaryValue);
}
22
Grove Beginner Kit For Arduino®
Code Analysis
rotaryValue = analogRead(rotaryPin);
Description:
Reads the value from the specified analog pin. Arduino boards contain a multichannel, 10-bit
analog to digital converter. This means that it will map input voltages between 0 and the
operating voltage(5V or 3.3V) into integer values between 0 and 1023. On an Arduino UNO, for
example, this yields a resolution between readings of: 5 volts / 1024 units or, 0.0049 volts (4.9
mV) per unit.
Syntax:
analogRead(pin)
Parameters:
pin: the name of the analog input pin to read from (A0 to A5 on most boards).
Returns: The analog reading on the pin. Although it is limited to the resolution of the analog to
digital converter (0-1023 for 10 bits or 0-4095 for 12 bits). Data type: int.
This function is used to read the value of Analog pins(the rotary sensor position), the range of
values is: 0 ~ 1023.
delay(rotaryValue);
Delay function, The millisecond duration of the delay is the value in parentheses. Because the
value is the value of the analog signal of the knob pin being read, so the delay time can be
controlled by the knob.
Breakout Guide
Use a Grove cable to connect LED to Seeeduino Lotus’s digital interface D4, and a Grove cable
to connect the Grove Rotary Switch to analog signal interface A0.
23
Grove Beginner Kit For Arduino®
Background Information:
What is PWM
Pulse Width Modulation, or PWM, is a technique for getting analog results with digital means.
Digital control is used to create a square wave, a signal switched between on and off. This on-off
pattern can simulate voltages in between full on (5 Volts) and off (0 Volts) by changing the portion
of the time the signal spends on versus the time that the signal spends off. The duration of “on
time” is called the pulse width. To get varying analog values, you change, or modulate, that pulse
width. If you repeat this on-off pattern fast enough with an LED for example, the result is as if the
signal is a steady voltage between 0 and 5v controlling the brightness of the LED. Reference:
Arduino
As the diagram indicates below, use analogWrite() to generate PWM waves, the higher the
percentage of Duty Cycle, the louder the buzzer.
There are six digital pins on your Seeeduino that are marked with the symbol “~”, which means
they can send out a PWM signal : 3,5,6,9,10,11. They are celled PWM pins.
24
Grove Beginner Kit For Arduino®
Components Involved
1. Seeeduino Lotus
2. Grove Buzzer
3. Grove Cable(If Broken out)
Hardware connection
Module connection
Default connection by PCB stamp hole.
Connect the Seeeduino to the computer through the USB cable.
25
Grove Beginner Kit For Arduino®
Software Code
Open Arduino IDE.
Copy the following code, click Verify to check for syntax errors. Verify that there are no
errors, and you can upload the code.
int BuzzerPin = 5;
int Potentiometer = A0;
void setup() {
pinMode(BuzzerPin, OUTPUT);
}
void loop() {
int potentioValue, Value;
potentioValue = analogRead(Potentiometer);
Value = map(potentioValue, 0, 1023, 0, 255); //Mapping potentiometer va
lue to PWM signal value
analogWrite(BuzzerPin, Value);
}
26
Grove Beginner Kit For Arduino®
Code Analysis
analogWrite(BuzzerPin, Value);
Description:
Writes an analog value (PWM wave) to a pin. Can be used to light a LED at varying brightnesses
or drive a motor at various speeds. After a call to analogWrite(), the pin will generate a steady
rectangular wave of the specified duty cycle until the next call to analogWrite() (or a call to
digitalRead() or digitalWrite()) on the same pin.
Syntax:
analogWrite(pin, value)
Parameters:
pin: the Arduino pin to write to. Allowed data types: int.
value: the duty cycle: between 0 (always off) and 255 (always on). Allowed data types: int.
The buzzer beeps 3 times fast at startup, waits a second then beeps continuously
at a slower pace.
Breakout Guide
Use a Grove cable to connect the Grove Buzzer to Seeeduino Lotus’s digital interface D5.
27
Grove Beginner Kit For Arduino®
In the following sections, we will use Serial Monitor to observe results from our sensors so here
comes the brief introduction!
Background Information:
What is Serial Monitor
Serial Monitor is a useful tool to observe results on Arduino, it can be very useful in terms of
printing results from the sensors or debugging in general. You can also send data back to the
controller via the serial monitor to do certain tasks! Note: Make sure the Serial data transfer
match with the code.
You can open the Serial Plotter by clicking Tools -> Serial Monitor.
28
Grove Beginner Kit For Arduino®
Exercise: As the environment slowly brightens, the LED lights will lighten. As the light slowly
dimmed, the LED dimmed. The LED will go from dark to light or from light to dark. To achieve
this, we will use pulse width modulation(PWM).
Components Involved
1. Seeeduino Lotus
2. Grove LED
3. Grove Light Sensor
4. Grove Cable(If broken out)
29
Grove Beginner Kit For Arduino®
Hardware connection
Module connection:
Default connection by PCB stamp hole.
The Seeeduino is then connected to the computer via a USB cable.
Hardware analysis:
Input: Light Sensor
Control: Seeeduino Lotus
Output: LED module
30
Grove Beginner Kit For Arduino®
Software Code
Open Arduino IDE.
Copy the following code, click Verify to check for syntax errors. Verify that there are no
errors, and you can upload the code.
// Light Switch
int sensorpin = A6; // Analog input pin that the sensor is attached to
int ledPin = 4; // LED port
int sensorValue = 0; // value read from the port
int outputValue = 0; // value output to the PWM (analog out)
void setup() {
pinMode(ledPin,OUTPUT);
Serial.begin(9600);
}
void loop() {
// read the analog in value:
sensorValue = analogRead(sensorpin);
// map it to the range of the analog out:
outputValue = map(sensorValue, 0, 1023, 0, 255);
Serial.println(sensorValue);
// change the analog out value:
analogWrite(ledPin, outputValue);
delay(30);
}
You can also see the light intensity readings from the Serial Monitor, navigate to Tools -> Serial
Monitor.
31
Grove Beginner Kit For Arduino®
Code Analysis
Serial.begin(9600);
Description:
Sets the data rate in bits per second (baud) for serial data transmission. For communicating with
Serial Monitor, make sure to use one of the baud rates listed in the menu at the bottom right
corner of its screen. You can, however, specify other rates - for example, to communicate over
pins 0 and 1 with a component that requires a particular baud rate.
An optional second argument configures the data, parity, and stop bits. The default is 8 data bits,
no parity, one stop bit.
The software running on the computer communicates with the development board, and the baud
rate is 9600.
Syntax:
Serial.begin(speed)
Parameters:
Serial.println(sensorValue);
Description:
Prints data to the serial port as human-readable ASCII text followed by a carriage return
character (ASCII 13, or ‘⧵r’) and a newline character (ASCII 10, or ‘⧵n’). This command takes the
same forms as Serial.print().
Syntax:
Parameters:
val: the value to print. Allowed data types: any data type.
format: specifies the number base (for integral data types) or the number of decimal places (for
floating point types).
Serial port print the Light sensor’s value. So you open the serial monitor on the IED interface,
and you see the value of the output sensor.
32
Grove Beginner Kit For Arduino®
Description:
Re-maps a number from one range to another. That is, a value of fromLow would get mapped to
toLow, a value of fromHigh to toHigh, values in-between to values in-between, etc.
Does not constrain values to within the range, because out-of-range values are sometimes
intended and useful. The constrain() function may be used either before or after this function,
if limits to the ranges are desired.
Note that the “lower bounds” of either range may be larger or smaller than the “upper bounds” so
the map() function may be used to reverse a range of numbers, for example
The function also handles negative numbers well, so that this example
The map() function uses integer math so will not generate fractions, when the math might indicate
that it should do so. Fractional remainders are truncated and are not rounded or averaged.
Syntax:
Parameters:
Mapping light sensor analog signal(0 to 1023)to the brightness value of LED(0 to 255).
Keep equal and potentiometer after mapping the value of the time. The Map has five parameters,
which in turn is: to map the original value, the original value of the minimum value, original value
maximum, minimum value after the mapping, mapping the maximum. In this way, the data
returned by the sensor can be mapped from its original value of 0-1023 to 0-255.
analogWrite(ledPin,255-outputvalue);
33
Grove Beginner Kit For Arduino®
The function is used to write an analog value between 0 - 255 a PWM pin. analogWrite() can only
be used for PWM pins. The new mapping data in the previous statement can be output to ledPin
to lighten/dim the LED.
The LED module will change its intensity according to the light intensity of the surrounding. The
darker the surrounding, the lighter it gets.
Breakout Guide
Use Grove Cable to connect the Grove LED to Seeeduino Lotus’s digital signal interface
D4,connect the Grove Light Sensor to Seeeduino Lotus’s analog signal interface A1.
34
Grove Beginner Kit For Arduino®
Background Information:
What is Serial Plotter
Serial Plotter is similar to Serial Monitor, allowing you to natively graph serial data from your
Arduino to your computer in real-time. This is very useful when data needs to be visualized.
You can open the Serial Plotter by clicking Tools -> Serial Plotter.
35
Grove Beginner Kit For Arduino®
Practice: The LED lights light up when the sound is made. When there is no sound and it is
very quiet, the LED lights go off.
Components Involved
1. Seeeduino Lotus
2. Grove LED
3. Grove Sound Sensor
4. Grove cable(If broken out)
36
Grove Beginner Kit For Arduino®
Hardware connection
Module connection:
Default connection by PCB stamp hole.
The Seeeduino is then connected to the computer via a USB cable.
37
Grove Beginner Kit For Arduino®
Software Code
Open Arduino IDE.
Copy the following code, click Verify to check for syntax errors. Verify that there are no
errors, and you can upload the code.
You can also see the light intensity readings from the Serial Monitor, navigate to Tools -> Serial
Plotter.
38
Grove Beginner Kit For Arduino®
Code Analysis
Serial.begin(9600);
The software running on the computer communicates with the development board, and the baud
rate is 9600.
Serial.print(" ");
This function is used to output data from the serial port, the output is what is contained in the
double quotation marks.
Serial.println( );
This statement is similar to the one above, except that serial.println has a newline return.
39
Grove Beginner Kit For Arduino®
Serial.println(soundState);
Serial port print the sound sensor’s value. So you open the serial monitor on the IED interface,
and you see the value of the output sensor.
Breakout Guide
Use Grove cables to connect the Grove LED to Seeeduino Lotus’s digital signal interface D4,
Connect the Grove Sound Sensor to Seeeduino Lotus’s analog signal interface A2.
40
Grove Beginner Kit For Arduino®
Background Information:
What is Arduino Libraries
The Arduino environment can be extended through the use of libraries, just like most other
programming platforms. Libraries provide extra functionalities for use in sketches, i.e. working
with specific hardware or manipulating data. To use a library in a sketch, select it from Sketch -
>Include Library.
For more information, please also visit How to install Arduino Libraries.
Components Involved
1. Seeeduino Lotus
2. Grove OLED
3. Grove cable(If broken out)
41
Grove Beginner Kit For Arduino®
Hardware connection
Module connection:
Default connection by PCB stamp hole.
The Seeeduino is then connected to the computer via a USB cable.
42
Grove Beginner Kit For Arduino®
Software Code
Open Arduino IDE.
Install the U8g2 library: Navigate to Sketch -> Include Library -> Manage Libraries…
and Search for the keyword “U8g2” in the Library Manager, then install.
Copy the following code, click Verify to check for syntax errors. Verify that there are no
errors, and you can upload the code.
#include <Arduino.h>
#include <U8x8lib.h>
void setup(void) {
u8x8.begin();
u8x8.setFlipMode(1);
}
void loop(void) {
u8x8.setFont(u8x8_font_chroma48medium8_r);
u8x8.setCursor(0, 0);
u8x8.print("Hello World!");
}
43
Grove Beginner Kit For Arduino®
Code analysis
#include <>
Description:
#include is used to include outside libraries in your sketch. This gives the programmer access
to a large group of standard C libraries (groups of pre-made functions), and also libraries written
especially for Arduino.
Note that #include , similar to #define , has no semicolon terminator, and the compiler will
yield cryptic error messages if you add one.
#include is an instruction that introduces a header file. Here we use the DHT.h, <Arduino.h>,
<U8g2lib.h>, <SPI.h>, <Wire.h> library, these library are included in Arduino IDE.
#define
Description:
#define is a useful C++ component that allows the programmer to give a name to a constant
value before the program is compiled. Defined constants in Arduino don’t take up any program
memory space on the chip. The compiler will replace references to these constants with the
defined value at compile time.
Once the object is declared, you can use functions from the library.
u8x8.begin();
Description:
Simplified setup procedure of the display for the Arduino environment. See the setup guide for
the selection of a suitable U8g2 constructor.
Syntax:
u8x8.begin()
u8x8.setFlipMode(1);
44
Grove Beginner Kit For Arduino®
Description:
Some displays support a 180-degree rotation of the internal frame buffer. This hardware feature
can be controlled with this procedure. Important: Redraw the complete display after changing the
flip mode. Best is to clear the display first, then change the flip mode and finally redraw the
content. Results will be undefined for any existing content on the screen.
Syntax:
u8x8.setFlipMode(mode)
Parameters:
mode: 0 or 1
u8x8.setCursor();
Description:
Define the cursor for the print function. Any output of the print function will start at this position.
Syntax:
u8x8.setCursor(x, y)
Parameters:
u8x8.setFont()
Description:
Define a u8x8 font for the glyph and string drawing functions.
Syntax:
u8x8.setFont(*font_8x8)
u8x8.print();
Breakout Guide
Use Grove cable to connect the OLED to Seeeduino Lotus’s I2C interface (Note: I2C’s default
address is 0x78).
46
Grove Beginner Kit For Arduino®
Background Information:
What is Protocol Signal (I2C)
Protocol signal: the protocol signal we use is I2C, so here is a brief introduction to I2C. I2C bus
just needs two wires in the transmission of information connection between the devices: the SDA
(Serial Data Line) and SCL (Serial Clock Line). These two lines are bidirectional I/O lines, the main
component used to start the bus transfer data, and generate the clock to open transmission
device, any devices that are addressing at this time is considered from the device. The
relationship between master and slave, sender and receiver on the bus is not constant but
depends on the direction of data transmission. If the host wants to send data to the slave device,
the host first addresses the slave device, then actively sends data to the slave device, and finally
terminates the data transmission by the host. If the host is to receive data from the slave, the
slave is first addressed by the master. The host then receives the data sent from the device, and
the host terminates the receiving process. In this case. The host is responsible for generating the
timing clock and terminating the data transfer.
Practice: Let your OLED Display display the current ambient temperature and humidity.
Components Involved
1. Seeeduino Lotus
2. Grove OLED
3. Grove Temperature and Temperature Sensor
4. Grove cable(If broken out)
47
Grove Beginner Kit For Arduino®
Hardware connection
Module connection:
Default connection by PCB stamp hole.
The Seeeduino is then connected to the computer via a USB cable.
48
Grove Beginner Kit For Arduino®
Software Code
Open Arduino IDE.
Install the Grove Temperature and Humidity Sensor(DHT11) library: Navigate to
Sketch -> Include Library -> Manage Libraries… and Search for the keyword “Grove
Temperature and Humidity Sensor(DHT11)” in the Library Manager, then install.
Copy the following code, click Verify to check for syntax errors. Verify that there are no
errors, and you can upload the code.
void setup(void) {
Serial.begin(9600);
Serial.println("DHTxx test!");
dht.begin();
u8x8.begin();
u8x8.setPowerSave(0);
u8x8.setFlipMode(1);
}
void loop(void) {
u8x8.setFont(u8x8_font_chroma48medium8_r);
u8x8.setCursor(0, 33);
u8x8.print("Temp:");
u8x8.print(temp);
u8x8.print("C");
u8x8.setCursor(0,50);
u8x8.print("Humidity:");
u8x8.print(humi);
u8x8.print("%");
u8x8.refreshDisplay();
delay(200);
}
49
Grove Beginner Kit For Arduino®
Code Analysis
temp = dht.readTemperature();
humi = dht.readHumidity();
Description:
Functions to be used to read temperature and humidity values from the sensor.
Syntax:
Call these functions to read the temperature and humidity and store them in defined variables.
Breakout Guide
Use Grove cable to connect the OLED to Seeeduino Lotus’s I2C interface (Note: I2C’s default
address is 0x78). Connect the Grove Temperature and Humidity Sensor to Seeeduino Lotus’s
digital signal interface D3.
50
Grove Beginner Kit For Arduino®
Components Involved
1. Seeeduino Lotus
2. Grove Air Pressure Sensor
3. Grove cable(if broken out)
Hardware connection
Module connection:
Default connection by PCB stamp hole.
The Seeeduino is then connected to the computer via a USB cable.
51
Grove Beginner Kit For Arduino®
Software Code
Open Arduino IDE.
Install the Grove Barometer Sensor library: Navigate to Sketch -> Include Library ->
Manage Libraries… and Search for the keyword “Grove BMP280” in the Library
Manager, then install.
Copy the following code, click Verify to check for syntax errors. Verify that there are no
errors, and you can upload the code.
In this program, acceleration information is sent from the sensor to Seeeduino via I2C
bus and then Seeeduino printed them onto the serial monitor. Open the serial monitor
to check the result.
BMP280 bmp280;
void setup() {
Serial.begin(9600);
if (!bmp280.init()) {
Serial.println("Device not connected or broken!");
}
}
void loop() {
float pressure;
delay(1000);
}
52
Grove Beginner Kit For Arduino®
Code Analysis
#include <Wire.h>
#include is an instruction that introduces a header file. Here we use the <Wire.h> library, this
library is included in Arduino IDE.
#include "Seeed_BMP280.h"
Represents the Seeed_BMP280.h header file that introduces the current path.
if (!bmp280.init()) {
Serial.println("Device not connected or broken!");
}
Description:
Syntax:
bmp280.init()
if the Air pressure sensor did not start properly, then prints out an error to the serial monitor.
Serial.print(bmp280.getTemperature());
Description:
Syntax:
Serial.print(pressure = bmp280.getPressure());
Description:
Syntax:
Serial.print(bmp280.calcAltitude(pressure));
Description:
Syntax:
Parameter:
Breakout Guide
Use Grove cable to connect Grove 3-axis Accelerometer to Seeeduino Lotus’s I2C interface
using a Grove cable (note: I2C default address is 0x77 or 0x76).
54
Grove Beginner Kit For Arduino®
Practice: when motion is detected, the buzzer gives an alarm indicating that the object is in
motion.
Components Involved
1. Seeeduino Lotus
2. Grove 3-axis Accelerometer
3. Grove cable(if broken out)
Hardware connection
Module connection:
Default connection by PCB stamp hole.
The Seeeduino is then connected to the computer via a USB cable.
55
Grove Beginner Kit For Arduino®
Software Code
Open Arduino IDE.
Download the 3-Axis Digital Accelerometer( ±2g to 16g) from Github. Click on Sketch >
Include library > Add .ZIP library, import the library into the IED.
Copy the following code, click Verify to check for syntax errors. Verify that there are no
errors, and you can upload the code.
In this program, acceleration information is sent from the sensor to Seeeduino via I2C
bus and then Seeeduino printed them onto the serial monitor. Open the serial monitor
to check the result.
//Gravity Acceleration
#include "LIS3DHTR.h"
#ifdef SOFTWAREWIRE
#include <SoftwareWire.h>
SoftwareWire myWire(3, 2);
LIS3DHTR<SoftwareWire> LIS(I2C_MODE);//IIC
#define WIRE myWire
#else
#include <Wire.h>
LIS3DHTR<TwoWire> LIS(I2C_MODE);//IIC
#define WIRE Wire
#endif
void setup() {
Serial.begin(9600);
while (!Serial) {};
LIS.begin(WIRE); //IIC init
delay(100);
LIS.setOutputDataRate(LIS3DHTR_DATARATE_50HZ);
}
void loop() {
if (!LIS) {
Serial.println("LIS3DHTR didn't connect.");
while (1);
return;
}
//3 axis
Serial.print("x:"); Serial.print(LIS.getAccelerationX()); Serial.prin
t(" ");
Serial.print("y:"); Serial.print(LIS.getAccelerationY()); Serial.prin
t(" ");
Serial.print("z:"); Serial.println(LIS.getAccelerationZ());
delay(500);
}
56
Grove Beginner Kit For Arduino®
Code Analysis
#include "LIS3DHTR.h"
#ifdef SOFTWAREWIRE
#include <SoftwareWire.h>
SoftwareWire myWire(3, 2);
LIS3DHTR<SoftwareWire> LIS(I2C_MODE);//IIC
#define WIRE myWire
#else
#include <Wire.h>
LIS3DHTR<TwoWire> LIS(I2C_MODE);//IIC
#define WIRE Wire
#endif
Code stops here if don’t open the serial monitor, so open serial monitor.
LIS.begin(WIRE);
LIS.setOutputDataRate(LIS3DHTR_DATARATE_50HZ);
Syntax: LIS.begin(Wire) .
Description:
Syntax:
57
Grove Beginner Kit For Arduino®
Description:
Syntax:
Description:
Syntax:
Breakout Guide
Use Grove cable to connect Grove 3-axis Accelerometer to Seeeduino Lotus’s I2C interface
using a Grove cable (note: I2C default address is 0x4c).
58
Grove Beginner Kit For Arduino®
Bonus Projects
Components Involved
1. Seeeduino Lotus
2. Grove LED
3. Buzzer
4. Grove Cables(if broken out)
Hardware connection
Module connection:
Default connection by PCB stamp hole.
The Seeeduino is then connected to the computer via a USB cable.
59
Grove Beginner Kit For Arduino®
Software Code
Open Arduino IDE.
Copy the following code, click Verify to check for syntax errors. Verify that there are no
errors, and you can upload the code.
#define WHOLE 1
#define HALF 0.5
#define QUARTER 0.25
#define EIGHTH 0.25
#define SIXTEENTH 0.625
int tune[]=
{
NTD3,NTD3,NTD4,NTD5,
NTD5,NTD4,NTD3,NTD2,
NTD1,NTD1,NTD2,NTD3,
NTD3,NTD2,NTD2,
NTD3,NTD3,NTD4,NTD5,
NTD5,NTD4,NTD3,NTD2,
NTD1,NTD1,NTD2,NTD3,
NTD2,NTD1,NTD1,
NTD2,NTD2,NTD3,NTD1,
NTD2,NTD3,NTD4,NTD3,NTD1,
NTD2,NTD3,NTD4,NTD3,NTD2,
60
Grove Beginner Kit For Arduino®
NTD1,NTD2,NTDL5,NTD0,
NTD3,NTD3,NTD4,NTD5,
NTD5,NTD4,NTD3,NTD4,NTD2,
NTD1,NTD1,NTD2,NTD3,
NTD2,NTD1,NTD1
};
float durt[]=
{
1,1,1,1,
1,1,1,1,
1,1,1,1,
1+0.5,0.5,1+1,
1,1,1,1,
1,1,1,1,
1,1,1,1,
1+0.5,0.5,1+1,
1,1,1,1,
1,0.5,0.5,1,1,
1,0.5,0.5,1,1,
1,1,1,1,
1,1,1,1,
1,1,1,0.5,0.5,
1,1,1,1,
1+0.5,0.5,1+1,
};
int length;
int tonepin=5;
int ledp=4;
void setup()
{
pinMode(tonepin,OUTPUT);
pinMode(ledp,OUTPUT);
length=sizeof(tune)/sizeof(tune[0]);
}
void loop()
{
for(int x=0;x<length;x++)
{
tone(tonepin,tune[x]);
digitalWrite(ledp, HIGH);
delay(400*durt[x]);
digitalWrite(ledp, LOW);
delay(100*durt[x]);
noTone(tonepin);
}
delay(4000);
}
61
Grove Beginner Kit For Arduino®
62
Grove Beginner Kit For Arduino®
Code Analysis
#define NTD
Here is the definition of the frequency of the D key, which is divided into bass, alto, and treble.
#define WHOLE 1
#define HALF 0.5
#define QUARTER 0.25
#define EIGHTH 0.25
#define SIXTEENTH 0.625
Note: rhythm is divided into one beat, half beat, 1/4 beat, 1/8 beat, we specify a beat note time is
1;Half beat is 0.5;1/4 beat is 0.25;1/8 of 0.125.
int tune[]=...
float durt[]=...
delay(100*durt[x]);
The buzzer will beep a tune while the LED module will flicker with same frequency.
Breakout Guide
Connect Grove LED to Seeeduino Lotus’s digital signal interface D4, connect Buzzer to
Seeeduino Lotus’s digital signal interface D5.
63
Grove Beginner Kit For Arduino®
Components Involved
1. Seeeduino Lotus
2. Grove LED
3. Light Sensor
4. Sound Sensor
5. Grove cable(If broken out)
Hardware connection
Module connection:
Default connection by PCB stamp hole.
The Seeeduino is then connected to the computer via a USB cable.
64
Grove Beginner Kit For Arduino®
Software Code
Open Arduino IDE.
Copy the following code, click Verify to check for syntax errors. Verify that there are no
errors, and you can upload the code.
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop(){
int soundState = analogRead(soundPin); // Read sound sensor’s value
int lightState = analogRead(lightPin); // Read light sensor’s value
// if the sound sensor's value is greater than 50 or the sound sensor's
is less than 10, the light will be on.
//Otherwise, the light will be turned off
if (soundState > 50 || lightState < 10) {
digitalWrite(ledPin, HIGH);
//delay(5000); //You can delete the "//" to make the LED on for five se
conds
}else{
digitalWrite(ledPin, LOW);
}
}
Code Analysis
In parentheses is a logical expression. Both && and || are commonly used in logical expressions.
The common usage is if (expression 1 || expression 2) and if (expression 1 && expression 2).
|| represents “or“, satisfies one of them, the whole expression is true, and satisfies the condition
of the if judgment.
&& means “and“, the statement in if{} is executed only if all expressions in parentheses are true.
If the surrounding sound is loud enough or light intensity is low, the LED module will light up more
intensity.
65
Grove Beginner Kit For Arduino®
Breakout Guide
Connect the Grove LED to Seeeduino Lotus’s digital signal interface D4, Connect the Light
Sensor to Seeeduino Lotus’s analog signal interface A1. Connect the Sound Sensor to
Seeeduino Lotus’s analog signal interface A2 using a Grove cable.
66
Grove Beginner Kit For Arduino®
EDA
To design your own board, you will need to design your own module’s schematics, which
requires an EDA tool to do so. Here recommends an open-source EDA software.
KiCAD
KiCad is a free software suite for electronic design automation. It facilitates the design of
schematics for electronic circuits and their conversion to PCB designs. It features an integrated
environment for schematic capture and PCB layout design. The programs handle Schematic
Capture and PCB Layout with Gerber output. The suite runs on Windows, Linux, and macOS and
is licensed under GNU GPL v3.
Geppetto
If you don’t want to work on schematic or layout yourself, but you want to convert your prototype
based on Seeed’s modules into an integrated product, we highly recommend you to try
Geppetto.
Geppetto is, by far, the easiest and least expensive way to produce production-quality
electronics. You don’t need to know about resistors, capacitors, inductors, routing paths or
anything EE to design your own module. Geppetto is drag & drop simple… anyone can create
professional IoT devices. To make it more convenient for you, Geppeto has a library for Seeed, so
you can design your own Grove modules with ease!
PCB Services
After you’re done with your design, check out the Seeed Fusion PCBA service, which can help
translate your designs into an actual functioning device.
67
Grove Beginner Kit For Arduino®
Seeed Studio has its very own Open Parts Library (OPL) which is a collection of over 10,000
commonly used components specifically sourced for the Seeed Fusion PCBA Service. To speed
up the process of PCB design, Seeed is building the component libraries for KiCad and Eagle.
When all components are sourced from Seeed’s PCBA OPL and used with the Seeed Fusion
PCB Assembly (PCBA) service, the entire PCBA production time can be reduced from 20 working
days to a mere 7 days.
68
Grove Beginner Kit For Arduino®
Resources
1. Grove Beginner Kit for Arduino Wiki [PDF]
2. Grove Beginner Kit for Arduino Schematic Design Files
3. Modules Libraries on Github:
OLED Display
Temperature & Humidity Sensor
Air Pressure Sensor
3-Axis Accelerator
4. Sensor Datasheet
5. Initial Arduino Firmware Demo
69
Grove Beginner Kit For Arduino®
More Learning
LSTM for live IoT data prediction
Tech Support
Please submit any technical issue into our forum
70