Hallo zusammen,
der erste Urlaub mit dem Wohnwagen ist hinter mir. Der Arduino ist die ganze Zeit sauber durchgelaufen.
Ich möchte mein Projekt hier auch gerne zur Verfügung stellen:
Ich habe folgende Komponenten verbaut:
1x Arduino Mega 2560
1x OLED 128x64 SSD1306 ( etwas klein aber gut lesbar)
2x DHT 11 Sensoren für die Innentemperatur und Aussentemperatur vom Kühlschrank
1x DHT 22 für den Kühlschrank innen
1x DS18B20 für die Außentemperatur unterhalb des Wohnwagens
1x Ultraschallsensor HC-SR04
1x MQ-2 Rauchsensor
Hier der Code & viel Spaß damit 
#include <ST_HW_HC_SR04.h>
#include <U8g2lib.h>
#include <U8x8lib.h>
#include <Adafruit_GFX.h>
#include <gfxfont.h>
#include "Arduino.h"
#include "Wire.h"
#include "OneWire.h"
#include "MicroLCD.h" //OLED
#include "DallasTemperature.h" //DS18B20
//Aussenfühler
#define DS18B20 5
OneWire ourWire(DS18B20);
DallasTemperature sensors(&ourWire);
//OLED
LCD_SSD1306 lcd; /* for SSD1306 OLED module */
//Temp+Hum Sensor
#include "DHT.h"
#define DHT1PIN 2 // what pin we're connected to
#define DHT2PIN 3
#define DHT3PIN 4
#define DHT1TYPE DHT11 // DHT 11
#define DHT2TYPE DHT22 // DHT 11
#define DHT3TYPE DHT11 // DHT 11
DHT dht1(DHT1PIN, DHT1TYPE);
DHT dht2(DHT2PIN, DHT2TYPE);
DHT dht3(DHT3PIN, DHT3TYPE);
//MQ-2 Sensor (LPG)
#include <MQ2.h>
//change this with the pin that you use
int pin = A0;
int lpg, co, smoke;
MQ2 mq2(pin);
#include <Ultrasonic.h>
Ultrasonic ultrasonic(6, 7);
//Relais
const int relais1 = 8;
//Buzzer
const int buzzer = 40; //buzzer to arduino pin40
void setup()
{
lcd.begin();
sensors.begin();
mq2.begin();
// An welchen Pins hängen die Sensoren?
// dht2.setup(5); // data pin 2
dht1.begin();
dht2.begin();
dht3.begin();
//Buzzer
pinMode(buzzer, OUTPUT); // Set buzzer - pin 40 as an output
//Relais
pinMode(relais1, OUTPUT); // Den PWM PIN "relaisPin" als Ausgangssignal setzen.
Serial.begin(9600);
}
void loop()
{
//Ultraschall
Serial.print("Distance in CM: ");
// Pass INC as a parameter to get the distance in inches
Serial.println(ultrasonic.distanceRead());
int Fuellstand;
Fuellstand = map (ultrasonic.distanceRead(), 7, 30, 100,0);
// DHT Sensoren
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h1 = dht1.readHumidity();
float t1 = dht1.readTemperature();
float h2 = dht2.readHumidity();
float t2 = dht2.readTemperature();
float h3 = dht3.readHumidity();
float t3 = dht3.readTemperature();
// check if returns are valid, if they are NaN (not a number) then something went wrong!
if (isnan(t1) || isnan(h1)) {
Serial.println("Failed to read from DHT #1");
} else {
Serial.print("Humidity 1: ");
Serial.print(h1);
Serial.print(" %\t");
Serial.print("Temperature 1: ");
Serial.print(t1);
Serial.println(" *C");
}
if (isnan(t2) || isnan(h2)) {
Serial.println("Failed to read from DHT #2");
} else {
Serial.print("Humidity 2: ");
Serial.print(h2);
Serial.print(" %\t");
Serial.print("Temperature 2: ");
Serial.print(t2);
Serial.println(" *C");
}
if (isnan(t3) || isnan(h3)) {
Serial.println("Failed to read from DHT #3");
} else {
Serial.print("Humidity 3: ");
Serial.print(h3);
Serial.print(" %\t");
Serial.print("Temperature 3: ");
Serial.print(t3);
Serial.println(" *C");
}
Serial.println();
//Gassensor MQ2
float* values= mq2.read(true); //set it false if you don't want to print the values in the Serial
//lpg = values[0];
lpg = mq2.readLPG();
//co = values[1];
co = mq2.readCO();
//smoke = values[2];
smoke = mq2.readSmoke();
//Display Ausgabe
lcd.clear();
//Aussenfühler
sensors.requestTemperatures();
lcd.setCursor(35,0);
lcd.setFontSize(FONT_SIZE_LARGE);
lcd.print("Outdoor");
lcd.setCursor(50,2);
lcd.print(sensors.getTempCByIndex(0),0);
lcd.print(" °C");
delay(2000);
//Innentemperatur
lcd.clear();
lcd.setCursor(30, 0);
lcd.setFontSize(FONT_SIZE_LARGE);
lcd.print("Wohnwagen ");
lcd.setCursor(45,2);
lcd.print("Innen : ");
lcd.setCursor(35, 6);
lcd.print(t1,1) ;
lcd.println(" °C");
delay(2000);
lcd.clear();
lcd.setCursor(30, 0);
lcd.setFontSize(FONT_SIZE_LARGE);
lcd.print("Wohnwagen ");
lcd.setCursor(40,2);
lcd.print(h1,0);
lcd.print(" %\t");
lcd.setCursor(45,4);
lcd.print("Luft-");
lcd.setCursor(15,6);
lcd.print("feuchtigkeit ");
delay(2000);
// Kühlschrank
lcd.clear();
lcd.setCursor(20, 0);
lcd.setFontSize(FONT_SIZE_LARGE);
lcd.print("Kuehlschrank ");
lcd.setCursor(45,2);
lcd.print("Innen : ");
lcd.setCursor(35, 6);
lcd.print(t2,1) ;
lcd.println(" °C");
delay(2000);
lcd.clear();
lcd.setCursor(20, 0);
lcd.setFontSize(FONT_SIZE_LARGE);
lcd.print("Kuehlschrank ");
lcd.setCursor(40,2);
lcd.print(h2,0);
lcd.print(" %\t");
lcd.setCursor(45,4);
lcd.print("Luft-");
lcd.setCursor(20,6);
lcd.print("feuchtigkeit ");
delay(1000);
// Kühlschrank Aussen
lcd.clear();
lcd.setCursor(20, 0);
lcd.setFontSize(FONT_SIZE_LARGE);
lcd.print("Kuehlschrank ");
lcd.setCursor(45,2);
lcd.print("Aussen : ");
lcd.setCursor(35, 6);
lcd.print(t3,1) ;
lcd.println(" °C");
//Kuehlschrank Buzzer Alarm
/*
if (t3>=10) {
// Buzzer an
digitalWrite(buzzer, HIGH); //Relais an
} else {
// Buzzer aus
digitalWrite(buzzer, LOW); //Relais aus
}
*/
//Kuehlschrank Ventilator Relais
if (t3 >=26) {
// Lüfter an
digitalWrite(relais1, LOW); //Relais an
Serial.print("Ventilatoren");
Serial.print(" laufen");
lcd.clear();
lcd.setCursor(20, 0);
lcd.setFontSize(FONT_SIZE_LARGE);
lcd.print("Ventilatoren ");
lcd.setCursor(45,2);
lcd.print("laufen");
} else {
// Lüfter aus
digitalWrite(relais1, HIGH); //Relais aus
Serial.print("Ventilatoren");
Serial.print(" aus");
lcd.clear();
lcd.setCursor(20, 0);
lcd.setFontSize(FONT_SIZE_LARGE);
lcd.print("Ventilatoren ");
lcd.setCursor(45,2);
lcd.print("aus");
}
Serial.print(" Relais geschaltet( 0=An 1=Aus) ");
Serial.print(digitalRead(relais1));
delay(1500);
lcd.clear();
lcd.setCursor(20, 0);
lcd.setFontSize(FONT_SIZE_LARGE);
lcd.print("Kuehlschrank ");
lcd.setCursor(40,2);
lcd.print(h3,0);
lcd.print(" %\t");
lcd.setCursor(45,4);
lcd.print("Luft-");
lcd.setCursor(20,6);
lcd.print("feuchtigkeit ");
delay(1000);
//Gassensor
lcd.clear();
lcd.setCursor(55, 0);
lcd.setFontSize(FONT_SIZE_LARGE);
lcd.print("GAS:");
lcd.setCursor(50, 4);
lcd.print ((float)lpg, 0);
//lcd.setCursor(0, 4);
lcd.print("ppm");
/*
if (co>=5) {
// Buzzer an
digitalWrite(...);
} else {
// Buzzer aus
digitalWrite(...);
}
*/
delay(1500);
//Rauchmelder
lcd.clear();
lcd.setCursor(55, 0);
lcd.setFontSize(FONT_SIZE_LARGE);
lcd.print("CO2:");
lcd.setCursor(50, 4);
lcd.print ((float)co, 0);
lcd.print("%");
delay(1500);
//Smoke
lcd.clear();
lcd.setCursor(48, 0);
lcd.print("Rauch:");
lcd.setCursor(53, 4);
lcd.print ((float)smoke, 0);
lcd.print("%");
delay(1500);
//Wasserstand
lcd.clear();
lcd.setFontSize(FONT_SIZE_LARGE);
lcd.setCursor(20, 0);
lcd.print("Wassertank:");
//lcd.print(ultrasonic.distanceRead());
lcd.setCursor(48, 2);
lcd.print(Fuellstand);
lcd.print("%");
lcd.setCursor(30, 4);
lcd.print("gefuellt:");
delay(2000);
}