mirror of
https://github.com/eclipse/upm.git
synced 2025-07-06 20:01:12 +03:00
Compare commits
6 Commits
iio_change
...
json-testi
Author | SHA1 | Date | |
---|---|---|---|
c66bcc656a | |||
d52c2df7c6 | |||
02d8a16d4b | |||
4bb652cb4b | |||
59dfed087e | |||
e7f4529711 |
@ -15,6 +15,7 @@ before_install:
|
||||
jobs:
|
||||
fast_finish: true
|
||||
allow_failures:
|
||||
- env: TARGET=sonar-scan
|
||||
- env: TARGET=ipk
|
||||
include:
|
||||
- &run-with-clang
|
||||
|
@ -123,7 +123,7 @@ find_package (PkgConfig REQUIRED)
|
||||
|
||||
# Force a libmraa search and minimum required version every time a config is generated
|
||||
unset(MRAA_FOUND CACHE)
|
||||
set(MRAA_MINIMUM 1.8.0)
|
||||
set(MRAA_MINIMUM 1.7.0)
|
||||
pkg_check_modules (MRAA REQUIRED mraa>=${MRAA_MINIMUM})
|
||||
# Also, get full path to the mraa library
|
||||
find_library(MRAA_LIBRARY NAMES mraa HINTS ${MRAA_LIBDIR})
|
||||
|
@ -41,7 +41,7 @@ sig_handler(int signo)
|
||||
}
|
||||
|
||||
void
|
||||
data_callback(char* data, void* args)
|
||||
data_callback(char* data)
|
||||
{
|
||||
float x, y, z;
|
||||
accelerometer->extract3Axis(data, &x, &y, &z);
|
||||
|
@ -41,7 +41,7 @@ sig_handler(int signo)
|
||||
}
|
||||
|
||||
void
|
||||
data_callback(char* data, void* args)
|
||||
data_callback(char* data)
|
||||
{
|
||||
float x, y, z;
|
||||
if (gyroscope->extract3Axis(data, &x, &y, &z)) {
|
||||
|
@ -40,7 +40,7 @@ sig_handler(int signo)
|
||||
}
|
||||
|
||||
void
|
||||
data_callback(char* data, void* args)
|
||||
data_callback(char* data)
|
||||
{
|
||||
float x, y, z;
|
||||
double azimuth;
|
||||
|
@ -23,24 +23,10 @@
|
||||
# - UPM_SRC_DIR - path to upm's git clone in the Docker container.
|
||||
|
||||
# Check required environment variables and exit if they are not set
|
||||
function check_environment {
|
||||
VAR_NAME=$1
|
||||
VAR_VALUE=$2
|
||||
# Check required parameters
|
||||
VAR_NAME=${VAR_NAME:?value not provided}
|
||||
# Chek if variable is set
|
||||
if [ -z "${VAR_VALUE}" ]; then
|
||||
echo "Required environment variable ${VAR_NAME} is not defined. Skipping Execution..."
|
||||
exit 0;
|
||||
else
|
||||
echo "Required environment variable ${VAR_NAME} is set."
|
||||
fi
|
||||
}
|
||||
|
||||
check_environment "UPM_SRC_DIR" ${UPM_SRC_DIR}
|
||||
check_environment "SONAR_PROJ_KEY" ${SONAR_PROJ_KEY}
|
||||
check_environment "SONAR_ORG" ${SONAR_ORG}
|
||||
check_environment "SONAR_TOKEN" ${SONAR_TOKEN}
|
||||
UPM_SRC_DIR=${UPM_SRC_DIR:?value not provided}
|
||||
SONAR_PROJ_KEY=${SONAR_PROJ_KEY:?value not provided}
|
||||
SONAR_ORG=${SONAR_ORG:?value not provided}
|
||||
SONAR_TOKEN=${SONAR_TOKEN:?value not provided}
|
||||
|
||||
bw_output_path="${UPM_SRC_DIR}/build/bw-output"
|
||||
|
||||
@ -71,7 +57,7 @@ if [ "${TRAVIS_BRANCH}" == "master" -a "${TRAVIS_PULL_REQUEST}" == "false" ]; th
|
||||
sonar_cmd="${sonar_cmd_base}"
|
||||
elif [ "${TRAVIS_PULL_REQUEST}" != "false" -a "${TRAVIS_PULL_REQUEST_SLUG}" == "${TRAVIS_REPO_SLUG}" ]; then
|
||||
# Internal PR - do a preview scan with report to the PR
|
||||
check_environment "GITHUB_TOKEN" ${GITHUB_TOKEN}
|
||||
${GITHUB_TOKEN:?value not provided}
|
||||
|
||||
echo "Performing internal pull request scan"
|
||||
sonar_cmd="${sonar_cmd_base} \
|
||||
|
@ -1,222 +0,0 @@
|
||||
{
|
||||
"Library": "a110x",
|
||||
"Description": "A110X Hall Effect Library",
|
||||
"Sensor Class":
|
||||
{
|
||||
"a1101":
|
||||
{
|
||||
"Name": "API for the A110X Hall Effect Sensors",
|
||||
"Description": "UPM module for the A110X (A1101, A1102, A1103, A1104, and A1106) Hall Effect sensors. It outputs a digital signal indicating whether it is detecting a magnetic field with south polarity perpendicular to the sensor element.",
|
||||
"Aliases": ["a110x"],
|
||||
"Categories": ["halleffect"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["prototyping", "industrial"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": ["robok"],
|
||||
"Image": "a110x.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["A110XSample.java", "A110X_intrSample.java"],
|
||||
"Python": ["a110x.py"],
|
||||
"Node.js": ["a110x.js"],
|
||||
"C++": ["a110x-intr.cxx", "a110x.cxx"],
|
||||
"C": ["a110x.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Vcc": {"unit": "V", "low" : 3.8, "high": 24},
|
||||
"Ioutoff" : {"unit": "uA", "low" : 0.0, "high": 10},
|
||||
"Supply Current": {"unit": "mA", "low": 3.8, "high": 7.5},
|
||||
"Operate Point": {"unit": "G", "low": 50, "high": 160},
|
||||
"Release Point": {"unit": "G", "low": 10, "high": 130},
|
||||
"Hysteresis": {"unit": "G", "low": 20, "high": 80}
|
||||
},
|
||||
"Platforms":
|
||||
{
|
||||
"Intel Joule Module":
|
||||
{
|
||||
"Notes": ["Requires pull-up resistors with carrier board"],
|
||||
"Images": [""]
|
||||
}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/grove-hall-sensor-p-965.html"],
|
||||
"Datasheets": ["http://www.allegromicro.com/en/Products/Part_Numbers/1101/1101.pdf"],
|
||||
"Schematics": ["https://learn.adafruit.com/assets/26693"]
|
||||
}
|
||||
},
|
||||
"a1102":
|
||||
{
|
||||
"Name": "API for the A110X Hall Effect Sensors",
|
||||
"Description": "UPM module for the A110X (A1101, A1102, A1103, A1104, and A1106) Hall Effect sensors. It outputs a digital signal indicating whether it is detecting a magnetic field with south polarity perpendicular to the sensor element.",
|
||||
"Aliases": ["a110x"],
|
||||
"Categories": ["halleffect"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["prototyping", "industrial"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": ["robok"],
|
||||
"Image": "a110x.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["A110XSample.java", "A110X_intrSample.java"],
|
||||
"Python": ["a110x.py"],
|
||||
"Node.js": ["a110x.js"],
|
||||
"C++": ["a110x-intr.cxx", "a110x.cxx"],
|
||||
"C": ["a110x.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Vcc": {"unit": "V", "low" : 3.8, "high": 24},
|
||||
"Ioutoff" : {"unit": "uA", "low" : 0.0, "high": 10},
|
||||
"Supply Current": {"unit": "mA", "low": 3.8, "high": 7.5},
|
||||
"Operate Point": {"unit": "G", "low": 130, "high": 230},
|
||||
"Release Point": {"unit": "G", "low": 75, "high": 175},
|
||||
"Hysteresis": {"unit": "G", "low": 30, "high": 80}
|
||||
},
|
||||
"Platforms":
|
||||
{
|
||||
"Intel Joule Module":
|
||||
{
|
||||
"Notes": ["Requires pull-up resistors with carrier board"],
|
||||
"Images": [""]
|
||||
}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/grove-hall-sensor-p-965.html"],
|
||||
"Datasheets": ["http://www.allegromicro.com/en/Products/Part_Numbers/1101/1101.pdf"],
|
||||
"Schematics": ["https://learn.adafruit.com/assets/26693"]
|
||||
}
|
||||
},
|
||||
"a1103":
|
||||
{
|
||||
"Name": "API for the A110X Hall Effect Sensors",
|
||||
"Description": "UPM module for the A110X (A1101, A1102, A1103, A1104, and A1106) Hall Effect sensors. It outputs a digital signal indicating whether it is detecting a magnetic field with south polarity perpendicular to the sensor element.",
|
||||
"Aliases": ["a110x"],
|
||||
"Categories": ["halleffect"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["prototyping", "industrial"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": ["robok"],
|
||||
"Image": "a110x.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["A110XSample.java", "A110X_intrSample.java"],
|
||||
"Python": ["a110x.py"],
|
||||
"Node.js": ["a110x.js"],
|
||||
"C++": ["a110x-intr.cxx", "a110x.cxx"],
|
||||
"C": ["a110x.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Vcc": {"unit": "V", "low" : 3.8, "high": 24},
|
||||
"Ioutoff" : {"unit": "uA", "low" : 0.0, "high": 10},
|
||||
"Supply Current": {"unit": "mA", "low": 3.8, "high": 7.5},
|
||||
"Operate Point": {"unit": "G", "low": 220, "high": 340},
|
||||
"Release Point": {"unit": "G", "low": 165, "high": 285},
|
||||
"Hysteresis": {"unit": "G", "low": 30, "high": 80}
|
||||
},
|
||||
"Platforms":
|
||||
{
|
||||
"Intel Joule Module":
|
||||
{
|
||||
"Notes": ["Requires pull-up resistors with carrier board"],
|
||||
"Images": [""]
|
||||
}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["http://wiki.seeed.cc/Grove-Hall_Sensor/", "https://www.seeedstudio.com/grove-hall-sensor-p-965.html"],
|
||||
"Datasheets": ["http://www.allegromicro.com/en/Products/Part_Numbers/1101/1101.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
},
|
||||
"a1104":
|
||||
{
|
||||
"Name": "API for the A110X Hall Effect Sensors",
|
||||
"Description": "UPM module for the A110X (A1101, A1102, A1103, A1104, and A1106) Hall Effect sensors. It outputs a digital signal indicating whether it is detecting a magnetic field with south polarity perpendicular to the sensor element.",
|
||||
"Aliases": ["a110x"],
|
||||
"Categories": ["halleffect"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["prototyping", "industrial"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": ["robok"],
|
||||
"Image": "a110x.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["A110XSample.java", "A110X_intrSample.java"],
|
||||
"Python": ["a110x.py"],
|
||||
"Node.js": ["a110x.js"],
|
||||
"C++": ["a110x-intr.cxx", "a110x.cxx"],
|
||||
"C": ["a110x.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Vcc": {"unit": "V", "low" : 3.8, "high": 24},
|
||||
"Ioutoff" : {"unit": "uA", "low" : 0.0, "high": 10},
|
||||
"Supply Current": {"unit": "mA", "low": 3.8, "high": 7.5},
|
||||
"Operate Point": {"unit": "G", "low": 70, "high": 350},
|
||||
"Release Point": {"unit": "G", "low": 50, "high": 330},
|
||||
"Hysteresis": {"unit": "G", "low": 20}
|
||||
},
|
||||
"Platforms":
|
||||
{
|
||||
"Intel Joule Module":
|
||||
{
|
||||
"Notes": ["Requires pull-up resistors with carrier board"],
|
||||
"Images": [""]
|
||||
}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/grove-hall-sensor-p-965.html"],
|
||||
"Datasheets": ["http://www.allegromicro.com/en/Products/Part_Numbers/1101/1101.pdf"],
|
||||
"Schematics": ["https://learn.adafruit.com/assets/26693"]
|
||||
}
|
||||
},
|
||||
"a1106":
|
||||
{
|
||||
"Name": "API for the A110X Hall Effect Sensors",
|
||||
"Description": "UPM module for the A110X (A1101, A1102, A1103, A1104, and A1106) Hall Effect sensors. It outputs a digital signal indicating whether it is detecting a magnetic field with south polarity perpendicular to the sensor element.",
|
||||
"Aliases": ["a110x"],
|
||||
"Categories": ["halleffect"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["prototyping", "industrial"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": ["robok"],
|
||||
"Image": "a110x.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["A110XSample.java", "A110X_intrSample.java"],
|
||||
"Python": ["a110x.py"],
|
||||
"Node.js": ["a110x.js"],
|
||||
"C++": ["a110x-intr.cxx", "a110x.cxx"],
|
||||
"C": ["a110x.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Vcc": {"unit": "V", "low" : 3.8, "high": 24},
|
||||
"Ioutoff" : {"unit": "uA", "low" : 0.0, "high": 10},
|
||||
"Supply Current": {"unit": "mA", "low": 3.8, "high": 7.5},
|
||||
"Operate Point": {"unit": "G", "low": 280, "high": 400},
|
||||
"Release Point": {"unit": "G", "low": 180, "high": 300},
|
||||
"Hysteresis": {"unit": "G", "low": 70, "high": 140}
|
||||
},
|
||||
"Platforms":
|
||||
{
|
||||
"Intel Joule Module":
|
||||
{
|
||||
"Notes": ["Requires pull-up resistors with carrier board"],
|
||||
"Images": [""]
|
||||
}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/grove-hall-sensor-p-965.html"],
|
||||
"Datasheets": ["http://www.allegromicro.com/en/Products/Part_Numbers/1101/1101.pdf"],
|
||||
"Schematics": ["https://learn.adafruit.com/assets/26693"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
{
|
||||
"Library": "ad8232",
|
||||
"Description": "Single Lead Heart Rate Monitor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"AD8232":
|
||||
{
|
||||
"Name": "AD8232 Heart Rate Monitor Library",
|
||||
"Description": "This module simply spits out the ADC values reported by the sensor, with the intent to send that data, via serial or network port, somewhere to another piece of software running on a computer that plots the data for you, like an EKG.",
|
||||
"Aliases": ["ad8232"],
|
||||
"Categories": ["heartrate"],
|
||||
"Connections": ["gpio", "aio"],
|
||||
"Project Type": ["medical"],
|
||||
"Manufacturers": ["sparkfun"],
|
||||
"Kits": [],
|
||||
"Image": "ad8232.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["Ad8232Example.java"],
|
||||
"Python": ["ad8232.py"],
|
||||
"Node.js": ["ad8232.js"],
|
||||
"C++": ["ad8232.cxx"],
|
||||
"C": ["bmp280.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Vdd": {"unit": "V", "low" : 2.0, "high": 3.5},
|
||||
"ESD Rating": {"unit": "kV", "low": 8}
|
||||
},
|
||||
"Platforms":
|
||||
{
|
||||
"Intel Joule Module":
|
||||
{
|
||||
"Notes": ["Sensor must be driven at 3.3v only."],
|
||||
"Images": [""]
|
||||
}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.sparkfun.com/products/12650"],
|
||||
"Datasheets": ["https://cdn.sparkfun.com/datasheets/Sensors/Biometric/AD8232.pdf"],
|
||||
"Schematics": ["https://cdn.sparkfun.com/datasheets/Sensors/Biometric/AD8232_Heart_Rate_Monitor_v10.pdf"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
{
|
||||
"Library": "adafruitms1438",
|
||||
"Description": "Module for the Adafruit Motor Shield 1438",
|
||||
"Sensor Class":
|
||||
{
|
||||
"adafruitms1438":
|
||||
{
|
||||
"Name": "API for the AdafruitMS1438 Motor Shield",
|
||||
"Description": "This class implements support for the stepper and DC motors that can be connected to this Motor Shield.",
|
||||
"Aliases": ["adafruitms1438"],
|
||||
"Categories": ["motor"],
|
||||
"Connections": ["i2c"],
|
||||
"Project Type": ["motor"],
|
||||
"Manufacturers": ["adafruit"],
|
||||
"Kits": [],
|
||||
"Image": "adafruitms1438.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": ["adafruitms1438-stepper.py", "adafruitms1438.py"],
|
||||
"Node.js": ["adafruitms1438-stepper.js", "adafruitms1438.js"],
|
||||
"C++": ["adafruitms1438-stepper.cxx", "adafruitms1438.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Vmotor": {"unit": "V", "low": 4.5, "high": 13.5},
|
||||
"Amotor": {"unit": "A", "high": 1.2},
|
||||
"Apeak": {"unit": "A", "high": 3},
|
||||
"Vlogic": {"unit": "V", "low": 3.3, "high": 5}
|
||||
},
|
||||
"Platforms":
|
||||
{
|
||||
"Intel Joule Module":
|
||||
{
|
||||
"Notes": ["The two servo connections are not controlled by the PCA9685 controller (or this class). They are connected directly to digital PWM pins 9 and 10 on the Arduino* breakout board."],
|
||||
"Images": [""]
|
||||
}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.adafruit.com/products/1438"],
|
||||
"Datasheets": ["https://cdn-shop.adafruit.com/datasheets/TB6612FNG_datasheet_en_20121101.pdf"],
|
||||
"Schematics": ["https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,47 +0,0 @@
|
||||
{
|
||||
"Library": "adafruitss",
|
||||
"Description": "Adafruit Servo Shield",
|
||||
"Sensor Class":
|
||||
{
|
||||
"adafruitss":
|
||||
{
|
||||
"Name": "Adafruit PCA9685-based Servo Shield library",
|
||||
"Description": "UPM library for the PCA9685-based Adafruit 16-channel servo shield.",
|
||||
"Aliases": ["adafruitss"],
|
||||
"Categories": ["servos"],
|
||||
"Connections": ["i2c"],
|
||||
"Project Type": ["servos"],
|
||||
"Manufacturers": ["adafruit"],
|
||||
"Kits": [],
|
||||
"Image": "adafruitss.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": [],
|
||||
"Node.js": [],
|
||||
"C++": ["adafruitss.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Vmotor": {"unit": "v", "low": 0, "high": 6},
|
||||
"Vlogic": {"unit": "V", "low": 3.3, "high": 5},
|
||||
"PWM Frequency": {"unit": "KHz", "high": 1.6}
|
||||
},
|
||||
"Platforms":
|
||||
{
|
||||
"Intel Joule Module":
|
||||
{
|
||||
"Notes": ["If 3 or more GWS servos are attached, results could be unpredictable. Adafruit Industries recommend installing a capacitor on the board, which should alleviate the issue. Sizing depends on servos and their number."],
|
||||
"Images": [""]
|
||||
}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["http://www.adafruit.com/product/1411"],
|
||||
"Datasheets": ["https://cdn-shop.adafruit.com/datasheets/PCA9685.pdf"],
|
||||
"Schematics": ["https://learn.adafruit.com/assets/36081"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,47 +0,0 @@
|
||||
{
|
||||
"Library": "adc121c021",
|
||||
"Description": "I2C 12-bit Analog to Digital Converter with Alert Pin",
|
||||
"Sensor Class":
|
||||
{
|
||||
"adc121c021":
|
||||
{
|
||||
"Name": "API for the ADC121C021 I2C Analog-to-Digital Converter",
|
||||
"Description": "UPM module for the ADC121C021 12-bit analog-to-digital converter (ADC). By constantly providing a reference voltage, this sensor helps increase the accuracy of a value collected from an analog sensor.",
|
||||
"Aliases": ["adc121c021"],
|
||||
"Categories": ["aio"],
|
||||
"Connections": ["i2c"],
|
||||
"Project Type": ["prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "adc121c021.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["ADC121C021Sample.java"],
|
||||
"Python": ["adc121c021.py"],
|
||||
"Node.js": ["adc121c021.js"],
|
||||
"C++": ["adc121c021.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Working Voltage": {"unit": "v", "low" : 5.0, "high": 5.0},
|
||||
"Resolution" : {"unit": "Bit", "low" : 12, "high": 12},
|
||||
"Sample Rate": {"unit": "ksps", "low" : 188.9, "high": 188.9}
|
||||
},
|
||||
"Platforms":
|
||||
{
|
||||
"Intel Joule Module":
|
||||
{
|
||||
"Notes": ["Requires pull-up resistors with carrier board"],
|
||||
"Images": [""]
|
||||
}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-I2C-ADC-p-1580.html"],
|
||||
"Datasheets": ["https://raw.githubusercontent.com/SeeedDocument/Grove-I2C_ADC/master/res/ADC121C021_Datasheet.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
{
|
||||
"Library": "adis16448",
|
||||
"Description": "Industrial Grade Ten Degrees of Freedom Inertial Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"adis16448":
|
||||
{
|
||||
"Name": "API for the Analog Devices ADIS16448 Accelerometer",
|
||||
"Description": "This is an industrial-grade accelerometer by Analog Devices.",
|
||||
"Aliases": ["adis16448"],
|
||||
"Categories": ["imu"],
|
||||
"Connections": ["spi"],
|
||||
"Project Type": ["prototyping", "industrial"],
|
||||
"Manufacturers": ["generic"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": [],
|
||||
"Node.js": ["adis16448.js"],
|
||||
"C++": ["adis16448.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Working Voltage": {"unit": "v", "low": 3.15, "high": 3.45},
|
||||
"Working Current": {"unit": "mA", "low": 76, "high": 104}
|
||||
},
|
||||
"Platforms":
|
||||
{
|
||||
"Intel Joule Module":
|
||||
{
|
||||
"Notes": ["Requires pull-up resistors with carrier board"],
|
||||
"Images": [""]
|
||||
}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["http://www.analog.com/en/products/sensors/inertial-measurement-units/adis16448.html"],
|
||||
"Datasheets": ["http://www.analog.com/media/en/technical-documentation/data-sheets/ADIS16448.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
{
|
||||
"Library": "adxl335",
|
||||
"Description": "Low-power, 3-axis +/- 3 g Accelerometer",
|
||||
"Sensor Class":
|
||||
{
|
||||
"adxl335":
|
||||
{
|
||||
"Name": "API for the Analog Devices ADIS16448 Accelerometer",
|
||||
"Description": "UPM module for the ADXL335 3-axis analog accelerometer. This was tested on a Grove 3-axis Analog Accelerometer. It uses 3 analog pins, one for each axis: X, Y, and Z.",
|
||||
"Aliases": ["adxl335"],
|
||||
"Categories": ["imu", "accelerometers"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["prototyping", "industrial"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "adxl335.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": ["adxl335.py"],
|
||||
"Node.js": ["adxl335.js"],
|
||||
"C++": ["adxl335.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Working Voltage": {"unit": "v", "low": 1.8, "high": 3.6},
|
||||
"Working Current": {"unit": "uA", "low": 350, "high": 350}
|
||||
},
|
||||
"Platforms":
|
||||
{
|
||||
"Intel Joule Module":
|
||||
{
|
||||
"Notes": ["Requires pull-up resistors with carrier board"],
|
||||
"Images": [""]
|
||||
}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["http://www.analog.com/en/products/mems/accelerometers/adxl335.html"],
|
||||
"Datasheets": ["http://www.analog.com/media/en/technical-documentation/data-sheets/ADXL335.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
{
|
||||
"Library": "adxl345",
|
||||
"Description": "3-axis, +/- 2/4/8/16 g Digital Accelerometer",
|
||||
"Sensor Class":
|
||||
{
|
||||
"adxl345":
|
||||
{
|
||||
"Name": "API for the ADXL345 3-Axis Digital Accelerometer",
|
||||
"Description": "ADXL345 is a 3-axis digital accelerometer. The sensor has configurable resolutions to measure +/- 2g, +/- 4g, +/- 8g, or +/- 16g.",
|
||||
"Aliases": ["adxl335"],
|
||||
"Categories": ["imu", "accelerometers"],
|
||||
"Connections": ["i2c"],
|
||||
"Project Type": ["prototyping", "industrial"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "adxl335.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": ["adxl345.py"],
|
||||
"Node.js": ["adxl345.js"],
|
||||
"C++": ["adxl345.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Working Voltage": {"unit": "v", "low": 2, "high": 3.6},
|
||||
"Working Current": {"unit": "uA", "low": 30, "high": 140}
|
||||
},
|
||||
"Platforms":
|
||||
{
|
||||
"Intel Edison":
|
||||
{
|
||||
"Notes": ["The Grove* version of the sensor is incompatible with and not detected on the I2C bus by the Intel(R) Edison using an Arduino* breakout board at 5V (3V works fine)."],
|
||||
"Images": [""]
|
||||
}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["http://www.analog.com/en/products/mems/accelerometers/adxl345.html"],
|
||||
"Datasheets": ["http://www.seeedstudio.com/wiki/images/2/2c/ADXL345_datasheet.pdf", "http://www.analog.com/media/en/technical-documentation/data-sheets/ADXL345.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
{
|
||||
"Library": "adxrs610",
|
||||
"Description": "Gyro Breakout Board (300 Degrees/second)",
|
||||
"Sensor Class":
|
||||
{
|
||||
"adxrs610":
|
||||
{
|
||||
"Name": "DFRobot ADXRS610 Gyro Breakout Board",
|
||||
"Description": "The ADXRS610 is a MEMS based single axis gyroscope with a range of +/- 300 degrees/sec. It also incorporates a temperature sensing unit that can be used for advanced calibration. This sensor returns an analog voltage proportional to the rotation about the Z-axis in degrees/sec. The temperature component returns a proportional analog values in degrees C. This driver was developed using the DFRobot ADXRS610 Gyro Beakout board.",
|
||||
"Aliases": ["adxrs610"],
|
||||
"Categories": ["imu", "gyroscope"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["prototyping", "industrial"],
|
||||
"Manufacturers": ["dfrobot"],
|
||||
"Kits": [],
|
||||
"Image": "adxrs610.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": ["adxrs610.py"],
|
||||
"Node.js": ["adxrs610.js"],
|
||||
"C++": ["adxrs610.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Vdd": {"unit": "v", "low" : 5.0, "high": 5.0},
|
||||
"Quiescent Current": {"unit": "mA", "low": 3.5, "high": 4.5}
|
||||
},
|
||||
"Platforms":
|
||||
{
|
||||
"Intel Joule Module":
|
||||
{
|
||||
"Notes": ["Requires pull-up resistors with carrier board"],
|
||||
"Images": [""]
|
||||
}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.dfrobot.com/product-642.html"],
|
||||
"Datasheets": ["http://image.dfrobot.com/image/data/SEN0070/ADXRS610%20datasheet_EN.pdf"],
|
||||
"Schematics": ["http://image.dfrobot.com/image/data/SEN0070/ADXRS610_Gyro_Breakout.pdf"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,47 +0,0 @@
|
||||
{
|
||||
"Library": "am2315",
|
||||
"Description": "Digital Temperature and Humidity Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"am2315":
|
||||
{
|
||||
"Name": "API for the AM2315 Temperature & Humidity Sensor",
|
||||
"Description": "The AM2315 is a digital humidity sensor with temperature output. RH reports between 0 and 100%, and the temperature range is -40 to +125 degC. The sampling period of this sensor is 2 seconds. Reads occurring more often than that return cached data.",
|
||||
"Aliases": ["am2315"],
|
||||
"Categories": ["humidity", "temperature"],
|
||||
"Connections": ["i2c"],
|
||||
"Project Type": ["prototyping", "industrial"],
|
||||
"Manufacturers": ["adafruit"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["AM2315Example.java"],
|
||||
"Python": [],
|
||||
"Node.js": [],
|
||||
"C++": ["am2315.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Vcc": {"unit": "v", "low" : 3.5, "high": 5.5},
|
||||
"Current Draw": {"unit": "mA", "low": 0.0, "high": 10},
|
||||
"Temperature Sensor Range": {"unit": "degC", "low": -20, "high": 80},
|
||||
"Humidity Sensor Range": {"unit": "%", "low": 0, "high": 100}
|
||||
},
|
||||
"Platforms":
|
||||
{
|
||||
"Intel Joule Module":
|
||||
{
|
||||
"Notes": ["Requires pull-up resistors with carrier board"],
|
||||
"Images": [""]
|
||||
}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["http://www.adafruit.com/products/1293"],
|
||||
"Datasheets": ["https://cdn-shop.adafruit.com/datasheets/AM2315.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
{
|
||||
"Library": "bmx050",
|
||||
"Description": "Bosch 3-axis Magnetometer",
|
||||
"Sensor Class":
|
||||
{
|
||||
"BME280":
|
||||
{
|
||||
"Name": "3-axis Geomagnetic Sensor",
|
||||
"Description": "The BMM150 is a standalone geomagnetic sensor for consumer market applications. It allows measurements of the magnetic field in three perpendicular axes. Based on Bosch's proprietary FlipCore technology, performance and features of BMM150 are carefully tuned and perfectly match the demanding requirements of all 3-axis mobile applications such as electronic compass, navigation or augmented reality. An evaluation circuitry (ASIC) converts the output of the geomagnetic sensor to digital results which can be read out over the industry standard digital interfaces (SPI and I2C). Not all functionality of this chip has been implemented in this driver, however all the pieces are present to add any desired functionality. This driver supports both I2C (default) and SPI operation.",
|
||||
"Aliases": ["bme280"],
|
||||
"Categories": ["pressure", "humidity", "temperature"],
|
||||
"Connections": ["gpio", "i2c", "spi"],
|
||||
"Project Type": ["prototyping", "industrial"],
|
||||
"Manufacturers": ["bosch"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["BMM150_Example.java"],
|
||||
"Python": ["bmm150.py"],
|
||||
"Node.js": ["bmm150.js"],
|
||||
"C++": ["bmm150.cxx"],
|
||||
"C": ["bmm150.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Vdd": {"unit": "v", "low" : 1.62, "high": 3.6},
|
||||
"Temperature Range": {"unit": "degC", "low" : -40, "high": 85},
|
||||
"Sensing Range": {"unit": "uT (±)", "low": 1300, "high": 2500}
|
||||
},
|
||||
"Platforms":
|
||||
{
|
||||
"Intel Joule Module":
|
||||
{
|
||||
"Notes": ["Requires pull-up resistors with carrier board"],
|
||||
"Images": [""]
|
||||
}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.bosch-sensortec.com/bst/products/all_products/bmm150"],
|
||||
"Datasheets": ["https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BMM150-DS001-01.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
{
|
||||
"Library": "bmpx8x",
|
||||
"Description": "BMP Atmospheric Pressure Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"bmpx8x":
|
||||
{
|
||||
"Name": "BMP Atmospheric Pressure Sensor",
|
||||
"Description": "The BME280 is as combined digital humidity, pressure and temperature sensor based on proven sensing principles. The sensor module is housed in an extremely compact metal-lid LGA package with a footprint of only 2.5 * 2.5 mm2 with a height of 0.93 mm. Its small dimensions and its low power consumption allow the implementation in battery driven devices such as handsets, GPS modules or watches. The BME280 is register and performance compatible to the Bosch Sensortec BMP280 digital pressure sensor",
|
||||
"Aliases": ["bmpx8x"],
|
||||
"Categories": ["pressure"],
|
||||
"Connections": ["i2c"],
|
||||
"Project Type": ["prototyping", "industrial"],
|
||||
"Manufacturers": ["seeed", "adafruit", "sparkfun"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["BMPX8XSample.java"],
|
||||
"Python": ["bmpx8x.py"],
|
||||
"Node.js": ["bmpx8x.js"],
|
||||
"C++": ["bmpx8x.cxx"],
|
||||
"C": ["bmpx8x.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Vdd": {"unit": "v", "low" : 1.8, "high": 3.6},
|
||||
"Supply Current": {"unit": "uA", "low": 3, "high": 32},
|
||||
"Peak Current": {"unit": "uA", "low": 650, "high": 1000},
|
||||
"Standby Current": {"unit": "uA", "low": 0.1, "high": 0.1},
|
||||
"Pressure Range": {"unit": "hPa", "low" : 300, "high": 1100},
|
||||
"Temperature Range": {"unit": "C", "low" : -40, "high": 85}
|
||||
},
|
||||
"Platforms":
|
||||
{
|
||||
"Intel Joule Module":
|
||||
{
|
||||
"Notes": ["Requires pull-up resistors with carrier board"],
|
||||
"Images": [""]
|
||||
}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.adafruit.com/product/1900"],
|
||||
"Datasheets": ["https://cdn-shop.adafruit.com/datasheets/1900_BMP183.pdf", "https://www.sparkfun.com/datasheets/Components/General/BST-BMP085-DS000-05.pdf"],
|
||||
"Schematics": ["https://learn.adafruit.com/adafruit-bmp183-spi-barometric-pressure-and-altitude-sensor/downloads#schematic"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
{
|
||||
"Library": "bmx055",
|
||||
"Description": "BMX055 9-axis Sensor Module",
|
||||
"Sensor Class":
|
||||
{
|
||||
"BME280":
|
||||
{
|
||||
"Name": "BMX055 9-axis Sensor Module",
|
||||
"Description": "The BMX055 is an integrated 9-axis sensor for the detection of movements and rotations and magnetic heading. It comprises the full functionality of a triaxial, low-g acceleration sensor, a triaxial angular rate sensor and a triaxial geomagnetic sensor. The BMX055 senses orientation, tilt, motion, acceleration, rotation, shock, vibration and heading in cell phones, handhelds, computer peripherals, man-machine interfaces, virtual reality features and game controllers. The BMX055 is essentially 3 separate devices in one: the BMA250E Accelerometer, the BMG160 Gyroscope, and the BMM150 Magnetometer. They are completely independant of each other. This driver provides a very simple interface to these 3 devices. If finer control is desired, you should just use the separate BMA25E, BMG160, and BMM150 device classes directly. This driver simply initializes all three devices, and provides a mechanism to read accelerometer, gyroscope and magnetometer data from them.",
|
||||
"Aliases": ["bmx055"],
|
||||
"Categories": ["imu", "accelerometer", "gyroscope", "magnetometer"],
|
||||
"Connections": ["gpio", "i2c", "spi"],
|
||||
"Project Type": ["prototyping", "industrial"],
|
||||
"Manufacturers": ["bosch"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["BMX055_Example.java"],
|
||||
"Python": ["bmx055.py"],
|
||||
"Node.js": ["bmx055.js"],
|
||||
"C++": ["bmx055.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Vdd": {"unit": "v", "low" : 2.4, "high": 3.6},
|
||||
"Measurement Range (Accelerometer)": {"unit": "g", "low": 2, "high": 16},
|
||||
"Measurement Range (Gyroscope)": {"unit": "deg/s", "low": 125, "high": 2000},
|
||||
"Measurement Range (Magnetometer)": {"unit": "LSB/uT", "typ": 3.3},
|
||||
"Iavg": {"unit": "uA", "low" : 130, "high": 5000},
|
||||
"Temperature Range": {"unit": "C", "low" : -40, "high": 85}
|
||||
},
|
||||
"Platforms":
|
||||
{
|
||||
"Intel Joule Module":
|
||||
{
|
||||
"Notes": ["Requires pull-up resistors with carrier board"],
|
||||
"Images": [""]
|
||||
}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.bosch-sensortec.com/bst/products/all_products/bmx055"],
|
||||
"Datasheets": ["https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BMX055-DS000-02.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -51,26 +51,23 @@ static void _clear_data(const bno055_context dev)
|
||||
}
|
||||
|
||||
// load fusion data
|
||||
static upm_result_t _update_fusion_data(const bno055_context dev)
|
||||
static void _update_fusion_data(const bno055_context dev)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
// bail (with success code) if we are in config mode, or aren't in
|
||||
// a fusion mode...
|
||||
// bail if we are in config mode, or aren't in a fusion mode...
|
||||
if (dev->currentMode == BNO055_OPERATION_MODE_CONFIGMODE ||
|
||||
dev->currentMode < BNO055_OPERATION_MODE_IMU)
|
||||
return UPM_SUCCESS;
|
||||
return;
|
||||
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 0, false);
|
||||
|
||||
// FIXME/MAYBE? - abort early if SYS calibration is == 0?
|
||||
|
||||
const int fusionBytes = 26;
|
||||
uint8_t buf[fusionBytes];
|
||||
|
||||
if (bno055_read_regs(dev, BNO055_REG_EUL_HEADING_LSB, buf, fusionBytes))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_read_regs(dev, BNO055_REG_EUL_HEADING_LSB, buf, fusionBytes);
|
||||
|
||||
dev->eulHeading = INT16_TO_FLOAT(buf[0], buf[1]);
|
||||
dev->eulRoll = INT16_TO_FLOAT(buf[2], buf[3]);
|
||||
@ -88,27 +85,23 @@ static upm_result_t _update_fusion_data(const bno055_context dev)
|
||||
dev->grvX = INT16_TO_FLOAT(buf[20], buf[21]);
|
||||
dev->grvY = INT16_TO_FLOAT(buf[22], buf[23]);
|
||||
dev->grvZ = INT16_TO_FLOAT(buf[24], buf[25]);
|
||||
|
||||
return UPM_SUCCESS;
|
||||
}
|
||||
|
||||
// update non-fusion data
|
||||
static upm_result_t _update_non_fusion_data(const bno055_context dev)
|
||||
static void _update_non_fusion_data(const bno055_context dev)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
// bail (with success code) if we are in config mode...
|
||||
// bail if we are in config mode...
|
||||
if (dev->currentMode == BNO055_OPERATION_MODE_CONFIGMODE)
|
||||
return UPM_SUCCESS;
|
||||
return;
|
||||
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 0, false);
|
||||
|
||||
const int nonFusionBytes = 18;
|
||||
uint8_t buf[nonFusionBytes];
|
||||
|
||||
if (bno055_read_regs(dev, BNO055_REG_ACC_DATA_X_LSB, buf, nonFusionBytes))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_read_regs(dev, BNO055_REG_ACC_DATA_X_LSB, buf, nonFusionBytes);
|
||||
|
||||
dev->accX = INT16_TO_FLOAT(buf[0], buf[1]);
|
||||
dev->accY = INT16_TO_FLOAT(buf[2], buf[3]);
|
||||
@ -121,8 +114,6 @@ static upm_result_t _update_non_fusion_data(const bno055_context dev)
|
||||
dev->gyrX = INT16_TO_FLOAT(buf[12], buf[13]);
|
||||
dev->gyrY = INT16_TO_FLOAT(buf[14], buf[15]);
|
||||
dev->gyrZ = INT16_TO_FLOAT(buf[16], buf[17]);
|
||||
|
||||
return UPM_SUCCESS;
|
||||
}
|
||||
|
||||
// init
|
||||
@ -172,14 +163,7 @@ bno055_context bno055_init(int bus, uint8_t addr)
|
||||
|
||||
// check the chip id. This has to be done after forcibly setting
|
||||
// page 0, as that is the only page where the chip id is present.
|
||||
uint8_t chipID = 0;
|
||||
if (bno055_get_chip_id(dev, &chipID))
|
||||
{
|
||||
printf("%s: Could not read chip id\n", __FUNCTION__);
|
||||
bno055_close(dev);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
uint8_t chipID = bno055_get_chip_id(dev);
|
||||
if (chipID != BNO055_CHIPID)
|
||||
{
|
||||
printf("%s: Invalid chip ID. Expected 0x%02x, got 0x%02x\n",
|
||||
@ -188,41 +172,34 @@ bno055_context bno055_init(int bus, uint8_t addr)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
upm_result_t urv = UPM_SUCCESS;
|
||||
// if the above two accesses succeeded, the rest should succeed
|
||||
|
||||
// set config mode
|
||||
urv += bno055_set_operation_mode(dev, BNO055_OPERATION_MODE_CONFIGMODE);
|
||||
bno055_set_operation_mode(dev, BNO055_OPERATION_MODE_CONFIGMODE);
|
||||
|
||||
// default to internal clock
|
||||
urv += bno055_set_clock_external(dev, false);
|
||||
bno055_set_clock_external(dev, false);
|
||||
|
||||
// we specifically avoid doing a reset so that if the device is
|
||||
// already calibrated, it will remain so.
|
||||
|
||||
// we always use C for temperature
|
||||
urv += bno055_set_temperature_units_celsius(dev);
|
||||
bno055_set_temperature_units_celsius(dev);
|
||||
|
||||
// default to accelerometer temp
|
||||
urv += bno055_set_temperature_source(dev, BNO055_TEMP_SOURCE_ACC);
|
||||
bno055_set_temperature_source(dev, BNO055_TEMP_SOURCE_ACC);
|
||||
|
||||
// set accel units to m/s^2
|
||||
urv += bno055_set_accelerometer_units(dev, false);
|
||||
bno055_set_accelerometer_units(dev, false);
|
||||
|
||||
// set gyro units to degrees
|
||||
urv += bno055_set_gyroscope_units(dev, false);
|
||||
bno055_set_gyroscope_units(dev, false);
|
||||
|
||||
// set Euler units to degrees
|
||||
urv += bno055_set_euler_units(dev, false);
|
||||
bno055_set_euler_units(dev, false);
|
||||
|
||||
// by default, we set the operating mode to the NDOF fusion mode
|
||||
urv += bno055_set_operation_mode(dev, BNO055_OPERATION_MODE_NDOF);
|
||||
|
||||
// if any of those failed, bail
|
||||
if (urv != UPM_SUCCESS)
|
||||
{
|
||||
printf("%s: Initial device configuration failed\n", __FUNCTION__);
|
||||
bno055_close(dev);
|
||||
return NULL;
|
||||
}
|
||||
bno055_set_operation_mode(dev, BNO055_OPERATION_MODE_NDOF);
|
||||
|
||||
return dev;
|
||||
}
|
||||
@ -243,41 +220,34 @@ upm_result_t bno055_update(const bno055_context dev)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
upm_result_t rv = UPM_SUCCESS;
|
||||
if ((rv = bno055_set_page(dev, 0, false)))
|
||||
return rv;
|
||||
|
||||
// temperature first, always in Celsius
|
||||
uint8_t tempreg = 0;
|
||||
if (bno055_read_reg(dev, BNO055_REG_TEMPERATURE, &tempreg))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
dev->temperature = (float)((int8_t)bno055_read_reg(dev,
|
||||
BNO055_REG_TEMPERATURE));
|
||||
|
||||
dev->temperature = (float)((int8_t)tempreg);
|
||||
_update_fusion_data(dev);
|
||||
_update_non_fusion_data(dev);
|
||||
|
||||
if (_update_fusion_data(dev))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
if (_update_non_fusion_data(dev))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
|
||||
return UPM_SUCCESS;
|
||||
return rv;
|
||||
}
|
||||
|
||||
upm_result_t bno055_read_reg(const bno055_context dev, uint8_t reg,
|
||||
uint8_t *retval)
|
||||
uint8_t bno055_read_reg(const bno055_context dev, uint8_t reg)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
int rv = mraa_i2c_read_byte_data(dev->i2c, reg);
|
||||
|
||||
if (rv < 0)
|
||||
{
|
||||
printf("%s: mraa_i2c_read_byte_data() failed\n",
|
||||
printf("%s: mraa_i2c_read_byte_data() failed, returning 0\n",
|
||||
__FUNCTION__);
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (retval)
|
||||
*retval = (uint8_t)(rv & 0xff);
|
||||
|
||||
return UPM_SUCCESS;
|
||||
return (uint8_t)rv;
|
||||
}
|
||||
|
||||
upm_result_t bno055_read_regs(const bno055_context dev, uint8_t reg,
|
||||
@ -286,11 +256,7 @@ upm_result_t bno055_read_regs(const bno055_context dev, uint8_t reg,
|
||||
assert(dev != NULL);
|
||||
|
||||
if (mraa_i2c_read_bytes_data(dev->i2c, reg, buffer, len) < 0)
|
||||
{
|
||||
printf("%s: mraa_i2c_read_bytes() failed\n",
|
||||
__FUNCTION__);
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
}
|
||||
|
||||
return UPM_SUCCESS;
|
||||
}
|
||||
@ -301,11 +267,7 @@ upm_result_t bno055_write_reg(const bno055_context dev,
|
||||
assert(dev != NULL);
|
||||
|
||||
if (mraa_i2c_write_byte_data(dev->i2c, val, reg))
|
||||
{
|
||||
printf("%s: mraa_i2c_write_byte_data() failed\n",
|
||||
__FUNCTION__);
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
}
|
||||
|
||||
return UPM_SUCCESS;
|
||||
}
|
||||
@ -322,82 +284,62 @@ upm_result_t bno055_write_regs(const bno055_context dev, uint8_t reg,
|
||||
buf[i+1] = buffer[i];
|
||||
|
||||
if (mraa_i2c_write(dev->i2c, buf, len + 1))
|
||||
{
|
||||
printf("%s: mraa_i2c_write() failed\n",
|
||||
__FUNCTION__);
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
}
|
||||
|
||||
return UPM_SUCCESS;
|
||||
}
|
||||
|
||||
upm_result_t bno055_get_chip_id(const bno055_context dev, uint8_t *chip_id)
|
||||
uint8_t bno055_get_chip_id(const bno055_context dev)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
|
||||
return bno055_read_reg(dev, BNO055_REG_CHIP_ID, chip_id);
|
||||
bno055_set_page(dev, 0, false);
|
||||
return bno055_read_reg(dev, BNO055_REG_CHIP_ID);
|
||||
}
|
||||
|
||||
upm_result_t bno055_get_acc_id(const bno055_context dev, uint8_t *chip_id)
|
||||
uint8_t bno055_get_acc_id(const bno055_context dev)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
|
||||
return bno055_read_reg(dev, BNO055_REG_ACC_ID, chip_id);
|
||||
bno055_set_page(dev, 0, false);
|
||||
return bno055_read_reg(dev, BNO055_REG_ACC_ID);
|
||||
}
|
||||
|
||||
upm_result_t bno055_get_mag_id(const bno055_context dev, uint8_t *chip_id)
|
||||
uint8_t bno055_get_mag_id(const bno055_context dev)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
|
||||
return bno055_read_reg(dev, BNO055_REG_MAG_ID, chip_id);
|
||||
bno055_set_page(dev, 0, false);
|
||||
return bno055_read_reg(dev, BNO055_REG_MAG_ID);
|
||||
}
|
||||
|
||||
upm_result_t bno055_get_gyr_id(const bno055_context dev, uint8_t *chip_id)
|
||||
uint8_t bno055_get_gyr_id(const bno055_context dev)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
|
||||
return bno055_read_reg(dev, BNO055_REG_GYR_ID, chip_id);
|
||||
bno055_set_page(dev, 0, false);
|
||||
return bno055_read_reg(dev, BNO055_REG_GYR_ID);
|
||||
}
|
||||
|
||||
upm_result_t bno055_get_sw_revision(const bno055_context dev, uint16_t *sw_rev)
|
||||
uint16_t bno055_get_sw_revision(const bno055_context dev)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 0, false);
|
||||
|
||||
uint8_t lsb = 0, msb = 0;
|
||||
if (bno055_read_reg(dev, BNO055_REG_SW_REV_ID_LSB, &lsb))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
if (bno055_read_reg(dev, BNO055_REG_SW_REV_ID_MSB, &msb))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
uint8_t lsb, msb;
|
||||
lsb = bno055_read_reg(dev, BNO055_REG_SW_REV_ID_LSB);
|
||||
msb = bno055_read_reg(dev, BNO055_REG_SW_REV_ID_MSB);
|
||||
|
||||
if (sw_rev)
|
||||
*sw_rev = (uint16_t)(lsb | (msb << 8));
|
||||
|
||||
return UPM_SUCCESS;
|
||||
return (uint16_t)(lsb | (msb << 8));
|
||||
}
|
||||
|
||||
upm_result_t bno055_get_bootloader_id(const bno055_context dev, uint8_t *bl_id)
|
||||
uint8_t bno055_get_bootloader_id(const bno055_context dev)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
|
||||
return bno055_read_reg(dev, BNO055_REG_BL_REV_ID, bl_id);
|
||||
bno055_set_page(dev, 0, false);
|
||||
return bno055_read_reg(dev, BNO055_REG_BL_REV_ID);
|
||||
}
|
||||
|
||||
upm_result_t bno055_set_page(const bno055_context dev, uint8_t page,
|
||||
@ -414,84 +356,64 @@ upm_result_t bno055_set_page(const bno055_context dev, uint8_t page,
|
||||
}
|
||||
|
||||
if (force || page != dev->currentPage)
|
||||
{
|
||||
if (bno055_write_reg(dev, BNO055_REG_PAGE_ID, page))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
}
|
||||
bno055_write_reg(dev, BNO055_REG_PAGE_ID, page);
|
||||
|
||||
dev->currentPage = page;
|
||||
return UPM_SUCCESS;
|
||||
}
|
||||
|
||||
upm_result_t bno055_set_clock_external(const bno055_context dev,
|
||||
bool extClock)
|
||||
void bno055_set_clock_external(const bno055_context dev, bool extClock)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 0, false);
|
||||
|
||||
// first we need to be in config mode
|
||||
BNO055_OPERATION_MODES_T currentMode = dev->currentMode;
|
||||
if (bno055_set_operation_mode(dev, BNO055_OPERATION_MODE_CONFIGMODE))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_operation_mode(dev, BNO055_OPERATION_MODE_CONFIGMODE);
|
||||
|
||||
uint8_t reg = 0;
|
||||
if (bno055_read_reg(dev, BNO055_REG_SYS_TRIGGER, ®))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
uint8_t reg = bno055_read_reg(dev, BNO055_REG_SYS_TRIGGER);
|
||||
|
||||
if (extClock)
|
||||
reg |= BNO055_SYS_TRIGGER_CLK_SEL;
|
||||
else
|
||||
reg &= ~BNO055_SYS_TRIGGER_CLK_SEL;
|
||||
|
||||
if (bno055_write_reg(dev, BNO055_REG_SYS_TRIGGER, reg))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_write_reg(dev, BNO055_REG_SYS_TRIGGER, reg);
|
||||
|
||||
// now reset our operating mode
|
||||
if (bno055_set_operation_mode(dev, currentMode))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
|
||||
return UPM_SUCCESS;
|
||||
bno055_set_operation_mode(dev, currentMode);
|
||||
}
|
||||
|
||||
upm_result_t bno055_set_temperature_source(const bno055_context dev,
|
||||
BNO055_TEMP_SOURCES_T src)
|
||||
void bno055_set_temperature_source(const bno055_context dev,
|
||||
BNO055_TEMP_SOURCES_T src)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
|
||||
return bno055_write_reg(dev, BNO055_REG_TEMP_SOURCE, src);
|
||||
bno055_set_page(dev, 0, false);
|
||||
bno055_write_reg(dev, BNO055_REG_TEMP_SOURCE, src);
|
||||
}
|
||||
|
||||
upm_result_t bno055_set_temperature_units_celsius(const bno055_context dev)
|
||||
void bno055_set_temperature_units_celsius(const bno055_context dev)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 0, false);
|
||||
|
||||
uint8_t reg = 0;
|
||||
if (bno055_read_reg(dev, BNO055_REG_UNIT_SEL, ®))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
uint8_t reg = bno055_read_reg(dev, BNO055_REG_UNIT_SEL);
|
||||
|
||||
reg &= ~BNO055_UNIT_SEL_TEMP_UNIT;
|
||||
|
||||
return bno055_write_reg(dev, BNO055_REG_UNIT_SEL, reg);
|
||||
bno055_write_reg(dev, BNO055_REG_UNIT_SEL, reg);
|
||||
}
|
||||
|
||||
upm_result_t bno055_set_accelerometer_units(const bno055_context dev, bool mg)
|
||||
void bno055_set_accelerometer_units(const bno055_context dev, bool mg)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 0, false);
|
||||
|
||||
uint8_t reg = 0;
|
||||
if (bno055_read_reg(dev, BNO055_REG_UNIT_SEL, ®))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
uint8_t reg = bno055_read_reg(dev, BNO055_REG_UNIT_SEL);
|
||||
|
||||
if (mg)
|
||||
{
|
||||
@ -504,19 +426,16 @@ upm_result_t bno055_set_accelerometer_units(const bno055_context dev, bool mg)
|
||||
dev->accUnitScale = 100.0;
|
||||
}
|
||||
|
||||
return bno055_write_reg(dev, BNO055_REG_UNIT_SEL, reg);
|
||||
bno055_write_reg(dev, BNO055_REG_UNIT_SEL, reg);
|
||||
}
|
||||
|
||||
upm_result_t bno055_set_gyroscope_units(const bno055_context dev, bool radians)
|
||||
void bno055_set_gyroscope_units(const bno055_context dev, bool radians)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 0, false);
|
||||
|
||||
uint8_t reg = 0;
|
||||
if (bno055_read_reg(dev, BNO055_REG_UNIT_SEL, ®))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
uint8_t reg = bno055_read_reg(dev, BNO055_REG_UNIT_SEL);
|
||||
|
||||
if (radians)
|
||||
{
|
||||
@ -529,19 +448,16 @@ upm_result_t bno055_set_gyroscope_units(const bno055_context dev, bool radians)
|
||||
dev->gyrUnitScale = 16.0;
|
||||
}
|
||||
|
||||
return bno055_write_reg(dev, BNO055_REG_UNIT_SEL, reg);
|
||||
bno055_write_reg(dev, BNO055_REG_UNIT_SEL, reg);
|
||||
}
|
||||
|
||||
upm_result_t bno055_set_euler_units(const bno055_context dev, bool radians)
|
||||
void bno055_set_euler_units(const bno055_context dev, bool radians)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 0, false);
|
||||
|
||||
uint8_t reg = 0;
|
||||
if (bno055_read_reg(dev, BNO055_REG_UNIT_SEL, ®))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
uint8_t reg = bno055_read_reg(dev, BNO055_REG_UNIT_SEL);
|
||||
|
||||
if (radians)
|
||||
{
|
||||
@ -554,51 +470,41 @@ upm_result_t bno055_set_euler_units(const bno055_context dev, bool radians)
|
||||
dev->eulUnitScale = 16.0;
|
||||
}
|
||||
|
||||
return bno055_write_reg(dev, BNO055_REG_UNIT_SEL, reg);
|
||||
bno055_write_reg(dev, BNO055_REG_UNIT_SEL, reg);
|
||||
}
|
||||
|
||||
upm_result_t bno055_set_operation_mode(const bno055_context dev,
|
||||
BNO055_OPERATION_MODES_T mode)
|
||||
void bno055_set_operation_mode(const bno055_context dev,
|
||||
BNO055_OPERATION_MODES_T mode)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 0, false);
|
||||
|
||||
// we clear all of our loaded data on mode changes
|
||||
_clear_data(dev);
|
||||
|
||||
uint8_t reg = 0;
|
||||
if (bno055_read_reg(dev, BNO055_REG_OPER_MODE, ®))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
uint8_t reg = bno055_read_reg(dev, BNO055_REG_OPER_MODE);
|
||||
|
||||
reg &= ~(_BNO055_OPR_MODE_OPERATION_MODE_MASK
|
||||
<< _BNO055_OPR_MODE_OPERATION_MODE_SHIFT);
|
||||
|
||||
reg |= (mode << _BNO055_OPR_MODE_OPERATION_MODE_SHIFT);
|
||||
|
||||
if (bno055_write_reg(dev, BNO055_REG_OPER_MODE, reg))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
|
||||
bno055_write_reg(dev, BNO055_REG_OPER_MODE, reg);
|
||||
dev->currentMode = mode;
|
||||
|
||||
upm_delay_us(30);
|
||||
|
||||
return UPM_SUCCESS;
|
||||
}
|
||||
|
||||
upm_result_t bno055_get_calibration_status(const bno055_context dev,
|
||||
int *mag, int *acc,
|
||||
int *gyr, int *sys)
|
||||
void bno055_get_calibration_status(const bno055_context dev,
|
||||
int *mag, int *acc,
|
||||
int *gyr, int *sys)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 0, false);
|
||||
|
||||
uint8_t reg = 0;
|
||||
if (bno055_read_reg(dev, BNO055_REG_CALIB_STAT, ®))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
uint8_t reg = bno055_read_reg(dev, BNO055_REG_CALIB_STAT);
|
||||
|
||||
if (mag)
|
||||
*mag = (reg >> _BNO055_CALIB_STAT_MAG_SHIFT)
|
||||
@ -615,8 +521,6 @@ upm_result_t bno055_get_calibration_status(const bno055_context dev,
|
||||
if (sys)
|
||||
*sys = (reg >> _BNO055_CALIB_STAT_SYS_SHIFT)
|
||||
& _BNO055_CALIB_STAT_SYS_MASK;
|
||||
|
||||
return UPM_SUCCESS;
|
||||
}
|
||||
|
||||
bool bno055_is_fully_calibrated(const bno055_context dev)
|
||||
@ -625,9 +529,7 @@ bool bno055_is_fully_calibrated(const bno055_context dev)
|
||||
|
||||
int mag, acc, gyr, sys;
|
||||
|
||||
// fail on error
|
||||
if (bno055_get_calibration_status(dev, &mag, &acc, &gyr, &sys))
|
||||
return false;
|
||||
bno055_get_calibration_status(dev, &mag, &acc, &gyr, &sys);
|
||||
|
||||
// all of them equal to 3 means fully calibrated
|
||||
if (mag == 3 && acc == 3 && gyr == 3 && sys == 3)
|
||||
@ -636,131 +538,94 @@ bool bno055_is_fully_calibrated(const bno055_context dev)
|
||||
return false;
|
||||
}
|
||||
|
||||
upm_result_t bno055_reset_system(const bno055_context dev)
|
||||
void bno055_reset_system(const bno055_context dev)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 0, false);
|
||||
|
||||
uint8_t reg = 0;
|
||||
if (bno055_read_reg(dev, BNO055_REG_SYS_TRIGGER, ®))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
uint8_t reg = bno055_read_reg(dev, BNO055_REG_SYS_TRIGGER);
|
||||
|
||||
reg |= BNO055_SYS_TRIGGER_RST_SYS;
|
||||
|
||||
if (bno055_write_reg(dev, BNO055_REG_SYS_TRIGGER, reg))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
|
||||
bno055_write_reg(dev, BNO055_REG_SYS_TRIGGER, reg);
|
||||
upm_delay(1);
|
||||
|
||||
return UPM_SUCCESS;
|
||||
}
|
||||
|
||||
upm_result_t bno055_reset_interrupt_status(const bno055_context dev)
|
||||
void bno055_reset_interrupt_status(const bno055_context dev)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 0, false);
|
||||
|
||||
uint8_t reg = 0;
|
||||
if (bno055_read_reg(dev, BNO055_REG_SYS_TRIGGER, ®))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
uint8_t reg = bno055_read_reg(dev, BNO055_REG_SYS_TRIGGER);
|
||||
|
||||
reg |= BNO055_SYS_TRIGGER_RST_INT;
|
||||
|
||||
return bno055_write_reg(dev, BNO055_REG_SYS_TRIGGER, reg);
|
||||
bno055_write_reg(dev, BNO055_REG_SYS_TRIGGER, reg);
|
||||
}
|
||||
|
||||
upm_result_t bno055_get_interrupt_status(const bno055_context dev,
|
||||
uint8_t *istat)
|
||||
uint8_t bno055_get_interrupt_status(const bno055_context dev)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 0, false);
|
||||
|
||||
return bno055_read_reg(dev, BNO055_REG_INT_STA, istat);
|
||||
return bno055_read_reg(dev, BNO055_REG_INT_STA);
|
||||
}
|
||||
|
||||
upm_result_t bno055_get_interrupt_enable(const bno055_context dev,
|
||||
uint8_t *ienable)
|
||||
uint8_t bno055_get_interrupt_enable(const bno055_context dev)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 1, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 1, false);
|
||||
|
||||
return bno055_read_reg(dev, BNO055_REG_INT_EN, ienable);
|
||||
return bno055_read_reg(dev, BNO055_REG_INT_EN);
|
||||
}
|
||||
|
||||
upm_result_t bno055_set_interrupt_enable(const bno055_context dev,
|
||||
uint8_t enables)
|
||||
void bno055_set_interrupt_enable(const bno055_context dev, uint8_t enables)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 1, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 1, false);
|
||||
|
||||
return bno055_write_reg(dev, BNO055_REG_INT_EN, enables);
|
||||
bno055_write_reg(dev, BNO055_REG_INT_EN, enables);
|
||||
}
|
||||
|
||||
upm_result_t bno055_get_interrupt_mask(const bno055_context dev,
|
||||
uint8_t *imask)
|
||||
uint8_t bno055_get_interrupt_mask(const bno055_context dev)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 1, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 1, false);
|
||||
|
||||
return bno055_read_reg(dev, BNO055_REG_INT_MSK, imask);
|
||||
return bno055_read_reg(dev, BNO055_REG_INT_MSK);
|
||||
}
|
||||
|
||||
upm_result_t bno055_set_interrupt_mask(const bno055_context dev, uint8_t mask)
|
||||
void bno055_set_interrupt_mask(const bno055_context dev, uint8_t mask)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 1, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 1, false);
|
||||
|
||||
return bno055_write_reg(dev, BNO055_REG_INT_MSK, mask);
|
||||
bno055_write_reg(dev, BNO055_REG_INT_MSK, mask);
|
||||
}
|
||||
|
||||
upm_result_t bno055_get_system_status(const bno055_context dev,
|
||||
BNO055_SYS_STATUS_T *sys_stat)
|
||||
BNO055_SYS_STATUS_T bno055_get_system_status(const bno055_context dev)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 0, false);
|
||||
|
||||
uint8_t reg = 0;
|
||||
if (bno055_read_reg(dev, BNO055_REG_SYS_STATUS, ®))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
|
||||
if (sys_stat)
|
||||
*sys_stat = (BNO055_SYS_STATUS_T)reg;
|
||||
|
||||
return UPM_SUCCESS;
|
||||
return (BNO055_SYS_STATUS_T)bno055_read_reg(dev, BNO055_REG_SYS_STATUS);
|
||||
}
|
||||
|
||||
upm_result_t bno055_get_system_error(const bno055_context dev,
|
||||
BNO055_SYS_ERR_T *sys_err)
|
||||
BNO055_SYS_ERR_T bno055_get_system_error(const bno055_context dev)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 0, false);
|
||||
|
||||
uint8_t reg = 0;
|
||||
if (bno055_read_reg(dev, BNO055_REG_SYS_ERROR, ®))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
|
||||
if (sys_err)
|
||||
*sys_err = (BNO055_SYS_ERR_T)reg;
|
||||
|
||||
return UPM_SUCCESS;
|
||||
return (BNO055_SYS_ERR_T)bno055_read_reg(dev, BNO055_REG_SYS_ERROR);
|
||||
}
|
||||
|
||||
upm_result_t bno055_read_calibration_data(const bno055_context dev,
|
||||
@ -784,21 +649,17 @@ upm_result_t bno055_read_calibration_data(const bno055_context dev,
|
||||
}
|
||||
|
||||
// should be at page 0, but lets make sure
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 0, false);
|
||||
|
||||
// first we need to go back into config mode
|
||||
BNO055_OPERATION_MODES_T currentMode = dev->currentMode;
|
||||
if (bno055_set_operation_mode(dev, BNO055_OPERATION_MODE_CONFIGMODE))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_operation_mode(dev, BNO055_OPERATION_MODE_CONFIGMODE);
|
||||
|
||||
if (bno055_read_regs(dev, BNO055_REG_ACC_OFFSET_X_LSB, data,
|
||||
BNO055_CALIBRATION_DATA_SIZE))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_read_regs(dev, BNO055_REG_ACC_OFFSET_X_LSB, data,
|
||||
BNO055_CALIBRATION_DATA_SIZE);
|
||||
|
||||
// now reset our operating mode
|
||||
if (bno055_set_operation_mode(dev, currentMode))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_operation_mode(dev, currentMode);
|
||||
|
||||
return UPM_SUCCESS;
|
||||
}
|
||||
@ -819,22 +680,18 @@ upm_result_t bno055_write_calibration_data(const bno055_context dev,
|
||||
}
|
||||
|
||||
// should be at page 0, but lets make sure
|
||||
if (bno055_set_page(dev, 0, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 0, false);
|
||||
|
||||
// first we need to go back into config mode
|
||||
BNO055_OPERATION_MODES_T currentMode = dev->currentMode;
|
||||
if (bno055_set_operation_mode(dev, BNO055_OPERATION_MODE_CONFIGMODE))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_operation_mode(dev, BNO055_OPERATION_MODE_CONFIGMODE);
|
||||
|
||||
// write the data
|
||||
if (bno055_write_regs(dev, BNO055_REG_ACC_OFFSET_X_LSB, data,
|
||||
BNO055_CALIBRATION_DATA_SIZE))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_write_regs(dev, BNO055_REG_ACC_OFFSET_X_LSB, data,
|
||||
BNO055_CALIBRATION_DATA_SIZE);
|
||||
|
||||
// now reset our operating mode
|
||||
if (bno055_set_operation_mode(dev, currentMode))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_operation_mode(dev, currentMode);
|
||||
|
||||
return UPM_SUCCESS;
|
||||
}
|
||||
@ -960,59 +817,55 @@ void bno055_get_gyroscope(const bno055_context dev,
|
||||
*z = dev->gyrZ / dev->gyrUnitScale;
|
||||
}
|
||||
|
||||
upm_result_t bno055_set_acceleration_config(const bno055_context dev,
|
||||
BNO055_ACC_RANGE_T range,
|
||||
BNO055_ACC_BW_T bw,
|
||||
BNO055_ACC_PWR_MODE_T pwr)
|
||||
void bno055_set_acceleration_config(const bno055_context dev,
|
||||
BNO055_ACC_RANGE_T range,
|
||||
BNO055_ACC_BW_T bw,
|
||||
BNO055_ACC_PWR_MODE_T pwr)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 1, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 1, false);
|
||||
|
||||
uint8_t reg = ((range << _BNO055_ACC_CONFIG_ACC_RANGE_SHIFT)
|
||||
| (bw << _BNO055_ACC_CONFIG_ACC_BW_SHIFT)
|
||||
| (pwr << _BNO055_ACC_CONFIG_ACC_PWR_MODE_SHIFT));
|
||||
|
||||
return bno055_write_reg(dev, BNO055_REG_ACC_CONFIG, reg);
|
||||
bno055_write_reg(dev, BNO055_REG_ACC_CONFIG, reg);
|
||||
}
|
||||
|
||||
upm_result_t bno055_set_magnetometer_config(const bno055_context dev,
|
||||
BNO055_MAG_ODR_T odr,
|
||||
BNO055_MAG_OPR_T opr,
|
||||
BNO055_MAG_POWER_T pwr)
|
||||
void bno055_set_magnetometer_config(const bno055_context dev,
|
||||
BNO055_MAG_ODR_T odr,
|
||||
BNO055_MAG_OPR_T opr,
|
||||
BNO055_MAG_POWER_T pwr)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 1, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 1, false);
|
||||
|
||||
uint8_t reg = ((odr << _BNO055_MAG_CONFIG_MAG_ODR_SHIFT)
|
||||
| (opr << _BNO055_MAG_CONFIG_MAG_OPR_MODE_SHIFT)
|
||||
| (pwr << _BNO055_MAG_CONFIG_MAG_POWER_MODE_SHIFT));
|
||||
|
||||
return bno055_write_reg(dev, BNO055_REG_MAG_CONFIG, reg);
|
||||
bno055_write_reg(dev, BNO055_REG_MAG_CONFIG, reg);
|
||||
}
|
||||
|
||||
upm_result_t bno055_set_gyroscope_config(const bno055_context dev,
|
||||
BNO055_GYR_RANGE_T range,
|
||||
BNO055_GYR_BW_T bw,
|
||||
BNO055_GYR_POWER_MODE_T pwr)
|
||||
void bno055_set_gyroscope_config(const bno055_context dev,
|
||||
BNO055_GYR_RANGE_T range,
|
||||
BNO055_GYR_BW_T bw,
|
||||
BNO055_GYR_POWER_MODE_T pwr)
|
||||
{
|
||||
assert(dev != NULL);
|
||||
|
||||
if (bno055_set_page(dev, 1, false))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_set_page(dev, 1, false);
|
||||
|
||||
uint8_t reg = ((range << _BNO055_GYR_CONFIG0_GYR_RANGE_SHIFT)
|
||||
| (bw << _BNO055_GYR_CONFIG0_GYR_BW_SHIFT));
|
||||
|
||||
if (bno055_write_reg(dev, BNO055_REG_GYR_CONFIG0, reg))
|
||||
return UPM_ERROR_OPERATION_FAILED;
|
||||
bno055_write_reg(dev, BNO055_REG_GYR_CONFIG0, reg);
|
||||
|
||||
reg = (pwr << _BNO055_GYR_CONFIG1_GYR_POWER_MODE_SHIFT);
|
||||
|
||||
return bno055_write_reg(dev, BNO055_REG_GYR_CONFIG1, reg);
|
||||
bno055_write_reg(dev, BNO055_REG_GYR_CONFIG1, reg);
|
||||
}
|
||||
|
||||
upm_result_t bno055_install_isr(const bno055_context dev,
|
||||
|
@ -61,12 +61,7 @@ void BNO055::update()
|
||||
|
||||
uint8_t BNO055::readReg(uint8_t reg)
|
||||
{
|
||||
uint8_t rv = 0;
|
||||
if (bno055_read_reg(m_bno055, reg, &rv))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_read_reg() failed");
|
||||
|
||||
return rv;
|
||||
return bno055_read_reg(m_bno055, reg);
|
||||
}
|
||||
|
||||
void BNO055::readRegs(uint8_t reg, uint8_t *buffer, int len)
|
||||
@ -92,62 +87,32 @@ void BNO055::writeRegs(uint8_t reg, uint8_t *buffer, int len)
|
||||
|
||||
uint8_t BNO055::getChipID()
|
||||
{
|
||||
uint8_t rv = 0;
|
||||
if (bno055_get_chip_id(m_bno055, &rv))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_get_chip_id() failed");
|
||||
|
||||
return rv;
|
||||
return bno055_get_chip_id(m_bno055);
|
||||
}
|
||||
|
||||
uint8_t BNO055::getACCID()
|
||||
{
|
||||
uint8_t rv = 0;
|
||||
if (bno055_get_acc_id(m_bno055, &rv))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_get_acc_id() failed");
|
||||
|
||||
return rv;
|
||||
return bno055_get_acc_id(m_bno055);
|
||||
}
|
||||
|
||||
uint8_t BNO055::getMAGID()
|
||||
{
|
||||
uint8_t rv = 0;
|
||||
if (bno055_get_mag_id(m_bno055, &rv))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_get_mag_id() failed");
|
||||
|
||||
return rv;
|
||||
return bno055_get_mag_id(m_bno055);
|
||||
}
|
||||
|
||||
uint8_t BNO055::getGYRID()
|
||||
{
|
||||
uint8_t rv = 0;
|
||||
if (bno055_get_gyr_id(m_bno055, &rv))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_get_gyr_id() failed");
|
||||
|
||||
return rv;
|
||||
return bno055_get_gyr_id(m_bno055);
|
||||
}
|
||||
|
||||
uint16_t BNO055::getSWRevID()
|
||||
{
|
||||
uint16_t rv = 0;
|
||||
if (bno055_get_sw_revision(m_bno055, &rv))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_get_sw_revision() failed");
|
||||
|
||||
return rv;
|
||||
return bno055_get_sw_revision(m_bno055);
|
||||
}
|
||||
|
||||
uint8_t BNO055::getBootLoaderID()
|
||||
{
|
||||
uint8_t rv = 0;
|
||||
if (bno055_get_bootloader_id(m_bno055, &rv))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_get_bootloader_id() failed");
|
||||
|
||||
return rv;
|
||||
return bno055_get_bootloader_id(m_bno055);
|
||||
}
|
||||
|
||||
void BNO055::setPage(uint8_t page, bool force)
|
||||
@ -159,51 +124,37 @@ void BNO055::setPage(uint8_t page, bool force)
|
||||
|
||||
void BNO055::setClockExternal(bool extClock)
|
||||
{
|
||||
if (bno055_set_clock_external(m_bno055, extClock))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_set_clock_external() failed");
|
||||
bno055_set_clock_external(m_bno055, extClock);
|
||||
}
|
||||
|
||||
void BNO055::setTemperatureSource(BNO055_TEMP_SOURCES_T src)
|
||||
{
|
||||
if (bno055_set_temperature_source(m_bno055, src))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_set_temperature_source() failed");
|
||||
bno055_set_temperature_source(m_bno055, src);
|
||||
}
|
||||
|
||||
void BNO055::setAccelerometerUnits(bool mg)
|
||||
{
|
||||
if (bno055_set_accelerometer_units(m_bno055, mg))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_set_accelerometer_units() failed");
|
||||
bno055_set_accelerometer_units(m_bno055, mg);
|
||||
}
|
||||
|
||||
void BNO055::setGyroscopeUnits(bool radians)
|
||||
{
|
||||
if (bno055_set_gyroscope_units(m_bno055, radians))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_set_gyroscope_units() failed");
|
||||
bno055_set_gyroscope_units(m_bno055, radians);
|
||||
}
|
||||
|
||||
void BNO055::setEulerUnits(bool radians)
|
||||
{
|
||||
if (bno055_set_euler_units(m_bno055, radians))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_set_euler_units() failed");
|
||||
bno055_set_euler_units(m_bno055, radians);
|
||||
}
|
||||
|
||||
void BNO055::setOperationMode(BNO055_OPERATION_MODES_T mode)
|
||||
{
|
||||
if (bno055_set_operation_mode(m_bno055, mode))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_set_operation_mode() failed");
|
||||
bno055_set_operation_mode(m_bno055, mode);
|
||||
}
|
||||
|
||||
void BNO055::getCalibrationStatus(int *mag, int *acc, int *gyr, int *sys)
|
||||
{
|
||||
if (bno055_get_calibration_status(m_bno055, mag, acc, gyr, sys))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_get_calibration_status() failed");
|
||||
bno055_get_calibration_status(m_bno055, mag, acc, gyr, sys);
|
||||
}
|
||||
|
||||
vector<int> BNO055::getCalibrationStatus()
|
||||
@ -221,80 +172,47 @@ bool BNO055::isFullyCalibrated()
|
||||
|
||||
void BNO055::resetSystem()
|
||||
{
|
||||
if (bno055_reset_system(m_bno055))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_reset_system() failed");
|
||||
bno055_reset_system(m_bno055);
|
||||
}
|
||||
|
||||
void BNO055::resetInterruptStatus()
|
||||
{
|
||||
if (bno055_reset_interrupt_status(m_bno055))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": reset_interrupt_status() failed");
|
||||
bno055_reset_interrupt_status(m_bno055);
|
||||
}
|
||||
|
||||
uint8_t BNO055::getInterruptStatus()
|
||||
{
|
||||
uint8_t rv = 0;
|
||||
if (bno055_get_interrupt_status(m_bno055, &rv))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055get_interrupt_status() failed");
|
||||
|
||||
return rv;
|
||||
return bno055_get_interrupt_status(m_bno055);
|
||||
}
|
||||
|
||||
uint8_t BNO055::getInterruptEnable()
|
||||
{
|
||||
uint8_t rv = 0;
|
||||
if (bno055_get_interrupt_enable(m_bno055, &rv))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_get_interrupt_enable() failed");
|
||||
|
||||
return rv;
|
||||
return bno055_get_interrupt_enable(m_bno055);
|
||||
}
|
||||
|
||||
void BNO055::setInterruptEnable(uint8_t enables)
|
||||
{
|
||||
if (bno055_set_interrupt_enable(m_bno055, enables))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_set_interrupt_enable() failed");
|
||||
return bno055_set_interrupt_enable(m_bno055, enables);
|
||||
}
|
||||
|
||||
uint8_t BNO055::getInterruptMask()
|
||||
{
|
||||
uint8_t rv = 0;
|
||||
if (bno055_get_interrupt_mask(m_bno055, &rv))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_get_interrupt_mask() failed");
|
||||
|
||||
return rv;
|
||||
return bno055_get_interrupt_mask(m_bno055);
|
||||
}
|
||||
|
||||
void BNO055::setInterruptMask(uint8_t mask)
|
||||
{
|
||||
if (bno055_set_interrupt_mask(m_bno055, mask))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_set_interrupt_mask() failed");
|
||||
return bno055_set_interrupt_mask(m_bno055, mask);
|
||||
}
|
||||
|
||||
BNO055_SYS_STATUS_T BNO055::getSystemStatus()
|
||||
{
|
||||
BNO055_SYS_STATUS_T rv;
|
||||
if (bno055_get_system_status(m_bno055, &rv))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_get_system_status() failed");
|
||||
|
||||
return rv;
|
||||
return bno055_get_system_status(m_bno055);
|
||||
}
|
||||
|
||||
BNO055_SYS_ERR_T BNO055::getSystemError()
|
||||
{
|
||||
BNO055_SYS_ERR_T rv;
|
||||
if (bno055_get_system_error(m_bno055, &rv))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_get_system_error() failed");
|
||||
|
||||
return rv;
|
||||
return bno055_get_system_error(m_bno055);
|
||||
}
|
||||
|
||||
std::vector<uint8_t> BNO055::readCalibrationData()
|
||||
@ -416,27 +334,21 @@ void BNO055::setAccelerationConfig(BNO055_ACC_RANGE_T range,
|
||||
BNO055_ACC_BW_T bw,
|
||||
BNO055_ACC_PWR_MODE_T pwr)
|
||||
{
|
||||
if (bno055_set_acceleration_config(m_bno055, range, bw, pwr))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_set_acceleration_config() failed");
|
||||
bno055_set_acceleration_config(m_bno055, range, bw, pwr);
|
||||
}
|
||||
|
||||
void BNO055::setMagnetometerConfig(BNO055_MAG_ODR_T odr,
|
||||
BNO055_MAG_OPR_T opr,
|
||||
BNO055_MAG_POWER_T pwr)
|
||||
{
|
||||
if (bno055_set_magnetometer_config(m_bno055, odr, opr, pwr))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_set_magnetometer_config() failed");
|
||||
bno055_set_magnetometer_config(m_bno055, odr, opr, pwr);
|
||||
}
|
||||
|
||||
void BNO055::setGyroscopeConfig(BNO055_GYR_RANGE_T range,
|
||||
BNO055_GYR_BW_T bw,
|
||||
BNO055_GYR_POWER_MODE_T pwr)
|
||||
{
|
||||
if (bno055_set_gyroscope_config(m_bno055, range, bw, pwr))
|
||||
throw std::runtime_error(string(__FUNCTION__)
|
||||
+ ": bno055_set_gyroscope_config() failed");
|
||||
bno055_set_gyroscope_config(m_bno055, range, bw, pwr);
|
||||
}
|
||||
|
||||
void BNO055::installISR(int gpio, mraa_gpio_edge_t level,
|
||||
|
@ -145,61 +145,49 @@ extern "C" {
|
||||
* Return the chip ID.
|
||||
*
|
||||
* @param dev The device context.
|
||||
* @param chip_id The chip ID (BNO055_CHIPID).
|
||||
* @return UPM result.
|
||||
* @return The chip ID (BNO055_CHIPID).
|
||||
*/
|
||||
upm_result_t bno055_get_chip_id(const bno055_context dev,
|
||||
uint8_t *chip_id);
|
||||
uint8_t bno055_get_chip_id(const bno055_context dev);
|
||||
|
||||
/**
|
||||
* Return the accelerometer chip ID.
|
||||
*
|
||||
* @param dev The device context.
|
||||
* @param chip_id The chip ID
|
||||
* @return UPM result.
|
||||
* @return The chip ID.
|
||||
*/
|
||||
upm_result_t bno055_get_acc_id(const bno055_context dev,
|
||||
uint8_t *chip_id);
|
||||
uint8_t bno055_get_acc_id(const bno055_context dev);
|
||||
|
||||
/**
|
||||
* Return the magnetometer chip ID.
|
||||
*
|
||||
* @param dev The device context.
|
||||
* @param chip_id The chip ID
|
||||
* @return UPM result.
|
||||
* @return The chip ID.
|
||||
*/
|
||||
upm_result_t bno055_get_mag_id(const bno055_context dev,
|
||||
uint8_t *chip_id);
|
||||
uint8_t bno055_get_mag_id(const bno055_context dev);
|
||||
|
||||
/**
|
||||
* Return the gyroscope chip ID.
|
||||
*
|
||||
* @param dev The device context.
|
||||
* @param chip_id The chip ID
|
||||
* @return UPM result.
|
||||
* @return The chip ID.
|
||||
*/
|
||||
upm_result_t bno055_get_gyr_id(const bno055_context dev,
|
||||
uint8_t *chip_id);
|
||||
uint8_t bno055_get_gyr_id(const bno055_context dev);
|
||||
|
||||
/**
|
||||
* Return the fusion firmware revison.
|
||||
*
|
||||
* @param dev The device context.
|
||||
* @param sw_rev The firmware revison.
|
||||
* @return UPM result.
|
||||
* @return The firmware revison.
|
||||
*/
|
||||
upm_result_t bno055_get_sw_revision(const bno055_context dev,
|
||||
uint16_t *sw_rev);
|
||||
uint16_t bno055_get_sw_revision(const bno055_context dev);
|
||||
|
||||
/**
|
||||
* Return the bootloader ID.
|
||||
*
|
||||
* @param dev The device context.
|
||||
* @param bl_id The bootloader ID.
|
||||
* @return UPM result.
|
||||
* @return The bootloader ID.
|
||||
*/
|
||||
upm_result_t bno055_get_bootloader_id(const bno055_context dev,
|
||||
uint8_t *bl_id);
|
||||
uint8_t bno055_get_bootloader_id(const bno055_context dev);
|
||||
|
||||
/**
|
||||
* Enable or disables the use of the external clock. The Adafriut
|
||||
@ -208,10 +196,8 @@ extern "C" {
|
||||
*
|
||||
* @param dev The device context.
|
||||
* @param extClock true to use external clock, false otherwise.
|
||||
* @return UPM result.
|
||||
*/
|
||||
upm_result_t bno055_set_clock_external(const bno055_context dev,
|
||||
bool extClock);
|
||||
void bno055_set_clock_external(const bno055_context dev, bool extClock);
|
||||
|
||||
/**
|
||||
* Select the temperature source. This can be the accelerometer
|
||||
@ -220,18 +206,16 @@ extern "C" {
|
||||
*
|
||||
* @param dev The device context.
|
||||
* @param src One of the TEMP_SOURCES_T values.
|
||||
* @return UPM result.
|
||||
*/
|
||||
upm_result_t bno055_set_temperature_source(const bno055_context dev,
|
||||
BNO055_TEMP_SOURCES_T src);
|
||||
void bno055_set_temperature_source(const bno055_context dev,
|
||||
BNO055_TEMP_SOURCES_T src);
|
||||
|
||||
/**
|
||||
* Set the temperature units of the device to Celsius (always).
|
||||
*
|
||||
* @param dev The device context.
|
||||
* @return UPM result.
|
||||
*/
|
||||
upm_result_t bno055_set_temperature_units_celsius(const bno055_context dev);
|
||||
void bno055_set_temperature_units_celsius(const bno055_context dev);
|
||||
|
||||
/**
|
||||
* Set the operating mode for the device. This places the device
|
||||
@ -242,10 +226,9 @@ extern "C" {
|
||||
*
|
||||
* @param dev The device context.
|
||||
* @param mode One of the OPERATION_MODES_T values.
|
||||
* @return UPM result.
|
||||
*/
|
||||
upm_result_t bno055_set_operation_mode(const bno055_context dev,
|
||||
BNO055_OPERATION_MODES_T mode);
|
||||
void bno055_set_operation_mode(const bno055_context dev,
|
||||
BNO055_OPERATION_MODES_T mode);
|
||||
|
||||
/**
|
||||
* Reboot the sensor. This is equivalent to a power on reset.
|
||||
@ -253,9 +236,8 @@ extern "C" {
|
||||
* re-calibrated.
|
||||
*
|
||||
* @param dev The device context.
|
||||
* @return UPM result.
|
||||
*/
|
||||
upm_result_t bno055_reset_system(const bno055_context dev);
|
||||
void bno055_reset_system(const bno055_context dev);
|
||||
|
||||
/**
|
||||
* Read the calibration status registers and return them. The
|
||||
@ -266,11 +248,10 @@ extern "C" {
|
||||
* @param acc The calibration status of the accelerometer.
|
||||
* @param mag The calibration status of the gyroscope.
|
||||
* @param mag The calibration status of the overall system.
|
||||
* @return UPM result.
|
||||
*/
|
||||
upm_result_t bno055_get_calibration_status(const bno055_context dev,
|
||||
int *mag, int *acc,
|
||||
int *gyr, int *sys);
|
||||
void bno055_get_calibration_status(const bno055_context dev,
|
||||
int *mag, int *acc,
|
||||
int *gyr, int *sys);
|
||||
|
||||
/**
|
||||
* Read the calibration status registers and return true or false,
|
||||
@ -456,12 +437,11 @@ extern "C" {
|
||||
* @param range One of the BNO055_ACC_RANGE_T values.
|
||||
* @param bw One of the BNO055_ACC_BW_T values.
|
||||
* @param pwr One of the BNO055_ACC_PWR_MODE_T values.
|
||||
* @return UPM result.
|
||||
*/
|
||||
upm_result_t bno055_set_acceleration_config(const bno055_context dev,
|
||||
BNO055_ACC_RANGE_T range,
|
||||
BNO055_ACC_BW_T bw,
|
||||
BNO055_ACC_PWR_MODE_T pwr);
|
||||
void bno055_set_acceleration_config(const bno055_context dev,
|
||||
BNO055_ACC_RANGE_T range,
|
||||
BNO055_ACC_BW_T bw,
|
||||
BNO055_ACC_PWR_MODE_T pwr);
|
||||
|
||||
/**
|
||||
* Set the output data rate, operating mode and power mode of the
|
||||
@ -471,12 +451,11 @@ extern "C" {
|
||||
* @param odr One of the BNO055_MAG_ODR_T values.
|
||||
* @param opr One of the BNO055_MAG_OPR_T values.
|
||||
* @param pwr One of the BNO055_MAG_POWER_T values.
|
||||
* @return UPM result.
|
||||
*/
|
||||
upm_result_t bno055_set_magnetometer_config(const bno055_context dev,
|
||||
BNO055_MAG_ODR_T odr,
|
||||
BNO055_MAG_OPR_T opr,
|
||||
BNO055_MAG_POWER_T pwr);
|
||||
void bno055_set_magnetometer_config(const bno055_context dev,
|
||||
BNO055_MAG_ODR_T odr,
|
||||
BNO055_MAG_OPR_T opr,
|
||||
BNO055_MAG_POWER_T pwr);
|
||||
|
||||
/**
|
||||
* Set the range, bandwidth and power modes of the gyroscope. In
|
||||
@ -486,12 +465,11 @@ extern "C" {
|
||||
* @param range One of the BNO055_GYR_RANGE_T values.
|
||||
* @param bw One of the BNO055_GYR_BW_T values.
|
||||
* @param pwr One of the BNO055_GYR_POWER_MODE_T values.
|
||||
* @return UPM result.
|
||||
*/
|
||||
upm_result_t bno055_set_gyroscope_config(const bno055_context dev,
|
||||
BNO055_GYR_RANGE_T range,
|
||||
BNO055_GYR_BW_T bw,
|
||||
BNO055_GYR_POWER_MODE_T pwr);
|
||||
void bno055_set_gyroscope_config(const bno055_context dev,
|
||||
BNO055_GYR_RANGE_T range,
|
||||
BNO055_GYR_BW_T bw,
|
||||
BNO055_GYR_POWER_MODE_T pwr);
|
||||
|
||||
/**
|
||||
* Set the unit of measurement for the accelerometer related
|
||||
@ -500,10 +478,8 @@ extern "C" {
|
||||
*
|
||||
* @param dev The device context.
|
||||
* @param mg true for mg, false for m/s^2.
|
||||
* @return UPM result.
|
||||
*/
|
||||
upm_result_t bno055_set_accelerometer_units(const bno055_context dev,
|
||||
bool mg);
|
||||
void bno055_set_accelerometer_units(const bno055_context dev, bool mg);
|
||||
|
||||
/**
|
||||
* Set the unit of measurement for the gyroscope related sensor
|
||||
@ -512,10 +488,8 @@ extern "C" {
|
||||
*
|
||||
* @param dev The device context.
|
||||
* @param radians true for radians, false for degrees.
|
||||
* @return UPM result.
|
||||
*/
|
||||
upm_result_t bno055_set_gyroscope_units(const bno055_context dev,
|
||||
bool radians);
|
||||
void bno055_set_gyroscope_units(const bno055_context dev, bool radians);
|
||||
|
||||
/**
|
||||
* Set the unit of measurement for the Euler Angle related sensor
|
||||
@ -524,41 +498,34 @@ extern "C" {
|
||||
*
|
||||
* @param dev The device context.
|
||||
* @param radians true for radians, false for degrees.
|
||||
* @return UPM result.
|
||||
*/
|
||||
upm_result_t bno055_set_euler_units(const bno055_context dev,
|
||||
bool radians);
|
||||
void bno055_set_euler_units(const bno055_context dev, bool radians);
|
||||
|
||||
/**
|
||||
* Reset all interrupt status bits and interrupt output.
|
||||
*
|
||||
* @param dev The device context.
|
||||
* @return UPM result.
|
||||
*/
|
||||
upm_result_t bno055_reset_interrupt_status(const bno055_context dev);
|
||||
void bno055_reset_interrupt_status(const bno055_context dev);
|
||||
|
||||
/**
|
||||
* Get the interrupt status register. This is a bitmask of the
|
||||
* Return the interrupt status register. This is a bitmask of the
|
||||
* INT_STA_BITS_T bits.
|
||||
*
|
||||
* @param dev The device context.
|
||||
* @param istat A bitmask of INT_STA_BITS_T bits.
|
||||
* @return UPM result.
|
||||
* @return a bitmask of INT_STA_BITS_T bits.
|
||||
*/
|
||||
upm_result_t bno055_get_interrupt_status(const bno055_context dev,
|
||||
uint8_t *istat);
|
||||
uint8_t bno055_get_interrupt_status(const bno055_context dev);
|
||||
|
||||
/**
|
||||
* Get the interrupt enables register. This is a bitmask of the
|
||||
* Return the interrupt enables register. This is a bitmask of the
|
||||
* INT_STA_BITS_T bits.
|
||||
*
|
||||
* @param dev The device context.
|
||||
* @param ienable A bitmask of INT_STA_BITS_T bits currently set in the
|
||||
* @return a bitmask of INT_STA_BITS_T bits currently set in the
|
||||
* enable register.
|
||||
* @return UPM result.
|
||||
*/
|
||||
upm_result_t bno055_get_interrupt_enable(const bno055_context dev,
|
||||
uint8_t *ienable);
|
||||
uint8_t bno055_get_interrupt_enable(const bno055_context dev);
|
||||
|
||||
/**
|
||||
* Set the interrupt enable register. This is composed of a
|
||||
@ -566,25 +533,22 @@ extern "C" {
|
||||
*
|
||||
* @param dev The device context.
|
||||
* @param enables a bitmask of INT_STA_BITS_T bits to enable
|
||||
* @return UPM result.
|
||||
*/
|
||||
upm_result_t bno055_set_interrupt_enable(const bno055_context dev,
|
||||
uint8_t enables);
|
||||
void bno055_set_interrupt_enable(const bno055_context dev,
|
||||
uint8_t enables);
|
||||
|
||||
/**
|
||||
* Get the interrupt mask register. This is a bitmask of the
|
||||
* Return the interrupt mask register. This is a bitmask of the
|
||||
* INT_STA_BITS_T bits. The interrupt mask is used to mask off
|
||||
* enabled interrupts from generating a hardware interrupt. The
|
||||
* interrupt status register can still be used to detect masked
|
||||
* interrupts if they are enabled.
|
||||
*
|
||||
* @param dev The device context.
|
||||
* @param imask a bitmask of INT_STA_BITS_T bits currently set in the
|
||||
* @return a bitmask of INT_STA_BITS_T bits currently set in the
|
||||
* interrupt mask register.
|
||||
* @return UPM result.
|
||||
*/
|
||||
upm_result_t bno055_get_interrupt_mask(const bno055_context dev,
|
||||
uint8_t *imask);
|
||||
uint8_t bno055_get_interrupt_mask(const bno055_context dev);
|
||||
|
||||
/**
|
||||
* Set the interrupt mask register. This is a bitmask of the
|
||||
@ -596,21 +560,17 @@ extern "C" {
|
||||
* @param dev The device context.
|
||||
* @param mask A bitmask of INT_STA_BITS_T bits to set in the interrupt
|
||||
* mask register.
|
||||
* @return UPM result.
|
||||
*/
|
||||
upm_result_t bno055_set_interrupt_mask(const bno055_context dev,
|
||||
uint8_t mask);
|
||||
void bno055_set_interrupt_mask(const bno055_context dev, uint8_t mask);
|
||||
|
||||
/**
|
||||
* Get the value of the system status register. This method
|
||||
* Return the value of the system status register. This method
|
||||
* can be used to determine the overall status of the device.
|
||||
*
|
||||
* @param dev The device context.
|
||||
* @param sys_stat One of the SYS_STATUS_T values.
|
||||
* @return UPM result.
|
||||
* @return One of the SYS_STATUS_T values.
|
||||
*/
|
||||
upm_result_t bno055_get_system_status(const bno055_context dev,
|
||||
BNO055_SYS_STATUS_T *sys_stat);
|
||||
BNO055_SYS_STATUS_T bno055_get_system_status(const bno055_context dev);
|
||||
|
||||
/**
|
||||
* Return the value of the system error register. This mathod can
|
||||
@ -618,11 +578,9 @@ extern "C" {
|
||||
* conditions.
|
||||
*
|
||||
* @param dev The device context.
|
||||
* @param sys_stat One of the SYS_ERR_T values.
|
||||
* @return UPM result.
|
||||
* @return One of the SYS_ERR_T values.
|
||||
*/
|
||||
upm_result_t bno055_get_system_error(const bno055_context dev,
|
||||
BNO055_SYS_ERR_T *sys_err);
|
||||
BNO055_SYS_ERR_T bno055_get_system_error(const bno055_context dev);
|
||||
|
||||
/**
|
||||
* install an interrupt handler.
|
||||
@ -667,11 +625,9 @@ extern "C" {
|
||||
*
|
||||
* @param dev The device context.
|
||||
* @param reg The register to read
|
||||
* @param retval The returned value of the register
|
||||
* @return UPM result.
|
||||
* @return The value of the register
|
||||
*/
|
||||
upm_result_t bno055_read_reg(const bno055_context dev, uint8_t reg,
|
||||
uint8_t *retval);
|
||||
uint8_t bno055_read_reg(const bno055_context dev, uint8_t reg);
|
||||
|
||||
/**
|
||||
* Read contiguous registers into a buffer. This is a low level
|
||||
|
@ -138,7 +138,6 @@ namespace upm {
|
||||
* Return the chip ID.
|
||||
*
|
||||
* @return The chip ID (BNO055_CHIPID).
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
uint8_t getChipID();
|
||||
|
||||
@ -146,7 +145,6 @@ namespace upm {
|
||||
* Return the accelerometer chip ID.
|
||||
*
|
||||
* @return The chip ID.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
uint8_t getACCID();
|
||||
|
||||
@ -154,7 +152,6 @@ namespace upm {
|
||||
* Return the magnetometer chip ID.
|
||||
*
|
||||
* @return The chip ID.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
uint8_t getMAGID();
|
||||
|
||||
@ -162,7 +159,6 @@ namespace upm {
|
||||
* Return the gyroscope chip ID.
|
||||
*
|
||||
* @return The chip ID.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
uint8_t getGYRID();
|
||||
|
||||
@ -170,7 +166,6 @@ namespace upm {
|
||||
* Return the fusion firmware revison.
|
||||
*
|
||||
* @return The firmware revison.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
uint16_t getSWRevID();
|
||||
|
||||
@ -178,7 +173,6 @@ namespace upm {
|
||||
* Return the bootloader ID.
|
||||
*
|
||||
* @return The bootloader ID.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
uint8_t getBootLoaderID();
|
||||
|
||||
@ -188,7 +182,6 @@ namespace upm {
|
||||
* stable. By default, the internal clock is used.
|
||||
*
|
||||
* @param extClock true to use external clock, false otherwise.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
void setClockExternal(bool extClock);
|
||||
|
||||
@ -198,7 +191,6 @@ namespace upm {
|
||||
* used as the source.
|
||||
*
|
||||
* @param src One of the BNO055_TEMP_SOURCES_T values.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
void setTemperatureSource(BNO055_TEMP_SOURCES_T src);
|
||||
|
||||
@ -210,7 +202,6 @@ namespace upm {
|
||||
* configuration operations. See the datasheet for details.
|
||||
*
|
||||
* @param mode One of the BNO055_OPERATION_MODES_T values.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
void setOperationMode(BNO055_OPERATION_MODES_T mode);
|
||||
|
||||
@ -218,7 +209,6 @@ namespace upm {
|
||||
* Reboot the sensor. This is equivalent to a power on reset.
|
||||
* All calibration data will be lost, and the device must be
|
||||
* recalibrated.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
void resetSystem();
|
||||
|
||||
@ -230,7 +220,6 @@ namespace upm {
|
||||
* @param acc The calibration status of the accelerometer.
|
||||
* @param mag The calibration status of the gyroscope.
|
||||
* @param mag The calibration status of the overall system.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
void getCalibrationStatus(int *mag, int *acc, int *gyr, int *sys);
|
||||
|
||||
@ -241,7 +230,6 @@ namespace upm {
|
||||
*
|
||||
* @return An integer vector containing the values in the
|
||||
* order: mag, acc, gyr, and sys.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
std::vector<int> getCalibrationStatus();
|
||||
|
||||
@ -479,7 +467,6 @@ namespace upm {
|
||||
* @param range One of the BNO055_ACC_RANGE_T values.
|
||||
* @param bw One of the BNO055_ACC_BW_T values.
|
||||
* @param pwr One of the BNO055_ACC_PWR_MODE_T values.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
void setAccelerationConfig(BNO055_ACC_RANGE_T range,
|
||||
BNO055_ACC_BW_T bw,
|
||||
@ -492,7 +479,6 @@ namespace upm {
|
||||
* @param odr One of the BNO055_MAG_ODR_T values.
|
||||
* @param opr One of the BNO055_MAG_OPR_T values.
|
||||
* @param pwr One of the BNO055_MAG_POWER_T values.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
void setMagnetometerConfig(BNO055_MAG_ODR_T odr,
|
||||
BNO055_MAG_OPR_T opr,
|
||||
@ -505,7 +491,6 @@ namespace upm {
|
||||
* @param range One of the BNO055_GYR_RANGE_T values.
|
||||
* @param bw One of the BNO055_GYR_BW_T values.
|
||||
* @param pwr One of the BNO055_GYR_POWER_MODE_T values.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
void setGyroscopeConfig(BNO055_GYR_RANGE_T range,
|
||||
BNO055_GYR_BW_T bw,
|
||||
@ -517,7 +502,6 @@ namespace upm {
|
||||
* per-second squared (m/s^2). The default is m/s^2.
|
||||
*
|
||||
* @param mg true for mg, false for m/s^2.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
void setAccelerometerUnits(bool mg=false);
|
||||
|
||||
@ -527,7 +511,6 @@ namespace upm {
|
||||
* degrees.
|
||||
*
|
||||
* @param radians true for radians, false for degrees.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
void setGyroscopeUnits(bool radians=false);
|
||||
|
||||
@ -537,14 +520,11 @@ namespace upm {
|
||||
* degrees.
|
||||
*
|
||||
* @param radians true for radians, false for degrees.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
void setEulerUnits(bool radians=false);
|
||||
|
||||
/**
|
||||
* Reset all interrupt status bits and interrupt output.
|
||||
*
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
void resetInterruptStatus();
|
||||
|
||||
@ -553,7 +533,6 @@ namespace upm {
|
||||
* BNO055_INT_STA_BITS_T bits.
|
||||
*
|
||||
* @return a bitmask of BNO055_INT_STA_BITS_T bits.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
uint8_t getInterruptStatus();
|
||||
|
||||
@ -563,7 +542,6 @@ namespace upm {
|
||||
*
|
||||
* @return a bitmask of BNO055_INT_STA_BITS_T bits currently set in the
|
||||
* enable register.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
uint8_t getInterruptEnable();
|
||||
|
||||
@ -572,7 +550,6 @@ namespace upm {
|
||||
* bitmask of the BNO055_INT_STA_BITS_T bits.
|
||||
*
|
||||
* @param enables a bitmask of BNO055_INT_STA_BITS_T bits to enable
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
void setInterruptEnable(uint8_t enables);
|
||||
|
||||
@ -585,7 +562,6 @@ namespace upm {
|
||||
*
|
||||
* @return a bitmask of BNO055_INT_STA_BITS_T bits currently set in the
|
||||
* interrupt mask register.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
uint8_t getInterruptMask();
|
||||
|
||||
@ -598,7 +574,6 @@ namespace upm {
|
||||
*
|
||||
* @param mask A bitmask of BNO055_INT_STA_BITS_T bits to set in
|
||||
* the interrupt mask register.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
void setInterruptMask(uint8_t mask);
|
||||
|
||||
@ -607,7 +582,6 @@ namespace upm {
|
||||
* can be used to determine the overall status of the device.
|
||||
*
|
||||
* @return One of the BNO055_SYS_STATUS_T values.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
BNO055_SYS_STATUS_T getSystemStatus();
|
||||
|
||||
@ -617,7 +591,6 @@ namespace upm {
|
||||
* conditions.
|
||||
*
|
||||
* @return One of the BNO055_SYS_ERR_T values.
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
BNO055_SYS_ERR_T getSystemError();
|
||||
|
||||
@ -670,7 +643,6 @@ namespace upm {
|
||||
*
|
||||
* @param reg The register to read
|
||||
* @return The value of the register
|
||||
* @throws std::runtime_error on failure.
|
||||
*/
|
||||
uint8_t readReg(uint8_t reg);
|
||||
|
||||
|
@ -1,48 +0,0 @@
|
||||
{
|
||||
"Library": "bno055",
|
||||
"Description": "API for the BNO055 Absolute Orientation 9DOF Fusion Hub",
|
||||
"Sensor Class":
|
||||
{
|
||||
"bno055":
|
||||
{
|
||||
"Name": "Intelligent 9-axis Absolute Orientation Sensor",
|
||||
"Description": "The BNO055 is a System in Package (SiP), integrating a triaxial 14-bit accelerometer, a triaxial 16-bit gyroscope with a range of +/- 2000 degrees per second, a triaxial geomagnetic sensor and a 32-bit cortex M0+ microcontroller running Bosch Sensortec sensor fusion software, in a single package. This sensor handles the hard problem of combining various sensor information into a reliable measurement of sensor orientation (refered to as 'sensor fusion'). The onboard MCU runs this software and can provide fusion output in the form of Euler Angles, Quaternions, Linear Acceleration, and Gravity Vectors in 3 axes. The focus on this driver has been on supporting the fusion components. Less support is available for use of this device as a generic accelerometer, gyroscope and magnetometer, however enough infrastructure is available to add any missing functionality. This device requires calibration in order to operate accurately. Methods are provided to retrieve calibration data (once calibrated) to be stored somewhere else, like in a file. A method is provided to load this data as well. Calibration data is lost on a power cycle. See one of the examples for a description of how to calibrate the device, but in essence: There is a calibration status register available (getCalibrationStatus()) that returns the calibration status of the accelerometer (ACC), magnetometer (MAG), gyroscope (GYR), and overall system (SYS). Each of these values range from 0 (uncalibrated) to 3 (fully calibrated). Calibration involves certain motions to get all 4 values at 3. The motions are as follows (though see the datasheet for more information): GYR: Simply let the sensor sit flat for a few seconds. ACC: Move the sensor in various positions. Start flat, then rotate slowly by 45 degrees, hold for a few seconds, then continue rotating another 45 degrees and hold, etc. 6 or more movements of this type may be required. You can move through any axis you desire, but make sure that the device is lying at least once perpendicular to the x, y, and z axis. MAG: Move slowly in a figure 8 pattern in the air, until the calibration values reaches 3. SYS: This will usually reach 3 when the other items have also reached 3. If not, continue slowly moving the device though various axes until it does.",
|
||||
"Aliases": ["bno055"],
|
||||
"Categories": ["accelerometer", "compass"],
|
||||
"Connections": ["gpio", "i2c"],
|
||||
"Project Type": ["prototyping", "industrial"],
|
||||
"Manufacturers": ["adafruit"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["BNO055_Example.java"],
|
||||
"Python": ["bno055.py"],
|
||||
"Node.js": ["bno055.js"],
|
||||
"C++": ["bno055.cxx"],
|
||||
"C": ["bno055.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Vsource": {"unit": "v", "low" : 2.4, "high": 3.6},
|
||||
"Supply Current": {"unit": "mA", "low": 0.33, "high": 12.3},
|
||||
"Supply Current (Suspended)": {"unit": "uA", "typ": 40},
|
||||
"Gyroscope Ranges": {"unit": "deg/s", "low": 125, "high": 2000},
|
||||
"Magnetometer Ranges": {}
|
||||
},
|
||||
"Platforms":
|
||||
{
|
||||
"Intel Joule Module":
|
||||
{
|
||||
"Notes": ["Requires pull-up resistors with carrier board"],
|
||||
"Images": [""]
|
||||
}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.adafruit.com/products/2472"],
|
||||
"Datasheets": ["https://cdn-learn.adafruit.com/assets/assets/000/036/832/original/BST_BNO055_DS000_14.pdf"],
|
||||
"Schematics": ["https://cdn-learn.adafruit.com/assets/assets/000/024/546/medium800/sensors_BNO055_REV-C.png?1429569060"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
{
|
||||
"Library": "cjq4435",
|
||||
"Description": "API for the CJQ4435 MOSFET",
|
||||
"Sensor Class":
|
||||
{
|
||||
"cjq4435":
|
||||
{
|
||||
"Name": "CJQ4435 MOSFET",
|
||||
"Description": "UPM module for the CJQ4435 MOSFET. It was developed using the Grove MOSFET module, but could be used with any MOSFET. A MOSFET is like a switch, but it can switch much faster than a mechanical relay. Here, we implement support via MRAA pulse width modulation (PWM) functions. Note: available periods vary depending on the capabilities of your platform.",
|
||||
"Aliases": ["cjq4435"],
|
||||
"Categories": ["electric"],
|
||||
"Connections": ["gpio", "pwm"],
|
||||
"Project Type": ["prototyping", "robotics"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": ["robok"],
|
||||
"Image": "cjq4435.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["CJQ4435Sample.java"],
|
||||
"Python": ["cjq4435.py"],
|
||||
"Node.js": ["cjq4435.js"],
|
||||
"C++": ["cjq4435.cxx"],
|
||||
"C": ["cjq4435.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Trigger Voltage": {"unit": "V", "typ" : 5},
|
||||
"Working Voltage" : {"unit": "V", "low" : 5, "high": 15}
|
||||
},
|
||||
"Platforms":
|
||||
{
|
||||
"Intel Joule Module":
|
||||
{
|
||||
"Notes": ["Requires pull-up resistors with carrier board"],
|
||||
"Images": [""]
|
||||
}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-MOSFET-p-1594.html", "http://wiki.seeed.cc/Grove-MOSFET/"],
|
||||
"Datasheets": ["https://raw.githubusercontent.com/SeeedDocument/Grove-MOSFET/master/res/CJQ4435.pdf"],
|
||||
"Schematics": ["https://github.com/SeeedDocument/Grove-MOSFET/raw/master/res/Grove%20-%20MOSFET%20.pdf"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
{
|
||||
"Library": "collision",
|
||||
"Description": "API for the Collision Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"collision":
|
||||
{
|
||||
"Name": "Grove Collision Sensor",
|
||||
"Description": "The Collision Sensor can detect whether any collision movement or vibration happens. It outputs a low pulse signal when vibration is detected.",
|
||||
"Aliases": ["collision"],
|
||||
"Categories": ["collision", "accelerometer"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["prototyping", "robotics"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "collision.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["Collision.java"],
|
||||
"Python": ["collision.py"],
|
||||
"Node.js": ["collision.js"],
|
||||
"C++": ["collision.cxx"],
|
||||
"C": ["collision.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Vsource": {"unit": "V", "low" : 3.3, "high": 5}
|
||||
},
|
||||
"Platforms":
|
||||
{
|
||||
"Intel Joule Module":
|
||||
{
|
||||
"Notes": ["Requires pull-up resistors with carrier board"],
|
||||
"Images": [""]
|
||||
}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Collision-Sensor-p-1132.html", "http://wiki.seeed.cc/Grove-Collision_Sensor/"],
|
||||
"Datasheets": ["https://raw.githubusercontent.com/SeeedDocument/Grove-Collision_Sensor/master/res/DataSheet-MVS0608_02-v2_1.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
{
|
||||
"Library": "curieimu",
|
||||
"Description": "Bosch Atmospheric Sensor Library",
|
||||
"Sensor Class":
|
||||
{
|
||||
"curieimu":
|
||||
{
|
||||
"Name": "Digital Humidity, Pressure, and Temperature Sensor",
|
||||
"Description": "Curie IMU is a 6-axis accelerometer.",
|
||||
"Aliases": ["curieimu"],
|
||||
"Categories": ["IMU", "accelerometer", "compass"],
|
||||
"Connections": ["firmata"],
|
||||
"Project Type": ["prototyping", "industrial"],
|
||||
"Manufacturers": ["bosch"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": ["curieimu.py"],
|
||||
"Node.js": ["curieimu.js"],
|
||||
"C++": ["curieimu.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
|
||||
},
|
||||
"Platforms":
|
||||
{},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": [],
|
||||
"Datasheets": [],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,59 +0,0 @@
|
||||
{
|
||||
"Library": "cwlsxxa",
|
||||
"Description": "API for the Veris CWLSXXA CO2 Sensor Family",
|
||||
"Sensor Class":
|
||||
{
|
||||
"cwlsxxa":
|
||||
{
|
||||
"Name": "Veris CWLSXXA CO2 Sensor",
|
||||
"Description": "The driver was developed using the CWLSHTA CO2 Gas sensor. The 'T' variant supports a temperature transmitter, and the 'H' variant supports a humidity sensor. All 3 signals are provided by the device as analog 0-5Vdc, 0-10Vdc, or 4-20ma loop current outputs. For devices supporting temperature, the valid temperature range is 10C to 50C. The humidity ranges from 0% to 100% (non-condensing). The CO2 sensor ranges from 0 to 2000 ppm. This driver was developed using the 5Vdc outputs and the 4-20ma outputs. For voltage outputs, your MCU must be configured for 5V operation. In addition, you must configure the sensor (via it's configuration switches) to output 0-5VDC only. Using any other analog reference voltage will require the appropriate external circuitry (such as a voltage divider) in order to interface safely with your MCU. In addition, the sensor can be configured for 4-20ma usage, by specifying the correct receiver resistance (in ohms) in the constructor. This sensor was tested with a Cooking Hacks (Libelium) 4-channel 4-20ma Arduino interface shield. For this interface, the receiver resistance was specified as 165.0 ohms. For devices which do not support temperature, use '-1' as the temperature pin number in the object constructor. If temperature measurement is disabled, getTemperature() will always return 0C/32F. For devices which do not support humidity, use '-1' as the temperature pin number in the object constructor. If humidity measurement is disabled, getHumidity() will always return 0.",
|
||||
"Aliases": ["cwlsxxa"],
|
||||
"Categories": ["temp", "gaseous"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["industrial"],
|
||||
"Manufacturers": ["veris"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["CWLSXXA_Example.java"],
|
||||
"Python": ["cwlsxxa.py"],
|
||||
"Node.js": ["cwlsxxa.js"],
|
||||
"C++": ["cwlsxxa.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Vsource (DC)": {"unit": "VDC", "low": 20, "high": 30},
|
||||
"Vsource (AC)": {"unit": "VAC", "typ": 24},
|
||||
|
||||
"CO2 Measurement Range": {"unit": "ppm", "low": 0, "high": 5000},
|
||||
"CO2 Accuracy": {"unit": "ppm ±", "typ": 30},
|
||||
"CO2 Repeatability": {"unit": "ppm ±", "typ": 20},
|
||||
"CO2 Response Time": {"unit": "s", "max": 60},
|
||||
|
||||
"RH Measurement Range": {"unit": "%", "low": 0, "high": 100},
|
||||
"RH Operating Temperature Range": {"unit": "degC", "low": 10, "high": 35},
|
||||
"RH Accuracy": {"unit": "%", "typ": 2},
|
||||
"RH Stability": {"unit": "%", "typ": 1},
|
||||
|
||||
"Temperature Accuracy": {"unit": "degC", "typ": 0.5},
|
||||
"Temperature Resolution": {"unit": "degC", "typ": 0.1},
|
||||
"Temperature Range": {"unit": "degC", "low": 10, "high": 35}
|
||||
},
|
||||
"Platforms":
|
||||
{
|
||||
"Intel Joule Module":
|
||||
{
|
||||
"Notes": ["Requires pull-up resistors with carrier board"],
|
||||
"Images": [""]
|
||||
}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["http://www.veris.com/Item/CWLSHTA.aspx"],
|
||||
"Datasheets": ["http://www.veris.com/docs/Datasheets/CDL_CDW_d0117.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
{
|
||||
"Library": "dfrec",
|
||||
"Description": "DFRobot EC Meter Library",
|
||||
"Sensor Class":
|
||||
{
|
||||
"dfrec":
|
||||
{
|
||||
"Name": "Analog Electrical Conductivity (EC) Sensor",
|
||||
"Description": "The driver was tested with the DFRobot EC Analog Sensor. This device measure the electrical conductivity of an aqueous solution. The included probe is a K=1 model. Calibration is somewhat complicated - see the DFRobot wiki for instructions on calibration. Functions are provided to supply the appropriate values. By default, the values used in the DFRobot arduino example are used.",
|
||||
"Aliases": ["dfrec"],
|
||||
"Categories": ["ec", "conductivity"],
|
||||
"Connections": ["analog", "uart"],
|
||||
"Project Type": ["industrial"],
|
||||
"Manufacturers": ["dfrobot"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["DFREC_Example.java"],
|
||||
"Python": ["dfrec.py"],
|
||||
"Node.js": ["dfrec.js"],
|
||||
"C++": ["dfrec.cxx"],
|
||||
"C": ["dfrec.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "Typ": 5},
|
||||
"Measurement Range": {"unit": "mS/cm", "low": 1, "high": 20},
|
||||
"Operating Temperature": {"unit": "degC", "low": 5, "high": 40}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.dfrobot.com/product-1123.html"],
|
||||
"Datasheets": [""],
|
||||
"Schematics": ["http://image.dfrobot.com/image/data/DFR0300/DFR0300_v1.0_schematic.pdf"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
{
|
||||
"Library": "dfrorp",
|
||||
"Description": "UPM C++ API for the DFRobot ORP (Oxidation/Reduction Potential)",
|
||||
"Sensor Class":
|
||||
{
|
||||
"dfrorp":
|
||||
{
|
||||
"Name": "Analog Oxidation Reduction Potential (ORP) Sensor",
|
||||
"Description": "This library was tested with the DFRobot ORP (Oxidation/Reduction Potential) Sensor. To calibrate: Disconnect the sensor probe (but leave the sensor interface board connected). Then run one of the examples while holding down the 'calibrate' button on the device. Read the ORP value reported (it should be fairly small). This value is what you should supply to setCalibrationOffset(). Then reconnect the probe to the interface board and you should be ready to go. DO NOT press the calibrate button on the interface board while the probe is attached or you can permanently damage the probe.",
|
||||
"Aliases": ["dfrorp"],
|
||||
"Categories": ["orp", "liquid"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["industrial"],
|
||||
"Manufacturers": ["dfrobot"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["DFRORP_Example.java"],
|
||||
"Python": ["dfrorp.py"],
|
||||
"Node.js": ["dfrorp.js"],
|
||||
"C++": ["dfrorp.cxx"],
|
||||
"C": ["dfrorp.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "Typ": 5},
|
||||
"Measurement Range": {"unit": "V", "low": -2, "high": 2},
|
||||
"Operating Temperature": {"unit": "degC", "low": 5, "high": 70}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.dfrobot.com/product-1071.html"],
|
||||
"Datasheets": ["https://www.dfrobot.com/wiki/index.php/Analog_ORP_Meter(SKU:SEN0165)"],
|
||||
"Schematics": ["http://image.dfrobot.com/image/data/SEN0165/OPR%20meter%20V1.0%20Schematic.pdf"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
{
|
||||
"Library": "dfrph",
|
||||
"Description": "API for the DFRobot pH Sensors",
|
||||
"Sensor Class":
|
||||
{
|
||||
"dfrph":
|
||||
{
|
||||
"Name": "Analog pH Sensor",
|
||||
"Description": "TThis sensor family returns an analog voltage proportional to the acidity or alkalinity of a liquid -- it's pH value. This driver was developed using the DFRobot Analog pH meter and the DFRobot Analog pH Meter Pro. Calibration instructions, taken and slightly reworded from the DFRobot wiki at: http://dfrobot.com/wiki/index.php/PH_meter%28SKU:_SEN0161%29 1) Connect equipment: the pH electrode is connected to the BNC connector on the pH meter board, and then the pH meter board is connected to the analog port 0 of the controller. When the controller gets power, you will see the blue LED on board is on. 2) Put the pH electrode into the standard solution whose pH value is 7.00. Run the dfrph example and note the pH output value. Compare the value with 7.00, and calculate the difference. This is the value you should supply to the setOffset() method. 3) Put the pH electrode into the pH standard solution whose value is 4.00. Then wait about one minute, and adjust the potentiometer on the interface board. Let the value stabilise at around 4.00. At this time,the acidic calibration has been completed and you can measure the pH value of an acidic solution. 4) According to the linear characteristics of pH electrode itself, after the above calibration,you can directly measure the pH value of the alkaline solution. If you want to get better accuracy, you can recalibrate it. Alkaline calibration use the standard solution whose pH value is 9.18. Also adjust the potentiometer and let the value stabilise at around 9.18. After this calibration, you can measure the pH value of an alkaline solution.",
|
||||
"Aliases": ["dfrph"],
|
||||
"Categories": ["pH", "liquid"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["industrial"],
|
||||
"Manufacturers": ["dfrobot"],
|
||||
"Kits": [],
|
||||
"Image": "dfrph.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": ["dfrph.py"],
|
||||
"Node.js": ["dfrph.js"],
|
||||
"C++": ["dfrph.cxx"],
|
||||
"C": ["dfrph.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "Typ": 5},
|
||||
"Measurement Range": {"unit": "pH", "low": 0, "high": 14},
|
||||
"Operating Temperature": {"unit": "degC", "low": 0, "high": 60}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.dfrobot.com/product-1110.html"],
|
||||
"Datasheets": ["https://www.dfrobot.com/wiki/index.php/PH_meter(SKU:_SEN0161)"],
|
||||
"Schematics": ["http://image.dfrobot.com/image/data/SEN0161/pH%20meter%20V1.0%20SCH.pdf"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
{
|
||||
"Library": "ds1307",
|
||||
"Description": "DS1307 Real-Time Clock library",
|
||||
"Sensor Class":
|
||||
{
|
||||
"ds1307":
|
||||
{
|
||||
"Name": "DS1307 Real Time Clock (RTC) Module",
|
||||
"Description": "UPM module for the DS1307-based real-time clock. The clock can provide information about seconds, minutes, hours, day of the week, day of the month, month, and year. It can operate in either a 24-hour or a 12-hour format. This device can also output a square wave at 1Khz, 4Khz, 8Khz, and 32Khz. However, this capability is not implemented in this module.",
|
||||
"Aliases": ["ds1307"],
|
||||
"Categories": ["RTC", "timekeeping"],
|
||||
"Connections": ["i2c"],
|
||||
"Project Type": ["prototyping", "industrial"],
|
||||
"Manufacturers": ["seeed", "maxim"],
|
||||
"Kits": [],
|
||||
"Image": "ds1307.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["DS1307Sample.java"],
|
||||
"Python": ["ds1307.py"],
|
||||
"Node.js": ["ds1307.js"],
|
||||
"C++": ["ds1307.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 4.5, "high": 5.5},
|
||||
"Active Current": {"unit": "mA", "Typ": 1.5},
|
||||
"Standby Current (Oscillator On)": {"unit": "nA", "low": 480, "high": 800},
|
||||
"Operating Temperature": {"unit": "degC", "low": 0, "high": 70}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.maximintegrated.com/en/products/digital/real-time-clocks/DS1307.html/tb_tab0"],
|
||||
"Datasheets": ["https://datasheets.maximintegrated.com/en/ds/DS1307.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
{
|
||||
"Library": "ds1808lc",
|
||||
"Description": "API for DS1808 Dual Log Digital Potentiometer as a Light Controller",
|
||||
"Sensor Class":
|
||||
{
|
||||
"ds1808lc":
|
||||
{
|
||||
"Name": "DS1808LC Lighting Controller",
|
||||
"Description": "The Maxim Integrated [DS1808](http://www.maximintegrated.com/en/products/analog/data-converters/digital-potentiometers/DS1808.html) Dual Log Digital Potentiometer",
|
||||
"Aliases": ["ds1808lc"],
|
||||
"Categories": ["lighting"],
|
||||
"Connections": ["i2c"],
|
||||
"Project Type": ["prototyping", "industrial"],
|
||||
"Manufacturers": ["maxim"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": [],
|
||||
"Node.js": [],
|
||||
"C++": ["ds1808lc.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "+-V", "Typ": 12},
|
||||
"Voltage Range": {"unit": "+-%", "Typ": 10},
|
||||
"Operating Temperature": {"unit": "degC", "low": -40, "high": 85}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.maximintegrated.com/en/products/analog/data-converters/digital-potentiometers/DS1808.html"],
|
||||
"Datasheets": ["https://datasheets.maximintegrated.com/en/ds/DS1808.pdf"],
|
||||
"Schematics": [""]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
{
|
||||
"Library": "ds18b20",
|
||||
"Description": "API for the DS18B20 1-Wire Temperature Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"ds18b20":
|
||||
{
|
||||
"Name": "DS18B20 1-Wire Temperature Sensor",
|
||||
"Description": "The driver was tested with the DFRobot EC Analog Sensor. This device measure the electrical conductivity of an aqueous solution. The included probe is a K=1 model. Calibration is somewhat complicated - see the DFRobot wiki for instructions on calibration. Functions are provided to supply the appropriate values. By default, the values used in the DFRobot arduino example are used.",
|
||||
"Aliases": ["ds18b20"],
|
||||
"Categories": ["ec", "conductivity"],
|
||||
"Connections": ["uart"],
|
||||
"Project Type": ["prototyping", "industrial"],
|
||||
"Manufacturers": ["dallas"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": [""],
|
||||
"Python": ["ds18b20.py"],
|
||||
"Node.js": ["ds18b20.js"],
|
||||
"C++": ["ds18b20.cxx"],
|
||||
"C": ["ds18b20.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3.0, "high": 5.5},
|
||||
"Measurement Range": {"unit": "degC", "low": -55, "high": 125},
|
||||
"+-.5degC Accuracy Range": {"unit": "degC", "low": -10, "high": 85}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.sparkfun.com/products/11050"],
|
||||
"Datasheets": ["http://cdn.sparkfun.com/datasheets/Sensors/Temp/DS18B20.pdf"],
|
||||
"Schematics": [""]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
{
|
||||
"Library": "ds2413",
|
||||
"Description": "1-Wire Dual Channel Addressable Switch Library",
|
||||
"Sensor Class":
|
||||
{
|
||||
"ds2413":
|
||||
{
|
||||
"Name": "1-Wire Dual Channel Addressable Switch",
|
||||
"Description": "The DS2413 is a dual-channel programmable I/O 1-Wire(r) chip. The PIO outputs are configured as open-drain and provide up to 20mA continuous sink capability and off-state operating voltage up to 28V. Control and sensing of the PIO pins is performed with a dedicated device-level command protocol. This device requires the use of a UART to provide access to a Dallas 1-wire bus, via a new facility supported by MRAA (once the relevant PR is accepted), using the UartOW access class. It is important to realize that the UART is only being used to access and control a Dallas 1-wire compliant bus, it is not actually a UART device. Multiple DS2413 devices can be connected to this bus. This module will identify all such devices connected, and allow you to access them using an index starting at 0.",
|
||||
"Aliases": ["ds2413"],
|
||||
"Categories": ["switch"],
|
||||
"Connections": ["uart"],
|
||||
"Project Type": ["prototyping", "industrial"],
|
||||
"Manufacturers": ["maxim", "adafruit"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": ["ds2413.py"],
|
||||
"Node.js": ["ds2413.js"],
|
||||
"C++": ["ds2413.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 2.8, "high": 5.5},
|
||||
"Input Load Current": {"unit": "uA", "low": 3.5, "high": 950},
|
||||
"Operating Temperature": {"unit": "degC", "low": 0, "high": 70}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["http://www.maximintegrated.com/datasheet/index.mvp/id/4588", "https://learn.adafruit.com/adafruit-1-wire-gpio-breakout-ds2413/overview"],
|
||||
"Datasheets": ["http://www.adafruit.com/datasheets/DS2413.pdf"],
|
||||
"Schematics": ["https://learn.adafruit.com/assets/15639"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
{
|
||||
"Library": "e50hx",
|
||||
"Description": "UPM API for the Veris E50HX Energy Meter",
|
||||
"Sensor Class":
|
||||
{
|
||||
"e50hx":
|
||||
{
|
||||
"Name": "Veris E50HX (E50H2/E50H5) Energy Meter Module",
|
||||
"Description": "This module implements support for the Veris E50H2 and E50H5 BACnet Energy Meters. From the datasheet: The E50H5 BACnet MS/TP DIN Rail Meter with Data Logging combines exceptional performance and easy installation to deliver a cost-effective solution for power monitoring applications. Native serial communication via BACnet MS/TP provides complete accessibility of all measurements to your Building Automation System The data logging capability protects data in the event of a power failure. The E50H5 can be easily installed on standard DIN rail, surface mounted or contained in an optional NEMA 4 enclosure, as needed. The front-panel LCD display makes device installation and setup easy and provides local access to the full set of detailed measurements. This module was developed using the upm::BACNETMSTP module, based on libbacnet-stack 0.8.3. Both libbacnet 0.8.3 and the upm::BACNETMSTP libraries must be present in order to build this module. This driver was developed on the E50H5. The Trend Log functionality is not currently supported. The Binary Input Objects are also not supported as these are only used for the Alarm bits which are already available from Analog Input Object 52 as an alarm bitfield incorporating all of the supported alarm indicators. It was connected using an RS232->RS485 interface. You cannot use the built in MCU TTL UART pins for accessing this device -- you must use a full Serial RS232->RS485 or USB-RS485 interface connected via USB.",
|
||||
"Aliases": ["e50hx"],
|
||||
"Categories": ["energy"],
|
||||
"Connections": ["rs485"],
|
||||
"Project Type": ["industrial"],
|
||||
"Manufacturers": ["veris"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["E50HX_Example.java"],
|
||||
"Python": ["e50hx.py"],
|
||||
"Node.js": ["e50hx.js"],
|
||||
"C++": ["e50hx.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"AC Operating Voltage": {"unit": "VAC", "low": 90, "high": 600},
|
||||
"AC Power Usage": {"unit": "VA", "Max": 5},
|
||||
"DC Operating Voltage": {"unit": "VDC", "low": 125, "high": 300},
|
||||
"DC Power Usage": {"unit": "W", "Max": 3},
|
||||
"Operating Temperature": {"unit": "degC", "low": -30, "high": 70}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["http://www.veris.com/Item/E50H5.aspx"],
|
||||
"Datasheets": ["http://www.veris.com/docs/Datasheets/E5x_d0117.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
{
|
||||
"Library": "ecezo",
|
||||
"Description": "API for the EC-EZO EC Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"ecezo":
|
||||
{
|
||||
"Name": "Electrical Conductivity (EC) Circuit",
|
||||
"Description": "This driver was tested with the Atlas Scientific Electrical Conductivity kit. This device can operate in either UART or I2C modes.",
|
||||
"Aliases": ["ecezo"],
|
||||
"Categories": ["ec", "conductivity", "liquid"],
|
||||
"Connections": ["i2c", "uart"],
|
||||
"Project Type": ["industrial"],
|
||||
"Manufacturers": ["atlas", "sparkfun"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["ECEZO_Example.java"],
|
||||
"Python": ["ecezo.py"],
|
||||
"Node.js": ["ecezo.js"],
|
||||
"C++": ["ecezo.cxx"],
|
||||
"C": ["ecezo.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3.3, "high": 5},
|
||||
"Operating Current": {"unit": "mA", "low": 19, "high": 50},
|
||||
"Conductivity Probe Range": {"unit": "K", "low": 0.1, "high": 10},
|
||||
"Accurate Reading Range (K=0.1)": {"unit": "uS", "low": 0.5, "high": 50000},
|
||||
"Accurate Reading Range (K=1.0)": {"unit": "uS", "low": 5, "high": 200000},
|
||||
"Accurate Reading Range (K=10.0)": {"unit": "uS", "low": 10, "high": 1000000},
|
||||
"Operating Temperature": {"unit": "degC", "low": 1, "high": 35}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.atlas-scientific.com/product_pages/kits/ec_k1_0_kit.html", "https://www.sparkfun.com/products/12908"],
|
||||
"Datasheets": ["https://cdn.sparkfun.com/datasheets/Sensors/Biometric/EC_EZO_Datasheet.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
{
|
||||
"Library": "ecs1030",
|
||||
"Description": "ECS1030 Electricity Sensor Library",
|
||||
"Sensor Class":
|
||||
{
|
||||
"ecs1030":
|
||||
{
|
||||
"Name": "Non-Invasive Current Sensor",
|
||||
"Description": "This non-invasive current sensor can be clamped around the supply line of an electrical load to tell you how much current is passing through it. It does this by acting as an inductor and responding to the magnetic field around a current-carrying conductor. This particular current sensor measures a load up to 30 A, which makes it great for building your own energy monitors.",
|
||||
"Aliases": ["ecs1030"],
|
||||
"Categories": ["meter", "electric"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["industrial"],
|
||||
"Manufacturers": ["sparkfun"],
|
||||
"Kits": [],
|
||||
"Image": "ecs1030.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": [],
|
||||
"Node.js": [],
|
||||
"C++": ["ecs1030.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Measurable Current": {"unit": "V", "low": 1, "nominal": 30, "maximum": 60},
|
||||
"Operating Temperature": {"unit": "degC", "low": -40, "high": 65}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.sparkfun.com/products/11005"],
|
||||
"Datasheets": ["https://cdn.sparkfun.com/datasheets/Sensors/Current/ECS1030-L72-SPEC.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
{
|
||||
"Library": "ehr",
|
||||
"Description": "API for the Ear-clip Heart Rate Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"ehr":
|
||||
{
|
||||
"Name": "Ear-clip Heart Rate Sensor",
|
||||
"Description": "UPM module for the ear-clip heart rate sensor. It is used to measure your heart rate.",
|
||||
"Aliases": ["ehr"],
|
||||
"Categories": ["heartrate"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["medical", "wearables", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "ehr.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["EHRSample.java"],
|
||||
"Python": ["ehr.py"],
|
||||
"Node.js": ["ehr.js"],
|
||||
"C++": ["ehr.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3, "high": 5},
|
||||
"Operating Current": {"unit": "mA", "typ": 6.5},
|
||||
"Measurement Range": {"unit": "bpm", "min": 30}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Ear-clip-Heart-Rate-Sensor-p-1116.html"],
|
||||
"Datasheets": ["http://wiki.seeedstudio.com/wiki/Grove_-_Heart_rate_ear_clip_kit"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
{
|
||||
"Library": "eldriver",
|
||||
"Description": "API for the EL Driver Module",
|
||||
"Sensor Class":
|
||||
{
|
||||
"eldriver":
|
||||
{
|
||||
"Name": "Electroluminescent Wire (EL) Driver",
|
||||
"Description": "The EL Driver allows you to easily light up an EL wire with just one single cable.",
|
||||
"Aliases": ["eldriver"],
|
||||
"Categories": ["lighting"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["prototyping", "commercial", "wearables"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "eldriver.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": ["eldriver.py"],
|
||||
"Node.js": ["eldriver.js"],
|
||||
"C++": ["eldriver.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3.3, "high": 5},
|
||||
"Operating Current": {"unit": "mA", "max": 300},
|
||||
"Supported EL Capacitance": {"unit": "nF", "max": 15}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-EL-Driver-p-2269.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-EL_Driver/"],
|
||||
"Schematics": ["https://raw.githubusercontent.com/SeeedDocument/Grove-EL_Driver/master/res/Grove-EL_Driver_v1.0.pdf"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
{
|
||||
"Library": "electromagnet",
|
||||
"Description": "Electromagnet Library",
|
||||
"Sensor Class":
|
||||
{
|
||||
"electromagnet":
|
||||
{
|
||||
"Name": "API for the Electromagnet",
|
||||
"Description": "The Electromagnet can hold up to 1 kg (approximately 2.2 lbs)",
|
||||
"Aliases": ["electromagnet"],
|
||||
"Categories": ["electric", "magnetic"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "electromagnet.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": ["electromagnet.py"],
|
||||
"Node.js": ["electromagnet.js"],
|
||||
"C++": ["electromagnet.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "typ": 5},
|
||||
"Operating Current": {"unit": "mA", "typ": 400},
|
||||
"Standby Current": {"unit": "uA", "typ": 200},
|
||||
"Max Load Weight": {"unit": "kgs", "typ": 1}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Electromagnet-p-1820.html"],
|
||||
"Datasheets": ["https://raw.githubusercontent.com/SeeedDocument/Grove-Electromagnet/master/res/ZYE1-P20-15.pdf", "http://wiki.seeed.cc/Grove-Electromagnet/"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
{
|
||||
"Library": "emg",
|
||||
"Description": "Grove EMG Muscle Signal Reader Library",
|
||||
"Sensor Class":
|
||||
{
|
||||
"emg":
|
||||
{
|
||||
"Name": "Electromyography (EMG) Sensor",
|
||||
"Description": "Grove EMG muscle signal reader gathers small muscle signals, then processes them, and returns the result.",
|
||||
"Aliases": ["emg"],
|
||||
"Categories": ["electromyography", "medical"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["wearables", "computer interfacing", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "emg.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["Emg.java"],
|
||||
"Python": ["emg.py"],
|
||||
"Node.js": ["emg.js"],
|
||||
"C++": ["emg.cxx"],
|
||||
"C": ["emg.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3.3, "high": 5}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-EMG-Detector-p-1737.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-EMG_Detector/"],
|
||||
"Schematics": ["https://raw.githubusercontent.com/SeeedDocument/Grove-EMG_Detector/master/res/Grove-EMG_Sensor_v1.1_SCH.pdf"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
{
|
||||
"Library": "enc03r",
|
||||
"Description": "ENC03R Single Axis Gyro Library",
|
||||
"Sensor Class":
|
||||
{
|
||||
"enc03r":
|
||||
{
|
||||
"Name": "Single-axis Analog Gyro Module",
|
||||
"Description": "UPM module for the ENC03R single axis analog gyro. This gyroscope measures x-axis angular velocity, that is how fast the sensor is rotating around the x-axis. Calibration of the sensor is necessary for accurate readings.",
|
||||
"Aliases": ["enc03r"],
|
||||
"Categories": ["gyroscope", "IMU", "Discontinued"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["prototyping"],
|
||||
"Manufacturers": ["murata", "seeed"],
|
||||
"Kits": ["robok"],
|
||||
"Image": "enc03r.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["ENC03RSample.java"],
|
||||
"Python": ["enc03r.py"],
|
||||
"Node.js": ["enc03r.js"],
|
||||
"C++": ["enc03r.cxx"],
|
||||
"C": ["enc03r.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 2.7, "high": 5.25},
|
||||
"Response Time": {"unit": "Hz", "typ": 50},
|
||||
"Operating Temperature": {"unit": "decC", "low": -5, "high": 75}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Single-Axis-Analog-Gyro-p-1451.html"],
|
||||
"Datasheets": ["http://www.seeedstudio.com/wiki/File:Analog_Gyro_datasheet.pdf", "http://wiki.seeedstudio.com/wiki/Grove_-_Single_Axis_Analog_Gyro"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
{
|
||||
"Library": "flex",
|
||||
"Description": "API for the Spectra Symbol Flex Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"flex":
|
||||
{
|
||||
"Name": "Resistive Flex Sensor",
|
||||
"Description": "A simple flex sensor. The resistance across the sensor increases when flexed. Patented technology by Spectra Symbol, these sensors were used in the original Nintendo* Power Glove.",
|
||||
"Aliases": ["flex"],
|
||||
"Categories": ["flex sensors"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["prototyping", "industrial"],
|
||||
"Manufacturers": ["sparkfun"],
|
||||
"Kits": [],
|
||||
"Image": "flex.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["FlexSensorExample.java"],
|
||||
"Python": [],
|
||||
"Node.js": ["flex.js"],
|
||||
"C++": ["flex.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Flat Resistance": {"unit": "KOhms", "typ": 10},
|
||||
"Bend Resistance": {"unit": "KOhms", "low": 60, "high": 110},
|
||||
"Temperature Range": {"unit": "degC", "low": -35, "high": 80}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.sparkfun.com/products/8606"],
|
||||
"Datasheets": ["https://cdn.sparkfun.com/datasheets/Sensors/ForceFlex/FLEXSENSORREVA1.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
275
src/gas/gas.json
275
src/gas/gas.json
@ -1,275 +0,0 @@
|
||||
{
|
||||
"Library": "gas",
|
||||
"Description": "Gas Sensor Library",
|
||||
"Sensor Class":
|
||||
{
|
||||
"mq2":
|
||||
{
|
||||
"Name": "MQ2 Methane, Butane, Liquefied Petroleum Gas (LPG), and Smoke Sensor",
|
||||
"Description": "The MQ2 Gas Sensor module is useful for gas leakage detection (in home and industry). It can detect LPG, i-butane, methane, alcohol, hydrogen, smoke, and other combustible gases. It's a medium-sensitivity sensor with a detection range of 300-10,000 ppm.",
|
||||
"Aliases": ["mq2"],
|
||||
"Categories": ["gas"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["prototyping", "safety", "industrial"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": ["hak"],
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": [],
|
||||
"Node.js": [],
|
||||
"C++": ["gas-mq2.cxx"],
|
||||
"C": ["gas-mqx.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "typ": 5},
|
||||
"Operating Current": {"unit": "mA", "low": 0.1, "high": 160},
|
||||
"Heater Resistance": {"unit": "Ohms", "typ": 33},
|
||||
"Sensor Resistance": {"unit": "KOhms", "low": 3, "high": 30}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Gas-Sensor(MQ2)-p-937.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-Gas_Sensor-MQ2/"],
|
||||
"Schematics": []
|
||||
}
|
||||
},
|
||||
|
||||
"mq3":
|
||||
{
|
||||
"Name": "MQ3 Alcohol, Ethanol, Smoke Sensor",
|
||||
"Description": "The MQ3 Gas Sensor module is useful for gas leakage detection (in home and industry). It can detect alcohol vapors and benzine. It's highly sensitive but has a long warm-up time of about 1 minute. It's detection range is 0.04-4 mg/L Alcohol.",
|
||||
"Aliases": ["mq3"],
|
||||
"Categories": ["gas"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["prototyping", "safety", "industrial"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": [],
|
||||
"Node.js": [],
|
||||
"C++": ["gas-mq3.cxx"],
|
||||
"C": ["gas-mqx.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "typ": 5},
|
||||
"Operating Current": {"unit": "mA", "low": 0.1, "high": 150},
|
||||
"Heater Resistance": {"unit": "Ohms", "typ": 33},
|
||||
"Sensor Resistance": {"unit": "MOhms", "low": 1, "high": 8},
|
||||
"Detectable Concentration": {"unit": "mg/L", "low": 0.05, "high": 10}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Gas-Sensor%28MQ3%29-p-1418.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-Gas_Sensor-MQ3/"],
|
||||
"Schematics": []
|
||||
}
|
||||
},
|
||||
|
||||
"mq4":
|
||||
{
|
||||
"Name": "MQ4 Methane and Connecticut Natural Gas (CNG) Sensor",
|
||||
"Description": "The MQ4 Gas Sensor module is useful for detecting CH4 (Methane), and natural gas concentrations in the air. It has a detection range of 100-10000 ppm. For optimum use, it requires calibration after a pre-heat time of at least 24 hours. See the datasheet for details.",
|
||||
"Aliases": ["mq4"],
|
||||
"Categories": ["gas"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["prototyping", "safety", "industrial"],
|
||||
"Manufacturers": ["dfrobot"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": [],
|
||||
"Node.js": [],
|
||||
"C++": ["gas-mq4.cxx"],
|
||||
"C": ["gas-mqx.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "typ": 5},
|
||||
"Operating Current": {"unit": "mA", "low": 0.1, "high": 150},
|
||||
"Heater Resistance": {"unit": "Ohms", "typ": 33},
|
||||
"Sensor Resistance": {"unit": "KOhms", "low": 10, "high": 60}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.dfrobot.com/product-683.html"],
|
||||
"Datasheets": ["http://image.dfrobot.com/image/data/SEN0129/MQ-4.pdf", "https://www.dfrobot.com/wiki/index.php/Analog_Gas_Sensor(MQ4)_(SKU:SEN0129)"],
|
||||
"Schematics": []
|
||||
}
|
||||
},
|
||||
|
||||
"mq5":
|
||||
{
|
||||
"Name": "MQ5 Natural Gas and Liquefied Petroleum Gas (LPG) Sensor",
|
||||
"Description": "The MQ5 Gas Sensor module is useful for gas leakage detection (in home and industry). It can detect LPG, natural gas, town gas, and so on. It is highly sensitive and has a detection range of 300-10,000 ppm.",
|
||||
"Aliases": ["mq5"],
|
||||
"Categories": ["gas"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["prototyping", "safety", "industrial"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": ["eak"],
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": [],
|
||||
"Node.js": [],
|
||||
"C++": ["gas-mq5.cxx"],
|
||||
"C": ["gas-mqx.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "typ": 5},
|
||||
"Operating Current": {"unit": "mA", "low": 0.1, "high": 160},
|
||||
"Heater Resistance": {"unit": "Ohms", "typ": 31},
|
||||
"Sensor Resistance": {"unit": "KOhms", "low": 10, "high": 60},
|
||||
"Detectable Concentration": {"unit": "ppm", "low": 200, "high": 10000}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Gas-Sensor%28MQ5%29-p-938.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-Gas_Sensor-MQ5/", "https://raw.githubusercontent.com/SeeedDocument/Grove-Gas_Sensor-MQ5/master/res/MQ-5.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
},
|
||||
|
||||
"mq6":
|
||||
{
|
||||
"Name": "MQ6 Liquefied Petroleum Gas (LPG) and Butane Sensor",
|
||||
"Description": "The MQ6 Gas Sensor module is useful for detecting LPG, iso-butane, propane, and LNG concentrations in the air. It has a detection range of 200-10000 ppm. For optimum use, it requires calibration after a pre-heat time of at least 24 hours. See the datasheet for details.",
|
||||
"Aliases": ["mq6"],
|
||||
"Categories": ["gas"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["prototyping", "safety", "industrial"],
|
||||
"Manufacturers": ["dfrobot"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": [],
|
||||
"Node.js": [],
|
||||
"C++": ["gas-mq6.cxx"],
|
||||
"C": ["gas-mqx.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "typ": 5},
|
||||
"Operating Current": {"unit": "mA", "low": 0.1, "high": 150},
|
||||
"Heater Resistance": {"unit": "Ohms", "typ": 33},
|
||||
"Sensor Resistance": {"unit": "KOhms", "low": 10, "high": 60},
|
||||
"Detectable Concentration": {"unit": "ppm", "low": 200, "high": 10000}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.dfrobot.com/product-685.html"],
|
||||
"Datasheets": ["https://www.dfrobot.com/wiki/index.php/LPG_Gas_Sensor(MQ6)_(SKU:SEN0131)", "http://image.dfrobot.com/image/data/SEN0131/MQ-6.pdf"],
|
||||
"Schematics": ["http://image.dfrobot.com/image/data/SEN0131/MQ-X%20Schematic.pdf"]
|
||||
}
|
||||
},
|
||||
|
||||
"mq7":
|
||||
{
|
||||
"Name": "MQ7 Carbon Monoxide Sensor",
|
||||
"Description": "The Grove MQ7 Gas Sensor module is useful for detecting Carbon Monoxide (CO) concentrations in the air. It has a detection range of 20-2000 ppm. For optimum use, it requires calibration after a pre-heat time of 48 hours. See the datasheet for details.",
|
||||
"Aliases": ["mq7"],
|
||||
"Categories": ["gas"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["prototyping", "safety", "industrial"],
|
||||
"Manufacturers": ["dfrobot"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": [],
|
||||
"Node.js": [],
|
||||
"C++": ["gas-mq7.cxx"],
|
||||
"C": ["gas-mqx.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "typ": 5},
|
||||
"Operating Current": {"unit": "mA", "typ": 70},
|
||||
"Heater Resistance": {"unit": "Ohms", "typ": 33},
|
||||
"Detectable Concentration": {"unit": "ppm", "low": 20, "high": 2000}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.dfrobot.com/product-686.html"],
|
||||
"Datasheets": ["https://www.dfrobot.com/wiki/index.php/Carbon_Monoxide_Gas_Sensor(MQ7)_(SKU:SEN0132)", "http://image.dfrobot.com/image/data/SEN0132/MQ-7.pdf"],
|
||||
"Schematics": ["http://image.dfrobot.com/image/data/SEN0132/MQ-X%20Schematic.pdf"]
|
||||
}
|
||||
},
|
||||
|
||||
"mq8":
|
||||
{
|
||||
"Name": "MQ8 Flammable (Hydrogen) Gas Sensor",
|
||||
"Description": "The MQ8 Gas Sensor module is useful for detecting Hydrogen gas concentrations in the air. It has a detection range of 100-10000 ppm. For optimum use, it requires calibration after a pre-heat time of at least 24 hours. See the datasheet for details.",
|
||||
"Aliases": ["mq8"],
|
||||
"Categories": ["gas"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["prototyping", "safety", "industrial"],
|
||||
"Manufacturers": ["dfrobot"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": [],
|
||||
"Node.js": [],
|
||||
"C++": ["gas-mq8.cxx"],
|
||||
"C": ["gas-mqx.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "typ": 5},
|
||||
"Operating Current": {"unit": "mA", "max": 160},
|
||||
"Heater Resistance": {"unit": "Ohms", "typ": 31},
|
||||
"Sensor Resistance": {"unit": "KOhms", "low": 10, "high": 60},
|
||||
"Detectable Concentration": {"unit": "ppm", "low": 100, "high": 10000}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.dfrobot.com/product-687.html"],
|
||||
"Datasheets": ["https://www.dfrobot.com/wiki/index.php/Hydrogen_Gas_Sensor(MQ8)_(SKU:SEN0133)", "http://image.dfrobot.com/image/data/SEN0133/MQ-8.pdf"],
|
||||
"Schematics": ["http://image.dfrobot.com/image/data/SEN0133/MQ-X%20Schematic.pdf"]
|
||||
}
|
||||
},
|
||||
|
||||
"mq9":
|
||||
{
|
||||
"Name": "MQ9 Carbon Monoxide (CO) and Flammable Gas Sensor",
|
||||
"Description": "The Grove MQ9 Gas Sensor module is useful for gas leakage detection (in home and industry). It can detect carbon monoxide, coal gas, and liquefied gas. Its sensitivity is 10-1,000 ppm CO, and 100-10,000 ppm Gas.",
|
||||
"Aliases": ["mq9"],
|
||||
"Categories": ["gas"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["prototyping", "safety", "industrial"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": [],
|
||||
"Node.js": [],
|
||||
"C++": ["gas-mq9.cxx"],
|
||||
"C": ["gas-mqx.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "typ": 5},
|
||||
"Operating Current": {"unit": "mA", "low": 0.1, "high": 68},
|
||||
"Heater Resistance": {"unit": "Ohms", "typ": 33},
|
||||
"Sensor Resistance": {"unit": "Ohms", "low": 2, "high": 20000},
|
||||
"Detectable Concentration": {"unit": "ppm", "low": 200, "high": 10000}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Gas-Sensor%28MQ9%29-p-1419.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-Gas_Sensor-MQ9/", "https://raw.githubusercontent.com/SeeedDocument/Grove-Gas_Sensor-MQ9/master/res/MQ-9.pdf"],
|
||||
"Schematics": ["https://raw.githubusercontent.com/SeeedDocument/Grove-Gas_Sensor-MQ9/master/res/Gas_Sensor_Schematic.pdf"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
{
|
||||
"Library": "gp2y0a",
|
||||
"Description": "API for the GP2Y0A family of IR Proximity Sensors",
|
||||
"Sensor Class":
|
||||
{
|
||||
"gp2y0a":
|
||||
{
|
||||
"Name": "Analog Infrared (IR) Based Distance Sensor",
|
||||
"Description": "Sensors of this family return an analog voltage corresponding to the distance of an object from the sensor. The voltage is lower when objects are far away; the voltage increases as objects get closer to the sensor.",
|
||||
"Aliases": ["gp2y0a"],
|
||||
"Categories": ["proximity", "light"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["prototyping", "robotics"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "gp2y0a.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["Gp2y0aExample.java"],
|
||||
"Python": ["gp2y0a.py"],
|
||||
"Node.js": ["gp2y0a.js"],
|
||||
"C++": ["gp2y0a.cxx"],
|
||||
"C": ["gp2y0a.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 2.5, "typ": 5, "high": 7},
|
||||
"Operating Current": {"unit": "mA", "typ": 33, "max": 50},
|
||||
"Measurement Range": {"unit": "cm", "low": 10, "high": 80}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-80cm-Infrared-Proximity-Sensor-p-788.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-80cm_Infrared_Proximity_Sensor/"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
{
|
||||
"Library": "gprs",
|
||||
"Description": "API for the GPRS Module",
|
||||
"Sensor Class":
|
||||
{
|
||||
"gprs":
|
||||
{
|
||||
"Name": "General Packet Radio Service (GPRS) Module",
|
||||
"Description": "The driver was tested with the GPRS Module, V2. It's a GSM GPRS module based on the SIM900. This module uses a standard 'AT' command set. See the datasheet for a full list of available commands and their possible responses.",
|
||||
"Aliases": ["gprs"],
|
||||
"Categories": ["wireless"],
|
||||
"Connections": ["uart"],
|
||||
"Project Type": ["prototyping", "wireless"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "gprs.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": ["gprs.py"],
|
||||
"Node.js": ["gprs.js"],
|
||||
"C++": ["gprs.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Input Voltage (5v Pin)": {"unit": "V", "Typ": 5},
|
||||
"Input Voltage (Vin Pin)": {"unit": "V", "low": 6.5, "high": 12},
|
||||
"Power Consumption": {"unit": "mA", "low": 1.5},
|
||||
"Operating Temperature": {"unit": "degC", "low": -40, "high": 85}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/GPRS-Shield-V3.0-p-2333.html"],
|
||||
"Datasheets": ["http://www.seeedstudio.com/document/SIM900datasheeet.zip", "http://wiki.seeedstudio.com/wiki/GPRS_Shield_V3.0", "http://www.seeedstudio.com/wiki/images/7/72/AT_Commands_v1.11.pdf", "http://garden.seeedstudio.com/images/a/a8/SIM900_AT_Command_Manual_V1.03.pdf", "http://garden.seeedstudio.com/images/a/a0/SIM900_ATC_V1_00.pdf"],
|
||||
"Schematics": ["http://www.seeedstudio.com/wiki/File:GPRS_Shield_v3.0.pdf"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
{
|
||||
"Library": "grovecollision",
|
||||
"Description": "API for the Grove Collision Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"grovecollision":
|
||||
{
|
||||
"Name": "Grove Collision Sensor",
|
||||
"Description": "The Grove Collision Sensor can detect whether any collision movement or vibration happens. It outputs a low pulse signal when vibration is detected.",
|
||||
"Aliases": ["grovecollision"],
|
||||
"Categories": ["collision", "deprecated"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["prototyping", "robotics"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "grovecollision.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["GroveCollision.java"],
|
||||
"Python": ["grovecollision.py"],
|
||||
"Node.js": ["grovecollision.js"],
|
||||
"C++": ["grovecollision.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3.3, "high": 5},
|
||||
"Operating Current": {"unit": "mA", "max": 2},
|
||||
"Reaction Point": {"unit": "mg", "typ": 50},
|
||||
"Off Resistance": {"unit": "MOhms", "min": 30},
|
||||
"On Resistance": {"unit": "Ohms", "max": 100}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Collision-Sensor-p-1132.html"],
|
||||
"Datasheets": ["https://raw.githubusercontent.com/SeeedDocument/Grove-Collision_Sensor/master/res/DataSheet-MVS0608_02-v2_1.pdf", "http://wiki.seeed.cc/Grove-Collision_Sensor/"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
{
|
||||
"Library": "groveehr",
|
||||
"Description": "API for the Ear-clip Heart Rate Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"groveehr":
|
||||
{
|
||||
"Name": "Ear-clip Heart Rate Sensor",
|
||||
"Description": "UPM module for the ear-clip heart rate sensor. It is used to measure your heart rate.",
|
||||
"Aliases": ["groveehr"],
|
||||
"Categories": ["heartrate", "deprecated"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["medical", "wearables", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "groveehr.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["GroveEHRSample.java"],
|
||||
"Python": ["groveehr.py"],
|
||||
"Node.js": ["groveehr.js"],
|
||||
"C++": ["groveehr.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3, "high": 5},
|
||||
"Operating Current": {"unit": "mA", "typ": 6.5},
|
||||
"Measurement Range": {"unit": "bpm", "min": 30}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Ear-clip-Heart-Rate-Sensor-p-1116.html"],
|
||||
"Datasheets": ["http://wiki.seeedstudio.com/wiki/Grove_-_Heart_rate_ear_clip_kit"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
{
|
||||
"Library": "groveeldriver",
|
||||
"Description": "API for the Grove EL Driver Module",
|
||||
"Sensor Class":
|
||||
{
|
||||
"groveeldriver":
|
||||
{
|
||||
"Name": "Grove Electroluminescent Wire (EL) Driver",
|
||||
"Description": "The Grove EL Driver allows you to easily light up an EL wire with just one single cable.",
|
||||
"Aliases": ["groveeldriver"],
|
||||
"Categories": ["lighting", "deprecated"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["prototyping", "commercial", "wearables"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "groveeldriver.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": ["groveeldriver.py"],
|
||||
"Node.js": ["groveeldriver.js"],
|
||||
"C++": ["groveeldriver.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3.3, "high": 5},
|
||||
"Operating Current": {"unit": "mA", "max": 300},
|
||||
"Supported EL Capacitance": {"unit": "nF", "max": 15}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-EL-Driver-p-2269.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-EL_Driver/"],
|
||||
"Schematics": ["https://raw.githubusercontent.com/SeeedDocument/Grove-EL_Driver/master/res/Grove-EL_Driver_v1.0.pdf"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
{
|
||||
"Library": "groveelectromagnet",
|
||||
"Description": "Grove Electromagnet Library",
|
||||
"Sensor Class":
|
||||
{
|
||||
"groveelectromagnet":
|
||||
{
|
||||
"Name": "API for the Grove Electromagnet",
|
||||
"Description": "The Grove Electromagnet can hold up to 1 kg (approximately 2.2 lbs)",
|
||||
"Aliases": ["groveelectromagnet"],
|
||||
"Categories": ["electric", "magnetic", "deprecated"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "groveelectromagnet.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": ["groveelectromagnet.py"],
|
||||
"Node.js": ["groveelectromagnet.js"],
|
||||
"C++": ["groveelectromagnet.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "typ": 5},
|
||||
"Operating Current": {"unit": "mA", "typ": 400},
|
||||
"Standby Current": {"unit": "uA", "typ": 200},
|
||||
"Max Load Weight": {"unit": "kgs", "typ": 1}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Electromagnet-p-1820.html"],
|
||||
"Datasheets": ["https://raw.githubusercontent.com/SeeedDocument/Grove-Electromagnet/master/res/ZYE1-P20-15.pdf", "http://wiki.seeed.cc/Grove-Electromagnet/"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
{
|
||||
"Library": "groveemg",
|
||||
"Description": "Grove EMG Muscle Signal Reader Library",
|
||||
"Sensor Class":
|
||||
{
|
||||
"groveemg":
|
||||
{
|
||||
"Name": "Grove Electromyography (EMG) Sensor",
|
||||
"Description": "Grove EMG muscle signal reader gathers small muscle signals, then processes them, and returns the result.",
|
||||
"Aliases": ["groveemg"],
|
||||
"Categories": ["electromyography", "medical", "deprecated"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["wearables", "computer interfacing", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["GroveEmg.java"],
|
||||
"Python": ["groveemg.py"],
|
||||
"Node.js": ["groveemg.js"],
|
||||
"C++": ["groveemg.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3.3, "high": 5}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-EMG-Detector-p-1737.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-EMG_Detector/"],
|
||||
"Schematics": ["https://raw.githubusercontent.com/SeeedDocument/Grove-EMG_Detector/master/res/Grove-EMG_Sensor_v1.1_SCH.pdf"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
{
|
||||
"Library": "grovegprs",
|
||||
"Description": "API for the Grove GPRS Module",
|
||||
"Sensor Class":
|
||||
{
|
||||
"grovegprs":
|
||||
{
|
||||
"Name": "Grove General Packet Radio Service (GPRS) Module",
|
||||
"Description": "The driver was tested with the Grove GPRS Module, V2. It's a GSM GPRS module based on the SIM900. This module uses a standard 'AT' command set. See the datasheet for a full list of available commands and their possible responses.",
|
||||
"Aliases": ["grovegprs"],
|
||||
"Categories": ["wireless"],
|
||||
"Connections": ["uart"],
|
||||
"Project Type": ["prototyping", "wireless"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "grovegprs.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": ["grovegprs.py"],
|
||||
"Node.js": ["grovegprs.js"],
|
||||
"C++": ["grovegprs.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Input Voltage (5v Pin)": {"unit": "V", "Typ": 5},
|
||||
"Input Voltage (Vin Pin)": {"unit": "V", "low": 6.5, "high": 12},
|
||||
"Power Consumption": {"unit": "mA", "low": 1.5},
|
||||
"Operating Temperature": {"unit": "degC", "low": -40, "high": 85}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/GPRS-Shield-V3.0-p-2333.html"],
|
||||
"Datasheets": ["http://www.seeedstudio.com/document/SIM900datasheeet.zip", "http://wiki.seeedstudio.com/wiki/GPRS_Shield_V3.0", "http://www.seeedstudio.com/wiki/images/7/72/AT_Commands_v1.11.pdf", "http://garden.seeedstudio.com/images/a/a8/SIM900_AT_Command_Manual_V1.03.pdf", "http://garden.seeedstudio.com/images/a/a0/SIM900_ATC_V1_00.pdf"],
|
||||
"Schematics": ["http://www.seeedstudio.com/wiki/File:GPRS_Shield_v3.0.pdf"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
{
|
||||
"Library": "grovegsr",
|
||||
"Description": "API for the Grove GSR Galvanic Skin Response Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"grovegsr":
|
||||
{
|
||||
"Name": "Galvanic Skin Response (GSR) Sensor",
|
||||
"Description": "Measures the electrical conductance of skin to measure strong emotional reactions. In other words, it measures sweat on your fingers as an indicator of strong emotional reactions.",
|
||||
"Aliases": ["grovegsr"],
|
||||
"Categories": ["skinresponse"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["medical", "interface", "wearables", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["GroveGsr.java"],
|
||||
"Python": ["grovegsr.py"],
|
||||
"Node.js": ["grovegsr.js"],
|
||||
"C++": ["grovegsr.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3.3, "high": 5},
|
||||
"Operating Current": {"unit": "mA", "low": 0.7, "high": 3},
|
||||
"Operating Temperature": {"unit": "degC", "min": 0, "max": 70}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-GSR-sensor-p-1614.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-GSR_Sensor/", "file:///C:/Users/Malachai/Downloads/Lm324.pdf"],
|
||||
"Schematics": ["https://github.com/SeeedDocument/Grove-GSR_Sensor/raw/master/res/Grove%20-%20GSR_v1.2_SCH.pdf", "https://github.com/SeeedDocument/Grove-GSR_Sensor/raw/master/res/Grove%20-%20GSR%20v1.0%20SCH.pdf"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
{
|
||||
"Library": "grovelinefinder",
|
||||
"Description": "Grove Line Finder Sensor Library",
|
||||
"Sensor Class":
|
||||
{
|
||||
"grovelinefinder":
|
||||
{
|
||||
"Name": "Infrared (IR) Based Line Finder",
|
||||
"Description": "UPM module for the Line Finder sensor. It outputs a digital signal indicating whether it is detecting black on a white background, or white on a black background.",
|
||||
"Aliases": ["grovelinefinder"],
|
||||
"Categories": ["grovelinefinder"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["robotics", "prototyping"],
|
||||
"Manufacturers": ["seeed", "dfrobot"],
|
||||
"Kits": ["robok"],
|
||||
"Image": "grovelinefinder.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["GroveLineFinderSample.java"],
|
||||
"Python": ["grovelinefinder.py"],
|
||||
"Node.js": ["grovelinefinder.js"],
|
||||
"C++": ["grovelinefinder.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 2.7, "high": 5.5},
|
||||
"Operating Current": {"unit": "uA", "typ": 210},
|
||||
"Operating Temperature": {"unit": "degC", "low": -40, "high": 125}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Line-Finder-v1.1-p-2712.html"],
|
||||
"Datasheets": ["file:///C:/Users/Malachai/Downloads/Lmv358.pdf", "http://wiki.seeed.cc/Grove-Line_Finder/"],
|
||||
"Schematics": ["https://easyeda.com/Seeed/Grove_Line_Finder_v1_1-dfc99c72325e41ff93a451882fd2e143"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
{
|
||||
"Library": "grovemoisture",
|
||||
"Description": "API for the Grove Moisture Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"grovemoisture":
|
||||
{
|
||||
"Name": "Grove Moisture Sensor",
|
||||
"Description": "UPM module for the Grove Moisture Sensor. This sensor can be used to detect the moisture content of soil or whether there is water around the sensor. As the moisture content increases, so does the value that is read. Note: this sensor is not designed to be left in soil nor to be used outdoors.",
|
||||
"Aliases": ["grovemoisture"],
|
||||
"Categories": ["moisture"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["liquid", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": ["eak", "hak"],
|
||||
"Image": "grovemoisture.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["GroveMoistureSample.java"],
|
||||
"Python": ["grovemoisture.py"],
|
||||
"Node.js": ["grovemoisture.js"],
|
||||
"C++": ["grovemoisture.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications": {
|
||||
"Vsource": {"unit": "V", "min": 3.3, "max": 5 },
|
||||
"Operating Temperature": {"unit": "°C", "min": -40, "max": 85 },
|
||||
"Supply Current": {"unit": "mA", "min" : 0, "max" : 35 }
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Moisture-Sensor-p-955.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-Moisture_Sensor/"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
{
|
||||
"Library": "groveo2",
|
||||
"Description": "Grove O2 Oxygen Gas Sensor Library",
|
||||
"Sensor Class":
|
||||
{
|
||||
"groveo2":
|
||||
{
|
||||
"Name": "Grove Oxygen (O2) Concentration Sensor",
|
||||
"Description": "The Grove O2 Oxygen Gas sensor measures the oxygen concentration in the air.",
|
||||
"Aliases": ["groveo2"],
|
||||
"Categories": ["gas", "oxygen", "deprecated"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["environmental", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "groveo2.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["GroveO2Example.java"],
|
||||
"Python": ["groveo2.py"],
|
||||
"Node.js": ["groveo2.js"],
|
||||
"C++": ["groveo2.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Measurement Range": {"unit": "% Vol", "low": 0, "high": 25},
|
||||
"Sensitivity": {"unit": "mA (in air)", "low": 0.1, "high": 0.3},
|
||||
"Operating Temperature": {"unit": "degC", "low": -20, "high": 50}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/grove-gas-sensoro2-p-1541.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-Gas_Sensor-O2/"],
|
||||
"Schematics": ["https://github.com/SeeedDocument/Grove_Gas_Sensor_O2/raw/master/resources/Schematics_O2.zip"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
{
|
||||
"Library": "grovescam",
|
||||
"Description": "Grove Serial Camera Library",
|
||||
"Sensor Class":
|
||||
{
|
||||
"grovescam":
|
||||
{
|
||||
"Name": "Serial Camera Module",
|
||||
"Description": "UPM module for the ear-clip heart rate sensor. It is used to measure your heart rate.",
|
||||
"Aliases": ["grovescam"],
|
||||
"Categories": ["imaging", "deprecated"],
|
||||
"Connections": ["uart"],
|
||||
"Project Type": ["prototyping", "access control", "security"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "grovescam.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["GROVESCAMSample.java"],
|
||||
"Python": ["grovescam.py"],
|
||||
"Node.js": ["grovescam.js"],
|
||||
"C++": ["grovescam.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "typ": 5},
|
||||
"Resolution": {"unit": "", "max": "640x480"}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Serial-Camera-Kit-p-1608.html"],
|
||||
"Datasheets": ["http://www.seeedstudio.com/wiki/Grove_-_Serial_Camera_Kit"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
{
|
||||
"Library": "grovespeaker",
|
||||
"Description": "API for the Grove Speaker",
|
||||
"Sensor Class":
|
||||
{
|
||||
"grovespeaker":
|
||||
{
|
||||
"Name": "Grove Speaker Module",
|
||||
"Description": "UPM module for the Grove Speaker. This sensor can generate different tones and sounds depending on the frequency of the input signal.",
|
||||
"Aliases": ["grovespeaker"],
|
||||
"Categories": ["sound", "deprecated"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["sound", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": ["hak"],
|
||||
"Image": "grovespeaker.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["GroveSpeakerSample.java"],
|
||||
"Python": ["grovespeaker.py"],
|
||||
"Node.js": ["grovespeaker.js"],
|
||||
"C++": ["grovespeaker.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 4, "high": 5.5},
|
||||
"Voltage Gain": {"unit": "dB", "typ": 46},
|
||||
"Bandwidth": {"unit": "KHz", "min": 20}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Speaker-p-1445.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-Speaker/", "https://raw.githubusercontent.com/SeeedDocument/Grove-Speaker/master/res/LM386_Low_Voltage_Audio_Power_Amplifier_Datasheet.pdf"],
|
||||
"Schematics": ["https://raw.githubusercontent.com/SeeedDocument/Grove-Speaker/master/res/Grove-Speaker_v1.0_sch.pdf"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
{
|
||||
"Library": "groveultrasonic",
|
||||
"Description": "Grove Ultrasonic Sensor Library",
|
||||
"Sensor Class":
|
||||
{
|
||||
"groveultrasonic":
|
||||
{
|
||||
"Name": "Ultrasonic Proximity Sensor",
|
||||
"Description": "This Grove Ultrasonic sensor is a non-contact distance measurement module which is compatible with the Grove system. It is designed for easy modular project usage with industrial performance. Detection ranges from 3 cm (1.2\") to 4 m (13'1.5\") and works best when the object is within a 30 degree angle relative to the sensor.",
|
||||
"Aliases": ["groveultrasonic"],
|
||||
"Categories": ["proximity", "deprecated"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["robotics", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "groveultrasonic.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": [],
|
||||
"Node.js": ["groveultrasonic.js"],
|
||||
"C++": ["groveultrasonic.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3.2, "high": 5.2},
|
||||
"Operating Current": {"unit": "mA", "typ": 8},
|
||||
"Measurement Range": {"unit": "cm", "low": 2, "high": 350}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Ultrasonic-Ranger-p-960.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-Ultrasonic_Ranger/"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
{
|
||||
"Library": "grovevdiv",
|
||||
"Description": "API for the Grove Voltage Divider Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"grovevdiv":
|
||||
{
|
||||
"Name": "Grove Voltage Divider Sensor",
|
||||
"Description": "UPM module for the Grove Voltage Divider sensor.",
|
||||
"Aliases": ["grovevdiv"],
|
||||
"Categories": ["electric", "deprecated"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["robotics", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": ["robok"],
|
||||
"Image": "grovevdiv.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["GroveVDivSample.java"],
|
||||
"Python": ["grovevdiv.py"],
|
||||
"Node.js": ["grovevdiv.js"],
|
||||
"C++": ["grovevdiv.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "typ": 5}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Voltage-Divider-p-1472.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-Voltage_Divider/"],
|
||||
"Schematics": ["https://github.com/SeeedDocument/Grove-Voltage_Divider/raw/master/res/LMV358ID_Datasheet.pdf"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
{
|
||||
"Library": "grovewater",
|
||||
"Description": "Grove Water Sensor Library",
|
||||
"Sensor Class":
|
||||
{
|
||||
"grovewater":
|
||||
{
|
||||
"Name": "Grove Water Sensor",
|
||||
"Description": "UPM module for the Grove Water sensor.",
|
||||
"Aliases": ["grovewater"],
|
||||
"Categories": ["liquid", "deprecated"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["agriculture", "environmental", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": ["eak"],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["GroveWaterSample.java"],
|
||||
"Python": ["grovewater.py"],
|
||||
"Node.js": ["grovewater.js"],
|
||||
"C++": ["grovewater.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 4.7, "high": 5.25},
|
||||
"Operating Current": {"unit": "mA", "max": 20},
|
||||
"Working Temperature": {"unit": "degC", "low": 10, "high": 30}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Water-Sensor-p-748.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-Water_Sensor/"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
{
|
||||
"Library": "grovewfs",
|
||||
"Description": "API for the Grove Water Flow Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"grovewfs":
|
||||
{
|
||||
"Name": "Water Flow Sensor",
|
||||
"Description": "This sensor is used to measure water flow in liters per minute (LPM). It incorporates a Hall Effect sensor. The UPM module defines an interrupt routine to be triggered on each low pulse, keeping count. This device requires a 10K pull-up resistor for the signal line (yellow wire). There is a schematic diagram on the SeeedStudio site (3/2015): http://www.seeedstudio.com/wiki/index.php?title=G1/2_Water_Flow_sensor However, be careful when wiring this up - the schematic appears to have a bug in it: the lower left connection of the signal line (yellow) to Vcc (red) should not be there. The sensor can work with this connection, but probably not for very long.",
|
||||
"Aliases": ["grovewfs"],
|
||||
"Categories": ["liquid", "deprecated"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["agriculture", "monitoring", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": ["eak"],
|
||||
"Image": "grovewfs.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["GroveWFSSample.java"],
|
||||
"Python": ["grovewfs.py"],
|
||||
"Node.js": ["grovewfs.js"],
|
||||
"C++": ["grovewfs.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 5, "high": 24},
|
||||
"Operating Current": {"unit": "mA", "typ": 15},
|
||||
"Water Pressure": {"unit": "MPa", "max": 2},
|
||||
"Water Temperature": {"unit": "degC", "max": 120}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/G1%26amp%3B2%26quot%3B-Water-Flow-Sensor-p-635.html"],
|
||||
"Datasheets": ["http://wiki.seeedstudio.com/wiki/G1/2_Water_Flow_sensor", "http://www.seeedstudio.com/wiki/images/b/b7/Water_flow_sensor_datasheet.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
{
|
||||
"Library": "gsr",
|
||||
"Description": "API for the Grove GSR Galvanic Skin Response Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"gsr":
|
||||
{
|
||||
"Name": "Galvanic Skin Response (GSR) Sensor",
|
||||
"Description": "Measures the electrical conductance of skin to measure strong emotional reactions. In other words, it measures sweat on your fingers as an indicator of strong emotional reactions.",
|
||||
"Aliases": ["gsr"],
|
||||
"Categories": ["skinresponse"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["medical", "interface", "wearables", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "gsr.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["Gsr.java"],
|
||||
"Python": ["gsr.py"],
|
||||
"Node.js": ["gsr.js"],
|
||||
"C++": ["gsr.cxx"],
|
||||
"C": ["gsr.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3.3, "high": 5},
|
||||
"Operating Current": {"unit": "mA", "low": 0.7, "high": 3},
|
||||
"Operating Temperature": {"unit": "degC", "min": 0, "max": 70}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-GSR-sensor-p-1614.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-GSR_Sensor/", "file:///C:/Users/Malachai/Downloads/Lm324.pdf"],
|
||||
"Schematics": ["https://github.com/SeeedDocument/Grove-GSR_Sensor/raw/master/res/Grove%20-%20GSR_v1.2_SCH.pdf", "https://github.com/SeeedDocument/Grove-GSR_Sensor/raw/master/res/Grove%20-%20GSR%20v1.0%20SCH.pdf"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
{
|
||||
"Library": "guvas12d",
|
||||
"Description": "API for the GUVA-S12D UV Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"guvas12d":
|
||||
{
|
||||
"Name": "Grove Analog UV Sensor",
|
||||
"Description": "UPM module for the GUVA-S12D UV sensor",
|
||||
"Aliases": ["guvas12d"],
|
||||
"Categories": ["ultraviolet"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["environmental", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": ["eak"],
|
||||
"Image": "guvas12d.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["GUVAS12DSample.java"],
|
||||
"Python": ["guvas12d.py"],
|
||||
"Node.js": ["guvas12d.js"],
|
||||
"C++": ["guvas12d.cxx"],
|
||||
"C": ["guvas12d.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3, "high": 5.1},
|
||||
"Operating Current": {"unit": "mA", "typ": 0.31},
|
||||
"Response Wavelength": {"unit": "nm", "low": 240, "high": 370},
|
||||
"Working Temperature": {"unit": "degC", "low": -30, "high": 85}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-UV-Sensor-p-1540.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-UV_Sensor/", "https://raw.githubusercontent.com/SeeedDocument/Grove-UV_Sensor/master/res/Grove-UV_Sensor_v1.1_Datasheets.zip"],
|
||||
"Schematics": ["https://github.com/SeeedDocument/Grove-UV_Sensor/raw/master/res/Grove%20-%20UV%20Sensor%20v1.1sch.pdf"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
{
|
||||
"Library": "h3lis331dl",
|
||||
"Description": "H3LIS331DL I2C Accelerometer (400g) Library",
|
||||
"Sensor Class":
|
||||
{
|
||||
"h3lis331dl":
|
||||
{
|
||||
"Name": "I2C 3-axis Digital Accelerometer (400g)",
|
||||
"Description": "This is a high-performance, high-range accelerometer for extreme applications.",
|
||||
"Aliases": ["h3lis331dl"],
|
||||
"Categories": ["accelerometer"],
|
||||
"Connections": ["i2c"],
|
||||
"Project Type": ["IMU", "prototyping"],
|
||||
"Manufacturers": ["seeed", "stmicro"],
|
||||
"Kits": [],
|
||||
"Image": "h3lis331dl.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["H3LIS331DLSample.java"],
|
||||
"Python": ["h3lis331dl.py"],
|
||||
"Node.js": ["h3lis331dl.js"],
|
||||
"C++": ["h3lis331dl.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3.3, "high": 5},
|
||||
"Operating Current": {"unit": "uA", "typ": 300},
|
||||
"Measurement Range": {"unit": "+-g", "low": 100, "high": 400}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["httpshttps://www.seeedstudio.com/Grove-3Axis-Digital-Accelerometer400g-p-1897.html"],
|
||||
"Datasheets": ["http://www.st.com/web/en/resource/technical/document/datasheet/DM00053090.pdf", "http://wiki.seeed.cc/Grove-3-Axis_Digital_Accelerometer-400g/"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
{
|
||||
"Library": "h803x",
|
||||
"Description": "UPM API for the Veris H803X Energy Meter",
|
||||
"Sensor Class":
|
||||
{
|
||||
"h803x":
|
||||
{
|
||||
"Name": "Veris H803X Energy Meter Module",
|
||||
"Description": "The H8036 is similar to the H8035, but provides much more data. The Enercept H8035/H8036 is an innovative three-phase networked (Modbus RTU) power transducer that combines electronics and high accuracy industrial grade CTs in a single package. The need for external electrical enclosures is eliminated, greatly reducing installation time and cost. Color-coordination between voltage leads and CTs makes phase matching easy. Additionally, these transducers automatically detect and compensate for phase reversal, eliminating the concern of CT load orientation. Up to 63 Transducers can be daisy-chained on a single RS-485 network. This module was developed using libmodbus 3.1.2, and the H8035. The H8036 has not been tested. libmodbus 3.1.2 must be present for this module to build. It was developed using an RS232->RS485 interface. You cannot use the built in MCU TTL UART pins for accessing this device -- you must use a full Serial RS232->RS485 or USB-RS485 interface connected via USB.",
|
||||
"Aliases": ["h803x"],
|
||||
"Categories": ["energy", "electric"],
|
||||
"Connections": ["uart"],
|
||||
"Project Type": ["prototyping"],
|
||||
"Manufacturers": ["veris"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["H803X_Example.java"],
|
||||
"Python": ["h803x.py"],
|
||||
"Node.js": ["h803x.js"],
|
||||
"C++": ["h803x.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "VAC", "low": 208, "high": 480},
|
||||
"Operating Current": {"unit": "A", "max": 2400},
|
||||
"Operating Temperature": {"unit": "degC", "low": 0, "high": 60}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["http://www.veris.com/Item/H8035-0100-2.aspx"],
|
||||
"Datasheets": ["http://www.veris.com/docs/Datasheets/H803x_d0117.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
{
|
||||
"Library": "hcsr04",
|
||||
"Description": "HC-SR04 Ultrasonic Sensor Library",
|
||||
"Sensor Class":
|
||||
{
|
||||
"hcsr04":
|
||||
{
|
||||
"Name": "HC-SR04 Ultrasonic Distance Measuring Sensor",
|
||||
"Description": "This module defines the HC-SR04 interface for libhcsr04.",
|
||||
"Aliases": ["hcsr04"],
|
||||
"Categories": ["ultrasonic", "distance"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["robotics", "safety", "prototyping"],
|
||||
"Manufacturers": ["sparkfun"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["HCSR04Sample.java"],
|
||||
"Python": ["hcsr04.py"],
|
||||
"Node.js": ["hcsr04.js"],
|
||||
"C++": ["hcsr04.cxx"],
|
||||
"C": ["hcsr04.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "typ": 5},
|
||||
"Operating Current": {"unit": "mA", "typ": 15},
|
||||
"Measurement Range": {"unit": "cm", "low": 2, "high": 400}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.sparkfun.com/products/13959"],
|
||||
"Datasheets": ["https://cdn.sparkfun.com/datasheets/Sensors/Proximity/HCSR04.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
{
|
||||
"Library": "hdc1000",
|
||||
"Description": "API for the HDC1000 Temperature & Humidity Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"hdc1000":
|
||||
{
|
||||
"Name": "HDC1000 Temperature and Humidity Sensor",
|
||||
"Description": "The HDC1000 is a digital humidity sensor with integrated temperature sensor that provides excellent measurement accuracy at very low power. The device measures humidity based on a novel capacitive sensor. The humidity and temperature sensors are factory calibrated. The innovative WLCSP (Wafer Level Chip Scale Package) simplifies board design with the use of an ultra-compact package. The sensing element of the HDC1000 is placed on the bottom part of the device, which makes the HDC1000 more robust against dirt, dust, and other environmental contaminants. The HDC1000 is functional within the full -40 to +125 [degC] temperature range.",
|
||||
"Aliases": ["hdc1000"],
|
||||
"Categories": ["temperature", "humidity"],
|
||||
"Connections": ["i2c"],
|
||||
"Project Type": ["environmental", "", "prototyping"],
|
||||
"Manufacturers": ["ti"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": ["hdc1000.py"],
|
||||
"Node.js": [],
|
||||
"C++": ["hdc1000.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3, "high": 5},
|
||||
"Operating Current": {"unit": "uA", "low": 0.82, "high": 1.2},
|
||||
"Operating Temperature": {"unit": "degC", "low": -40, "high": 125}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["http://www.ti.com/product/HDC1000/description"],
|
||||
"Datasheets": ["http://www.ti.com/lit/ds/symlink/hdc1000.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
{
|
||||
"Library": "hdxxvxta",
|
||||
"Description": "API for the Veris HDXXVXTA Humidity Transmitter",
|
||||
"Sensor Class":
|
||||
{
|
||||
"hdxxvxta":
|
||||
{
|
||||
"Name": "Veris HDXXVXTA Humidity Transmitter",
|
||||
"Description": "The driver was developed using the HD2NVSTA1 humidity transmitter. The 'T' variant supports a temperature transmitter as well. Both signals are provided by the device as analog 0-5Vdc or 0-10Vdc outputs. The A1 variant supports a temperature range of -40C-50C, while the A2 variant supports a range of 0C-50C. Humidity ranges for all devices in this device family range from 0% to 100% (non-condensing). This driver used the 5Vdc outputs for obvious reasons. Your MCU must be configured for 5V operation. Using any other analog reference voltage will require the appropriate external circuitry (such as a voltage divider) in order to interface safely with your MCU. For devices which do not support temperature, use '-1' as the temperature pin number in the object constructor. If temperature measurement is disabled, getTemperature() will always return 0C/32F.",
|
||||
"Aliases": ["hdxxvxta"],
|
||||
"Categories": ["humidity"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["environmental", "prototyping"],
|
||||
"Manufacturers": ["veris"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": ["hdxxvxta.py"],
|
||||
"Node.js": ["hdxxvxta.js"],
|
||||
"C++": ["hdxxvxta.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": [],
|
||||
"Datasheets": [],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
{
|
||||
"Library": "hka5",
|
||||
"Description": "API for the DFRobot Laser Particulate Matter (PM) Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"hka5":
|
||||
{
|
||||
"Name": "DFRobot Laser Particulate Matter (PM) Sensor",
|
||||
"Description": "This driver was tested with a DFRobot Laser PM2.5 Sensor. It connects to a UART at 9600 baud. This is the only baud rate supported. It optionally supports Reset and Set/Sleep gpios as well.",
|
||||
"Aliases": ["hka5"],
|
||||
"Categories": ["gaseous"],
|
||||
"Connections": ["gpio", "uart"],
|
||||
"Project Type": ["environmental", "prototyping"],
|
||||
"Manufacturers": ["dfrobot"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["HKA5_Example.java"],
|
||||
"Python": ["hka5.py"],
|
||||
"Node.js": ["hka5.js"],
|
||||
"C++": ["hka5.cxx"],
|
||||
"C": ["hka5.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3.3, "high": 5},
|
||||
"Operating Current": {"unit": "mA", "typ": 10}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.dfrobot.com/wiki/index.php/DFRobot_LM35_Linear_Temperature_Sensor_(SKU:DFR0023)"],
|
||||
"Datasheets": ["http://image.dfrobot.com/image/data/DFR0023/DFR0023_Datasheet.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
{
|
||||
"Library": "hm11",
|
||||
"Description": "HM-11 Bluetooth 4.0 Low Energy Module Library",
|
||||
"Sensor Class":
|
||||
{
|
||||
"hm11":
|
||||
{
|
||||
"Name": "Bluetooth Low Energy Module",
|
||||
"Description": "The driver was tested with the Grove BLE module. It's an HM-11 BLE 4.0 module based on a TI CC2541 chip. It operates using a standard 'AT' command set. See the datasheet for a full list of available commands and their possible responses: http://www.seeedstudio.com/wiki/images/c/cd/Bluetooth4_en.pdf It is connected via a UART at 9,600 baud.",
|
||||
"Aliases": ["hm11"],
|
||||
"Categories": ["bluetooth"],
|
||||
"Connections": ["uart"],
|
||||
"Project Type": ["wireless", "wearables", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "hm11.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["HM11Sample.java"],
|
||||
"Python": ["hm11.py"],
|
||||
"Node.js": ["hm11.js"],
|
||||
"C++": ["hm11.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 2.0, "typ": 3.3, "high": 3.6},
|
||||
"Peak Operating Current": {"unit": "mA", "typ": 15},
|
||||
"Operating Temperature": {"unit": "degC", "low": -40, "high": 65}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Bluetooth-V4.0-HM-11-BLE-Module-p-1803.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Bluetooth_V4.0_HM_11_BLE_Module/"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
{
|
||||
"Library": "hmc5883l",
|
||||
"Description": "HMC5883L Magnetometer Library",
|
||||
"Sensor Class":
|
||||
{
|
||||
"hmc5883l":
|
||||
{
|
||||
"Name": "Grove 3-Axis Digital Compass",
|
||||
"Description": "Honeywell [HMC5883L] (http://www.adafruit.com/datasheets/HMC5883L_3-Axis_Digital_Compass_IC.pdf) is a 3-axis digital compass. Communication with HMC5883L is simple and all done through an I2C interface. Different breakout boards are available. Typically, a 3V supply is all that is needed to power the sensor.",
|
||||
"Aliases": ["hmc5883l"],
|
||||
"Categories": ["compass", "magnetometer"],
|
||||
"Connections": ["i2c"],
|
||||
"Project Type": ["IMU", "prototyping"],
|
||||
"Manufacturers": ["seeed", "honeywell"],
|
||||
"Kits": ["robok"],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["Hmc5883lSample.java"],
|
||||
"Python": ["hmc5883l.py"],
|
||||
"Node.js": ["hmc5883l.js"],
|
||||
"C++": ["hmc5883l.cxx"],
|
||||
"C": ["hmc5883l.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3.3, "high": 5},
|
||||
"Operating Current": {"unit": "uA", "low": 2.5, "high": 640},
|
||||
"Output Rate": {"unit": "Hz", "max": 116}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-3-Axis-Digital-Compass-p-759.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-3-Axis_Compass_V1.0/", "https://raw.githubusercontent.com/SeeedDocument/Grove-3-Axis_Compass_V1.0/master/res/HMC5883.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
{
|
||||
"Library": "hmtrp",
|
||||
"Description": "API for the HM-TRP Serial RF Pro Transceiver",
|
||||
"Sensor Class":
|
||||
{
|
||||
"hmtrp":
|
||||
{
|
||||
"Name": "Serial RF Pro Module",
|
||||
"Description": "UPM support for the HM-TRP Serial RF Pro transceiver. This was tested specifically with the Grove Serial RF Pro transceiver. In theory, this class should work with the following devices: HM-TRP-433: 414000000-454000000Hz HM-TRP-470: 450000000-490000000Hz HM-TRP-868: 849000000-889000000Hz HM-TRP-915: 895000000-935000000Hz The only difference is the transmit and receive frequencies supported. By default, the device simply sends and receives any data presented on its UART interface. It can be put into a configuration mode by grounding the CONFIG pin on the transceiver.",
|
||||
"Aliases": ["hmtrp"],
|
||||
"Categories": ["wireless"],
|
||||
"Connections": ["uart"],
|
||||
"Project Type": ["wireless", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "hmtrp.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["HMTRPSample.java"],
|
||||
"Python": ["hmtrp.py"],
|
||||
"Node.js": ["hmtrp.js"],
|
||||
"C++": ["hmtrp.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 4.75, "typ": 5.0, "high": 5.25},
|
||||
"Sleep Current": {"unit": "uA", "typ": 1},
|
||||
"Transmission Distance": {"unit": "Km", "max": 1},
|
||||
"Operating Temperature": {"unit": "degC", "low": -40, "high": 85}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Serial-RF-Pro-p-794.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-Serial_RF_Pro/", "https://github.com/SeeedDocument/Grove-Serial_RF_Pro/raw/master/res/HM-TRP-RS232_enV1.0_20120604.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
{
|
||||
"Library": "hp20x",
|
||||
"Description": "API for the HP20X-based Grove Barometer (High-Accuracy)",
|
||||
"Sensor Class":
|
||||
{
|
||||
"hp20x":
|
||||
{
|
||||
"Name": "HP20X Barometer (High-Accuracy)",
|
||||
"Description": "This is a high-accuracy barometer providing pressure, altitude, and temperature data. It can be calibrated for a given altitude offset, and a wide range of interrupt generating capabilities are supported. As usual, see the HP20X datasheet for more details. This module was developed using a Grove Barometer (High-Accuracy) based on an HP206C chip.",
|
||||
"Aliases": ["hp20x"],
|
||||
"Categories": ["pressure"],
|
||||
"Connections": ["i2c"],
|
||||
"Project Type": ["environmental", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "hp20x.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["HP20xExample.java"],
|
||||
"Python": ["hp20x.py"],
|
||||
"Node.js": ["hp20x.js"],
|
||||
"C++": ["hp20x.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3.3, "high": 5.5},
|
||||
"Operating Current": {"unit": "mA", "low": 0.635, "high": 1.1},
|
||||
"Measurement Range": {"unit": "hPa", "low": 300, "high": 1200}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Barometer-HighAccuracy-p-1865.html"],
|
||||
"Datasheets": ["http://www.seeedstudio.com/wiki/File:HP206C_Datasheet.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
{
|
||||
"Library": "ht9170",
|
||||
"Description": "API for the HT9170 DTMF Decoder",
|
||||
"Sensor Class":
|
||||
{
|
||||
"ht9170":
|
||||
{
|
||||
"Name": "Dual Tone Multi Frequency (DTMF) Decoder",
|
||||
"Description": "This driver was developed using the DTMF (Dual-Tone Multi-Frequency) Shield by Seeed Studio*. It can decode DTMF signals presented at its audio input. It does not generate DTMF signals.",
|
||||
"Aliases": ["ht9170"],
|
||||
"Categories": ["telephony"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["telephone", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "ht9170.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": ["ht9170.py"],
|
||||
"Node.js": ["ht9170.js"],
|
||||
"C++": ["ht9170.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "typ": 5},
|
||||
"Operating Current": {"unit": "mA", "typ": 3}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/DTMFDual-Tone-Multi-Frequency-Shield-p-1839.html"],
|
||||
"Datasheets": ["http://www.holtek.com/pdf/comm/9170v111.pdf"],
|
||||
"Schematics": ["http://www.dossant.com/projects/wp-content/uploads/2013/01/dtmf_mod3_schematic.pdf"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
{
|
||||
"Library": "htu21d",
|
||||
"Description": "API for the HTU21D Temperature & Humidity Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"htu21d":
|
||||
{
|
||||
"Name": "Digital Relative Humidity Sensor with Temperature",
|
||||
"Description": "HTU21D by Measurement Specialties is a digital humidity sensor with temperature output. RH reports between 0 and 100%, and the temperature range is -40 to +125 degC. Note: getCompRH is the preferred function below (passing true to cause a measurement cycle). If actual values used for the compensated ready are necessary, use the getHumidity(false) and getTemperature(false) functions following the getCompRH call. Also note the sensor should not perform more than a couple of measurements per second to limit the heating of the sensor.",
|
||||
"Aliases": ["htu21d"],
|
||||
"Categories": ["temperature", "humidity"],
|
||||
"Connections": ["i2c"],
|
||||
"Project Type": ["environmental", "prototyping"],
|
||||
"Manufacturers": ["seeed", "adafruit", "sparkfun"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["HTU21DSample.java"],
|
||||
"Python": ["htu21d.py"],
|
||||
"Node.js": ["htu21d.js"],
|
||||
"C++": ["htu21d.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": [],
|
||||
"Datasheets": [],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
{
|
||||
"Library": "hwxpxx",
|
||||
"Description": "UPM API for the Veris HWXPXX Hardware Protocol Humidity and Temperature Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"hwxpxx":
|
||||
{
|
||||
"Name": "Veris HWXPXX Hardware Protocol Humidity and Temperature Sensor",
|
||||
"Description": "This module implements support for the Veris HWXPHTX Hardware Protocol Humidity and Temperature Sensor family. It uses MODBUS over an RS485 interface. You must have libmodbus v3.1.2 (or greater) installed to compile and use this driver. This module was developed using libmodbus 3.1.2, and the HWXPHTX. This sensor supports humidity, and optionally, temperature, slider switch, and override switch reporting. The HWXPHTX used to develop this driver did not include the optional slider or override switches, however support for them is provided. It was developed using an RS232->RS485 inteface. You cannot use the built in MCU TTL UART pins for accessing this device -- you must use a full serial RS232->RS485 interface connected via USB.",
|
||||
"Aliases": ["hwxpxx"],
|
||||
"Categories": ["temperature"],
|
||||
"Connections": ["uart"],
|
||||
"Project Type": ["environmental", "prototyping"],
|
||||
"Manufacturers": ["veris"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": ["hwxpxx.py"],
|
||||
"Node.js": ["hwxpxx.js"],
|
||||
"C++": ["hwxpxx.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage (DC)": {"unit": "V", "low": 12, "high": 30},
|
||||
"Operating Voltage (AC)": {"unit": "VAC", "typ": 24},
|
||||
"Operating Current": {"unit": "mA", "max": 100},
|
||||
"Operating Range (RH)": {"unit": "%RH", "low": 0, "high": 100},
|
||||
"Operating Range (Temp)": {"unit": "degC", "low": 10, "high": 35}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["http://www.veris.com/Item/HWXPHTX.aspx"],
|
||||
"Datasheets": ["http://www.veris.com/docs/Datasheets/HWProtocol_d0117.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
{
|
||||
"Library": "hx711",
|
||||
"Description": "API for the HX711 Analog-to-Digital Converter",
|
||||
"Sensor Class":
|
||||
{
|
||||
"hx711":
|
||||
{
|
||||
"Name": "24-bit Analog-to-digital Converter",
|
||||
"Description": "HX711 is a precision 24-bit analog-to-digital converter (ADC) designed for weight scales and industrial control applications to interface directly with a bridge sensor. This module was tested on the Intel(R) Galileo Gen 2 board.",
|
||||
"Aliases": ["hx711"],
|
||||
"Categories": ["adc"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["prototyping"],
|
||||
"Manufacturers": ["generic"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": [],
|
||||
"Node.js": ["hx711.js"],
|
||||
"C++": ["hx711.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 2.7, "high": 5.5},
|
||||
"Operating Current": {"unit": "mA", "max": 1.4}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": [],
|
||||
"Datasheets": ["http://image.dfrobot.com/image/data/SEN0160/hx711_english.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
{
|
||||
"Library": "ili9341",
|
||||
"Description": "API for the ILI9342 LCD",
|
||||
"Sensor Class":
|
||||
{
|
||||
"ili9341":
|
||||
{
|
||||
"Name": "SPI Based LCD",
|
||||
"Description": "This module defines the interface for the ILI9341 display library.",
|
||||
"Aliases": ["ili9341"],
|
||||
"Categories": ["display"],
|
||||
"Connections": ["spi"],
|
||||
"Project Type": ["graphics", "prototyping"],
|
||||
"Manufacturers": ["adafruit"],
|
||||
"Kits": [],
|
||||
"Image": "ili9341.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": ["ili9341.py"],
|
||||
"Node.js": ["ili9341.js"],
|
||||
"C++": ["ili9341.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3, "high": 5}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.adafruit.com/product/2090"],
|
||||
"Datasheets": ["http://www.adafruit.com/datasheets/ILI9341.pdf"],
|
||||
"Schematics": ["https://cdn-learn.adafruit.com/assets/assets/000/015/463/medium800/adafruit_products_schem.png?1395173896"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
{
|
||||
"Library": "ims",
|
||||
"Description": "API for the Catnip Electronics I2C Moisture Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"ims":
|
||||
{
|
||||
"Name": "I2C Moisture Sensor",
|
||||
"Description": "I2C Sensor which can be used to read moisture, light, and temperature which must run at 100kHz.",
|
||||
"Aliases": ["ims"],
|
||||
"Categories": ["moisture"],
|
||||
"Connections": ["i2c"],
|
||||
"Project Type": ["environmental", "prototyping"],
|
||||
"Manufacturers": ["catnip"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["IMS_Example.java"],
|
||||
"Python": ["ims.py"],
|
||||
"Node.js": ["ims.js"],
|
||||
"C++": ["ims.cxx"],
|
||||
"C": ["ims.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3.3, "high": 5},
|
||||
"Operating Current": {"unit": "mA", "low": 0.7, "high": 14},
|
||||
"Operating Temperature": {"unit": "degC", "low": 0, "high": 85}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.tindie.com/products/miceuz/i2c-soil-moisture-sensor/"],
|
||||
"Datasheets": [],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
{
|
||||
"Library": "ina132",
|
||||
"Description": "API for the INA132 Differential Amplifier Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"ina132":
|
||||
{
|
||||
"Name": "Grove Differential Amplifier",
|
||||
"Description": "The INA132 Differential Amplifier Sensor is designed for precise differential-input amplification. This sensor was tested amplifying the signal from a Weight Sensor (Load Cell) 0-500g",
|
||||
"Aliases": ["ina132"],
|
||||
"Categories": ["electric"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "ina132.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": ["ina132.py"],
|
||||
"Node.js": ["ina132.js"],
|
||||
"C++": ["ina132.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 2.7, "high": 5.5}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Differential-Amplifier-p-1284.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-Differential_Amplifier_v1.2", "https://raw.githubusercontent.com/SeeedDocument/Grove-Differential_Amplifier_v1.2/master/res/Ina132.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
{
|
||||
"Library": "isd1820",
|
||||
"Description": "API support for the ISD1820-based Grove Voice Recorder",
|
||||
"Sensor Class":
|
||||
{
|
||||
"isd1820":
|
||||
{
|
||||
"Name": "Grove Voice Recording and Playback Module",
|
||||
"Description": "This class implements support for the Grove Voice Recorder. There are two digital pins: one that enables recording, and the other that plays back what was previously recorded.",
|
||||
"Aliases": ["isd1820"],
|
||||
"Categories": ["audio"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["audio", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "isd1820.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": ["isd1820.py"],
|
||||
"Node.js": ["isd1820.js"],
|
||||
"C++": ["isd1820.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Recorder-p-1825.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove_Recorder/", "https://github.com/SeeedDocument/Grove_Recorder/raw/master/res/ISD1820P.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
{
|
||||
"Library": "itg3200",
|
||||
"Description": "API for the ITG-3200 3-Axis Digital Gyroscope",
|
||||
"Sensor Class":
|
||||
{
|
||||
"itg3200":
|
||||
{
|
||||
"Name": "Grove 3-Axis Digital Gyroscope",
|
||||
"Description": "InvenSense* ITG-3200 is a 3-axis digital gyroscope. (https://www.sparkfun.com/datasheets/Sensors/Gyro/PS-ITG-3200-00-01.4.pdf) This sensor has been tested and can run at either 3.3V or 5V on Intel(R) Galileo.<br> <strong>However</strong>, it is incompatible with and not detected on the I2C bus by Intel(R) Edison using the Arduino* breakout board.",
|
||||
"Aliases": ["itg3200"],
|
||||
"Categories": ["gyroscope"],
|
||||
"Connections": ["i2c"],
|
||||
"Project Type": ["IMU", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["Itg3200Sample.java"],
|
||||
"Python": ["itg3200.py"],
|
||||
"Node.js": ["itg3200.js"],
|
||||
"C++": ["itg3200.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3.3, "high": 5},
|
||||
"Operating Current": {"unit": "mA", "typ": 6.5},
|
||||
"Standby Current": {"unit": "uA", "typ": 5}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-3-Axis-Digital-Gyro-p-750.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-3-Axis_Digital_Gyro/", "https://raw.githubusercontent.com/SeeedDocument/Grove-3-Axis_Digital_Gyro/master/res/ITG-3200.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
{
|
||||
"Library": "jhd1313m1",
|
||||
"Description": "API for the JHD1313M1 I2C LCD Controller",
|
||||
"Sensor Class":
|
||||
{
|
||||
"jhd1313m1":
|
||||
{
|
||||
"Name": "LCD Display Driver for the JHD1313M1 Controller for HD44780-based Displays",
|
||||
"Description": "JHD1313M1 has two I2C addreses: one belongs to a controller, very similar to the upm::Lcm1602 LCD driver, that controls the HD44780-based display, and the other controls only the backlight. This module was tested with the Seeed Grove LCD RGB Backlight v2.0 display that requires 5V to operate.",
|
||||
"Aliases": ["jhd1313m1"],
|
||||
"Categories": ["display"],
|
||||
"Connections": ["i2c"],
|
||||
"Project Type": ["display", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": ["gsk"],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["Jhd1313m1Sample.java", "Jhd1313m1_lcdSample.java"],
|
||||
"Python": ["jhd1313m1-lcd.py"],
|
||||
"Node.js": ["jhd1313m1-lcd.js"],
|
||||
"C++": ["jhd1313m1-lcd.cxx"],
|
||||
"C": ["jhd1313m1.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "typ": 5},
|
||||
"Operating Current": {"unit": "mA", "max": 60}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-LCD-RGB-Backlight-p-1643.html?cPath=34_36"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-LCD_RGB_Backlight/"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
{
|
||||
"Library": "joystick12",
|
||||
"Description": "API for the ElecFreaks* Joystick v 1.2-1.4 Breakout",
|
||||
"Sensor Class":
|
||||
{
|
||||
"joystick12":
|
||||
{
|
||||
"Name": "2-axis Analog Joystick",
|
||||
"Description": "This module defines the Joystick API, and implementation for the X and Y buttons could be treated as normal GPIO - this enables easier interrupt support. This driver should be compatible with any 2-axis analog joystick.",
|
||||
"Aliases": ["joystick12"],
|
||||
"Categories": ["input"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["prototyping"],
|
||||
"Manufacturers": ["generic"],
|
||||
"Kits": ["robok"],
|
||||
"Image": "joystick12.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["Joystick12Sample.java", "Joystick12_exampleSample.java"],
|
||||
"Python": ["joystick12.py"],
|
||||
"Node.js": ["joystick12.js"],
|
||||
"C++": ["joystick12.cxx"],
|
||||
"C": ["joystick12.c"]
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["http://www.elecfreaks.com/estore/joystick-breakout-module-bkout-md01.html"],
|
||||
"Datasheets": ["https://www.elecfreaks.com/wiki/index.php?title=Joystick_breakout_module"],
|
||||
"Schematics": ["http://elecfreaks.com/store/download/schematic-red.pdf"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -65,9 +65,9 @@ KXCJK1013::~KXCJK1013()
|
||||
}
|
||||
|
||||
void
|
||||
KXCJK1013::installISR(void (*isr)(char*, void*), void* arg)
|
||||
KXCJK1013::installISR(void (*isr)(char*), void* arg)
|
||||
{
|
||||
mraa_iio_trigger_buffer(m_iio, isr, arg);
|
||||
mraa_iio_trigger_buffer(m_iio, isr, NULL);
|
||||
}
|
||||
|
||||
int64_t
|
||||
|
@ -74,7 +74,7 @@ class KXCJK1013
|
||||
* @param arg Pointer to an object to be supplied as an
|
||||
* argument to the ISR.
|
||||
*/
|
||||
void installISR(void (*isr)(char*, void*), void* arg);
|
||||
void installISR(void (*isr)(char*), void* arg);
|
||||
|
||||
/**
|
||||
* Extract the channel value based on channel type
|
||||
|
@ -1,39 +0,0 @@
|
||||
{
|
||||
"Library": "kxcjk1013",
|
||||
"Description": "KXCJK1013 Tri-axis Digital Accelerometer API",
|
||||
"Sensor Class":
|
||||
{
|
||||
"kxcjk1013":
|
||||
{
|
||||
"Name": "Tri-axis Digital Accelerometer",
|
||||
"Description": "he KXCJK is a tri-axis +/-2g, +/-4g or +/-8g silicon micromachined accelerometer.",
|
||||
"Aliases": ["kxcjk1013"],
|
||||
"Categories": ["accelerometer"],
|
||||
"Connections": ["iio", "i2c"],
|
||||
"Project Type": ["imu", "prototyping"],
|
||||
"Manufacturers": ["kionix"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": [],
|
||||
"Node.js": [],
|
||||
"C++": ["kxcjk1013.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 1.71, "typ": 2.6, "high": 3.6},
|
||||
"Operating Current": {"unit": "uA", "low": 0.9, "high": 135},
|
||||
"Operating Temperature": {"unit": "degC", "low": -40, "high": 85}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": [],
|
||||
"Datasheets": ["http://kionixfs.kionix.com/en/datasheet/KXCJK-1013%20Specifications%20Rev%202.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
{
|
||||
"Library": "l298",
|
||||
"Description": "API for the L298 Dual H-Bridge Motor Driver",
|
||||
"Sensor Class":
|
||||
{
|
||||
"l298":
|
||||
{
|
||||
"Name": "Dual H-bridge Motor Driver",
|
||||
"Description": "It was developed using the RobotBase Dual H-Bridge module. This module can support 2 DC motors, or one 2-phase stepper motor. It requires 3 pins per DC motor (or H-bridge), or 4 pins for the stepper motor (uses both H-bridges).",
|
||||
"Aliases": ["l298"],
|
||||
"Categories": ["motors"],
|
||||
"Connections": ["gpio", "pwm"],
|
||||
"Project Type": ["robotics", "prototyping"],
|
||||
"Manufacturers": ["seeed", "sparkfun"],
|
||||
"Kits": [],
|
||||
"Image": "l298.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": ["l298.py", "l298-stepper.py"],
|
||||
"Node.js": ["l298.js", "l298-stepper.js"],
|
||||
"C++": ["l298.cxx", "l298-stepper.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Motor Supply Voltage": {"unit": "V", "low": 6, "high": 35},
|
||||
"Motor Supply Current": {"unit": "A", "typ": 2}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.sparkfun.com/products/9670"],
|
||||
"Datasheets": [],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -344,9 +344,9 @@ uint8_t L3GD20::getStatusBits()
|
||||
|
||||
|
||||
void
|
||||
L3GD20::installISR(void (*isr)(char*, void*), void* arg)
|
||||
L3GD20::installISR(void (*isr)(char*), void* arg)
|
||||
{
|
||||
mraa_iio_trigger_buffer(m_iio, isr, arg);
|
||||
mraa_iio_trigger_buffer(m_iio, isr, NULL);
|
||||
}
|
||||
|
||||
int64_t
|
||||
|
@ -547,7 +547,7 @@ class L3GD20
|
||||
* @param arg Pointer to an object to be supplied as an
|
||||
* argument to the ISR.
|
||||
*/
|
||||
void installISR(void (*isr)(char*, void*), void* arg);
|
||||
void installISR(void (*isr)(char*), void* arg);
|
||||
|
||||
/**
|
||||
* Extract the channel value based on channel type. IIO only.
|
||||
|
@ -1,39 +0,0 @@
|
||||
{
|
||||
"Library": "l3gd20",
|
||||
"Description": "L3GD20 Tri-axis Digital Gyroscope API",
|
||||
"Sensor Class":
|
||||
{
|
||||
"l3gd20":
|
||||
{
|
||||
"Name": "L3GD20 Tri-axis Digital Gyroscope",
|
||||
"Description": "The L3GD20 The L3GD20 is a low-power three-axis angular rate sensor. This driver supports IIO and I2C modes. Some methods will only work in one mode or the other. See the documentation on the methods to determine whether a given method is operation in a given mode. Both the I2C and IIO mechanisms make use of the calibration and denoise algorithms. For I2C mode, not all capabilities of the device are supported, but a complete register map and low level read/write methods are provided to add any missing functionality.",
|
||||
"Aliases": ["l3gd20"],
|
||||
"Categories": ["gyroscope"],
|
||||
"Connections": ["iio", "i2c"],
|
||||
"Project Type": ["IMU", "prototyping"],
|
||||
"Manufacturers": ["stmicro"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": [],
|
||||
"Node.js": [],
|
||||
"C++": ["l3gd20.cxx", "l3gd20-i2c.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 2.4, "high": 3.6},
|
||||
"Operating Current": {"unit": "mA", "typ": 6.1},
|
||||
"Operating Temperature": {"unit": "degC", "low": -40, "high": 85}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["http://www.st.com/en/mems-and-sensors/l3gd20.html"],
|
||||
"Datasheets": ["http://www.st.com/resource/en/datasheet/l3gd20.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,36 +0,0 @@
|
||||
{
|
||||
"Library": "lcdks",
|
||||
"Description": "API for the generic LCD Keypad Shield",
|
||||
"Sensor Class":
|
||||
{
|
||||
"lcdks":
|
||||
{
|
||||
"Name": "LCD Keypad Shield",
|
||||
"Description": "The LCD Keypad Shield uses 7 digital outputs and 1 analog input (for the keypad). The outputs are used to drive an attached LCM1602 LCD controller. This driver should be compatible with the similar LCD keypad shields from Sainsmart, DFRobot and Sparkfun.",
|
||||
"Aliases": ["lcdks"],
|
||||
"Categories": ["userinput"],
|
||||
"Connections": ["gpio", "analog"],
|
||||
"Project Type": ["control", "prototyping"],
|
||||
"Manufacturers": ["sainsmart", "dfrobot", "sparkfun"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": ["lcdks.py"],
|
||||
"Node.js": ["lcdks.js"],
|
||||
"C++": ["lcdks.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "typ": 5}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.sparkfun.com/products/13293", "http://www.sainsmart.com/sainsmart-1602-lcd-keypad-shield-for-arduino-duemilanove-uno-mega2560-mega1280.html", "http://www.dfrobot.com/index.php?route=product/product&product_id=51"],
|
||||
"Datasheets": ["http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino_V2"],
|
||||
"Schematics": ["https://cdn.sparkfun.com/datasheets/Dev/Arduino/Shields/16X2_LCD_shield.pdf"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
{
|
||||
"Library": "lcm1602",
|
||||
"Description": "API for the LCM1602 I2C controller for HD44780-based displays",
|
||||
"Sensor Class":
|
||||
{
|
||||
"lcm1602":
|
||||
{
|
||||
"Name": "LCD Display Driver for the LCM1602 Controller for HD44780-based Displays",
|
||||
"Description": "UPM module for the ear-clip heart rate sensor. It is used to measure your heart rate.",
|
||||
"Aliases": ["lcm1602"],
|
||||
"Categories": ["display"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["display", "prototyping"],
|
||||
"Manufacturers": ["adafruit", "sparkfun", "seeed"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["Lcm1602_i2cSample.java", "Lcm1602_parallelSample.java"],
|
||||
"Python": [],
|
||||
"Node.js": [],
|
||||
"C++": ["lcm1602-i2c.cxx", "lcm1602-parallel.cxx"],
|
||||
"C": ["lcm1602-i2c.c", "lcm1602-parallel.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 4.8, "typ": 5, "high": 5.2},
|
||||
"Operating Current": {"unit": "mA", "max": 150}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": [],
|
||||
"Datasheets": ["https://www.adafruit.com/datasheets/TC1602A-01T.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
{
|
||||
"Library": "ldt0028",
|
||||
"Description": "API for LDT0-028 PZT Film-Based Sensors",
|
||||
"Sensor Class":
|
||||
{
|
||||
"ldt0028":
|
||||
{
|
||||
"Name": "Piezo Vibration Sensor",
|
||||
"Description": "This module defines the LDT0-028 interface for libupm-ldt0028",
|
||||
"Aliases": ["ldt0028"],
|
||||
"Categories": ["vibration"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["industrial", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": [],
|
||||
"Image": "ldt0028.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["LDT0028Sample.java"],
|
||||
"Python": ["ldt0028.py"],
|
||||
"Node.js": ["ldt0028.js"],
|
||||
"C++": ["ldt0028.cxx"],
|
||||
"C": ["ldt0028.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3.3, "high": 5}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Piezo-Vibration-Sensor-p-1411.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-Piezo_Vibration_Sensor/", "https://raw.githubusercontent.com/SeeedDocument/Grove-Piezo_Vibration_Sensor/master/res/Piezo_Vibration_Sensor.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
{
|
||||
"Library": "lidarlitev3",
|
||||
"Description": "API for the LIDARLITEV3 Optical Distance Measurement Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"lidarlitev3":
|
||||
{
|
||||
"Name": "Optical Distance Measurement Sensor",
|
||||
"Description": "It is a compact, high-performance optical distance measurement sensor from Garmin.",
|
||||
"Aliases": ["lidarlitev3"],
|
||||
"Categories": ["distance"],
|
||||
"Connections": ["i2c", "pwm"],
|
||||
"Project Type": ["robotics", "prototyping"],
|
||||
"Manufacturers": ["garmin"],
|
||||
"Kits": [],
|
||||
"Image": "lidarlitev3.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": [],
|
||||
"Python": [],
|
||||
"Node.js": [],
|
||||
"C++": ["lidarlitev3.cxx"],
|
||||
"C": []
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "typ": 5},
|
||||
"Operating Current": {"unit": "mA", "low": 105, "high": 130}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.sparkfun.com/products/14032"],
|
||||
"Datasheets": ["http://static.garmin.com/pumac/LIDAR_Lite_v3_Operation_Manual_and_Technical_Specifications.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
{
|
||||
"Library": "light",
|
||||
"Description": "API for the Light Sensor",
|
||||
"Sensor Class":
|
||||
{
|
||||
"light":
|
||||
{
|
||||
"Name": "Analog Light Sensor",
|
||||
"Description": "The light sensor detects the intensity of the ambient light. As the light intensity of the environment increases, the resistance of the sensor decreases. This means the raw value from the analog pin is larger in bright light and smaller in the dark. A very approximate lux value can also be returned.",
|
||||
"Aliases": ["light"],
|
||||
"Categories": ["light"],
|
||||
"Connections": ["analog"],
|
||||
"Project Type": ["environmental", "security", "prototyping"],
|
||||
"Manufacturers": ["seeed"],
|
||||
"Kits": ["gsk"],
|
||||
"Image": "light.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["LightSample.java"],
|
||||
"Python": ["light.py"],
|
||||
"Node.js": ["light.js"],
|
||||
"C++": ["light.cxx"],
|
||||
"C": ["light.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 3, "high": 5},
|
||||
"Operating Current": {"unit": "mA", "low": 0.5, "high": 3},
|
||||
"Response Time": {"unit": "ms", "low": 20, "high": 30}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Light-Sensor-p-746.html"],
|
||||
"Datasheets": ["http://wiki.seeed.cc/Grove-Light_Sensor/", "https://github.com/SeeedDocument/Grove_Light_Sensor/raw/master/res/LS06-M%CE%A65_datasheet.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
{
|
||||
"Library": "linefinder",
|
||||
"Description": "Grove Line Finder Sensor Library",
|
||||
"Sensor Class":
|
||||
{
|
||||
"linefinder":
|
||||
{
|
||||
"Name": "Infrared (IR) Based Line Finder",
|
||||
"Description": "UPM module for the Line Finder sensor. It outputs a digital signal indicating whether it is detecting black on a white background, or white on a black background.",
|
||||
"Aliases": ["linefinder"],
|
||||
"Categories": ["linefinder"],
|
||||
"Connections": ["gpio"],
|
||||
"Project Type": ["robotics", "prototyping"],
|
||||
"Manufacturers": ["seeed", "dfrobot"],
|
||||
"Kits": ["robok"],
|
||||
"Image": "linefinder.jpg",
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["LineFinderSample.java"],
|
||||
"Python": ["linefinder.py"],
|
||||
"Node.js": ["linefinder.js"],
|
||||
"C++": ["linefinder.cxx"],
|
||||
"C": ["linefinder.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 2.7, "high": 5.5},
|
||||
"Operating Current": {"unit": "uA", "typ": 210},
|
||||
"Operating Temperature": {"unit": "degC", "low": -40, "high": 125}
|
||||
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["https://www.seeedstudio.com/Grove-Line-Finder-v1.1-p-2712.html"],
|
||||
"Datasheets": ["file:///C:/Users/Malachai/Downloads/Lmv358.pdf", "http://wiki.seeed.cc/Grove-Line_Finder/"],
|
||||
"Schematics": ["https://easyeda.com/Seeed/Grove_Line_Finder_v1_1-dfc99c72325e41ff93a451882fd2e143"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
{
|
||||
"Library": "lis2ds12",
|
||||
"Description": "API for the LIS2DS12 3-axis Accelerometer",
|
||||
"Sensor Class":
|
||||
{
|
||||
"lis2ds12":
|
||||
{
|
||||
"Name": "Digital 3-axis Accelerometer",
|
||||
"Description": "The LIS2DS12 is an ultra-low-power high performance three-axis linear accelerometer belonging to the \"pico\" family which leverages on the robust and mature manufacturing processes already used for the production of micromachined accelerometers. The LIS2DS12 has user-selectable full scales of 2g/4g/8g/16g and is capable of measuring accelerations with output data rates from 1 Hz to 6400 Hz. Not all functionality of this chip has been implemented in this driver, however all the pieces are present to add any desired functionality. This driver supports both I2C (default) and SPI operation.",
|
||||
"Aliases": ["lis2ds12"],
|
||||
"Categories": ["accelerometer"],
|
||||
"Connections": ["i2c", "spi", "gpio"],
|
||||
"Project Type": ["imu", "prototyping"],
|
||||
"Manufacturers": ["stmicro"],
|
||||
"Kits": [],
|
||||
"Examples":
|
||||
{
|
||||
"Java": ["LIS2DS12_Example.java"],
|
||||
"Python": ["lis2ds12.py"],
|
||||
"Node.js": ["lis2ds12.js"],
|
||||
"C++": ["lis2ds12.cxx"],
|
||||
"C": ["lis2ds12.c"]
|
||||
},
|
||||
"Specifications":
|
||||
{
|
||||
"Operating Voltage": {"unit": "V", "low": 1.62, "high": 1.98},
|
||||
"Operating Current": {"unit": "uA", "low": 0.7, "high": 150},
|
||||
"Operating Temperature": {"unit": "degC", "low": -40, "high": 85}
|
||||
},
|
||||
"Urls" :
|
||||
{
|
||||
"Product Pages": ["http://www.st.com/en/mems-and-sensors/lis2ds12.html"],
|
||||
"Datasheets": ["http://www.st.com/content/ccc/resource/technical/document/datasheet/ce/32/55/ac/e1/87/46/84/DM00177048.pdf/files/DM00177048.pdf/jcr:content/translations/en.DM00177048.pdf"],
|
||||
"Schematics": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user