
El repositorio de Eclipse UPM proporciona controladores de software para una amplia variedad de sensores y actuadores de uso común. Estos controladores de software interactúan con la plataforma de hardware subyacente (o microcontrolador), así como con los sensores adjuntos, a través de llamadas para eclipsar las API de ARMA.
Los programadores pueden acceder a las interfaces para cada sensor al incluir el archivo de encabezado correspondiente del sensor e instanciar la clase de sensor asociada. En el caso de uso típico, un constructor inicializa el sensor en función de los parámetros que identifican el sensor, el protocolo de E/S utilizado y la ubicación del PIN del sensor. A partir de UPM 2.0, la inicialización del sensor también se puede hacer, en la mayoría de los casos, a través de constructores sobrecargados que aceptan identificadores de cadenas.
Apoyamos las adiciones que implementan las interfaces genéricas de C y C ++ proporcionadas con las bibliotecas. Con la versión 2.0, UPM presenta las siguientes interfaces del sensor:
iAcceleration, iAngle, iButton, iClock, iCollision, iDistance,
iDistanceInterrupter, iEC, iElectromagnet, iEmg, iGas, iGps, iGyroscope,
iHallEffect, iHeartRate, iHumidity, iLight, iLineFinder, iMagnetometer,
iMoisture, iMotion, iOrp, iPH, iPressure, iProximity, iTemperature, iVDiv,
iWater.
Se invita a la comunidad de desarrolladores a proponer nuevas interfaces para los tipos de actuadores.
El proyecto UPM se une a la Fundación Eclipse como un proyecto Eclipse IoT. Puedes leer más sobre esto aquí.
Se espera que un sensor/actuador funcione como tal (aquí está la API del acelerómetro MMA7660):
// Instantiate an MMA7660 on I2C bus 0
upm::MMA7660 *accel = new upm::MMA7660(MMA7660_DEFAULT_I2C_BUS,
MMA7660_DEFAULT_I2C_ADDR);
// place device in standby mode so we can write registers
accel-> setModeStandby ();
// enable 64 samples per second
accel-> setSampleRate (MMA7660_AUTOSLEEP_64);
// place device into active mode
accel-> setModeActive ();
while (shouldRun)
{
float ax, ay, az;
accel-> getAcceleration (&ax, &ay, &az);
cout << " Acceleration: x = " << ax
<< " g y = " << ay
<< " g z = " << az
<< " g " << endl;
usleep ( 500000 );
}Explore la lista de todos los ejemplos.
Se pueden encontrar muestras de sensores múltiples para kits de arranque y especializados en el repositorio IoT-Devkit-Samples.
Lista de sensores compatibles de la documentación de la API.
El proyecto UPM incluye soporte para múltiples sensores de grado industrial, actuadores, radios, protocolos y estándares en uso en la actualidad. También está muy integrado con el ECLIPSE IDE a través de la ayuda de los socios de la Fundación. Obtenga más información sobre las herramientas.
Encuentre notas sobre cómo instalar UPM en varios OS'es en esta página.
Ver documentación de construcción aquí.
Antes de comenzar al desarrollo, eche un vistazo a nuestras convenciones de nombres. El nombre que elige para un sensor recién agregado debe ser único en la biblioteca UPM.
A continuación, revise la guía de contribución del proyecto.
Asegúrese de agregarse como autor en cada nuevo archivo de código enviado. Si proporciona una solución con cambios significativos, no dude en agregarse como contribuyente. Firmar sus compromisos y aceptar la ECA es obligatorio para hacer nuevas contribuciones a este proyecto.
Documentar su código también es una gran parte de la tarea. Tenemos un conjunto estricto de etiquetas utilizadas para clasificar nuestros sensores y sus capacidades. Puede obtener más información sobre esto en nuestra sección sobre la documentación de una API de sensor.
Finalmente, si realmente desea garantizar la consistencia con el resto de la biblioteca y los repositorios Intel-IoT-Devkit en general, eche un vistazo a nuestra extensa guía de autor.




Incluso si hacemos nuestro mejor esfuerzo, de vez en cuando, nos vemos obligados a modificar nuestra API de una manera que romperá la compatibilidad hacia atrás. Si no puede compilar un código que funcionara bien antes de una actualización de la biblioteca, asegúrese de verificar primero la sección de cambios de API.
Versión ChangeLog aquí.
Lista de limitaciones conocidas aquí.