Home > Technologie > Arduino Thermostat mit 2x DS18b20 i2c 4x16 Anzeige, 2 RGB LED's und 3 Relais

Arduino Thermostat mit 2x DS18b20 i2c 4x16 Anzeige, 2 RGB LED's und 3 Relais

0
Advertisement

Arduino Thermostat mit 2x DS18b20 i2c 4x16 Anzeige, 2 RGB LED's und 3 Relais

Das Ziel des Projekts ist ein Thermostat für meine 2 Fisch-Tank mit LCD-Display RGB LED ein Relais, um die Heizung im Tank zu steuern
Ein Kühlventilator für den großen Fischtank

Teile:
Arduino Nano oder gleich
2x RGB-LEDs oder RGB-SMD-LEDs oder Einzelfarben-LEDs
1x 2 Kanal 5v Relais-Modul -> für die Heizung
1x 1 Kanal 5v Relais -> für Kühlgebläse
2x DS18B20 1 Drahtsensor
1x 4k7 Ohm Widerstand für den 1 Wire Bus
6x 220Ohm Widerstand für die LED's
1x 20x4 Anzeige mit i2c Schnittstelle
Brotscheibe

Schritt 1: Schaltplan ohne Relais und Display

Arduino Thermostat mit 2x DS18b20 i2c 4x16 Anzeige, 2 RGB LED's und 3 Relais

Dies ist das Schema ohne Anzeige eines Relais

Schritt 2: Anzeige 20x4 i2c

Arduino Thermostat mit 2x DS18b20 i2c 4x16 Anzeige, 2 RGB LED's und 3 Relais

Arduino Thermostat mit 2x DS18b20 i2c 4x16 Anzeige, 2 RGB LED's und 3 Relais

Mein Display ist gleich
http://www.sainsmart.com/sainsmart-iic-i2c-twi-serial-2004-20x4-lcd-module-shield-for-arduino-uno-mega-r3.html

SDA -> Arduino A4
SDL -> Arduino A5
GND -> GND
VCC -> 5V

Schritt 3: Relais

Arduino Thermostat mit 2x DS18b20 i2c 4x16 Anzeige, 2 RGB LED's und 3 Relais

Arduino Thermostat mit 2x DS18b20 i2c 4x16 Anzeige, 2 RGB LED's und 3 Relais

2 Relaismodule sind angeschlossen

1x Dual Channel Modul gleich dies für die Heizung
1x Single Channel Modul von HonKong für den Fan im Big Tank

Rel1 -> Arduino D2
Rel2 -> Arduino D3
Rel3 -> Arduino D8
GND -> Arduino GND
VCC -> Arduino 5V

Schritt 4: Der Code

#include <OneWire.h>
#include <Wire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>

// RGBLED
Int bluePin1 = 10; // Digital Pin für Blaue LED1 in RGB-LED
Int greenPin1 = 11; // Digital Pin für Grüne LED1 in RGB-LED
Int red Pin1 = 12; // Digital Pin für Rote LED1 in RGB-LED

Int redIn1 = 0;
Int greenIn1 = 1;
Int blueIn1 = 2;

Int redVal1;
Int greenVal1;
Int blueVal1;

Int bluePin2 = 4; // Digital Pin für Blaue LED2 in RGB-LED
Int greenPin2 = 5; // Digital Pin für Grüne LED2 in RGB-LED
Int redPin2 = 6; // Digital Pin für Rote LED2 in RGB-LED

Int redIn2 = 3;
Int greenIn2 = 4;
Int blueIn2 = 5;

Int redVal2;
Int greenVal2;
Int blueVal2;

// Relais
Int relPin1 = 2; // Digital Pin für Relais1
Int relPin2 = 3; // Digital Pin für Relay2
Int relPin3 = 8; // Digital Pin für Relay3

Int relPin1In = 3;
Int relPin2In = 4;
Int relPin3In = 5;

Int relPin1Val;
Int relPin2Val;
Int relPin3Val;

// Heizungszustand
Int heiz1Val;
Int heiz2Val;
#define BACKLIGHT_PIN 13
#define ONE_WIRE_BUS 7
LiquidCrystal_I2C lcd (0x20,20,4); // Setzen Sie die LCD-Adresse auf 0x20 für 20 Zeichen und 4 Zeilenanzeige
OneWire oneWire (ONE_WIRE_BUS);
DallasTemperatursensoren (& oneWire);

Void setup () {
Serial.begin (9600);
Sensors.begin ();
Lcd.init (); // lcd initialisieren
LCD-Rücklicht();
PinMode (relPin1, OUTPUT); // Ausgabemodus für Relay1
PinMode (relPin2, OUTPUT); // Ausgabemodus für Relay2
PinMode (relPin3, OUTPUT); // Ausgabemodus für Relay3
aufrechtzuerhalten.

Void Schleife () {
Sensors.requestTemperatures ();
Float temperature1 = sensors.getTempCByIndex (0);
Lcd.setCursor (0, 0);
Lcd.print ( "Aquarium:");
Lcd.print (sensors.getTempCByIndex (0));
Lcd.print ( "C");

Float temperature2 = sensors.getTempCByIndex (1);
Lcd.setCursor (0, 2);
Lcd.print ( "Becken:");
Lcd.print (sensors.getTempCByIndex (1));
Lcd.print ( "C");

// Je nach Temperatur Farbe der RGB-LED anpassen und Rel 1 schalten
Wenn (Temperatur 1 <= 27)
{
RedVal1 = 0;
GrünVal1 = 0;
BlueVal1 = 150;
RelPin1Val = LOW;
RelPin3Val = LOW;
Lcd.setCursor (0, 1);
Lcd.print ( "Heizung ist: Ein");
aufrechtzuerhalten.
Sonst wenn (Temperatur & gt; 27 & & gt; Temperatur & lt; 29)
{
RedVal1 = 0;
GreenVal1 = 150;
BlueVal1 = 0;
RelPin1Val = HIGH;
RelPin3Val = LOW;
Lcd.setCursor (0, 1);
Lcd.print ( "Heizung ist: Aus");
aufrechtzuerhalten.
Sonst wenn (Temperatur 1> 29)
{
RedVal1 = 150;
GrünVal1 = 0;
BlueVal1 = 0;
RelPin1Val = HIGH;
RelPin3Val = HIGH;
Lcd.setCursor (0, 1);
Lcd.print ( "Lueftung ist: Ein");
aufrechtzuerhalten.

// Je nach Temperatur Farbe der RGB-LED anpassen und Rel 2 schalten
Wenn (Temperatur 2 <= 27)
{
RedVal2 = 0;
GreenVal2 = 0;
BlueVal2 = 255;
RelPin2Val = LOW;
Lcd.setCursor (0, 3);
Lcd.print ( "Heizung ist: Ein");
aufrechtzuerhalten.
Sonst wenn (Temperatur & gt; 27 & & gamma; Temperatur2 & lt; 29)
{
RedVal2 = 0;
GreenVal2 = 255;
BlueVal2 = 0;
RelPin2Val = HIGH;
Lcd.setCursor (0, 3);
Lcd.print ( "Heizung ist: Aus");
aufrechtzuerhalten.
Sonst wenn (Temperatur2> 29)
{
RedVal2 = 255;
GreenVal2 = 0;
BlueVal2 = 0;
RelPin2Val = HIGH;
Lcd.setCursor (0, 3);
Lcd.print ( "Lueftung ist: Ein");
aufrechtzuerhalten.
{
AnalogWrite (redPin1, redVal1);
AnalogWrite (greenPin1, greenVal1);
AnalogWrite (bluePin1, blueVal1);
AnalogWrite (redPin2, redVal2);
AnalogWrite (greenPin2, greenVal2);
AnalogWrite (bluePin2, blueVal2);
DigitalWrite (relPin1, relPin1Val);
DigitalWrite (relPin2, relPin2Val);
DigitalWrite (relPin3, relPin3Val);
aufrechtzuerhalten.
aufrechtzuerhalten.

Related Reading