From a26b7c2cff9ca416917872a976fbcce6202fb938 Mon Sep 17 00:00:00 2001 From: Alphara <42233094+xAlpharax@users.noreply.github.com> Date: Sat, 4 Nov 2023 21:34:22 +0000 Subject: Unified code and workflow + logic. All that s needed now is Wifi integration with the outputs. DSM is weird... will look again later. --- .../DHT_Tester_esp32/DHT_Tester_esp32.ino | 74 ++++++++++++++++++++++ .../DHT_Tester_esp32/DHTtester_esp32.ino | 74 ---------------------- .../DSM501A-example-ehh.ino | 65 ------------------- .../DSM501A-example-esp32-ehh-unreliable-CRAP.ino | 64 +++++++++++++++++++ .../MQ135_workaround_analog_esp32.ino | 10 +++ ...parts_per_mil_mq135_workaround_analog_esp32.ino | 10 --- 6 files changed, 148 insertions(+), 149 deletions(-) create mode 100644 learning_examples/DHT_Tester_esp32/DHT_Tester_esp32.ino delete mode 100644 learning_examples/DHT_Tester_esp32/DHTtester_esp32.ino delete mode 100644 learning_examples/DSM501A-example-ehh-unreliable/DSM501A-example-ehh.ino create mode 100644 learning_examples/DSM501A-example-esp32-ehh-unreliable-CRAP/DSM501A-example-esp32-ehh-unreliable-CRAP.ino create mode 100644 learning_examples/MQ135_workaround_analog_esp32/MQ135_workaround_analog_esp32.ino delete mode 100644 learning_examples/MQ135_workaround_analog_esp32/parts_per_mil_mq135_workaround_analog_esp32.ino (limited to 'learning_examples') diff --git a/learning_examples/DHT_Tester_esp32/DHT_Tester_esp32.ino b/learning_examples/DHT_Tester_esp32/DHT_Tester_esp32.ino new file mode 100644 index 0000000..f12bfb5 --- /dev/null +++ b/learning_examples/DHT_Tester_esp32/DHT_Tester_esp32.ino @@ -0,0 +1,74 @@ +// Example testing sketch for various DHT humidity/temperature sensors +// Written by ladyada, public domain + +// REQUIRES the following Arduino libraries: +// - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library +// - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor + +#include "DHT.h" + +#define DHTPIN 4 // Digital pin connected to the DHT sensor +// Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 -- +// Pin 15 can work but DHT must be disconnected during program upload. + +// Uncomment whatever type you're using! +//#define DHTTYPE DHT11 // DHT 11 +#define DHTTYPE DHT11 // DHT 22 (AM2302), AM2321 +//#define DHTTYPE DHT21 // DHT 21 (AM2301) + +// Connect pin 1 (on the left) of the sensor to +5V +// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1 +// to 3.3V instead of 5V! +// Connect pin 2 of the sensor to whatever your DHTPIN is +// Connect pin 3 (on the right) of the sensor to GROUND (if your sensor has 3 pins) +// Connect pin 4 (on the right) of the sensor to GROUND and leave the pin 3 EMPTY (if your sensor has 4 pins) +// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor + +// Initialize DHT sensor. +// Note that older versions of this library took an optional third parameter to +// tweak the timings for faster processors. This parameter is no longer needed +// as the current DHT reading algorithm adjusts itself to work on faster procs. +DHT dht(DHTPIN, DHTTYPE); + +void setup() { + Serial.begin(9600); + Serial.println(F("DHTxx test!")); + + dht.begin(); +} + +void loop() { + // Wait a few seconds between measurements. + delay(2000); + + // Reading temperature or humidity takes about 250 milliseconds! + // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor) + float h = dht.readHumidity(); + // Read temperature as Celsius (the default) + float t = dht.readTemperature(); + // Read temperature as Fahrenheit (isFahrenheit = true) + float f = dht.readTemperature(true); + + // Check if any reads failed and exit early (to try again). + if (isnan(h) || isnan(t) || isnan(f)) { + Serial.println(F("Failed to read from DHT sensor!")); + return; + } + + // Compute heat index in Fahrenheit (the default) + float hif = dht.computeHeatIndex(f, h); + // Compute heat index in Celsius (isFahreheit = false) + float hic = dht.computeHeatIndex(t, h, false); + + Serial.print(F("Humidity: ")); + Serial.print(h); + Serial.print(F("% Temperature: ")); + Serial.print(t); + Serial.print(F("°C ")); + Serial.print(f); + Serial.print(F("°F Heat index: ")); + Serial.print(hic); + Serial.print(F("°C ")); + Serial.print(hif); + Serial.println(F("°F")); +} diff --git a/learning_examples/DHT_Tester_esp32/DHTtester_esp32.ino b/learning_examples/DHT_Tester_esp32/DHTtester_esp32.ino deleted file mode 100644 index f12bfb5..0000000 --- a/learning_examples/DHT_Tester_esp32/DHTtester_esp32.ino +++ /dev/null @@ -1,74 +0,0 @@ -// Example testing sketch for various DHT humidity/temperature sensors -// Written by ladyada, public domain - -// REQUIRES the following Arduino libraries: -// - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library -// - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor - -#include "DHT.h" - -#define DHTPIN 4 // Digital pin connected to the DHT sensor -// Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 -- -// Pin 15 can work but DHT must be disconnected during program upload. - -// Uncomment whatever type you're using! -//#define DHTTYPE DHT11 // DHT 11 -#define DHTTYPE DHT11 // DHT 22 (AM2302), AM2321 -//#define DHTTYPE DHT21 // DHT 21 (AM2301) - -// Connect pin 1 (on the left) of the sensor to +5V -// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1 -// to 3.3V instead of 5V! -// Connect pin 2 of the sensor to whatever your DHTPIN is -// Connect pin 3 (on the right) of the sensor to GROUND (if your sensor has 3 pins) -// Connect pin 4 (on the right) of the sensor to GROUND and leave the pin 3 EMPTY (if your sensor has 4 pins) -// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor - -// Initialize DHT sensor. -// Note that older versions of this library took an optional third parameter to -// tweak the timings for faster processors. This parameter is no longer needed -// as the current DHT reading algorithm adjusts itself to work on faster procs. -DHT dht(DHTPIN, DHTTYPE); - -void setup() { - Serial.begin(9600); - Serial.println(F("DHTxx test!")); - - dht.begin(); -} - -void loop() { - // Wait a few seconds between measurements. - delay(2000); - - // Reading temperature or humidity takes about 250 milliseconds! - // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor) - float h = dht.readHumidity(); - // Read temperature as Celsius (the default) - float t = dht.readTemperature(); - // Read temperature as Fahrenheit (isFahrenheit = true) - float f = dht.readTemperature(true); - - // Check if any reads failed and exit early (to try again). - if (isnan(h) || isnan(t) || isnan(f)) { - Serial.println(F("Failed to read from DHT sensor!")); - return; - } - - // Compute heat index in Fahrenheit (the default) - float hif = dht.computeHeatIndex(f, h); - // Compute heat index in Celsius (isFahreheit = false) - float hic = dht.computeHeatIndex(t, h, false); - - Serial.print(F("Humidity: ")); - Serial.print(h); - Serial.print(F("% Temperature: ")); - Serial.print(t); - Serial.print(F("°C ")); - Serial.print(f); - Serial.print(F("°F Heat index: ")); - Serial.print(hic); - Serial.print(F("°C ")); - Serial.print(hif); - Serial.println(F("°F")); -} diff --git a/learning_examples/DSM501A-example-ehh-unreliable/DSM501A-example-ehh.ino b/learning_examples/DSM501A-example-ehh-unreliable/DSM501A-example-ehh.ino deleted file mode 100644 index 7852763..0000000 --- a/learning_examples/DSM501A-example-ehh-unreliable/DSM501A-example-ehh.ino +++ /dev/null @@ -1,65 +0,0 @@ -#include -#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); - lowpulseoccupancyPM1 = 0; - lowpulseoccupancyPM25 = 0; - starttime = millis(); - } -} 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 +#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(); + } +} diff --git a/learning_examples/MQ135_workaround_analog_esp32/MQ135_workaround_analog_esp32.ino b/learning_examples/MQ135_workaround_analog_esp32/MQ135_workaround_analog_esp32.ino new file mode 100644 index 0000000..dc2ed08 --- /dev/null +++ b/learning_examples/MQ135_workaround_analog_esp32/MQ135_workaround_analog_esp32.ino @@ -0,0 +1,10 @@ +void setup() { + Serial.begin(9600); + // put your setup code here, to run once: + Serial.println("begin"); +} + +void loop() { + Serial.println(analogRead(15)); // ppm metrics (raw (i think)) + // put your main code here, to run repeatedly: +} diff --git a/learning_examples/MQ135_workaround_analog_esp32/parts_per_mil_mq135_workaround_analog_esp32.ino b/learning_examples/MQ135_workaround_analog_esp32/parts_per_mil_mq135_workaround_analog_esp32.ino deleted file mode 100644 index dc2ed08..0000000 --- a/learning_examples/MQ135_workaround_analog_esp32/parts_per_mil_mq135_workaround_analog_esp32.ino +++ /dev/null @@ -1,10 +0,0 @@ -void setup() { - Serial.begin(9600); - // put your setup code here, to run once: - Serial.println("begin"); -} - -void loop() { - Serial.println(analogRead(15)); // ppm metrics (raw (i think)) - // put your main code here, to run repeatedly: -} -- cgit v1.2.3