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 | |
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.
-rw-r--r-- | LINKS.md | 2 | ||||
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | TODO.md | 10 | ||||
-rw-r--r-- | actual_board_code/actual_board_code.ino | 115 | ||||
-rw-r--r-- | learning_examples/DHT_Tester_esp32/DHT_Tester_esp32.ino (renamed from learning_examples/DHT_Tester_esp32/DHTtester_esp32.ino) | 0 | ||||
-rw-r--r-- | learning_examples/DSM501A-example-esp32-ehh-unreliable-CRAP/DSM501A-example-esp32-ehh-unreliable-CRAP.ino (renamed from learning_examples/DSM501A-example-ehh-unreliable/DSM501A-example-ehh.ino) | 13 | ||||
-rw-r--r-- | learning_examples/MQ135_workaround_analog_esp32/MQ135_workaround_analog_esp32.ino (renamed from learning_examples/MQ135_workaround_analog_esp32/parts_per_mil_mq135_workaround_analog_esp32.ino) | 0 |
7 files changed, 131 insertions, 11 deletions
@@ -15,6 +15,8 @@ DATABASE CONTENDERRRRRRRRRRRRRRRr: https://cassandra.apache.org/_/quickstart.html -- i like this containarization https://graphql.org/ - graphs dbs +FORGET THAT ; DO FIREBASE --> Flutter for android, ios, web + SOME OTHER THINGS I VE SEEN: https://github.com/expressjs/express @@ -1,2 +1,4 @@ # meteo-board Code and Notes all throughout the competition https://code-envision.ro + +## CHECK THE OTHER .MD FILES AND THEN WORK ON THIS LANDING MD
\ No newline at end of file @@ -1,9 +1,11 @@ -integrate dsm sensor (doing) +integrate dht sensors (done, first thing done) +integrate mq sensor (done) +integrate dsm sensor (done) :DDDD make an api interface (esp32 can use curl's and stuff) -store the data on a mock server that can be accessed with requests (rest, crud) +store the data on a mock server that can be accessed with requests (rest, crud) --> alphara.art ORRRR firebase:) -somehow integrate that continuously with time series data forcasting and other AI/ML predictions +somehow integrate that continuously with time series data forcasting and other AI/ML predictions -- need python for making AND condensing an ML model -incorporate normal graphs and predicted future behaviour of those datapoints to show the urgency of measures that should be taken
\ No newline at end of file +incorporate pretty graphs and predict future behaviour/forcasting of those data-points to show the urgency for measure-taking
\ No newline at end of file diff --git a/actual_board_code/actual_board_code.ino b/actual_board_code/actual_board_code.ino new file mode 100644 index 0000000..a080a9b --- /dev/null +++ b/actual_board_code/actual_board_code.ino @@ -0,0 +1,115 @@ + +// 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" + +// CONFIGURATION + +// DHT PINS + +#define DHTPIN 4 // Digital pin connected to the DHT sensor +// Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 + +// Uncomment whatever type you're using +//#define DHTTYPE DHT11 // DHT 11 +#define DHTTYPE DHT11 // DHT 22 (AM2302), AM2321 +//#define DHTTYPE DHT21 // DHT 21 (AM2301) + +// DSM PINS + +#define DSM501 18 // Just leave it as is + +// END PIN CONFIGURATION SECTION + + +// SOME VARS + +unsigned long duration; +unsigned long starttime; +unsigned long endtime; +unsigned long sampletime_ms = 1000; +unsigned long lowpulseoccupancy = 0; +float ratio = 0; +float concentration = 0; +uint32_t delayMS = 1000; // in loop delay() explicited + + +// Initialize DHT Sensor. The current DHT reading algorithm adjusts itself to work on faster procs. (rtfm --> docs) +DHT dht(DHTPIN, DHTTYPE); + + +void setup() { // Setup code that gets run regardless + Serial.begin(9600); + + Serial.println(F("----- DHT + MQ + DSM Interface -----")); + + dht.begin(); // Begin DHT System at startup + + pinMode(DSM501,INPUT); // Initialize DSM501A Sensor + + starttime = millis(); +} + +void loop() { // Main code + // Wait a few seconds between measurements. + delay(delayMS); + + // vvv DHT MEASUREMENTS SECTION vvv // + + // 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")); + + // vvv MQ135 MEASUREMENTS SECTION vvv // + + Serial.println(analogRead(15)); // MQ135 Sensor - ppm metrics (raw) + Serial.println("ppm") + + // vvv DSM501A MEASUREMENTS SECTION vvv // + + duration = pulseIn(DSM501, LOW); + lowpulseoccupancy += duration; + endtime = millis(); + + ratio = (lowpulseoccupancy-endtime+starttime + sampletime_ms)/(sampletime_ms*10.0); + concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // idk what s going on in here anymore.. it used to work, it doesn t now.. + // concentration = 0.001915 * pow(low_ratio, 2) + 0.09522 * low_ratio - 0.04884; + Serial.print("lowpulseoccupancy: "); + Serial.print(lowpulseoccupancy); + Serial.print(" ratio: "); + Serial.print(ratio); + Serial.print(" DSM501A: "); + Serial.println(concentration); + + lowpulseoccupancy = 0; + starttime = millis(); +} diff --git a/learning_examples/DHT_Tester_esp32/DHTtester_esp32.ino b/learning_examples/DHT_Tester_esp32/DHT_Tester_esp32.ino index f12bfb5..f12bfb5 100644 --- a/learning_examples/DHT_Tester_esp32/DHTtester_esp32.ino +++ b/learning_examples/DHT_Tester_esp32/DHT_Tester_esp32.ino diff --git a/learning_examples/DSM501A-example-ehh-unreliable/DSM501A-example-ehh.ino b/learning_examples/DSM501A-example-esp32-ehh-unreliable-CRAP/DSM501A-example-esp32-ehh-unreliable-CRAP.ino index 7852763..b29a512 100644 --- a/learning_examples/DSM501A-example-ehh-unreliable/DSM501A-example-ehh.ino +++ b/learning_examples/DSM501A-example-esp32-ehh-unreliable-CRAP/DSM501A-example-esp32-ehh-unreliable-CRAP.ino @@ -45,19 +45,18 @@ void loop() 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); + // 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 - */ + // 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); + Serial.println(conPM25); // this is pretty negative:) lowpulseoccupancyPM1 = 0; lowpulseoccupancyPM25 = 0; starttime = millis(); diff --git a/learning_examples/MQ135_workaround_analog_esp32/parts_per_mil_mq135_workaround_analog_esp32.ino b/learning_examples/MQ135_workaround_analog_esp32/MQ135_workaround_analog_esp32.ino index dc2ed08..dc2ed08 100644 --- a/learning_examples/MQ135_workaround_analog_esp32/parts_per_mil_mq135_workaround_analog_esp32.ino +++ b/learning_examples/MQ135_workaround_analog_esp32/MQ135_workaround_analog_esp32.ino |