Guten Tag, ich habe mir ein CO2 Messgerät Bausatz von Reichelt bestellt, jedoch funktioniert dieser nur mit Wlan (weil der Code so gedacht war). Ich würde das Messgerät jedoch gerne komplett ohne Wlan Verbindung benutzen können und habe im Zuge dessen versucht den für den Bausatz mitgelieferten Code umzuschreiben. Leider kenne ich mich so gut wie gar nicht mit der Arduino IDE aus und bekomme es deswegen nicht hin. Vielleicht weiß ja einer von Euch was ich anders machen muss. Danke im Vorraus
Vorgefertigter Code:
#include "WiFi.h"
#include "ESPAsyncWebServer.h"
#include "MHZ19.h"
#include "SoftwareSerial.h"
#include "DHTesp.h"
const char* ssid = "...";
const char* password = "...";
#define RX_PIN 33 // Rx pin which the MHZ19 Tx pin is attached tozh
#define TX_PIN 32 // Tx pin which the MHZ19 Rx pin is attached to
#define BAUDRATE 9600 // Device to MH-Z19 Serial baudrate (should not be changed)
#define LED_gruen 21
#define LED_gelb 19
#define LED_rot 18
#define dhtPin 4 // verbunden mit Data-Pin des DHT22
//#define test
AsyncWebServer server(80); // http port 80
DHTesp dht;
MHZ19 myMHZ19; // Constructor for library
SoftwareSerial mySerial(RX_PIN, TX_PIN); // create device to MH-Z19 serialh
void setup()
{
Serial.begin(115200); // Datenrate serieller Monitor
dht.setup(dhtPin, DHTesp::DHT22); // am dhtPin ist ein DHT22 angeschlossen
mySerial.begin(BAUDRATE); // (Uno example) device to MH-Z19 serial start
myMHZ19.begin(mySerial); // *Serial(Stream) refence must be passed to library begin().
myMHZ19.autoCalibration(true); // Turn auto calibration ON (OFF autoCalibration(false))
WiFi.begin(ssid, password);
delay(1000);
while (WiFi.status() != WL_CONNECTED){
Serial.println("Mit dem Wlan verbinden...");
Serial.println(WiFi.localIP()); // Ausgabe der IP-Adr. über seriellen Monitor
}
//Ausgänge definieren
pinMode(LED_gruen,OUTPUT );
pinMode(LED_gelb,OUTPUT );
pinMode(LED_rot,OUTPUT );
server.on("/temperature", HTTP_GET, [](AsyncWebServerRequest * request) { //temperature Route
float temperature = dht.getTemperature();
request->send(200, "text/plain", String(temperature) + " °C");
});
server.on("/humidity", HTTP_GET, [](AsyncWebServerRequest * request) { //humidity Route
float humidity = dht.getHumidity();
request->send(200, "text/plain", String(humidity) + " %");
});
server.on("/co2", HTTP_GET, [](AsyncWebServerRequest * request) { //co2 Route
int co2 = myMHZ19.getCO2();
request->send(200, "text/plain", String(co2) + " ppm");
});
server.begin(); // Start des Servers
}
unsigned long getDataTimer = 0;
void loop()
{
if (millis() - getDataTimer >= 1000)
{
float temperature = dht.getTemperature();
float humidity = dht.getHumidity();
// Serial.print("Temperatur: ");
//Serial.print(temperature);
//Serial.print(" °C Feuchtigkeit: ");
//Serial.println(humidity);
int CO2 = myMHZ19.getCO2(); // Request CO2 (as ppm)
// Serial.pri nt("CO2 (ppm): ");
Serial.println(CO2);Serial.println("\t");
//Serial.print(" ");
int8_t Temp = myMHZ19.getTemperature(); // Request Temperature (as Celsius)
//Serial.print(" Temperatur CO2Sens (°C): ");
// Serial.println(Temp);
getDataTimer = millis();
}
if ( myMHZ19.getCO2() >= 1000) //über 2000 ppm
{
digitalWrite(LED_rot, HIGH);
}
else {
digitalWrite(LED_rot, LOW);
}
if (800 <= myMHZ19.getCO2() && 1000 > myMHZ19.getCO2() ) // über 1000 ppm
{
digitalWrite(LED_gelb, HIGH);
}
else {
digitalWrite(LED_gelb, LOW);
}
if (myMHZ19.getCO2() < 800 ) // unter 1000 ppm
{
digitalWrite(LED_gruen, HIGH);
}
else {
digitalWrite(LED_gruen, LOW);
}
}
Mein Versuch :
#include "MHZ19.h"
#include "SoftwareSerial.h"
#define RX_PIN 33 // Rx pin which the MHZ19 Tx pin is attached tozh
#define TX_PIN 32 // Tx pin which the MHZ19 Rx pin is attached to
#define BAUDRATE 9600 // Device to MH-Z19 Serial baudrate (should not be changed)
#define LED_gruen 21
#define LED_gelb 19
#define LED_rot 18
#define dhtPin 4 // verbunden mit Data-Pin des DHT22
// http port 80
MHZ19 myMHZ19; // Constructor for library
SoftwareSerial mySerial(RX_PIN, TX_PIN); // create device to MH-Z19 serialh
void setup()
{
Serial.begin(115200); // Datenrate serieller Monitor
mySerial.begin(BAUDRATE); // (Uno example) device to MH-Z19 serial start
myMHZ19.begin(mySerial); // *Serial(Stream) refence must be passed to library begin().
myMHZ19.autoCalibration(true); // Turn auto calibration ON (OFF autoCalibration(false))
// Ausgabe der IP-Adr. über seriellen Monitor
}
//Ausgänge definieren
pinMode(LED_gruen,OUTPUT );
pinMode(LED_gelb,OUTPUT );
pinMode(LED_rot,OUTPUT );
unsigned long getDataTimer = 0;
void loop()
{
if (millis() - getDataTimer >= 1000)
{
int CO2 = myMHZ19.getCO2(); // Request CO2 (as ppm)
Serial.pri nt("CO2 (ppm): ");
Serial.println(CO2);Serial.println("\t");
getDataTimer = millis();
}
if ( myMHZ19.getCO2() >= 1000) //über 2000 ppm
{
digitalWrite(LED_rot, HIGH);
}
else {
digitalWrite(LED_rot, LOW);
}
if (800 <= myMHZ19.getCO2() && 1000 > myMHZ19.getCO2() ) // über 1000 ppm
{
digitalWrite(LED_gelb, HIGH);
}
else {
digitalWrite(LED_gelb, LOW);
}
if (myMHZ19.getCO2() < 800 ) // unter 1000 ppm
{
digitalWrite(LED_gruen, HIGH);
}
else {
digitalWrite(LED_gruen, LOW);
}