Wohnwagen Kontrollcenter Arduino
Premium Wohnwagen haben es oft schon Serienmäßig. Doch wer ältere oder günstige neue auch auf den aktuellen Stand der Technik bringen will, steht vor einem Problem. Entweder sind die Plug & Play Lösungen sofern überhaupt vorhanden ziemlich teuer.
Es geht aber auch anders und das überaus günstig.
Mit einem Arduino kann man fast alles machen was das Herz begehrt. Hier zeige ich unsere Lösung die sich auch nur ein paar Parameter beschränkt (es ist aber jederzeit erweiterbar).
Wir wollen eigentlich nur ein paar Dinge wissen. Das sind die Innentemperatur, die Außentemperatur, die Temperatur vom Kühlschrank und den Wasserstand. (Batterie wird bei uns sowieso über den Solarladeregler angezeigt, daher haben wir das nicht mit eingebunden)
Was braucht man alles?
Softwareseitig die aktuelle Arduino IDE
Hardwareseitig hier per affilate Links zu Amazo (ihr müsst natürlich nicht über diese Links bestellen, doch unterstützt ihr uns damit, wenn ihr es macht) :
Arduino Nano oder Uno (wir haben einen Uno im Einsatz)
DS18B20 Temperatursensoren
Ultraschallsensor HC-SR04 gibt es auch unter in Wasserdicht mit der Bezeichnung JSN-SR04T
LED Farbe je nach Wunsch
1x Widerstand 330 Ohm für LED und 1x 4.7Kohm für die Sensoren
Lochraster oder Streifenplatinie
5×2 bzw 3×3 Terminal Screw (das sind Schraubverbindungen die auf die Platine gelötet werden=
1x Kamera Flachbandkabel (ein ultraflachkabel üblicherweise für Kameras, aber so kommt man gut in den Kühlschrank ohne das die Dichtung leiden muss)
Jumperkabel
Lötkolben
LCD 2004 Display mit I2C Shield I2C Display Libary am besten die von LiquidCrystal_I2C Master verwenden
(Am Display selbst aufpassen, wenn nichts angezeigt wird, hinten ist ein Porti, der für den Kontrast zuständig ist und der ist meist zu schwach eingestellt. Da also mal verstellen dann sollte auch was angezeigt werden.)
Kabel, wir haben 15m Cat 6 Kabel benutzt, die sind dünn und in großen längen verfügbar zu geringem Preis.
ggf. 3D Drucker für Gehäuse etc.
ggf. eine USB Steckdose zur Stromversorgung des Arduinos oder gesicherte 12V über den Jackanschluss.
Fangen wir also an, als allererstes sollten wir den Arduino mit den Komponenten verbinden (wichtig wenn ihr Pins ändert, muss das im Code auch geändert werden)
Hier dazu der Schaltplan, ihr könnt auch statt einer Lochraster Platine ein Bredboard verwenden, jedoch wird das auf Dauer durch die Virbrationen im Wohnwagen/Wohnmobil nicht allzu lange halten und nimmt dazu noch viel Platz weg. Jedoch empfiehlt es sich den ersten Aufbau damit zu machen um alle komponenten zu testen. Insbesondere auch um die jeweilige ID der Temperatursensoren einfach zu ermitteln.
Hier unser Aufbau über Breadboard und und der Anschlussplan über Lochrasterplatine. (auch im Code habe ich Hinweise für den Anschluss kommentiert)
Um die jeweilige ID der Sensoren zu ermitteln, müssen wir ersteinmal einen I2C Scanner auf den Arduino spielen und einen Sensor nach dem anderen Anschließen und auslesen. Die Sensoren am besten farblich markieren damit man sie später besser zuordnen kann. Die ID muss im Code geändert werden (bei DeviceAddress sensor) da ihr sonst keine Daten bekommt (die IDs im Code entsprechen unseren Sensoren).
Für den Ultraschall müsst ihr natürlich noch euren Tank anpassen ich habe die Stellen im Code Grün hinterlegt.
Auslesen der IDs und übertragen in den Code.
Hier der Testaufbau in Aktion (Ultraschallsensor zeigt in die Luft und produziert damit einen Fehler, den die LED signalisiert)
Das wars eigentlich schon. Die LED signalisiert durch Blinken ob die Kühlschranktemperatur zu hoch ist oder ob der Wasserstandssensor ein Problem hat. Haben beide Teile gleichzeitig ein Problem leuchtet die LED dauerhaft.
Hier der Aufbau fertig auf Platine gelötet und verbaut.
Bilder folgen sobald der neue Wohnwagen geliefert wurde und die Steuerung eingebaut wurde.
Sketch Code:
//Display lcd scl pin A5 SDA pin A4
int trigger=7; //pin 7 für trigger signal von Ultraschall int AO = 0; #include <OneWire.h> // Device Adressen der einzelnen ds18b20 Temperatursensoren angeben (die Sensoren wurden farblich markiert zur Unterscheidung) byte termometru[8]={0x04, byte block[8]={ byte tropfen[] = //Icon für Wasserhahn void setup(void) { // Thermometersymbol auf LCD Speichern // Wasserhahnsymbol auf LCD Speichern // Weißer Blocksymbol Serial.begin (9600); } void loop(void) { lcd.setCursor(0,0); // Cursor auf Beginn der 1. Zeile lcd.setCursor(9,0); // Cursor auf Beginn der 1. Zeile und das 10. kästchen lcd.setCursor(0,1); // Cursor auf Beginn der 2. Zeile und das 1. kästchen lcd.setCursor(0,2); // Cursor auf Beginn der 3. Zeile und das 1. kästchen digitalWrite(trigger, LOW); //akziviert das trigger signal vom US int distance,percentage,heightTank,deviation,liter,liter2; percentage=100.0-(((entfernung-deviation)*100.0)/heightTank); if((sensors.getTempC(sensor3) > AlarmTemp)){ //wenn sensor 3 werte über der definierten Temperatur ausgibt… else if((sensors.getTempC(sensor3) <= AlarmTemp)){ //und falls der Wert unter der definierten Temperatur lieg dann… if (entfernung >= 22 || entfernung <= 0) //Fehler ausgeben } else // falls keine Fehler vorliegen beginne Berechnung { liter=22 – entfernung1; //zieht von der max Entfernung den Abstand des Sensors ab lcd.setCursor(8,3); // Cursor auf Beginn der 4. Zeile und das 9. kästchen lcd.print(liter2); } } |