2015-08-13 16:19:40 -07:00
|
|
|
UPM (Useful Packages & Modules) Sensor/Actuator repository for libmraa
|
2014-04-30 15:47:12 +01:00
|
|
|
==============
|
2014-04-25 14:48:43 +01:00
|
|
|
|
2015-02-25 15:14:25 -08:00
|
|
|
UPM is a high level repository for sensors that use libmraa. Each sensor links
|
|
|
|
to libmraa and are not meant to be interlinked although some groups of sensors
|
|
|
|
may be. Each sensor contains a header which allows to interface with it.
|
|
|
|
Typically a sensor is represented as a class and instantiated.
|
2014-04-25 15:48:27 +01:00
|
|
|
|
2015-02-25 15:14:25 -08:00
|
|
|
The constructor is expected to initialise the sensor and parameters may be used
|
2014-04-25 15:48:27 +01:00
|
|
|
to provide identification/pin location on the board.
|
|
|
|
|
|
|
|
Typically an update() function will be called in order to get new data from the
|
|
|
|
sensor in order to reduce load when doing multiple reads to sensor data.
|
|
|
|
|
2014-06-13 11:53:51 +01:00
|
|
|
### Example
|
|
|
|
|
2015-09-23 15:06:11 -07:00
|
|
|
A sensor/actuator is expected to work as such (here is the MMA7660 accelerometer API):
|
|
|
|
```C++
|
|
|
|
// Instantiate an MMA7660 on I2C bus 0
|
|
|
|
upm::MMA7660 *accel = new upm::MMA7660(MMA7660_I2C_BUS,
|
|
|
|
MMA7660_DEFAULT_I2C_ADDR);
|
|
|
|
|
|
|
|
// place device in standby mode so we can write registers
|
|
|
|
accel->setModeStandby();
|
|
|
|
|
|
|
|
// enable 64 samples per second
|
|
|
|
accel->setSampleRate(upm::MMA7660::AUTOSLEEP_64);
|
|
|
|
|
|
|
|
// place device into active mode
|
|
|
|
accel->setModeActive();
|
|
|
|
|
|
|
|
while (shouldRun)
|
|
|
|
{
|
|
|
|
int x, y, z;
|
|
|
|
|
|
|
|
accel->getRawValues(&x, &y, &z);
|
|
|
|
cout << "Raw values: x = " << x
|
|
|
|
<< " y = " << y
|
|
|
|
<< " z = " << z
|
|
|
|
<< endl;
|
|
|
|
|
|
|
|
float ax, ay, az;
|
|
|
|
|
|
|
|
accel->getAcceleration(&ax, &ay, &az);
|
|
|
|
cout << "Acceleration: x = " << ax
|
|
|
|
<< "g y = " << ay
|
|
|
|
<< "g z = " << az
|
|
|
|
<< "g" << endl;
|
|
|
|
|
|
|
|
usleep(500000);
|
|
|
|
}
|
|
|
|
```
|
2014-04-25 15:48:27 +01:00
|
|
|
|
2015-02-25 15:14:25 -08:00
|
|
|
However implementation and API design is completely up to the developer, some
|
|
|
|
enumerable sensors for example may provide much clever instantiation. Displays
|
2014-04-25 15:48:27 +01:00
|
|
|
may also create more complex structures in order to interface with them.
|
2014-04-25 14:48:43 +01:00
|
|
|
|
2015-02-25 15:14:25 -08:00
|
|
|
Browse through the list of all [examples](https://github.com/intel-iot-devkit/upm/tree/master/examples).
|
2014-08-29 15:37:11 +01:00
|
|
|
|
2015-06-04 15:16:25 -07:00
|
|
|
Multi-sensor samples for the starter and specialized kits can be found in the
|
|
|
|
[iot-devkit-samples](https://github.com/intel-iot-devkit/iot-devkit-samples) repository.
|
|
|
|
|
2015-02-25 15:14:25 -08:00
|
|
|
### Supported Sensors
|
2014-08-29 15:37:11 +01:00
|
|
|
|
2015-02-25 15:14:25 -08:00
|
|
|
Supported [sensor list](http://iotdk.intel.com/docs/master/upm/modules.html) from API documentation.
|
2014-09-01 15:31:55 +01:00
|
|
|
|
2015-02-25 15:14:25 -08:00
|
|
|
You can also refer to the [Intel® IoT Developer Zone](https://software.intel.com/iot/sensors).
|
2014-08-29 15:37:11 +01:00
|
|
|
|
2015-05-05 17:49:06 -07:00
|
|
|
### IDE Integration
|
|
|
|
|
2015-09-24 15:30:37 -07:00
|
|
|
If you would like to create projects and run the UPM samples using an Intel recommended IDE,
|
|
|
|
please refer to the Intel Developer Zone IDE page.
|
|
|
|
<a href="https://software.intel.com/iot/software/ide"><img src="../docs/icons/allides.png"/></a>
|
2015-05-05 17:49:06 -07:00
|
|
|
|
2015-02-25 15:14:25 -08:00
|
|
|
### Building UPM
|
2014-08-29 15:37:11 +01:00
|
|
|
|
2015-09-23 15:06:11 -07:00
|
|
|
See building documentation [here](docs/building.md).
|
2014-08-29 15:37:11 +01:00
|
|
|
|
2015-02-25 15:14:25 -08:00
|
|
|
### Making your own UPM module
|
2014-08-29 15:37:11 +01:00
|
|
|
|
2015-09-23 15:06:11 -07:00
|
|
|
Porting [link](docs/porting.md) has more information on making new UPM modules.
|
2014-08-29 15:37:11 +01:00
|
|
|
|
2015-09-23 15:06:11 -07:00
|
|
|
There is also an example available for max31855 [sensor](docs/max31855.md).
|
2014-09-07 21:47:07 +01:00
|
|
|
|
2015-02-25 15:14:25 -08:00
|
|
|
### Naming conventions and rules for new UPM contributions
|
2014-06-13 11:53:51 +01:00
|
|
|
|
2015-09-23 15:06:11 -07:00
|
|
|
Before you begin development, take a look at our naming [conventions](docs/naming.md).
|
2014-06-13 11:53:51 +01:00
|
|
|
|
2015-09-23 15:06:11 -07:00
|
|
|
Also, please read the guidelines for contributions [to UPM](docs/contributions.md).
|
2014-06-13 11:53:51 +01:00
|
|
|
|
2015-09-23 15:06:11 -07:00
|
|
|
Don't forget to check the documentation [section](docs/documentation.md).
|
2015-02-27 17:29:23 -08:00
|
|
|
|
2015-02-25 15:14:25 -08:00
|
|
|
Make sure you add yourself as an author on every new code file submitted.
|
|
|
|
If you are providing a fix with significant changes, feel free to add yourself
|
|
|
|
as a contributor. Signing-off your commits is mandatory.
|
2014-06-13 11:53:51 +01:00
|
|
|
|
2015-06-03 10:33:46 -07:00
|
|
|
API Documentation
|
2015-02-25 15:14:25 -08:00
|
|
|
==============
|
2014-09-23 10:29:18 +01:00
|
|
|
|
2015-06-29 14:00:57 -07:00
|
|
|
<a href="http://iotdk.intel.com/docs/master/upm/modules.html"><img src="docs/icons/c++.png"/></a>
|
2015-09-23 03:18:10 +03:00
|
|
|
<a href="http://iotdk.intel.com/docs/master/upm/java"><img src="docs/icons/java.png"/></a>
|
2015-06-29 14:00:57 -07:00
|
|
|
<a href="http://iotdk.intel.com/docs/master/upm/python"><img src="docs/icons/python.png"/></a>
|
|
|
|
<a href="http://iotdk.intel.com/docs/master/upm/node"><img src="docs/icons/node.png"/></a>
|
2015-06-03 10:33:46 -07:00
|
|
|
|
2015-09-23 14:45:28 -07:00
|
|
|
##### Changelog
|
2015-09-23 15:06:11 -07:00
|
|
|
Version changelog [here](docs/changelog.md).
|
2015-05-06 15:20:02 -07:00
|
|
|
|
2015-09-23 14:45:28 -07:00
|
|
|
##### Known Limitations
|
2015-09-23 15:06:11 -07:00
|
|
|
List of known limitations [here](docs/knownlimitations.md).
|