This MP3 shield board is designed based on VS1053B from VLSI. using this shiled you can plug in your arduino UNO/arduino MEGA2560 direcly as showing in pic, dont’ need need to hook up with jumpers, it’s becomes more easy to play music compared with the tiny mp3 breakout board. VS1053 is a versatile MP3 codec processor that is capable of decoding a variety of music formats,including Ogg Vorbis/MP3/AAC/WMA/MIDI audio. For the best headphone listening experience, the VS1053 includes EarSpeaker spatial processing which accurately simulates how a room with stereo loudspeakers would sound. In addition to being able to decode all major formats, VS1053 is capable of recording in Ogg Vobis file.
With the TF card slot on the other side of the board, you can play mp3 files from SD card using this breakout. It is easily to drop it in your project or make a mp3 player using your Arduino or other microcontroller. Features Can play a variety of music formats, support for OGG encoding real-time recording SPI interface, the control signal lines are led out A headphone and stereo output A microphone for recording A line_in input interface Power indicator 3.3V and 2.8V of LDO chip AMS-1117 on board, provides up to 800mA current A single power supply: +5 VDC 12.288 Mhz crystal TF cart slot.
Can play a variety of music formats, support for OGG encoding real-time recording
SPI interface, the control signal lines are led out
A headphone and stereo output
A microphone for recording
A line_in input interface
3.3V and 2.8V of LDO chip AMS-1117 on board, provides up to 800mA current
A single power supply: +5 VDC
12.288 Mhz crystal
SD card slot
MP3 = MPEG 1 & 2 audio layer III (CBR+VBR+ABR)
MP1 & MP2 = MPEG 1 & 2 audio layers I & II optional
An IMU (Inertial Measurement Unit) is a system comprised of accelerometer, gyroscope, and other sensors working together to measure the craft’s velocity, orintation and gravititional forces.These sensors working in tandem to compensate the pitfalls of each other for giving you a clean orientation using algorithm filtering. It enables the IMU to become a very powerful control mechanism for robots,UAVs, autonomous vehicles and image stabilization systems.
The 10DOF IMU (I) incorporates four sensors – an ADXL345 (triple-axis accelerometer), ITG3205 (triple-axis gyro), and HMC5883 (triple-axis magnetometer) and BMP085(Barometric Pressure sensor) – to give you 10 degrees of inertial measurement.
The 10DOF IMU (II) incorporates four sensors – an ADXL345 (triple-axis accelerometer), L3G4200D (triple-axis gyro), and HMC5883 (triple-axis magnetometer) and BMP085(Barometric Pressure sensor) – to give you 10 degrees of inertial measurement.
The 9DOF IMU incorporates three sensors – an ADXL345 (triple-axis accelerometer), ITG3205 (triple-axis gyro), and HMC5883 (triple-axis magnetometer) – to give you 9 degrees of inertial measurement.
The 6DOF IMU incorporates three sensors – an ADXL345 (triple-axis accelerometer), ITG3205 (triple-axis gyro), – to give you 6 degrees of inertial measurement.
The ADXL345 is a small, thin, low power, 3-axis accelerometer with high resolution (13-bit) measurement at up to +-16 g. Digital output data is formatted as 16-bit twos complement and is accessible through either a SPI (3- or 4-wire) or I2C digital interface. The ADXL345 is well suited to measures the static acceleration of gravity in tilt-sensing applications, as well as dynamic acceleration resulting from motion or shock. Its high resolution (4 mg/LSB) enables measurement of inclination changes less than 1.0 degrees;.
The ITG-3205 features three 16-bit analog-to-digital converters (ADCs) for digitizing the gyro outputs, a user-selectable internal low-pass filter bandwidth, and a Fast-Mode I2C (400kHz) interface. Additional features include an embedded temperature sensor and a 2% accurate internal oscillator. InvenSense has driven the ITG-3200 package size down to a revolutionary footprint of 4x4x0.9mm (QFN), while providing the highest performance, lowest noise, and the lowest cost semiconductor packaging required for handheld consumer electronic devices.
The Honeywell HMC5883L is a surface-mount, multi-chip module designed for low-field magnetic sensing with a digital interface for applications such as low-cost compassing and magnetometry. The HMC5883L includes our state-of-the-art, high-resolution HMC118X series magneto-resistive sensors plus an ASIC containing amplification, automatic degaussing strap drivers, offset cancellation, and a 12-bit ADC that enables 1° to 2° compass heading accuracy. The I2C serial bus allows for easy interface. These anisotropic, directional sensors feature precision in-axis sensitivity and linearity. Honeywell’s Magnetic Sensors are among the most sensitive and reliable low-field sensors in the industry.
The BMP085 is a high-precision, ultra-low power barometric pressure sensor for use in advanced mobile applications. It offers superior performance with an absolute accuracy of down to 0.03 hPa and using very low power consumption down to 3 μA.The BMP085 comes in an ultra-thin, robust 8-pin ceramic lead-less chip carrier (LCC) package, designed to be connected directly to a micro-controller of a mobile device via the I2C bus.
L3G4200D is a low-power three-axis angular rate sensor. The L3G4200D has a full scale of ±250/±500/±2000 dps and is capable of measuring rates with a user-selectable bandwidth. These work great in gaming and virtual reality input devices, GPS navigation systems and robotics.
The 4 channel wireless relay module is a smart module with 4 mechanical relays providing an easy way to control large AC and DC loads and device. With the 315MHz RF receiver integrated in, it can be directly remote controlled by the matching remote-control, which make it easy to use in home automation and industry control. The remote-control has its own battery, the relay receiver board must be provided with 12V DC supply to get it work. Rated load of the each relay on the receiver board is 10A/120VAC 20A/14VDC.
It also provides three alternative provisions to meet demands in different situation simply using the jumper selection. Unlock mode：Jumper 1 and Jumper 2 are diselected. Hold down the button for relevant relays closed until you released it. Lock mode: Jumper 2 is selected. Push the button for relevant relays closed until another button pushed. Delay mode: Jumper 1 is selected. Push the button for relevant relay closed for two second.
In open area and without any interference, this set is rated to detect no more than 100 meters in theory with the transmitter antenna extended. If you are in the house, the transmission distance is about 10%-50% distance in theory according to the walls and interference.
If you don’t know much about relays, research using your multimeter. It is just an electro-mechanical switch.
The Arduino Ethernet shield allows you to easily connect your Arduino to Internet using Ethernet library with mere minutes. Seting it up as simple as plugging this module onto the Arduino, connect it to your network with RJ45 cables. The shield enables your Arduino send and receive data from anywhere with internet connection.
The Ethernet shield is based on the Wiznet W5100 Ethernet shield operating at 5V with internal 16K buffer. It has a connection speed up to 10/100Mb.
There is also on-board micro SD card slot which enables you to store files for serving over the network just using your Arduino. The onboard micro SD reader is accessible through the SD library.
Arduino communicates with both Ethernet shield and SD card reader using SPI mode. This is on digital pin 11, 12 and 13 on Uno and pins 50, 51, 52 on Mega. On both board, pin10 is used to select W5100 and pin 4 is used to select SD card reader. So you can’t use them for general I/O operations.
This shield must be assigned a fixed IP address and mac address. It is highly recommended that Arduino IDE 1.0 which has built-in DHCP support figures out which IP address is assigned.
They can be found at: File-Examples-Ethernet-DhcpAddressPrinter
Then select File-examples- Ehernet-Webserver. This load a simple sketch that displays the data gathered from analog input on a web browser. However don’t upload it yet. It needs to be a slight modification. You need to specify the IP address of the Ethernet shield, which is done inside the sketch. About MAC address , if you only have one shield accessed to the network, just leave it be. However if you run more than one Ethernet shield on your network, ensure that they have different MAC address by altering the hexadecimal values.
Then enter your Ethernet shield IP address into the URL bar. The Web browser will query inquire the Ethernet shield to return the values from analog input on the Arduino board.As there is nothing plugged into the analog input, their value will change constantly. Press F5 to see the new value.
It ‘s a motivating thing to move on to something more useful, measuring temperature by DS18B20 and pushing data to Pachube.com using Ethernet shield. Pachube.com is an online database service allow developers to connect sensor-derived data(eg. Energy and environment data from object, device & buildings ) and provide graphing, historical and alerts data access. Pachube is based on the concept of feeds and datastreams, feeds is typically the single location, and datastreams is data from individual sensor associated with that location. It is ideally suited for visualizing the data from the sensor connected to Arduino board.
In order to use Pachube, an account needs to be created. With this pachube account, a new feed can be registered, with this feed set to manual, then one more datastream can be added. For accessing pachube data and updating feed and datastream. API key should be created.For example, I creat a feed with ID 56194 with title, tags, location, latitude, longitude and etc filled in. With this feed, one or more datestream can added. For test, I creat a datastream with ID 01.
Next , connect DS18B20 temperature sensor module to Arduino. In order to communicate with Pachube server through web API, ERxPachube library is applied in this project. IP address, MAC address, feed ID, API key need to be specified in the sketch.
In serial box, the connection status and data from sensor can be monitored. Status code means connection is OK.
Now we can open Pachube.com to see the visualizing data from sensor connected to Arduino.The URL of the example graph above https://api.pachube.com/v2/feeds/56194/datastreams/0.png which give us the sever side generated history of datastream with ID 01 from feed with ID 56194. As well as DS18B20, humidity sensor,gas sensor, barometer sensor, and many others can be added to this project for multiple purpose.
Related code and details, please visit our wiki page
There are many different forms of digital communication protocols and they differ based on application. I2C and SPI protocol are commonly recognized as ‘small protocol’ relative to such Ethernet, USB, SATA, PCI-E protocol bus and etc that their transmission rate is up to hundreds or thousands Mbits/s. However, we couldn’t forget the purpose of these kinds of protocols bus. ‘Big protocol’ is employed as communication between systems, ‘small protocols’ is used as communication between IC within systems. There is no evidence that ‘small protocols’ is replaced necessarily by these ‘big protocols’. Existence and flexibility of SPI and I2C reflect the idea of ‘Enough is enough’.
I2C (pronounced I-squared-C) created by Philips Semiconductors(now NXP) and commonly written as “I2C” stands for Inter Integrated Circuit and allows communication of data between micro-controller and peripheral unit over two wires. In this master-host communication mode, multiple I2C devices can be connected to I2C bus, which is identified by assigned unique address.
I2C is serial bus which is constituted of data line(SDA- Serial Data line) and clock line(SCL- serial clock line) ,with which microcontroller and controlled IC, IC and IC are able to communicate bidirectional at the data transmission rate up to 100kb/s. Varieties of controlled IC is connected to this bus in parallel, just like telephone is connected up when its number is dialed up, each IC connected to I2C bus has a unique address. In the procedure of data transmission, IC connected to I2C bus can be either master(slave) or transmitter(receiver) at the same time which depends on the function it performs. It is obvious that two or more masters are not allowed.
Here we do a simple I2C experiment in which I2C bidirectional communication is completely demonstrated. Character string “light is” and byte x which is 0 or 1 is sent from master device to slave device repeatingly. When slave device receive the data, it is displayed on the serial monitor as below. Then the byte x is transmitted to master and assigned to variable c when slave is requested data by master. Master judge whether variable c is 1 or 0, master light up a led when c is 1.
Wire library is used to communicate with I2C devices. On most Arduino board, Arduino UNO or compatible, SDA is on analog input 4 pin. SCL is on analog input 5 pin. On Arduino mega , SDA is on digital pin 20 and SCL is on digital pin 21.Please note sending function in old Arduino IDE v22 I use now is send(),receiving function is receive(). Up-to-date Arduino IDE V1.0 sending is write(), receiving is read().
SCL, SDA and GND on two Arduino board are connected together using jumper wires, VCC should connected for sharing one source if two Arduino power are not supplied individually. SDA is on analog input 4 pin. SCL is on analog input 5 pin.If only using one I2C device, the pull-up resistors are (normally) not required, as the ATmega328 microcontroller in our Arduino has them built-in. However if you are running a string of devices, use two 10 kilo ohm resistors.
Arduino Master Program
/* Character string “light is” and byte x which is 0 or 1 is sent from master device to slave device repeatingly. When slave device receive the data, slave is requested data by master, byte x is transfered to master and assigned to variable c. Master program judge whether c is 1 or 0, master light up a led when c is 1, or it is off.*/
#include < Wire.h > //declare I2C library function
#define LED 13
byte x = 0; //variable x determine whether led on master is on or off
Wire.begin(); // join the I2C bus as master
pinMode(LED,OUTPUT); // initialize the digital pin 13 as output
Wire.beginTransmission(4); //begin a transmission to slave device 4
Wire.send(“light is “); // send character string “light is ”
Wire.send(x); // send one byte data to slave
Wire.endTransmission(); // end a transmission to slave
x++; //variable x plus one
if(x==2) //if variable x value is 2, assign 0 to variable x
delay(1000); //delay one second
Wire.requestFrom(4, 1); //request one byte from slave 4
while(Wire.available()>0) // when data is received from slave to master
byte c = Wire.receive(); //receive one byte from slave and assign to variable c
//if c is 1, light up led
Arduino Slave Program
/*Display the data packet from master on serial monitor and transfer last byte of it to master*/
#include <Wire.h> //declare I2C library function
int x; //variable x determine whether led on master is on or off//
Wire.begin(4); //join I2Cbus as slave with identified address
Wire.onReceive(receiveEvent); //register a function to be called when slave receive a transmission from master//
Wire.onRequest(requestEvent); //register a function when master request data from this slave device//
Serial.begin(9600); //set serial baud rate
//when slave receive string from master, trigger this event.
void receiveEvent(int howMany)
while( Wire.available()>1) // execute repeatedly until last byte left in the data packet from master//
char c = Wire.receive(); // receive data from master and assign it to char c
Serial.print(c); // display char c on serial monitor
//receive last byte of data packet from master
x = Wire.receive(); // receive last data from master and assign it to int x
Serial.println(x); // display int x on serial monitor
//trigger this event when master request data from slave,
//transfer last byte of data packet receiving from master to master
This is a breakout board for InvenSense’s ITG-3205. The ITG-3205 is the world’s first single-chip, digital-output, 3-axis MEMS gyro IC optimized for gaming, 3D mice, and 3D remote control applications. The ITG-3205 features three 16-bit analog-to-digital converters (ADCs) for digitizing the gyro outputs, a user-selectable internal low-pass filter bandwidth, and a Fast-Mode I2C (400kHz) interface. Additional features include an embedded temperature sensor and a 2% accurate internal oscillator.
Triple –axis gyroscope breakboard is ideal for:
• Motion-enabled game controllers
• Motion-based portable gaming
• Motion-based 3D mice and 3D remote controls
• “No Touch” UI
• Health and sports monitoring
The ITG-3205 triple-axis MEMS gyroscope includes a wide range of features:
• Digital-output X-, Y-, and Z-Axis angular rate sensors (gyros) on one integrated circuit
• Three integrated 16-bit ADCs provide simultaneous sampling of gyros
application development and making for more-responsive motion processing
• Wide VDD supply voltage range of 2.1V to 3.6V
• Flexible VLOGIC reference voltage allows for I2C interface voltages from 1.71V to VDD
• Standby current: 5µA
• Digital-output temperature sensor
• Fast Mode I2C (400kHz) serial interface
• Optional external clock inputs of 32.768kHz or 19.2MHz to synchronize with system clock
This is a breakout board for The Honeywell HMC5883L.The Honeywell HMC5883L is a multi-chip module designed for low-field magnetic sensing with a digital interface for applications such as low-cost compassing and magnetometry. The HMC5883L includes our state-of-the-art, high-resolution HMC118X series magneto-resistive sensors plus an ASIC containing amplification, automatic degaussing strap drivers, offset cancellation, and a 12-bit ADC that enables 1° to 2° compass heading accuracy. The I2C serial bus allows for easy interface.
•3-Axis Magnetoresistive Sensors and ASIC in a 3.0×3.0×0.9mm LCC Surface Mount Package
•12-Bit ADC Coupled with Low Noise AMR Sensors Achieves 2 milli-gauss Field Resolution in ±8 Gauss Fields
•Low Voltage Operations (2.16 to 3.6V) and Low Power Consumption (100 μ A)
• I2C Digital Interface
•Wide Magnetic Field Range (+/-8 Oe)
Great article on a team using the DIY Drones ArduPilot to monitor deforestation in Sumatra,They are equipped with Arduplane based on the mission planner in use on their laptop, although it is not concerned in this paper.
Using seed funding from the National Geographic Society, The Orangutan Conservancy, and the Denver Zoo, Lian Pin Koh, an ecologist at the ETH Zürich, and Serge Wich, a biologist at the University of Zürich and PanEco, have developed a conservation drone equipped with cameras, sensors and GPS. So far they have used the remote-controlled aircraft to map deforestation, count orangutans and other endangered species, and get a bird’s eye view of hard-to-access forest areas in North Sumatra, Indonesia.
The drone is almost fully autonomous, which means it can take-off and fly on autopilot,” Koh explained. “The user pre-programs each mission on a laptop computer by clicking waypoints along a planned flight path on a Google Map. Based on this flight path and the onboard sensors (GPS, altitude sensor, airspeed sensor, etc), the drone will take off automatically, fly to every waypoint, and then return to the user. During the mission, the drone can take photographs or videos depending on the camera system installed.”
To date, Koh and Wich have used the drone in Aras Napal, close to the Gunung Leuser Conservation Area in Sumatra. During their four days of testing, the drone flew 30 missions — collecting hundreds of photos and hours of video — without a single crash. A mission, which typically lasts about 25 minutes, can cover 50 hectares.
“The drone took pictures of areas where logging occurred, and areas where oil palm are planted right next to a river, which is very damaging to the river ecosystem,” Koh said. “It also took pictures of an orangutan who was feeding on top of a palm tree, as well as elephants on the ground. During one mission, the drone also recorded a video showing smoke rising from a forest area. These test missions demonstrate that the drone can indeed be used for the purposes it has been developed for.”
BesidesW5100, ENC28J60 is another widely used network chip, the early Arduino network module is accomplished by means of ENC28J60, although later a new Arduino network module come up based on W5100, but the ENC28J60 is also widely used due to its stable and reliable…features. The product in this post is about the previousENC28J60 Version Arduino network module, some of our readers and customers mailed us asking how to connect this module to the Arduino UNO/MEGA board, from this post you will get some tips and test demo code to make your arduino be online.
Connect your ENC28J60 network module to arduino board according to the following diagram, you can also use a Arduino IDC-6/SPI Shield for your convenience, to upload you need to click and download the ENC28J60 Ethernet library.
After doing this, you are almost finish this easy task, go ahead verify and program your sketch, open your browser input the IP address you set in the sketch, then Enter it, you will see your arduino board is online.