• Hallo Zusammen, Aufgrund der aktuellen Situation setzten wir die Möglichkeit aus, sich mit Gmail zu registrieren. Wir bitten um Verständnis Das RCMP Team

Projekt Einparkhilfe in Garage mit Arduino

BAXL

Admin
Mitarbeiter
Nicht jedes Auto hat eine "Einparkhilfe", die gerne auch Parktronik usw. genannt wird und wenn doch, dann kann es sein, dass nur vorne oder hinten Sensoren verbaut sind.

Bei meinem spezielles Projekt hat der PKW weder vorne noch hinten Sensoren und soll in einer Garage abgestellt werden. Die Schwierigkeit ist, dass die Garage im hinteren Teil noch als Abstellfläche für Gartengeräte, Grill usw. genutzt wird. Leider sind die Gegenstände nicht immer so hoch, dass man sie im Fahrzeug sitzend sehen kann. Der Wagen muß aber trotzdem weit genug vorgefahren werden, damit das Garagentor verschlossen werden kann, ohne am Heck des Autos anzuschlagen.

Durch das Umfeld kann ich leider nur seitlich einen Sensor anbringen und feststellen, wenn die Schnauze des Autos dort ankommt. Ultraschall als Entfernungsmessung ist deshalb nicht wirklich gut umzusetzen, weil der "Endanschlag" dadurch nur unscharf erkennbar ist. Darum habe ich mich entschieden ein Lichtschrankenmodul für den Arduino zu nehmen.



Das Modul soll lt. Anbieter einen einstellbaren Erfassungsbereich von 2 - 30cm und einen Erfassungswinkel von 35 ° haben. Das reicht für meine Zwecke.
Der Sensor hat die Anschlüsse Vcc für +3 bis +5V, GND für - oder Masse und OUT als digitalen Ausgang. D.h. es gibt nur zwei Zustände, die ausgegeben werden können.

Für meine Anwendung habe ich zwei dieser IR-Sensormudule vorgesehen. Modul 1 wird quasi den Endanschlag detektieren und Modul 2 wird leicht schräg angebracht, um die Annäherung zu erkennen.
Als Signal dienen 3 LEDs jeweils in Rot, Gelb und Grün.

Angeschlossen wird wie folgt:
IR-Sensoren an Plus, Masse und an D2 und D3 am Arduino. Die LEDs kommen über je einen 220 Ohm Widerstand an D7, D8 und D9.

Die Ampel soll grün leuchten wenn kein Auto in der Garage steht, bzw. wenn beim Einfahren noch nicht der Erfassungsbereich von Modul 2 erreicht wurde.
Sobald Modul 2 ein Hindernis (das Auto) erkennt, schaltet die Ampel von Grün auf Gelb. Erreicht der PKW mit seiner Schnauze den Erfassungsbereich von Modul 1 (Endposition), geht zusätzlich die rote LED an.

Ich überlege noch, ob ich dann die gelbe LED ausschalte, damit nur noch die Rote an ist, aber das sind nur ein paar Codezeilen mehr und spart Strom. Im Moment klappt es wie beschrieben.

Die fliegende Verkabelung mit dem Arduino war schnell gemacht.



Lediglich die Einstellung der Erfassungsbereiche am Poti der Sensoren gestaltet sich filigran und muß im verbauten Zustand sowieso noch feinjustiert werden.

Das Programm ist kein Hexenwerk.
C++:
// Programm zur Erkennung eines Fahrzeuges in einer Garage über IR-Näherungssensoren.
// Das Erreichen des Endpunktes signalisiert eine rote LED
// Die Annährung des Endpunktes signalisiert eine gelbe LED
// wenn beide IR-Sensoren kein Hinderniss erkennen, leuchte eine gruene LED
// vorgestellt von BAXL auf www.rc-modellbau-portal.de

byte rot = 7; // rote LED auf D7
byte gelb = 8; // gelbe LED auf D8
byte gruen = 9; // gruene LED auf D9
byte Lichtschranke1 = 2; // IR-Sensor 1 auf D2
byte Lichtschranke2 = 3; // IR-Sensor 2 auf D3
byte Hindernis1 = 0; // Variable für Input IR-Modul 1
byte Hindernis2 = 0; // Variable für Input IR-Modul 2

void setup() {

  Serial.begin(9600); // serielle Schnittstelle für Debugging aktivieren
  pinMode(rot, OUTPUT);  // Ausgansport initialisieren
  pinMode(gelb, OUTPUT);
  pinMode(gruen, OUTPUT);   
  pinMode(Lichtschranke1, INPUT); // Engangsports initialisieren
  pinMode(Lichtschranke2, INPUT); 
}

void loop() {

Hindernis1 = (!digitalRead(Lichtschranke1)); // Einlesen Modul 1 mit Signalumkehr durch das !
Hindernis2 = (!digitalRead(Lichtschranke2)); // Einlesen Modul 2 mit Signalumkehr durch das !
Serial.print("Lichtschranke 1: "); Serial.println(Hindernis1); // serielle Ausgabe auf den PC zur Debugging
Serial.print("Lichtschranke 2: "); Serial.println(Hindernis2);

digitalWrite(rot,Hindernis1); // Ansteuerung der roten LED
digitalWrite(gelb,Hindernis2);
digitalWrite(gruen,(!Hindernis2 & !Hindernis1)); // gruene LED leuchtet immer dann, wenn IR-Modul 1 und 2 kein Hinderniss erkennen

delay (500); // kurze Wartezeit, kann nach Bedarf angepasst werden
}
Nun muss noch ein Gehäuse gebaut, oder gekauft werden und die Spannungsversorung für den Arduino gelöst werden.

Für die Spannungsversorgung schweben mir zwei Möglichkeiten vor.

  1. USB-Netzteil, das irgendwo in der Garage angeschlossen werden muß.
  2. 1s LiPo, der entweder manuell über ein USB-Netzteil gelegentlich nachgeladen wird, oder über eine kleinere Solarzelle bei Licht/Sonnenschein, automatisch nachgelden wird.
Bei Lösung 2. ist das programm noch weiter zu optimieren, damit der Arduino nicht permanent läuft und sich schlafen legen kann. Das spart Strom und verlängert die Laufzeit. Denkbar wäre auch eine zusätzliche Fotozelle, die man per Lichthupe anblinkt und die Schaltung aktiviert. Das Projekt lässt also viel Raum für Spielereien.
 
Top Bottom