Ursprünglich wollte ich alle Daten via Wifi in eine Datenbank senden, hierbei hatte ich eine Cloud genützt, dass dies ein Fehler bzgl der Geschwindigkeit ist, ist mir bereits bewusst.
Jetzt tendiere ich zu BLE wegen der Akkulaufzeit, werde aber auch eine direkte Verbindung via Wifi an eine lokale Datenbank antesten, hab mir hierzu mySQL und InfluxDB runtergeladen, mySQL läuft bereits. Bevor ich hier aber weiter arbeiten kann muss ich erst mein Signal filtern und da hänge ich gerade dabei diesen Filter zu programmieren:
struct meanDiffFilter_t
{
float values[MEAN_FILTER_SIZE];
byte index;
float sum;
byte count;
};
float MAX30100::meanDiff(float M, meanDiffFilter_t* filterValues)
{
float avg = 0;
filterValues->sum -= filterValues->values[filterValues->index];
filterValues->values[filterValues->index] = M;
filterValues->sum += filterValues->values[filterValues->index];
filterValues->index++;
filterValues->index = filterValues->index % MEAN_FILTER_SIZE;
if(filterValues->count < MEAN_FILTER_SIZE)
filterValues->count++;
avg = filterValues->sum / filterValues->count;
return avg - M;
}
Sowie:
struct butterworthFilter_t
{
float v[2];
float result;
};
void MAX30100::lowPassButterworthFilter( float x, butterworthFilter_t * filterResult )
{
filterResult->v[0] = filterResult->v[1];
//Fs = 100Hz and Fc = 10Hz
filterResult->v[1] = (2.452372752527856026e-1 * x) + (0.50952544949442879485 * filterResult->v[0]);
//Fs = 100Hz and Fc = 4Hz
//filterResult->v[1] = (1.367287359973195227e-1 * x) + (0.72654252800536101020 * filterResult->v[0]); //Very precise butterworth filter
filterResult->result = filterResult->v[0] + filterResult->v[1];
}
Die Codes sind von hier: Implementing pulse oximeter using MAX30100 - MORF - Coding And Engineering
Die Libs des Autors vollständig hier: xcoder123/MAX30100: Driver for MAX30100 using arduino (github.com)
Ist jetzt OT, aber ev kann mir hier wer "on the fly" schnell weiterhelfen. Soweit ich das nun bisher kapiert habe nutzt ich struct als "Kontainer" um die Variablen dort reinzupacken. Aber so ganz konnte ich die Codes noch nicht einbinden.
b2t. Das mit MiddleTier habe ich mir notiert und das schaue ich mir auch mal an, danke für den Tipp!