Hallo Onki,
ein solches "Multi-Sensor-Projekt" wird das OpenXSensor-Projekt sicher nicht überflüssig machen. OpenXSensor kann viele verschiedene Telemetrien und hat Implementierungen für eine ganze Reihe von Sensoren.
Es geht "nur" darum, dass man einfache Sensoren leicht kombinieren kann. Es würde ausschließlich mit Jeti-Telemetrie funktionieren.
Das Ziel dabei ist, dass man den Code gut kapselt, so dass man relativ (!) leicht eigene Sensor-Module programmieren bzw. zu adaptieren kann und diese dann kombinierbar sind. Die Sensor-Module wären in sich abgeschlossen und haben möglichst wenig Abhängigkeiten zu anderem Code.
Als Beispiel ein paar Code-Auszüge aus meinem "MegaSensor"-Projekt, das vier Sensoren bedient und 18 Sensorwerte liefert.
So kann man sich den Code vorstellen. Wenn das so verständlich ist, lohnt sich das Projekt. Wenn man mit OpenXSensor dasselbe erreicht, weil es ein Kochrezept gibt, das am Ende auch handhabbar ist, ist das Projekt überflüssig. Ich denke, dass man ein wenig Lust zum Programmieren haben muss, um es zu nutzen.
VG Bernd
Code Beispiel:
DualVoltageSensor voltage;
Bmp180Sensor pressure;
GpsSensor gps;
OrbitECUSensor ecu;
JetiExProtocol jetiEx;
void setup()
{
voltage.Init( A0, A1, 0.295389564f, 0.294547398f, 2000 );
pressure.Init( 1000 ); // I2C
ecu.Init( SERIAL1, false );
gps.Init( SERIAL3 );
jetiEx.Start( "Lama", sensors, SERIAL2 );
}
void loop()
{
ecu.DoOrbitECUSensor();
voltage.DoDualVoltageSensor();
pressure.DoBmp180Sensor();
gps.DoGpsSensor();
int32_t status = ecu.GetStatus();
int32_t rpm = ecu.GetRPM();
jetiEx.SetSensorValue( ID_VOLTAGE, ecu.GetVoltage() );
jetiEx.SetSensorValue( ID_EGT, ecu.GetEGT() );
jetiEx.SetSensorValue( ID_RPM, rpm );
jetiEx.SetSensorValue( ID_FUEL, ecu.GetFuel() );
jetiEx.SetSensorValue( ID_STATUS, status );
float lat = gps.GetLat();
float lon = gps.GetLon();
jetiEx.SetSensorValueGPS( ID_GPSLAT, false, lat );
jetiEx.SetSensorValueGPS( ID_GPSLON, true, lon );
jetiEx.SetSensorValue( ID_GPSSPEED, gps.GetSpeed() ); // km/h
jetiEx.SetSensorValue( ID_GPSHDOP, gps.GetHDOP() ); // in 100th
// jetiEx.SetSensorValue( ID_ALT, gps.GetAlt() ); // m
jetiEx.SetSensorValue( ID_ALT, pressure.GetAlt() ); // m
jetiEx.SetSensorValue( ID_BATT, voltage.GetDualVoltage() );
jetiEx.SetSensorValue( ID_PUMP, ecu.GetPumpVolt() );
jetiEx.SetSensorValue( ID_EGTMAX, ecu.GetEGTmax() );
jetiEx.SetSensorValue( ID_TEMPAMB, (long)(pressure.GetTemp()*10.0f) );
/* you can do other stuff here */
jetiEx.DoJetiSend();
}