SDS011 dustsensor

Is there anybody who succeeded to get a sds011 dust sensor working with a cubecell AB01 dev Board.
I tried with platformIo and the use of the SdsDustSensor library
When compiling the code I get an error:
c:/users/peter/.platformio/packages/toolchain-gccarmnoneeabi/bin/…/lib/gcc/arm-none-eabi/9.2.1/…/…/…/…/arm-none-eabi/bin/ld.exe: .pio\build\cubecell_board_plus\lib910\libNova Fitness Sds dust sensors library.a(SdsDustSensor.cpp.o): in function SdsDustSensor::readIntoBytes(unsigned char)': SdsDustSensor.cpp:(.text._ZN13SdsDustSensor13readIntoBytesEh+0x5a): undefined reference toyield()’
collect2.exe: error: ld returned 1 exit status
*** [.pio\build\cubecell_board_plus\firmware.elf] Error 1
Investigating the error I concluded that this library is not suitable for the cubecell development board.

Any suggestion for a working library/example for this sensor on the cubecell developmentboard is welcome

Below here the code I used.

#include <Arduino.h>
#include <softSerial.h>
#include <SdsDustSensor.h>

/* SDS011 Dust Sensor */
const int SDS_RX_PIN = GPIO1; // GPIO1 -> SDS011 TX pin
const int SDS_TX_PIN = GPIO5; // GPIO5 -> SDS011 TX pin
SoftwareSerial softwareSerial(SDS_RX_PIN, SDS_TX_PIN);
SdsDustSensor sds(softwareSerial); //  additional parameters: retryDelayMs and maxRetriesNotAvailable
const int MINUTE = 60000;
const int WAKEUP_WORKING_TIME = 30000; // 30 seconds.
const int MEASUREMENT_INTERVAL = 5 * MINUTE;

void setup() {
   Serial.begin(115200);
  // Vext ON
  pinMode(Vext, OUTPUT);
  digitalWrite(Vext, LOW);
  delay(10);
  /* SDS011 Dust Sensor */
  Serial.println("SDS011 dust sensor");
  delay(500);
   sds.begin();
  // Prints SDS011 firmware version:
  Serial.print("SDS011 ");
  Serial.println(sds.queryFirmwareVersion().toString());
  // Ensures SDS011 is in 'query' reporting mode:
  Serial.println(sds.setQueryReportingMode().toString());
 
}

void loop() {
// Wake up SDS011
sds.wakeup();
delay(WAKEUP_WORKING_TIME);
// Get data from SDS011
PmResult pm = sds.queryPm();
if (pm.isOk()) {
Serial.print("PM2.5 = ");
Serial.print(pm.pm25); // float, μg/m3
Serial.print(", PM10 = ");
Serial.println(pm.pm10);
} else {
Serial.print("Could not read values from sensor, reason: ");
Serial.println(pm.statusToString());
}
// Put SDS011 back to sleep
WorkingStateResult state = sds.sleep();
if (state.isWorking()) {
Serial.println("Problem with sleeping the SDS011 sensor.");
} else {
Serial.println("SDS011 sensor is sleeping");
delay(MEASUREMENT_INTERVAL);
}
  
}

Read this

Is it one wir? If yes.: use the lib from heltec the function yield (). Is not implemented in cubecell.
So here you should search how to solve.

Hello,
The SDS011 dust sensor has a UART module and PWM outputs which can be used to get output.

I copied the SDS library files into my source folder and commented out the yield() function call in SdsDustSensor.cpp. Now the compilation with my Cubecell AB02 board works.

But the problem is now, that after returning from deep sleep, the softserial based communication to the SDS011 sensor does not work anymore. It works only during the first call in the setup function.

Any suggestions?