Inhaltsverzeichnis:
- Schritt 1: Aber.. Wie?
- Schritt 2: Lernen, wie man die Kamera auslöst
- Schritt 3: Möglichkeiten zum Triggern
- Schritt 4: Schreiben des Codes zum Triggern
- Schritt 5: Klassenintervall{};
- Schritt 6: Manipulation des Intervalls durch Arduino
- Schritt 7: Anzeigen des Intervalls
- Schritt 8: Alles zusammenfügen
- Schritt 9: Hinzufügen einer letzten Sache
- Schritt 10: Enthalten des Chaos
- Schritt 11: Sens0rs
- Schritt 12: PoweeEeEer
- Schritt 13: Gehäuse.. Irgendwie
- Schritt 14: Fin
Video: Pimp My Cam - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:22
Hier kommt dieses Projekt her.
Vor einiger Zeit dachte ich darüber nach, einige Zeitraffer zu filmen. "Wie?" Ich habe mich selbst gefragt? Die erste Antwort war "Nun… man filmt einfach etwas und beschleunigt es und das war's". Aber ist das wirklich so einfach? Erstens möchte ich dafür meine DSLR verwenden, und meine Nikon D3100 hat ein Zeitlimit von 10 Minuten zum Filmen von Videos. Zweitens, selbst wenn ich eine Kamera ohne zeitliche Begrenzung für das Filmen von Videos hätte, was ist, wenn ich einen wirklich langen Zeitraffer machen möchte, z. B. 12 Stunden lang? Ich mache ein 12 Stunden langes 1080p Video. Ich bezweifle, dass die Batterie so lange hält und ist nicht sehr praktisch, oder? Okay, ich kreuze "Videoidee drehen". Nun, dann gibt es Bilder. Aufnehmen eines Fotos mit der Kamera in einem bestimmten Intervall und am Ende Hunderte von Bildern, die ich dann mit der Software zu einem Video verarbeite.. ?
Scheint eine gute Idee zu sein, also beschloss ich, es auszuprobieren. Also wollte ich ein Gerät bauen, in das ich einen Zeitraum eingeben kann, und basierend auf diesem Zeitraum würde es meine Kamera ständig auslösen. Und wenn wir schon dabei sind, warum nicht noch ein paar andere Sachen wie Motion-Trigger und so weiter hinzufügen?
Schritt 1: Aber.. Wie?
WIE? ist unsere nächste Frage, auf die eine Antwort fehlt. Aufgrund von Timing, Triggerung, Sensoren und dergleichen verwundert es nicht, dass als erstes natürlich ein Arduino in den Sinn kam. Okay, aber trotzdem müssen wir lernen, wie man den Verschluss an unserer Kamera auslöst. Hm.. Servo-Heißkleber an der Body-Kamera? Absolut nicht, wir möchten, dass dies leise und energieeffizient ist. Stromsparend – warum? Da ich es tragbar machen und eine Batterie hineinstecken möchte, werde ich nicht jedes Mal in der Nähe eines Netzsteckers sein. Also, wie lösen wir es dann aus.. es ist eigentlich ziemlich einfach.
Nikon wusste bereits, dass Sie eine Fernbedienung und anderes Zubehör haben möchten, und sie sagten: "Okay, das geben wir ihnen alles, aber wir werden einen speziellen Port erstellen, damit wir mit diesem Zubehör mehr Geld verdienen können", schade Nikon. Dieser Port heißt (in meinem Fall) MC-DC2, und der billigste Weg, ihn in die Finger zu bekommen, besteht darin, bei eBay einen Fernauslöser für 2-3 $ zu kaufen und einfach das Kabel zu verwenden.
*Einige andere Kameras wie Canon haben eine einfache 3,5-mm-Kopfhörerbuchse für den gleichen Zweck, sodass Sie Kabel von alten Lautsprechern/Kopfhörern verwenden können.
Schritt 2: Lernen, wie man die Kamera auslöst
Wie auch immer, hier ist der Deal, der Port wird 3 Anschlüsse haben, die von unserem Interesse sind (Masse, Fokus und Verschluss) und Sie werden diese am Ende Ihres Kabels des neu gekauften Fernauslösers haben, den Sie gerade zerstört haben. Diese drei Verbindungen sind für uns wichtig, denn wenn wir Masse und Fokus kurzschließen, fokussiert die Kamera genau so, wie Sie die Fokustaste drücken, und dann, während diese Verbindung bestehen bleibt, können Sie Masse und Auslöser kurzschließen und die Kamera nimmt ein Bild auf als ob Sie den Auslöser an der Kamera gedrückt hätten.
Sie können dies testen, indem Sie die stromführenden Drähte am Ende des Kabels buchstäblich kurzschließen, um festzustellen, welcher Draht welcher ist. Sobald Sie dies getan haben, färben wir sie zur leichteren Identifizierung wie folgt ein:
Masse = SCHWARZ; Fokus = WEISS; Verschluss = ROT.
Okay, jetzt müssen wir dem Arduino beibringen, dies für uns zu tun.
Schritt 3: Möglichkeiten zum Triggern
Das Einfachste, was wir einem Arduino mitteilen können, in die Außenwelt zu senden, ist sein digitales Ausgangssignal. Dieses Signal kann entweder HIGH (logisch '1') oder LOW (logisch '0') sein, daher der Name "digital", oder wenn es in seine Kernbedeutung umgewandelt wird: 5 V für ein logisches HIGH und 0 V für ein logisches LOW.
Was machen wir mit diesen digitalen Signalen? Wir können sie nicht einfach an die Kamera anschließen und erwarten, dass die Kamera weiß, was wir wollen. Wie wir gesehen haben, müssen wir die Verbindungen an der Kamera kurzschließen, damit sie reagiert. Daher müssen wir die digitalen Signale des Arduino verwenden, um einige Komponenten anzusteuern, die ihre Anschlüsse je nach diesem elektrischen Signal, das wir senden, kurzschließen können. *So wie ich es beschrieben habe, denkst du vielleicht "Ah, Relais!" aber nein nein. Relais würde den Job machen, aber wir haben es mit so kleinen Strömen zu tun, dass wir die schwarze Magie von Halbleitern leicht nutzen können.
Die erste Komponente, die ich ausprobieren werde, ist ein Optokoppler. Ich habe gesehen, wie sie dafür am häufigsten implementiert wurden, und es ist wahrscheinlich die beste Lösung. Optokoppler ist ein elektrisches Bauteil, mit dem Sie den Ausgangskreis steuern, während der Eingangskreis vollständig davon getrennt ist. Dies wird erreicht, indem Informationen durch Licht übertragen werden, der Eingangskreis eine LED aufleuchtet und der Fototransistor am Ausgang entsprechend schaltet.
Also verwenden wir den Optokoppler auf diese Weise: Wir sagen unserem Arduino, dass er ein digitales HIGH auf einem senden soll, wenn es sich um digitale Pins handelt. Es sind die Ausgangsklemmen, wenn es dieses Licht erkennt, und umgekehrt werden die Klemmen "abgenommen", da kein Licht von der LED ausgeht, wenn wir ein digitales LOW durch das Arduino senden.
Praktisch bedeutet dies: Einer der digitalen Pins des Arduino ist mit dem ANODE-Pin des Optokopplers verbunden, Arduinos GND ist mit der CATHODE verbunden, der GND der Kamera ist mit dem EMITTER und FOCUS (oder SHUTTER) mit dem COLLECTOR verbunden. Sehen Sie sich das Datenblatt des von Ihnen verwendeten Optokopplers an, um diese Pins an Ihrem zu finden. Ich verwende 4N35, damit Sie meinem Schaltplan blind folgen können, wenn Sie sich nicht wirklich darum kümmern, was im Inneren des Optokopplers passiert. Unnötig zu erwähnen, dass wir zwei davon benötigen, da wir sowohl FOCUS als auch SHUTTER der Kamera steuern müssen.
Da wir gesehen haben, wie das funktioniert, mit einem Fototransistor am Ausgang, warum versuchen wir es nicht nur mit einem einfachen NPN-Transistor. Dieses Mal bringen wir das digitale Signal direkt (über einen Widerstand) an die Basis des Transistors und verbinden sowohl den GND der Kamera als auch den Arduino mit dem Emitter und den Fokus / Verschluss der Kamera mit dem Kollektor des Transistors.
Auch hier benötigen wir zwei davon, da wir zwei Signale steuern. Ich verwende den BC547B und Sie können dafür grundsätzlich jeden NPN verwenden, da der Strom, den wir steuern, ein einzelner Milliampere ist.
Beide Komponenten funktionieren, aber die Wahl des Optokopplers ist wahrscheinlich die bessere Idee, da er sicherer ist. Wählen Sie die Transistoren nur, wenn Sie wissen, was Sie tun.
Schritt 4: Schreiben des Codes zum Triggern
Wie bereits erwähnt, verwenden wir die digitalen Pins des Arduino zur Signalisierung. Der Arduino kann diese sowohl zum Lesen von Daten als auch zum Schreiben von Daten verwenden. Als erstes müssen wir in der setup () -Funktion angeben, dass wir zwei der digitalen Pins von Arduino für die Ausgabe wie folgt verwenden:
pinMode (FOCUS_PIN, AUSGANG);
pinMode (SHUTTER_PIN, AUSGANG);
wobei FOCUS_PIN und SHUTTER_PIN entweder mit "#define NAME value" oder als Int vor der setup()-Funktion definiert werden können, da Sie den Pin ändern können, damit es einfacher ist, den Wert nur an einer Stelle zu ändern, als den gesamten Code danach.
Als nächstes schreiben wir eine trigger()-Funktion, die genau das tut, wenn sie ausgeführt wird. Ich füge nur ein Bild mit dem Code bei. Alles, was Sie wissen müssen, ist, dass wir zuerst die FOCUS_PIN für eine bestimmte Zeit auf HIGH halten, weil wir warten müssen, bis die Kamera auf das Objekt fokussiert, auf das wir sie richten, und dann nur einen Moment lang (während FOCUS_PIN noch HIGH ist)) stelle den SHUTTER_PIN auf HIGH, nur um das Bild aufzunehmen.
Ich habe auch die Möglichkeit eingebaut, die Fokussierung zu überspringen, da dies nicht erforderlich ist, wenn wir einen Zeitraffer von etwas aufnehmen, das seinen Abstand zur Kamera im Laufe der Zeit nicht ändert.
Schritt 5: Klassenintervall{};
Nachdem wir nun das Auslösen der Kamera aus dem Weg geräumt haben, müssen wir dies zu einem Intervallmesser machen, indem wir die Funktionalität hinzufügen, den Zeitraum zwischen zwei Aufnahmen zu manipulieren. Damit Sie sich ein Bild davon machen können, was wir tun, ist hier ein einfacher Code, um die gewünschte Funktionalität zu demonstrieren:
Leere Schleife () {
Verzögerung (Intervall); Abzug(); }
Ich möchte in der Lage sein, dieses Intervall von, sagen wir, 5 Sekunden bis zu vielleicht 20-30 Minuten zu ändern. Und hier ist das Problem, wenn ich es von 5s auf 16s oder irgendetwas dazwischen ändern möchte, verwende ich 1s-Inkrement, wobei für jede meiner Anfragen, das Intervall zu erhöhen, das Intervall um 1s erhöht würde. Das ist großartig, aber was ist, wenn ich von 5s auf 5min gehen möchte? Dazu brauche ich 295 Anfragen in 1s-Schritten, daher muss ich den Inkrementwert offensichtlich auf einen größeren Wert erhöhen und festlegen, bei welchem genauen Intervallwert (Schwellenwert) das Inkrement geändert werden soll. Ich habe das umgesetzt:
5s-60s: 1s-Schritt; 60s-300s: 10s-Schritte; 300s-3600s: 60s Inkrement;
aber ich habe diese Klasse so geschrieben, dass sie anpassbar ist, damit Sie Ihre eigenen Schwellenwerte und Inkremente definieren können (alles ist in der.h-Datei kommentiert, damit Sie wissen, wo Sie welche Werte ändern müssen).
Das Beispiel, das ich zur Manipulation des Intervalls gegeben habe, wird offensichtlich auf einem PC durchgeführt, jetzt müssen wir es auf den Arduino verschieben. Diese ganze Klasse, Interval, wird in eine Header-Datei gesteckt, die verwendet wird, um Deklarationen und Definitionen (nicht wirklich, aber es kann in diesem Beispiel ohne Schaden zu tun) unserer Klasse/Funktionen zu speichern. Um diese Header-Datei in unseren Arduino-Code einzuführen, verwenden wir das " #include "Interval.h" " (Dateien müssen sich im selben Verzeichnis befinden), wodurch sichergestellt wird, dass wir die in der Header-Datei definierten Funktionen in unserem Hauptcode verwenden können.
Schritt 6: Manipulation des Intervalls durch Arduino
Jetzt möchten wir den Wert des Intervalls ändern, entweder erhöhen oder verringern. Das sind also zwei Dinge, also verwenden wir zwei digitale Signale, die über zwei Tasten gesteuert werden. Wir werden die Werte an den digitalen Pins, die wir den Schaltflächen zugewiesen haben, wiederholt lesen und diese Werte der Funktion checkButtons(int, int); wodurch das Intervall erhöht wird, wenn die Taste "nach oben" gedrückt wird und das Intervall verringert wird, wenn die Taste "nach unten" gedrückt wird. Wenn beide Tasten gedrückt werden, ändert sich auch der Wert der Variablen Fokus, die steuert, ob beim Triggern fokussiert wird oder nicht.
Ein Teil des Codes ((millis() - prevBtnPress) >= debounceTime) wird zum Entprellen verwendet. So wie ich es geschrieben habe, bedeutet dies, dass ich den ersten Tastendruck mit der booleschen Variablen btnPressed registriere und mich an die Zeit erinnere, zu der es passiert ist. Dann warte ich eine gewisse Zeit (debounceTime) und reagiere, wenn die Taste immer noch gedrückt wird. Es macht auch eine "Pause" zwischen jedem zweiten Drücken der Taste, so dass mehrere Tastendrücke vermieden werden, wo keine vorhanden sind.
Und schließlich mit:
if ((millis() - prevTrigger) / 1000 >= interval.getVal()) {
prevTrigger = millis(); Abzug(); }
Wir prüfen zuerst, ob die Zeit zwischen der letzten Triggerung (prevTrigger) und der aktuellen Zeit (millis()) (alles wird durch 1000 geteilt, da es in Millisekunden und das Intervall in Sekunden ist) gleich oder größer als das Intervall ist wir wollen, und wenn ja, merken wir uns die aktuelle Zeit als das letzte Mal, als wir die Kamera ausgelöst haben, und lösen sie dann aus.
Damit haben wir im Grunde ein Intervallmesser erstellt, aber wir sind noch lange nicht am Ende. Wir sehen immer noch nicht den Wert des Intervallmessers. Es wird nur auf dem seriellen Monitor angezeigt und wir werden nicht immer in der Nähe eines Computers sein, also implementieren wir jetzt etwas, das uns das Intervall anzeigt, wenn wir es ändern.
Schritt 7: Anzeigen des Intervalls
Hier stellen wir das Display vor. Ich habe das 4-stellige Modul verwendet, das von TM1637 angesteuert wird, weil ich es nur zur Anzeige der Zeit und sonst nichts verwenden muss. Der einfachste Weg, diese für einen Arduino entwickelten Module zu verwenden, besteht darin, bereits erstellte Bibliotheken dafür zu verwenden. Auf der Arduino-Site gibt es eine Seite, die den TM1673-Chip beschreibt, und einen Link zu einer vorgeschlagenen Bibliothek. Ich habe diese Bibliothek heruntergeladen und es gibt zwei Möglichkeiten, diese Bibliotheken in die Arduino-IDE einzuführen:
- Gehen Sie in der Arduino-Software zu Sketch> Library einschließen>. ZIP-Bibliothek hinzufügen und suchen Sie die gerade heruntergeladene.zip-Datei
- Sie können tun, was der Arduino manuell tut, und einfach die Bibliothek in dem Ordner entpacken, in dem der Arduino Bibliotheken speichert, unter Windows: C: / Benutzer / Benutzername / Dokumente / Arduino / Bibliotheken \.
Nachdem Sie die Bibliothek eingebunden haben, sollten Sie die "ReadMe"-Datei lesen, in der Sie eine Zusammenfassung der verschiedenen Funktionen finden. Manchmal reicht dies nicht aus, also sollten Sie etwas tiefer gehen und die Header-Dateien erkunden, in denen Sie sehen können, wie die Funktionen implementiert sind und was sie als Eingabeargumente benötigen. Und natürlich bietet der beste Weg, um ein Gefühl dafür zu bekommen, was eine Bibliothek kann, normalerweise ein Beispiel, das Sie von der Arduino-Software aus über File>Examples>LibraryName>ExampleName ausführen können. Diese Bibliothek bietet ein Beispiel, das ich Ihnen empfehle, auf Ihrem Display auszuführen, nur um zu sehen, ob Ihr Display richtig funktioniert. Dann empfehle ich Ihnen, den Code, den Sie im Beispiel sehen, zu optimieren und selbst zu sehen, was jede Funktion macht und wie das Display darauf reagiert es. Ich habe es getan und das ist, was ich herausgefunden habe:
es verwendet 4 vorzeichenlose ganze Zahlen von 8 Bit für jede Ziffer (0bB7, B6, B5, B4, B3, B2, B1, B0). Und jedes dieser Bits B6-B0 wird für jedes Segment einer bestimmten Ziffer verwendet, und wenn das Bit 1 ist, leuchtet das von ihm gesteuerte Segment auf. Diese ganzen Zahlen werden in einem Array namens data gespeichert. Das Setzen dieser Bits auf die Anzeige erfolgt durch display.setSegments(data); oder Sie können natürlich auf jede der Ziffern speziell zugreifen und diese entweder manuell setzen (data[0] = 0b01111001) oder Sie verwenden die Funktion encodeDigit(int); und wandeln Sie die Ziffer, die Sie senden, in entsprechende Bits um (data[0] = display.encodeDigit(3));. Bit B7 wird nur von der zweiten Ziffer oder data[1] verwendet, um den Doppelpunkt zu aktivieren.
Da ich die Funktionen in der INTERVAL-Klasse geschrieben habe, mit denen ich bestimmte Ziffern des Intervalls in Form von M1M0:S1S0 bekommen kann, wobei M für Minuten und S für Sekunden steht, verwende ich natürlich die encodeDigitFunction(int); um das Intervall wie folgt anzuzeigen:
displayInterval(){
data[0] = display.encodeDigit(interval.getM1()); Daten[1] = 0x80 | display.encodeDigit(interval.getM0()); data[2] = display.encodeDigit(interval.getS1()); data[3] = display.encodeDigit(interval.getS0()); display.setSegments(Daten); }
Jedes Mal, wenn ich das Intervall auf dem Display anzeigen muss, kann ich die Funktion displayInterval() aufrufen.
*Beachten Sie das " 0x80 | … " auf den Daten[1]. Es wird verwendet, um sicherzustellen, dass das Bit B7 der Daten[1] immer 1 ist, damit der Doppelpunkt aufleuchtet.
Zuletzt noch das Display, der Stromverbrauch. Es mag nicht von großer Bedeutung sein, da wir es nicht lange eingeschaltet lassen werden, aber wenn Sie daran interessiert sind, dies noch akkufreundlicher zu machen, sollten Sie die Helligkeit des Displays verringern, da es bei maximaler Helligkeit dreimal mehr Strom verbraucht als auf dem niedrigsten.
Schritt 8: Alles zusammenfügen
Wir wissen, wie man die Kamera auslöst, das Intervall manipuliert und dasselbe Intervall auf einem Display anzeigt. Jetzt müssen wir nur noch all diese Dinge zusammenführen. Wir beginnen natürlich mit der Funktion loop(). Wir prüfen ständig auf Tastendrücke und reagieren entsprechend mit den checkButtons(int, int) und ändern das Intervall entsprechend und zeigen das geänderte Intervall an. Auch in der Schleife() werden wir ständig prüfen, ob seit dem letzten Auslösen oder Drücken der Taste genug Zeit vergangen ist und rufen Sie bei Bedarf die Funktion trigger() auf. Aus Gründen des geringeren Stromverbrauchs schalten wir das Display nach einiger Zeit aus.
Ich habe eine zweifarbige LED (Rot und Grün, gemeinsame Kathode) hinzugefügt, die während des Triggers grün aufleuchtet () und zusammen mit dem Display rot aufleuchtet, wenn die Fokussierung eingeschaltet ist, und sie bleibt aus, wenn die Fokussierung ist aus.
Außerdem werden wir zu einem noch kleineren Arduino, Pro Mini, migrieren.
Schritt 9: Hinzufügen einer letzten Sache
Bisher haben wir nur ein Intervalometer erstellt. Nützlich, aber wir können es besser machen.
Folgendes hatte ich im Sinn: Das Intervalometer macht es standardmäßig, AUSSER wenn wir eine Art externer Schalter / Sensor anschließen, der dann den Intervallmesser stoppt und auf die Eingabe des Schalters / Sensors reagiert. Nennen wir es einen Sensor, es muss nicht unbedingt ein Sensor sein, der angeschlossen ist, aber ich nenne ihn so.
Erstens, wie erkennen wir, dass wir den Sensor angeschlossen haben?
Die Sensoren, die wir verwenden / herstellen, benötigen alle drei Drähte, die sie mit dem Arduino (Vcc, GND, Signal) verbinden. Das bedeutet, dass wir eine 3,5-mm-Audiobuchse als Eingangsbuchse für den Sensor verwenden können. Und wie löst das unser Problem? Nun, es gibt Arten von 3,5-mm-Buchsen "mit einem Schalter", die Pins haben, die mit den Pins des Steckers kurzgeschlossen sind, wenn kein Stecker vorhanden ist, und sie lösen sich, wenn ein Stecker vorhanden ist. Das heißt, wir haben die Informationen basierend auf der Anwesenheit des Sensors. Ich verwende den Pull-Down-Widerstand wie gezeigt (der digitale Pin liest HIGH ohne den Sensor und LOW mit angeschlossenem Sensor) im Bild oder Sie können den digitalen Pin auch an den Pin des Steckers anschließen, der normalerweise ist mit Masse verbunden und diesen digitalen Pin als INPUT_PULLUP definieren, funktioniert es so oder so. Jetzt müssen wir unseren Code so optimieren, dass alles, was wir bisher geschrieben haben, nur dann ausgeführt wird, wenn der Sensor nicht vorhanden ist oder wenn der digitale Pin, der das überprüft, HIGH ist. Ich habe es auch so angepasst, dass auf dem Display " SENS " anstelle des Intervalls angezeigt wird, was in diesem Modus nutzlos ist, aber die Fokussierung ist für uns immer noch relevant zeigt den Fokuszustand durch die rote LED an.
Was macht der Sensor eigentlich?
Alles, was es tun muss, ist, 5V an seinen Signal-Pin anzulegen, wenn wir die Kamera auslösen möchten. Das bedeutet, dass wir einen weiteren digitalen Pin des Arduino benötigen, der den Zustand dieses Pins überprüft. Wenn er HIGH registriert, muss nur die trigger () -Funktion aufgerufen werden und die Kamera macht ein Bild. Das einfachste Beispiel, das wir verwenden werden, um zu testen, ob dies funktioniert, ist ein einfacher Knopf mit einem Pulldown-Widerstand. Bringen Sie die Taste zwischen dem Vcc des Sensors und dem Signal-Pin an und fügen Sie einen Widerstand zwischen Signal-Pin und GND hinzu. Auf diese Weise liegt der Signal-Pin auf GND, wenn die Taste nicht gedrückt wird, da kein Strom durch den Widerstand fließt, und wenn Wird die Taste gedrückt, legen wir den Signal-Pin direkt auf HIGH und der Arduino liest das und löst die Kamera aus.
Damit haben wir das Schreiben des Codes abgeschlossen.
*Ich möchte einige Probleme anmerken, die ich mit den von mir verwendeten Audiobuchsen hatte. Beim Einstecken des Steckers in den Stecker wurden GND und einer der anderen beiden Pins manchmal kurzgeschlossen. Dies geschieht sofort und nur beim Einstecken des Steckers, aber es ist immer noch lang genug, damit Arduino einen Kurzschluss registriert, damit das Arduino einfach neu starten würde. Dies passiert nicht so oft, kann aber immer noch eine Gefahr darstellen und es besteht die Möglichkeit, den Arduino zu zerstören. Vermeiden Sie also die von mir verwendeten Anschlüsse.
Schritt 10: Enthalten des Chaos
Sie können auf den Bildern sehen, dass das Steckbrett unordentlich wird und wir fertig sind, also müssen wir alles auf ein Perfboard / eine Leiterplatte übertragen. Ich habe mich für PCB entschieden, weil ich denke, dass ich mehr davon machen werde, damit ich sie auf diese Weise leicht reproduzieren kann.
Ich habe Eagle zum Entwerfen der Leiterplatte verwendet und Designs für alle von mir verwendeten Teile gefunden. Es gibt eine kleine Sache in meinem Design, von der ich wünschte, ich hätte sie nicht gemacht, und das ist ein Drahtpad für den Vcc des Displays. Ich habe es zu spät gesehen und wollte nicht ruinieren, was ich zuvor entworfen habe und bin den faulen Weg gegangen, Drahtpads hinzuzufügen und später Drähte anstelle von Kupferspuren zu diesen Verbindungen hinzuzufügen.
Das Arduino Board und das Display sind aus offensichtlichen Gründen über Buchsenleisten mit der Platine verbunden, anstatt direkt auf die Platine gelötet zu werden. So ist unter dem Display viel Platz für andere Komponenten für andere Komponenten wie Widerstände, Transistoren und sogar die Audiobuchse.
Ich habe die Mikrodruckknöpfe platziert, die konstruktionsbedingt direkt gelötet werden sollten, aber Sie könnten auch die Löcher für Buchsenleisten verwenden und die Tasten mit Draht verbinden, wenn Sie sie am Gehäuse und nicht auf der Platine montieren möchten.
Wir werden auch eine weitere weibliche Audiobuchse anbringen, um das Kabel anzuschließen, das mit der Kamera verbunden ist. Auf diese Weise wird das Board vielseitiger, da wir auf diese Weise andere Kameras mit anderen Anschlüssen anschließen können.
Schritt 11: Sens0rs
Betrachten wir Möglichkeiten zur Implementierung des Sensors.
Der Sensor hat also eine Versorgungsspannung von 5 V und muss in der Lage sein, ein digitales HIGH an seinem Signalpin bereitzustellen, wenn wir die Kamera auslösen möchten. Das erste, was mir in den Sinn kam, ist ein Bewegungssensor, genauer gesagt PIR. Es werden Module für Arduino verkauft, die diesen Sensor haben und genau das tun, was wir wollen. Sie werden mit 5V betrieben und haben einen Ausgangspin, an den sie 5V legen, wenn sie ausgelöst werden. Wir müssen nur die Pins an eine 3,5-mm-Audiobuchse anschließen und können direkt in die Platine einstecken. Zu beachten ist jedoch, dass dieser Sensor Zeit braucht, um sich aufzuheizen und richtig zu funktionieren. Erwarten Sie also nicht, dass er richtig funktioniert, sobald Sie ihn einstecken, geben Sie ihm etwas Zeit und richten Sie ihn dann ein, und was auch immer lebendig in ihn kommt Reichweite löst die Kamera aus.
Da wir in Richtung bereits hergestellter Arduino-Sensorboards denken, fällt mir noch ein Sound ein. Diese Platinen werden normalerweise so hergestellt, dass sie einen Pin haben, der den analogen Wert des aufgenommenen Tons ausgibt, und einen anderen, einen digitalen, der ein logisches HIGH ausgibt, wenn der aufgenommene Ton einen bestimmten Pegel überschreitet. Wir können diesen Pegel so einstellen, dass der Sensor unsere Stimme ignoriert, aber ein Klatschen registriert. Auf diese Weise lösen Sie jedes Mal, wenn Sie klatschen, die Kamera aus.
Schritt 12: PoweeEeEer
Ich denke, der einfachste Weg, dieses Ding mit einer Powerbank zu versorgen, und nicht extern. Wir behalten die Funktionalität des Aufladens unseres Telefons oder was auch immer bei und steuern den Stromfluss zur Platine über einen Schalter. Wir lokalisieren die Pins des Ausgangs-USB-Anschlusses auf der Platine in der Powerbank, die GND und Vcc (5V) sind, und Lötdrähte direkt auf sie und von dort in unsere Platine.
Schritt 13: Gehäuse.. Irgendwie
Damit hatte ich wirklich zu kämpfen. Als ich die Box kaufte, in die ich die vorhandene Platine einbauen wollte, wurde mir klar, dass es keine schöne Möglichkeit gibt, alles so zu montieren, wie ich es wollte, und beschloss dann, eine neue Platine zu entwerfen, diesmal mit Optokopplern. Ich wollte die Platine direkt unter der Seite platzieren, auf der ich Löcher für bestimmte Komponenten bohren würde, die gesehen / berührt werden müssen. Damit dies funktioniert, müsste ich das Display und Arduino direkt an die Platine löten, ohne Sockel oder Header, und da liegt das erste Problem. Es war absolut schrecklich, irgendetwas zu beheben, da ich nicht bereit war, es sofort anzulöten, bis ich getestet habe, dass alles funktioniert, und ich konnte nichts wirklich testen, da ich es nicht löten konnte und so weiter mach das nicht. Problem numero dos, Löcher in das Gehäuse bohren. Ich schätze, ich habe falsch gemessen, weil keines der Löcher am Gehäuse mit den Komponenten auf der Platine ausgerichtet war und ich sie vergrößern musste und die Knöpfe zu hoch auf der Platine waren und sie immer gedrückt wurden, wenn ich die Platine einsetzte aaund da ich die Audiobuchsen an der Seite haben wollte, musste ich auch diese Löcher vergrößern, damit sie zuerst in die Buchsen passen, und dann die Platine absenken, damit das Display und die Tasten durchkommen. Das Ergebnis ist schrecklich.
Ich habe die schrecklichen Löcher irgendwie weniger schrecklich gemacht, indem ich die Oberseite mit etwas dünnem Karton überlagert habe, in dem ich vernünftigere Löcher für die Komponenten ausgeschnitten habe und.. es ist immer noch schrecklich, aber für das Auge einfacher, denke ich.
Fazit, ich schlage vor, dass Sie dies tun, indem Sie Komponenten kaufen, die am Gehäuse montiert werden und nicht direkt auf der Platine. Auf diese Weise haben Sie mehr Freiheit bei der Platzierung der Komponenten und weniger Fehlerquellen.
Schritt 14: Fin
Ich bin fertig, aber hier sind einige Dinge, die ich anders gemacht hätte:
Verwenden Sie 3,5-mm-Audiobuchsen von besserer Qualität. Diejenigen, die ich verwendet habe, neigen dazu, die Klemmen beim Einstecken oder Herausziehen der Buchse kurzzuschließen, was entweder dazu führt, dass die Versorgung kurzgeschlossen wird und das Arduino zurückgesetzt wird, oder es werden nur gefälschte Trigger erzeugt. Ich habe dies im vorherigen Schritt gesagt, aber ich werde es noch einmal sagen. Löten Sie das Arduino-Board nicht ohne Header / Socket, es macht nur jede Art von Fehlerbehebung oder das Hochladen von neuem Code und so weiter viel schwieriger. Ich denke auch, dass eine LED, die signalisiert, dass das Ding eingeschaltet ist, nützlich gewesen wäre, da ich oft nicht sagen kann, ohne die Taste zu drücken, da sich das Display ausschaltet. Und als letztes eine Pausenfunktion. Ich stelle es mir als nützlich vor, wenn man zum Beispiel den PIR-Sensor einsteckt, weil er Zeit zum Aufheizen braucht, oder einfach beim Bewegen nicht möchte, dass er auslöst, also könnte man einfach alles pausieren, aber man kann auch einfach drehen aus der kamera so.. was auch immer.
Eine andere nette Sache ist, es auf dem Stativ zu befestigen, da es dort am wahrscheinlichsten verwendet wird.
Fühlen Sie sich frei, alles zu diesem Projekt in den Kommentaren zu fragen und ich würde gerne wissen, ob Sie es bauen und wie es für Sie ausgegangen ist.
Empfohlen:
Tutorial: So verwenden Sie ESP32-CAM in einem Video-Streaming-Webserver: 3 Schritte
Tutorial: So verwenden Sie ESP32-CAM in Videostreaming-Webservern: Beschreibung: ESP32-CAM ist ein ESP32 Wireless IoT Vision Development Board in einem sehr kleinen Formfaktor, das für den Einsatz in verschiedenen IoT-Projekten entwickelt wurde, z drahtlose Steuerung, drahtlose Überwachung, drahtlose QR-Identifikation
Food Cam: 18 Schritte (mit Bildern)
Food Cam: Dieses Projekt wurde von dem Food-Cam-Projekt des MIT Media Lab inspiriert. Dieses Projekt ist Teil des College-Dienstes Coding For Good an der UWCSEA East in Singapur. Das Ziel dieses Projekts ist es, die Lebensmittelverschwendung unserer Gemeinde durch
So verlängern Sie das NVR-Signal (IP-Cam-Repeater, Netzwerk-Switch und WLAN-Router/Repeater): 5 Schritte
So verlängern Sie das NVR-Signal (IP-Cam-Repeater, Netzwerk-Switch und WLAN-Router / -Repeater): In dieser Anleitung zeigen wir Ihnen, wie Sie Ihr NVR-Signal mit 1 verlängern können. Die eingebaute Repeater-Funktion in der IP-Kamera oder2. Ein Netzwerk-Switch, oder3. Ein WLAN-Router
Kong Cam: 4 Schritte
Kong Cam: Ich habe den Ständer für meine Webcam verloren, also anstatt einen neuen zu kaufen, würde ich ihn in etwas Aufregenderem unterbringen. Und es gibt nicht viel Aufregenderes als den KONG