Browse Source

change sds011 dust sensor library

https://github.com/ricki-z/SDS011 is working on ESP32 but lacks features like query mode or setting custom working periods.
so try and make this one work: https://github.com/lewapek/sds-dust-sensors-arduino-library
split_files
Hendrik Langer 5 years ago
parent
commit
d32f553d60
  1. 5
      README.md
  2. 5
      platformio.ini
  3. 28
      src/main.cpp

5
README.md

@ -58,8 +58,8 @@ cd esp32-weatherstation
virtualenv . virtualenv .
source bin/activate source bin/activate
pip install -U platformio pip install -U platformio
platformio run -t upload && platformio device monitor -b 115200
pio run pio run
platformio run -t upload && platformio device monitor -b 115200
``` ```
## Authors ## Authors
@ -74,4 +74,5 @@ This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md
* [PlatformIO](https://platformio.org) - Cross-platform IDE * [PlatformIO](https://platformio.org) - Cross-platform IDE
* [GxEPD2](https://github.com/ZinggJM/GxEPD2) - E-Paper display library * [GxEPD2](https://github.com/ZinggJM/GxEPD2) - E-Paper display library
* [Adafruit BME680](https://github.com/adafruit/Adafruit_BME680) - BME680 Sensor Library * [Adafruit BME680](https://github.com/adafruit/Adafruit_BME680) - BME680 sensor library
* [Nova Fitness SDS dust sensors arduino library](https://github.com/lewapek/sds-dust-sensors-arduino-library.git) - SDS011 Laser dust sensor library

5
platformio.ini

@ -27,6 +27,7 @@ build_flags =
-DMQTT_BROKER_URI="\"${sysenv.MQTT_BROKER_URI}\"" -DMQTT_BROKER_URI="\"${sysenv.MQTT_BROKER_URI}\""
-DMQTT_USERNAME="\"${sysenv.MQTT_USERNAME}\"" -DMQTT_USERNAME="\"${sysenv.MQTT_USERNAME}\""
-DMQTT_PASSWORD="\"${sysenv.MQTT_PASSWORD}\"" -DMQTT_PASSWORD="\"${sysenv.MQTT_PASSWORD}\""
-DARDUINO_SAMD_VARIANT_COMPLIANCE
lib_deps = lib_deps =
GxEPD2 GxEPD2
@ -34,7 +35,9 @@ lib_deps =
Adafruit GFX Library Adafruit GFX Library
Adafruit BME280 Library Adafruit BME280 Library
Adafruit Unified Sensor Adafruit Unified Sensor
SDS011 sensor Library ; SDS011 sensor Library
; Nova Fitness Sds dust sensors library
https://github.com/lewapek/sds-dust-sensors-arduino-library.git
; ArduinoJSON ; ArduinoJSON
monitor_speed = 115200 monitor_speed = 115200

28
src/main.cpp

@ -19,7 +19,8 @@
#include <Adafruit_Sensor.h> #include <Adafruit_Sensor.h>
#include "Adafruit_BME280.h" #include "Adafruit_BME280.h"
#include <SDS011.h> #define ARDUINO_SAMD_VARIANT_COMPLIANCE
#include "SdsDustSensor.h"
#include "XD0OTA.h" #include "XD0OTA.h"
#include "XD0MQTT.h" #include "XD0MQTT.h"
@ -29,8 +30,8 @@ static const char* TAG = "MAIN";
WiFiMulti wifiMulti; WiFiMulti wifiMulti;
GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=SS*/ TFT_CS, /*DC=*/ TFT_DC, /*RST=*/ TFT_RST, /*BUSY=*/ -1)); // GDEH0213B72 GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=SS*/ TFT_CS, /*DC=*/ TFT_DC, /*RST=*/ TFT_RST, /*BUSY=*/ -1)); // GDEH0213B72
Adafruit_BME280 bme; // I2C (also available: hardware SPI Adafruit_BME280 bme; // I2C (also available: hardware SPI
SDS011 my_sds; //HardwareSerial Serial2(2);
HardwareSerial serialport(2); SdsDustSensor sds(Serial2);
XD0MQTT mqtt; XD0MQTT mqtt;
@ -118,7 +119,7 @@ void setup()
bme.setGasHeater(320, 150); // 320*C for 150 ms bme.setGasHeater(320, 150); // 320*C for 150 ms
*/ */
my_sds.begin(&serialport); sds.begin();
wifiMulti.addAP(WIFI_SSID, WIFI_PASSWD); wifiMulti.addAP(WIFI_SSID, WIFI_PASSWD);
wifiMulti.addAP(WIFI_SSID2, WIFI_PASSWD2); wifiMulti.addAP(WIFI_SSID2, WIFI_PASSWD2);
@ -161,13 +162,18 @@ void loop()
display.print("Gas: "); display.print(bme.gas_resistance / 1000.0); display.println(" KOhms"); display.print("Gas: "); display.print(bme.gas_resistance / 1000.0); display.println(" KOhms");
*/ */
float p10, p25; PmResult pm = sds.readPm();
int error; if (pm.isOk()) {
Serial.print("PM2.5 = ");
error = my_sds.read(&p25, &p10); Serial.print(pm.pm25);
if (!error) { Serial.print(", PM10 = ");
Serial.println("P.2.5: " + String(p25)); Serial.println(pm.pm10);
Serial.println("P10: " + String(p10));
// if you want to just print the measured values, you can use toString() method as well
Serial.println(pm.toString());
} else {
Serial.print("Could not read values from sensor, reason: ");
Serial.println(pm.statusToString());
} }

Loading…
Cancel
Save