Update sds011read.cpp
This commit is contained in:
		
							parent
							
								
									f70cfbcc89
								
							
						
					
					
						commit
						8fe69a9130
					
				| @ -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; | ||||
|     if ( isSDS011Active ) { | ||||
|         int sdsErrorCode = sdsSensor.read(&pm25, &pm10); | ||||
|     if (!sdsErrorCode)  | ||||
|     { | ||||
|         ESP_LOGD(TAG, "SDS011 error: %d", sdsErrorCode); | ||||
|         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; | ||||
|     } | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user