This is the official SensorCape reference manual and it is still a work in progress. The purpose of this manual is to allow the technically proficient user to easily understand the inner workings of the SensorCape ecosystem while still allowing the average user to learn what they need to use the SensorCape as they wish.

The SensorCape reference manual allows easy navigation to the desired part or system of the SensorCape by starting with a short overview of the SensorCape, what capabilities it adds and which components provide this capability. To learn in-depth details about a component reference I have provided the manufacturer’s product datasheet for each component. In order to provide a centralized source, the this document discusses the most relevant information for each component in the sections following the overview.

Navigation

Overview

The SensorCape is an add-on cape designed for the BeagleBone Black, though it should work just as well with the original BeagleBone. The idea for the SensorCape to create an add-on that is nearly as versatile as the BeagleBone itself. Accomplishing this meant adding general functionality that was not included with the BeagleBone, but that would be useful in a wide variety of contexts. The simplest way to add functionality is to increase the possibilities for interacting with the BeagleBone. This great flexibility comes from the sensing capabilities which will allow the BeagleBone to interact with the environment in ways that were much more difficult before. The capability enabled by these sensors are:

  • 3-axis gyroscope
  • 3-axis accelerometer
  • 3-axis compass
  • Ambient light sensor
  • Ambient temperature sensor
  • Non-contact temperature sensor
  • Humidity sensor
  • Pressure sensor (Can detect changes in altitude)
  • 38 kHz IR sensor (Interfaces with common consumer electronics)
  • 4 push-buttons

In addition to these sensors the SensorCape has also been designed with four user configurable LED’s and production ready cape EEPROM which conforms with the requirements set in the BeagleBone Black System Reference Manual. This sensing capability has been implemented with the use of these components which will be discussed in the following sections:

  • InvenSense MPU-9150 (9-Axis motion/position sensor)
  • Intersil ISL29023 (Ambient light sensor)
  • Texas Instruments TMP006 (Ambient and non-contact temperature)
  • General Electric ChipCap2 (Humidity sensor)
  • Bosch Sensortec BMP180 (Pressure sensor)
  • Vishay TSOP38238 (IR sensor)
  • Auxiliary components

Without further ado, let us take a look at the sensors included on the SensorCape.

MPU-9150 (9-axis sensor)

Disclaimer: This section of the SensorCape Technical Manual does not imply or intend to be a full reference of the capabilities of the MPU-9150, as a result I have provided a link to the datasheet which should prove useful for more technical readers.

MPU-9150 Datasheet

Overview

The MPU-9150 is an excellent new offering from InvenSense. This device integrates three different microelectromechanical sensors (MEMS) into a package and allows for easy access to the data over I2C. InvenSense products are high quality sensors which see use in many modern commercial electronics to provide motion and position sensitivity in three different domains. In addition to motion and position sensing these devices can be tied to an interrupt to be used as a “shock detector” that triggers the interrupt whenever the device moves quickly. This behavior is used in high end consumer laptops to shut off their hard drives before they suffer drop damage, but I wouldn’t want you to limit your usage to such a simple case. :)

MPU9150 SensorCape application circuit from the SensorCape reference manual MPU9150 SensorCape Application Circuit

About the MPU-9150

The MPU-9150 integrates three MEMS into a single package and allows for easy access to these sensors over the I2C bus. The sensors included are:

  • 3-axis accelerometer
  • 3-axis gyroscope
  • 3-axis compass

These three sensors can be used together or separately and are useful for determining how the SensorCape is moving.

A gyroscope allows the user to obtain the current orientation of the SensorCape. The 3-axis gyroscope built in to the MPU-9150 offers a user adjustable full-scale range of ±250, ±500, ±1000, and ±2000 °/sec. Since the device converts analog values to digital values using an ADC, which has a discrete amount of possible output values, an increase in full-scale range leads to a decrease in precision.

An accelerometer is used to determine the “proper acceleration” of the SensorCape. Gyroscopes and accelerometers are often used together to allow the user to develop a full understanding of how the device in question is moving. This effectively means that with an accelerometer and a gyroscope it is possible to know exactly what path has been traveled by the SensorCape and the user can recreate this in software. This type of technology is what is used in the Wii controllers. The accelerometer built in to the MPU-9150 is a 3-axis device with an adjustable full-scale range of ±2g, ±4g, ±8g and ±16g with similar tradeoffs in accuracy to the gyroscope. In addition to the basic features of an accelerometer, the MPU-9150 implements a user-programmable motion interrupt, which can be used as a “shock interrupt” as discussed earlier.

Finally, the MPU-9150 also adds a 3-axis magnetometer. The most common function of a magnetometer is to serve as a familiar compass, but since it reacts to any magnetic field the device can also serve other purposes such as a metal detector. The magnetometer on the MPU-9150 is not user adjustable but offers a pre-determined full-scale range of ±1200 μT.

In addition to these three sensors, the MPU-9150 implements various processing features which allow the user to easily access the data from the sensors in various formats as well as adjust digital filters for removing unwanted signals. To learn more about how to use these features refer to the manufacturer datasheet linked at the beginning of this section.

Accessing the MPU-9150

The sensors on the MPU-9150 can be conveniently accessed over the I2C bus in “fast mode” at the address 1101000 (0xD0). Data from individual sensors can be accessed using the provided SensorCape interface library or the user can write their own library by referring to the I2C information listed in the MPU-9150 datasheet.

For more info on how I2C works and how to use it I recommend this article.

In addition to I2C, the motion interrupt pin of the MPU-9150 is routed to the BeagleBone GPIO pin P9-22. The user can attach an interrupt listener to this pin in order to execute a command whenever the interrupt fires. The syntax for doing this is discussed in the SensorCape interface library reference.

Applications

A few of the listed applications from the datasheet are:

  • Camera blur reduction
  • Motion sensitive user interface
  • Location based services
  • Motion-based game controllers
  • Wearable sensor for health, fitness and sports
  • Toys
  • Pedestrian based navigation
  • Electronic compass
  • Metal detector

This shows a very wide array of use cases for this sensor alone and I hope that the BeagleBone community can create even more uses by integrating it with the powerful microprocessor on the BeagleBone as well as the other sensors included on the SensorCape.

ISL29023 (Ambient light sensor)

Disclaimer: This section of the SensorCape Technical Manual does not include a full reference of the capabilities of the ISL29023, as a result I have provided a link to the datasheet which should prove useful for more technical readers.

ISL29023 Datasheet

Overview

The ISL29023 is an integrated digital ambient light sensor with a built-in interrupt functionality and is produced by intersil. The light sensing response of the ISL29023 attempts to emulate the human eye so this is an excellent chip to use for display dimming or other functionality in which you would want you project to respond in the same way a human eye would. The ISL29023 has a user selectable range of up to 64,000 lux with built-in noise rejection circuitry, and 16 bit output resolution.

ISL29023 SensorCape application circuit from the SensorCape reference manualISL29023 SensorCape Application Circuit

About the ISL29023

The ISL29023 is a small device containing two photodiode arrays that convert light into current. After light is converted to current during the light signal process, the current output is converted to digital by a built-in 16-bit ADC. The converter is a charge-balancing integrating 16-bit ADC. This type of ADC is best for converting small current signals in the presence of an AC periodic noise. A 100ms integration time, for instance, highly rejects 50Hz and 60Hz power line noise simultaneously which is useful for filtering out flickering introduced by the power supply.

A graph comparing ISL29023 Response to Human EyeComparing ISL29023 Response to Human Eye (from datasheet)

The ADC has I2C programmable range select to dynamically accommodate various lighting conditions. For very dim conditions, the ADC can be configured at its lowest range (Range 1) in the ambient light sensing. All of these options are implemented in the SensorCape interface library, to learn the interface protocols at a more technical level refer to the device datasheet.

The ISL29023 also has a low power option. In low power mode the device performs a light reading, stores the result of this reading in the ADC, and then enters a power off state until it receives an I2C command to perform another measurement. This low power capability is useful for performing readings over an extended period of time but of course would lead to lower data resolution.

Accessing the ISL29023

Just as most of the other sensors on the SensorCape are accessible via I2C, the ISL29023 is accesible over I2C at the address 1000100 (0×88). You can refer to the product datasheet for access commands or use the provided SensorCape interface library.

For more info on how I2C works and how to use it I recommend this article.

In addition to the I2C interface, the ISL29023 also provides one active-low interrupt pin which can be configured to trigger as a low-light alert or a bright-light alert. Though it is important to note that the ISL29023 continues to operate while the interrupt is asserted and if you need to retrieve the data that triggered the interrupt, you should do so before the next calculation is finished the and results are overwritten.

Applications

The ISL29023 sees widespread use in consumer devices as a brightness sensor that dims and brightens the screen or buttons on a device. It also could be used as a sunlight sensor, a camera flash detector, an IR exposure detector or any number of other applications so start using it with the SensorCape!

TMP006 (Ambient and non-contact temperature sensor)

Disclaimer: This section of the SensorCape Technical Manual does not include a full reference of the capabilities of the TMP006, as a result I have provided a link to the product page which provides an up to date datasheet, user guide, and other useful references.

TMP006 Product Page

Overview

The TMP006 is a very new chip from Texas Instruments that enables non-contact temperature measurement by using a thermopile to collect an infrared heat signature. Since a thermopile is only capable of determining relative temperature values, the TMP006 actually includes another temperature sensor to detect the temperature on the board.

This means that in addition to telling you the temperature of a non-local object, the TMP006 can be used as a local temperature sensor to warn if your device is overheating. If you would eventually like to use the TMP006 separate from the SensorCape it also boasts very low power usage and a shutdown state that is enabled over I2C.

TMP006 application circuit from SensorCape Reference Manual

TMP006 application circuit from SensorCape Reference Manual

About the TMP006

Coming soon…

ChipCap2 (Humidity sensor)

BMP180 (Pressure sensor)

TSOP38238 (IR sensor)

Auxiliary Components

Following Up

Since the I2C addresses are one of the most important details included in this manual, I have decided to provide a useful table of the assigned I2C addresses for each device.

SensorCape I2C Component Adresses
Component Description Address (Base-2) Address (Base-16)
MPU-9150 9-axis sensor 1101000 0xD0
TMP006 Ambient and non-contact temperature sensor 1000001 0×82
BMP180 Pressure sensor 1110111 0xEE
ISL29023 Ambient light sensor 1000100 0×88
ChipCap2 Humidity sensor 0101000 0×50

The following links provide more insight into the SensorCape and BeagleBone ecosystem.

Download the .zip hardware source files (KiCad)

Loading Disqus Comments ...
Loading Facebook Comments ...