In diesem Beitrag möchte ich dir vom Projekt „Fotobox“ berichten. Dieses kleine Projekt ist aus einer Bitte von einem Freund entstanden.
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Ziel des Projektes
Das Ziel ist, ein Bild aufzunehmen, wenn ein Fahrzeug eine Stelle passiert.
Wie es mit Projekten nun mal so ist, kommt ersten alles anders als gedacht. Die Kabelbrücke (Bild 1) stand für dieses Projekt auf dem Gelände zu weit nach hinten. So habe ich die Stromversorgung von Baum zu Baum gespannt (Bild 2).
Einweglichtschranke
Die Einweglichtschranke* hat sich nach einigen Versuchen als die brauchbarste Lösung erwiesen, zum einen ist diese fertig und auch recht einfach implementieren. Jedoch war der Preis mit knapp 40 € doch recht hoch.
Die Einweglichtschranke hat einen Sender und einen Empfänger, beide werden mit 12 V betrieben, wobei der Empfänger noch einen zusätzlichen Ausgang hat, welcher bei Durchbrechen der Lichtschranke auf 12 V gezogen wird. D.h. es musste erkannt werden, ob 12 V an einem Kontakt anliegen, hier habe ich einen einfachen Spannungssensor* verwendet (Arduino Lektion 54: Spannungssensor)
Die beiden 5 mm LEDs dienen lediglich dazu den Zustand der Schaltung optisch zu signalisieren (grüne LED = Power ON, rote LED = Relais aktiv).
Benötigte Ressourcen für den Aufbau
Für den Aufbau haben wir schlussendlich benötigt:
Bauteil | Preis |
---|---|
Arduino Nano V3* | 3 € |
Spannungssensor* | 2 € |
einfach Relaisshield* | 1,20 € |
Lochrasterplatine* | 0,20 € |
zwei 5 mm LEDs* | 0,10 € |
zwei 220 Ohm Widerstände* | 0,10 € |
eine Brotdose* | 2 € |
ein USB Ladegerät* ** | 3 € |
ein Mini-USB Datenkabel* ** | 2 € |
ein Labornetzteil* | 30 € |
eine Mehrfachsteckdose* ** | 5 € |
ein Set Bananenstecker & Buchsen* | 10 € |
ein 10 m Cinch Kabel* | 6 € |
eine Einweglichtschranke* | 40 € |
20 m zweiadriges Kabel* | 11 € |
** Diese Bauteile bekommst du im lokalen Geschäft wie Mäc Geiz, Kik, Toom Baumarkt recht günstig.
Die Gesamtkosten für dieses Projektes belief sich auf 115,6 €.
Die meisten Komponenten für dieses Projekt hatte ich auf Lager und somit musste für dieses Set lediglich die Einweglichtschranke und das zweiadrige Kabel bestellt werden, somit sind es 51 €.
Aufbau der Schaltung
Die Schaltung ist recht schnell aufgebaut, denn es sind nur recht wenig Bauteile für diese Schaltung notwendig.
Ich habe zusätzlich noch zwei LEDs verbaut, welche den Status anzeigen, zum einen, ob das Relais aktiviert ist und die Schaltung (bzw. der Arduino Nano) Strom hat.
Quellcode
Hier nun der Quellcode für die obige Schaltung:
#define relais 12 #define dcSensor A0 #define powerLed 11 #define actionLed 10 const int PAUSE = 25; const int BREAK_BETWEEN_CARS = 3000; const float R1 = 30000.0f; // Der Widerstand R1 hat eine größe von 30 kOhm const float R2 = 7500.0f; // Der Widerstand R2 hat eine größe von 7,5 kOhm const float MAX_VIN = 12.0f; //max. Spannung boolean lastAction = false; void setup() { Serial.begin(9600); pinMode(relais, OUTPUT); pinMode(powerLed, OUTPUT); pinMode(actionLed, OUTPUT); digitalWrite(powerLed, HIGH); digitalWrite(actionLed, LOW); digitalWrite(relais, LOW); } float calcVin(){ float vout = (analogRead(dcSensor) * MAX_VIN) / 1024.0f; return vout / (R2/(R1+R2)); } void loop() { float vIn = calcVin(); Serial.println(vIn); if (vIn >= 5) { if (lastAction == true) { // mache nix } else { digitalWrite(actionLed, HIGH); Serial.println("drin"); digitalWrite(relais, HIGH); delay(PAUSE); digitalWrite(relais, LOW); Serial.println("Pause begin"); delay(BREAK_BETWEEN_CARS); Serial.println("Pause ende"); digitalWrite(actionLed, LOW); lastAction = true; } } else { lastAction = false; } }
Ein Drama in fünf Akten
Bis wir zur fertigen Schaltung mit der Einweglichtschranke gelangt sind, hatten wir einige kleinere bis mittlere Katastrophen zu bewältigen. Jedoch nehme ich sehr viele Informationen aus diesen Schaltungen mit und somit war es doch recht interessant wie dieses Projekt gewachsen ist.
Ultraschallabstandsensor mit Webcam am Raspberry Pi Zero 2 W
Der erste Aufbau war ein einfacher Ultraschallabstandssensor vom Typ HC-SR04 mit einer USB Webcam am Raspberry Pi Zero 2 W.
Während der Erstellung des Projektes ist parallel der Beitrag Raspberry Pi Zero 2 W mit Ultraschall-Abstandssensor HC-SR04 entstanden, wo ich erläutert habe, wie der Ultraschallabstandssensor angeschlossen und programmiert wurde.
Die Webcam wurde per Adapter an den Pi Zero angeschlossen und wie im Beitrag Raspberrry Pi Zero 2 W – Video per Tastendruck aufnehmen erläutert wird ein Bild aufgenommen.
Problem
Das Problem war nur, dass die Reaktionszeit von erkennen, dass ein Objekt sich vor dem Sensor befindet und der Aufnahme und des Speicherns von dem Foto zu viel Zeit vergeht und somit das Objekt wieder aus dem Fokus der Kamera geriet.
Arduino UNO mit Ultraschallabstandssensor und Optokoppler
Die nächste Idee war dann einen einfachen Mikrocontroller wie den Arduino UNO zu verwenden. Dieser läuft zwar nur mit 16 MHz, aber hat dabei nicht den Overhead eines Betriebssystems im Hintergrund und läuft somit etwas schneller.
Der Optokoppler wurde verwendet, da zunächst mit einer höheren Frequenz zu rechnen war und somit die Kontakte eines Relais ggf. „verkleben“ könnte.
Als Kamera wurde eine Spiegelreflexkamera der Marke Pentax verwendet. Diese hat eine Schnittstelle, über welche man den Fokus aktivieren kann, sowie ein Foto aufnehmen kann (durch Kurzschließen eines Kontaktes).
Problem
Das Problem bei einem Optokoppler ist, dass dieser über einen internen Fotowiderstand verfügt, welcher durch eine Diode bestrahlt wird.
Dieser Widerstand war leider zu hoch und somit hat die Kamera nicht ausgelöst.
Arduino Nano mit Ultraschallabstandssensor & Relais
Die nächste Schaltung war dann ein Arduino Nano mit Ultraschallabstandssensor und einem Relais. Der Aufbau war der gleiche wie mit dem Optokoppler, jedoch hat das mit dem Relais deutlich besser funktioniert und die Kamera hat ausgelöst, wenn ein Objekt sich vor dem Sensor befand.
Problem
Beim Testen stellte sich dann heraus, dass der maximale Messbereich des Ultraschallabstandssensors bei nur knapp 2 m lag und somit musste auch hier ein anderer ggf. besserer Sensor her.
Arduino Nano mit Laserdistanzsensor, OLED Display & Relais
Der vermeintlich bessere Sensor war meiner Meinung nach der Laserdistanzsensor vom Typ VL53L01-V2 welchen ich bereits im Beitrag Arduino Lektion #103: Laser Distanz Sensor VL53LXX-V2 vorgestellt habe.
Damit der Abstand zum Auslösen einstellbar ist habe ich ein Drehpotentiometer in die Schaltung integriert und die Daten wurden auf einem kleinen 0,91″ OLED Display angezeigt.
Problem
Das entstandene Problem mit dem Laserdistanzsensor war, dass dieser sehr stark auf helle Oberflächen reagiert hat und somit die Messergebnisse verfälscht waren (man kann ja nicht nur dunkle Fahrzeuge aufnehmen).
Arduino Nano mit Laserdiode & Lasersensor
Im Beitrag Arduino Lektion 41: KY – 008 Laser Pointer Sender & Empfänger habe ich bereits gezeigt, wie man mit einer Laserdiode und einem Lasersensor eine kleine Schaltung aufbaut und bei Durchbrechen dieser Lichtschranke eine Aktion ausführen kann.
Problem
Das Problem an dem Aufbau mit einer solchen Lichtschranke war, dass der Laserpointer deutlich zu schwach ist und schon nach nur 3 m nicht mehr erkannt wurde.
Ach krass, das ist ja super interessant!
Ich habe letztens noch eine Fotobox/einen Fotospiegel gemietet. So eine, die in einen Spiegel eingebaut ist (https://www.gadplan.com/fotospiegel-mieten-mirrorbooth/). Jetzt zu sehen, wie viel Arbeit und komplizierte Technik schon in einer „simplen“ Fotobox steckt, fand ich echt verrückt!
Danke dir für den spannenden Einblick!