diff --git a/docs/images/adxrs610.jpg b/docs/images/adxrs610.jpg
new file mode 100644
index 00000000..a2816c30
Binary files /dev/null and b/docs/images/adxrs610.jpg differ
diff --git a/docs/images/bma220.jpg b/docs/images/bma220.jpg
new file mode 100644
index 00000000..9bb6d12b
Binary files /dev/null and b/docs/images/bma220.jpg differ
diff --git a/docs/images/dfrph.jpg b/docs/images/dfrph.jpg
new file mode 100644
index 00000000..21a38275
Binary files /dev/null and b/docs/images/dfrph.jpg differ
diff --git a/docs/images/eboled.jpg b/docs/images/eboled.jpg
new file mode 100644
index 00000000..0f630ee3
Binary files /dev/null and b/docs/images/eboled.jpg differ
diff --git a/docs/images/groveultrasonic.jpg b/docs/images/groveultrasonic.jpg
new file mode 100644
index 00000000..2e6e39d3
Binary files /dev/null and b/docs/images/groveultrasonic.jpg differ
diff --git a/docs/images/keypadlcd.jpg b/docs/images/keypadlcd.jpg
new file mode 100644
index 00000000..b24c0474
Binary files /dev/null and b/docs/images/keypadlcd.jpg differ
diff --git a/docs/images/lm35.jpg b/docs/images/lm35.jpg
new file mode 100644
index 00000000..ff0831b3
Binary files /dev/null and b/docs/images/lm35.jpg differ
diff --git a/docs/images/lsm9ds0.jpg b/docs/images/lsm9ds0.jpg
new file mode 100644
index 00000000..d5dfff68
Binary files /dev/null and b/docs/images/lsm9ds0.jpg differ
diff --git a/docs/images/mg811.jpg b/docs/images/mg811.jpg
new file mode 100644
index 00000000..319ba81c
Binary files /dev/null and b/docs/images/mg811.jpg differ
diff --git a/docs/images/mpu60x0.jpg b/docs/images/mpu60x0.jpg
new file mode 100644
index 00000000..1f03b627
Binary files /dev/null and b/docs/images/mpu60x0.jpg differ
diff --git a/docs/images/mpu9250.jpg b/docs/images/mpu9250.jpg
new file mode 100644
index 00000000..46f4007e
Binary files /dev/null and b/docs/images/mpu9250.jpg differ
diff --git a/docs/images/pn532.jpg b/docs/images/pn532.jpg
new file mode 100644
index 00000000..e4697d8c
Binary files /dev/null and b/docs/images/pn532.jpg differ
diff --git a/docs/images/urm37.jpg b/docs/images/urm37.jpg
new file mode 100644
index 00000000..32a94520
Binary files /dev/null and b/docs/images/urm37.jpg differ
diff --git a/docs/images/wheelencoder.jpg b/docs/images/wheelencoder.jpg
new file mode 100644
index 00000000..f4ee6a60
Binary files /dev/null and b/docs/images/wheelencoder.jpg differ
diff --git a/docs/images/xbee.jpg b/docs/images/xbee.jpg
new file mode 100644
index 00000000..f0473d77
Binary files /dev/null and b/docs/images/xbee.jpg differ
diff --git a/src/adxrs610/adxrs610.h b/src/adxrs610/adxrs610.h
index 8a9747e0..07bc3897 100644
--- a/src/adxrs610/adxrs610.h
+++ b/src/adxrs610/adxrs610.h
@@ -65,6 +65,7 @@ namespace upm {
*
* This driver was developed using the DFRobot ADXRS610 Gyro Beakout board.
*
+ * @image html adxrs610.jpg
* @snippet adxrs610.cxx Interesting
*/
diff --git a/src/bma220/bma220.h b/src/bma220/bma220.h
index 7219e2f4..e361d486 100644
--- a/src/bma220/bma220.h
+++ b/src/bma220/bma220.h
@@ -63,6 +63,7 @@ namespace upm {
*
* This driver was developed on a DFRobot BMA (Tiny).
*
+ * @image html bma220.jpg
* @snippet bma220.cxx Interesting
*/
diff --git a/src/dfrph/dfrph.h b/src/dfrph/dfrph.h
index 0083ff28..68c2557e 100644
--- a/src/dfrph/dfrph.h
+++ b/src/dfrph/dfrph.h
@@ -83,6 +83,7 @@ namespace upm {
* this calibration, you can measure the pH value of an alkaline
* solution.
*
+ * @image html dfrph.jpg
* @snippet dfrph.cxx Interesting
*/
diff --git a/src/groveultrasonic/groveultrasonic.h b/src/groveultrasonic/groveultrasonic.h
index ed5bebd4..d1fd3405 100644
--- a/src/groveultrasonic/groveultrasonic.h
+++ b/src/groveultrasonic/groveultrasonic.h
@@ -57,6 +57,7 @@ namespace upm {
* to 4 m (13'1.5") and works best when the object is within a 30 degree angle
* relative to the sensor.
*
+ * @image html groveultrasonic.jpg
* @snippet groveultrasonic.cxx Interesting
*/
class GroveUltraSonic {
diff --git a/src/hcsr04/hcsr04.h b/src/hcsr04/hcsr04.h
index 000881d8..95721dfa 100644
--- a/src/hcsr04/hcsr04.h
+++ b/src/hcsr04/hcsr04.h
@@ -52,6 +52,7 @@ namespace upm {
*
* This module defines the HC-SR04 interface for libhcsr04
*
+ * @image html groveultrasonic.jpg
* @snippet hcsr04.cxx Interesting
*/
class HCSR04 {
diff --git a/src/lcd/eboled.h b/src/lcd/eboled.h
index 6b742e86..535bfba8 100644
--- a/src/lcd/eboled.h
+++ b/src/lcd/eboled.h
@@ -66,6 +66,11 @@ namespace upm
* standard GPIO -- this driver only concerns itself with the
* display.
*
+ * @image html eboled.jpg
+ *
OLED Sensor image provided by SparkFun* under
+ *
+ * CC BY-NC-SA-3.0.
+ *
* @snippet eboled.cxx Interesting
*/
diff --git a/src/lcd/lcd.h b/src/lcd/lcd.h
index 5bb9c3ad..a4f48e84 100644
--- a/src/lcd/lcd.h
+++ b/src/lcd/lcd.h
@@ -32,7 +32,7 @@ namespace upm
/**
* @brief I2C LCD Display library
* @defgroup i2clcd libupm-i2clcd
- * @ingroup seeed sparkfun adafruit i2c gpio display gsk
+ * @ingroup dfrobot sainsmart seeed sparkfun adafruit i2c gpio display gsk
*/
class LCD
{
diff --git a/src/lcd/sainsmartks.h b/src/lcd/sainsmartks.h
index dd984319..643fa477 100644
--- a/src/lcd/sainsmartks.h
+++ b/src/lcd/sainsmartks.h
@@ -34,16 +34,20 @@ namespace upm
* @sensor sainsmartks
* @comname SainSmart LCD Keypad Shield
* @type display
- * @man sainsmart
+ * @man sainsmart dfrobot sparkfun
* @web http://www.sainsmart.com/sainsmart-1602-lcd-keypad-shield-for-arduino-duemilanove-uno-mega2560-mega1280.html
+ * @web http://www.dfrobot.com/index.php?route=product/product&product_id=51
+ * @web https://www.sparkfun.com/products/13293
* @con gpio analog
*
* @brief API for Sainsmart LCD Keypad Shield
*
- * The Sainsmart LCD Keypad Shield uses 6 digital outputs and 1
- * analog input (for the keypad). The outputs are used to drive an
- * attached LCM1602 LCD controller.
+ * The Sainsmart LCD Keypad Shield uses 6 digital outputs and 1 analog input
+ * (for the keypad). The outputs are used to drive an attached LCM1602 LCD
+ * controller. This driver should also be compatible with the similar LCD
+ * keypad shields from DFRobot and Sparkfun.
*
+ * @image keypadlcd.jpg
* @snippet sainsmartks.cxx Interesting
*/
class SAINSMARTKS : public Lcm1602
diff --git a/src/lm35/lm35.h b/src/lm35/lm35.h
index 8d12745e..2bf6fbaa 100644
--- a/src/lm35/lm35.h
+++ b/src/lm35/lm35.h
@@ -54,6 +54,7 @@ namespace upm {
* This driver was developed using the DFRobot LM35 Linear
* Temperature Sensor
*
+ * @image html lm35.jpg
* @snippet lm35.cxx Interesting
*/
diff --git a/src/lsm9ds0/lsm9ds0.h b/src/lsm9ds0/lsm9ds0.h
index b26e1915..17648d6a 100644
--- a/src/lsm9ds0/lsm9ds0.h
+++ b/src/lsm9ds0/lsm9ds0.h
@@ -68,6 +68,11 @@ namespace upm {
*
* This driver was developed on a Sparkfun 9DOF edison block.
*
+ * @image html lsm9ds0.jpg
+ *
LSM9DS0 Sensor image provided by SparkFun* under
+ *
+ * CC BY-NC-SA-3.0.
+ *
* @snippet lsm9ds0.cxx Interesting
*/
diff --git a/src/mg811/mg811.h b/src/mg811/mg811.h
index 21aaf822..d8c4934d 100644
--- a/src/mg811/mg811.h
+++ b/src/mg811/mg811.h
@@ -64,6 +64,7 @@ namespace upm {
* on the sensor will light, and the digital pin will be driven
* high.
*
+ * @image html mg811.jpg
* @snippet mg811.cxx Interesting
*/
diff --git a/src/mpu9150/mpu60x0.h b/src/mpu9150/mpu60x0.h
index 667abc2c..1737a697 100644
--- a/src/mpu9150/mpu60x0.h
+++ b/src/mpu9150/mpu60x0.h
@@ -55,6 +55,7 @@ namespace upm {
* should allow an end user to implement whatever features are
* required.
*
+ * @image html mpu60x0.jpg
* @snippet mpu60x0.cxx Interesting
*/
class MPU60X0 {
diff --git a/src/mpu9150/mpu9250.h b/src/mpu9150/mpu9250.h
index b7d0f061..c4da9446 100644
--- a/src/mpu9150/mpu9250.h
+++ b/src/mpu9150/mpu9250.h
@@ -46,6 +46,7 @@ namespace upm {
*
* This module defines the MPU9250 interface for libmpu9150
*
+ * @image html mpu9250.jpg
* @snippet mpu9250.cxx Interesting
*/
diff --git a/src/pn532/pn532.h b/src/pn532/pn532.h
index c0d67dde..206eb5b0 100644
--- a/src/pn532/pn532.h
+++ b/src/pn532/pn532.h
@@ -66,6 +66,7 @@ namespace upm {
*
* @brief API for the PN532 based NFC/RFID reader/writer
*
+ * @image html pn532.jpg
* Identify a card and print out basic info
* @snippet pn532.cxx Interesting
* Add a URI to an already NDEF formatted ultralight or NTAG2XX tag
diff --git a/src/urm37/urm37.h b/src/urm37/urm37.h
index 43a26883..21554b99 100644
--- a/src/urm37/urm37.h
+++ b/src/urm37/urm37.h
@@ -74,6 +74,7 @@ namespace upm {
*
* (https://www.dfrobot.com/wiki/index.php?title=URM37_V4.0_Ultrasonic_Sensor_%28SKU:SEN0001%29)
*
+ * @image html urm37.jpg
* An example using analog mode
* @snippet urm37.cxx Interesting
* An example using UART mode
diff --git a/src/wheelencoder/wheelencoder.h b/src/wheelencoder/wheelencoder.h
index 833cc863..17356e07 100644
--- a/src/wheelencoder/wheelencoder.h
+++ b/src/wheelencoder/wheelencoder.h
@@ -59,6 +59,7 @@ namespace upm {
* correlate the number of counts to a time period for calculating
* an RPM or other value as needed.
*
+ * @image html wheelencoder.jpg
* @snippet wheelencoder.cxx Interesting
*/
class WheelEncoder {
diff --git a/src/xbee/xbee.h b/src/xbee/xbee.h
index f7dc10ca..c03c00a3 100644
--- a/src/xbee/xbee.h
+++ b/src/xbee/xbee.h
@@ -70,6 +70,11 @@ namespace upm {
* windows software, however it is possible of course to configure
* them manually using AT commands. See the examples.
*
+ * @image html xbee.jpg
+ *
XBee Sensor image provided by SparkFun* under
+ *
+ * CC BY-NC-SA-3.0.
+ *
* @snippet xbee.cxx Interesting
*/