diff options
author | Alphara <42233094+xAlpharax@users.noreply.github.com> | 2023-11-04 21:34:22 +0000 |
---|---|---|
committer | Alphara <42233094+xAlpharax@users.noreply.github.com> | 2023-11-04 21:34:22 +0000 |
commit | a26b7c2cff9ca416917872a976fbcce6202fb938 (patch) | |
tree | a7e1eade1b0238fa75520a3a128cd88b9f507816 /learning_examples/DSM501A-example-esp32-ehh-unreliable-CRAP | |
parent | 097c457e47a7a61ce50267dd7204089702ed68c5 (diff) |
Unified code and workflow + logic.
All that s needed now is Wifi integration with the outputs.
DSM is weird... will look again later.
Diffstat (limited to 'learning_examples/DSM501A-example-esp32-ehh-unreliable-CRAP')
-rw-r--r-- | learning_examples/DSM501A-example-esp32-ehh-unreliable-CRAP/DSM501A-example-esp32-ehh-unreliable-CRAP.ino | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/learning_examples/DSM501A-example-esp32-ehh-unreliable-CRAP/DSM501A-example-esp32-ehh-unreliable-CRAP.ino b/learning_examples/DSM501A-example-esp32-ehh-unreliable-CRAP/DSM501A-example-esp32-ehh-unreliable-CRAP.ino new file mode 100644 index 0000000..b29a512 --- /dev/null +++ b/learning_examples/DSM501A-example-esp32-ehh-unreliable-CRAP/DSM501A-example-esp32-ehh-unreliable-CRAP.ino @@ -0,0 +1,64 @@ +#include<string.h> +#define PM1PIN 18 //DSM501A input D6 on ESP8266 +#define PM25PIN 14 // ???? what +byte buff[2]; +unsigned long durationPM1; +unsigned long durationPM25; +unsigned long starttime; +unsigned long endtime; +unsigned long sampletime_ms = 30000; +unsigned long lowpulseoccupancyPM1 = 0; +unsigned long lowpulseoccupancyPM25 = 0; + + +int i=0; +void setup() +{ + Serial.begin(9600); + Serial.println("Starting please wait 30s"); + pinMode(PM1PIN,INPUT); + pinMode(PM25PIN,INPUT); + starttime = millis(); +} + +float calculateConcentration(long lowpulseInMicroSeconds, long durationinSeconds){ + + float ratio = (lowpulseInMicroSeconds/1000000.0)/30.0*100.0; //Calculate the ratio + float concentration = 0.001915 * pow(ratio,2) + 0.09522 * ratio - 0.04884;//Calculate the mg/m3 + Serial.print("lowpulseoccupancy:"); + Serial.print(lowpulseInMicroSeconds); + Serial.print(" ratio:"); + Serial.print(ratio); + Serial.print(" Concentration:"); + Serial.println(concentration); + return concentration; +} + +void loop() +{ + durationPM1 = pulseIn(PM1PIN, LOW); + durationPM25 = pulseIn(PM25PIN, LOW); + + lowpulseoccupancyPM1 += durationPM1; + lowpulseoccupancyPM25 += durationPM25; + + endtime = millis(); + if ((endtime-starttime) > sampletime_ms) //Only after 30s has passed we calcualte the ratio + { + // ratio1 = (lowpulseoccupancy/1000000.0)/30.0*100.0; //Calculate the ratio + // Serial.print("ratio1: "); + // Serial.println(ratio1); + + // concentration = 0.001915 * pow(ratio1,2) + 0.09522 * ratio1 - 0.04884;//Calculate the mg/m3 + + float conPM1 = calculateConcentration(lowpulseoccupancyPM1,30); + float conPM25 = calculateConcentration(lowpulseoccupancyPM25,30); + Serial.print("PM1 "); + Serial.print(conPM1); + Serial.print(" PM25 "); + Serial.println(conPM25); // this is pretty negative:) + lowpulseoccupancyPM1 = 0; + lowpulseoccupancyPM25 = 0; + starttime = millis(); + } +} |