Update sds011read.cpp

This commit is contained in:
August Quint 2020-02-25 15:41:12 +01:00 committed by GitHub
parent 20df7ca282
commit 0d18feb29d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

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