Update sds011read.cpp

This commit is contained in:
August Quint 2020-02-03 15:26:57 +01:00 committed by GitHub
parent f70cfbcc89
commit 8fe69a9130
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -6,12 +6,16 @@ static const char TAG[] = __FILE__;
#include <sds011read.h>
// UART(2) is unused in this project
#if (HAS_IF482)
#error cannot use IF482 together with SDS011 (both use UART#2)
#endif
static HardwareSerial sdsSerial(2); // so we use it here
static SDS011 sdsSensor; // fine dust sensor
// the results of the sensor:
float pm25;
float pm10;
boolean isSDS011Active;
// init
bool sds011_init()
@ -19,18 +23,40 @@ bool sds011_init()
pm25 = pm10 = 0.0;
sdsSerial.begin(9600, SERIAL_8N1, ESP_PIN_RX, ESP_PIN_TX);
sdsSensor.begin (&sdsSerial);
sdsSensor.contmode(0); // for safety: wakeup/sleep - if we want it we do it by ourselves
sdsSensor.wakeup(); // always wake up
sdsSensor.contmode(0); // for safety: no wakeup/sleep by the sensor
sds011_sleep(); // we do it by ourselves
return true;
}
// reading data:
void sds011_loop()
{
pm25 = pm10 = 0.0;
int sdsErrorCode = sdsSensor.read(&pm25, &pm10);
if (!sdsErrorCode)
{
ESP_LOGD(TAG, "SDS011 error: %d", sdsErrorCode);
if ( isSDS011Active ) {
int sdsErrorCode = sdsSensor.read(&pm25, &pm10);
if (sdsErrorCode) {
pm25 = pm10 = 0.0;
ESP_LOGI(TAG, "SDS011 error: %d", sdsErrorCode);
}
else {
ESP_LOGI(TAG, "fine-dust-values: %5.1f,%4.1f", pm10, pm25);
}
sds011_sleep();
}
return;
}
// putting the SDS-sensor to sleep
void sds011_sleep(void)
{
sdsSensor.sleep();
isSDS011Active = false;
}
// start the SDS-sensor
// needs 30 seconds for warming up
void sds011_wakeup()
{
if ( !isSDS011Active ) {
sdsSensor.wakeup();
isSDS011Active = true;
}
}