RSS

Schlagwort-Archive: Arduino

Bild

Autostart / Autoplay am DFPlayer Mini ohne Arduino / Mikrocontroller

Autostart / Autoplay am DFPlayer Mini ohne Arduino / Mikrocontroller

Ich betreibe als Hobby Geocaching und verstecke „Schätze“ in der Natur oder auch im urbanen Raum. Diese muss man dann wie bei einer klassischen Schnitzeljagt durch das Lösen von Aufgaben und Rätsel auffinden.

Dabei gibt es vielfältige Arten, diese Stationen mit den Rätseln oder mit dem Schatz zu gestalten. Immer beliebter sind natürlich auch die Stationen, bei denen elektronische Spielereien verbaut werden. Wobei es manchmal auch einfach nur der Wunsch ist, wenn man den Schatz hebt, dass dann eine Fanfare ertönt oder eine Sounddatei abgespielt wird.

Aber wie kann ich sowas kostengünstig realisieren? Nun, die Antwort liegt darin, ein kleines elektronisches MP3-Player-Modul zu kaufen. Das kostet nur wenige Euro und ist in der Lage, MP3s von einer MicroSD-Karte abzuspielen.

Dieser kleine Kerl ist in der Lage, MP3s von einer Speicherkarte abzuspielen. Das Teil ist eigentlich ein vollwertiger MP3-Player. Auf der Unterseite ist eine Verstärkerschaltung integriert, die eine Ausgangsleistung für kleine Lautsprecher (8 Ohm) von bis zu 3 Watt bietet. Wie man natürlich sehen kann ist kein Lautsprecher verbaut. Ebenso fehlen die Tasten, Anschlüsse für Batterie oder Netzteil. Nun, das sind Dinge, um die ich mich selbst kümmern muss – bei einem Selbstbau-Modul gar nicht unüblich.

Im WWW findet man etliche (Video-) Anleitungen, wie man so ein Gerät zum laufen bringt. Ich möchte aber bei meiner Geocachingstation, dass nach Anlegen der Versorgungsspannung automatisch eine MP3 abgespielt wird – und das ist so ein Problem.

Es gibt wohl mehrere Hardwareversionen des Players. Es gibt welche, da muss man nur Pin 10 (GND) und Pin 12 (Adkey1) fest miteinander verbinden und dann legen die mit dem Abspielen sofort los, sobald die Versorgungsspannung angelegt wird.

Autoplay mit einfacher Brücke von Pin 10 zu Pin 12 (ADKEY1)

Hier das ganze im Video:





Ich hab jetzt einen DFPlayer erwischt, der nicht startet, wenn man diese Brücke fest einbaut. Er bleibt stumm und macht nix.

Hier habe ich eine Möglichkeit gefunden, das Modul zum automatischen abspielen zu bringen.
Dazu ist es jedoch erforderlich, erst einmal den DFPlayer an die Versorgungsspannung anzuschließen.
Der Kontakt zwischen Pin 10 (GND) und Pin 12 (ADKEY1) darf erst eine kurze Zeit nach dem Anschalten der Versorgungsspannung geschlossen werden. Ich möchte aber, dass niemand eine Taste drücken muss – daher habe ich mir folgende Schaltung aufgebaut.

Schaltung für Autoplay am DF-Player

Diese Schaltung sorgt dafür, dass nach Anlegen der Versorgungsspannung nach einer kurzen Zeit (etwa 3 Sek.) der DFPlayer Mini beginnt, die MP3-Datei auf der Speicherkarte abzuspielen.

Was passiert in der Schaltung?
Nun, nach Anlegen der Versorgungsspannung passiert erst mal nicht viel. Der Player wird direkt mit Spannung versorgt. Die Basis-Emmiter Spannung vom Transistor beträgt, wie bei Dioden üblich, etwa 0,7 V. Diese liegt in Reihe mit den beiden Widerständen, die sich die restliche Spannung aufteilen. Wenn ich nun die 4,3 V durch die 583 kOhm teile, erhalte ich einen maximal möglichen Strom von 7uA, was zu wenig ist um den Transistor durchzuschalten. Also wirkt der Transistor wie ein offener Schalter.
Jetzt kommt der Kondensator ins Spiel. Der ist beim Anlegen der Versorgungsspannung „leer“, d.h. er hat keine Ladung gespeichert. Der Kondensator liegt in Reihe zu dem 560k Widerstand gegen GND. Der Kondensator verhindert durch seine Sperrschicht den „Abfluss“ von Elektronen zu Masse, ist aber bereit, ankommende Ladung zu speichern. Bei 5V geteilt durch 560k kommen knapp 9 uA durch, die der Kondesator speichert. Je mehr Elektronen ankommen umso höher wird der Spannungsunterschied gegenüber GND, im Gegenzug wird der Stromfluss in den Kondensator weniger (was uns aber momentan nicht wirklich interessiert). Nach etwa 3 Sekunden ist die Spannung des Kondensators gegen GND so hoch, dass der vor der Basis des Transistors liegende Widerstand so viel Strom durchlässt, dass die Basis durchschalten kann. Der Transistor wirkt als Schalter und schaltet so den Pin ADKEY1 gegen GND – genau was wir wollen. – Der Player interpretiert diesen Vorgang als „Tastendruck“ und beginnt die Audiodatei abzuspielen.

Es wird nur eine MP3-Datei abgespielt (und zwar die, die als erstes auf die microSD-Karte gespeichert wurde). Diese wird solange wiederholt, wie die Spannungsversorgung anliegt.
Wird die Versorgungsspannung nur kurz getrennt und dann wieder angelegt (<25 Sek), startet der Player nicht. Das liegt daran, dass der Kondensator noch so viel Restladung hat, dass der Transistor den „Kontakt“ weiterhin aufrechterhält. Erst wenn die Spannung nach knapp einer halben Minute erneut angelegt wird funktioniert es wieder.

Ich hoffe, dass ich ggf. dem ein oder anderen eine Lösung für ähnliche Projekte geben konnte. Es wäre schön, wenn ihr dies in den Kommentaren mitteilen könntet.


 

Schlagwörter: , , , , , , , , ,

Infrarot Fernauslöser für Canon DSLR selbstgebaut

Für eine bevorstehende Veranstaltung wollte ich eine „Fotobox / Fotobooth“ realisieren.
Dafür sollte die verwendete Spiegelreflexkamera (Canon EOS 300D – ok, schon etwas in die Tage gekommen, aber für den Zweck absolut ausreichend) mit einer Fernsteuerung ausgelöst werden.

Die Canon EOS-Modelle sind mit einem Infrarotempfänger ausgestattet, welche mit der passenden Fernbedienung ausgelöst werden können. Diese kann man im Zubehör als Original oder Billig-Nachbau erwerben.
Da ich keine dieser Fernbedienungen hatte, habe ich kurzerhand das Projekt von von Sebastian Setz http://sebastian.setz.name/arduino/my-libraries/multi-camera-ir-control/   mit einem Arduino Uno und ein paar Bauteilen auf einem Steckbrett umgesetzt.
Die Schaltung hat auch funktioniert, jedoch war ich von der Fernbedienbarkeit enttäuscht, da schon nach kurzer Entfernung die Auslösung nicht mehr zuverlässig funktionierte und der Winkel zwischen Fernbedienung und Empfänger im Griff des Bodys nur gering verändert werden durfte.  Auch die Erhöhung des Stroms durch die IR-Led brachte kaum bessere Werte. Es kann natürlich sein, dass das an der verwendeten IR-LED lag, aber ich hatte da doch noch eine andere Idee.

Die Kamera hat einen 2,5mm Klinkenstecker, an dem ein kabelgebundener Fernauslöser angeschlossen werden kann. Einen Kabel-Fernauslöser hab ich schon vor einiger Zeit aus einem alten Handy-Kopfhörer-/Freisprechkabel gebastelt.

EOS25

Steckerbelegung Canon EOS – Kameras

Warum nicht diesen Anschluss nutzen und dort eine externe Schalterbox dranstöpseln, der  mit einer alten TV-Fernbedienung ausgelöst wird?  Eine kleine griffige IR-Fernbedienung hatte ich noch und los ging es.

DSC_2051

Fertige DIY-Fernauslösung

Also zuerst einmal die benötigten Teile zusammengesucht. Diese waren im Einzelnen:

1 ausgediente Infrarot-Fernbedienung
1 Gehäuse
1 kleine Streifenrasterplatine
1 Klinkenstecker 2,5mm mit Kabel  (im Bild mein selbstgebauter Kabelfernauslöser)
1 Arduino Nano
1 Infrarot-Empfänger
1 Relaismodul mit 2 Relais (5 Volt)
9V Blockbatterie für die Stromversorgung
1 Batterieanschluss-Clip  9V
1 Einschaltknopf

DSC_2036

Ein Großteil der benötigten Teile

 

  1. Schritt:
    Streifenrasterplatine ins Gehäuse eingepasst und zum Fixieren mit Bohrlöchern versehen
    DSC_2037
  2. Schritt:
    Arduino Nano und IR-Empfänger so eingepasst und eingelötet, dass diese Bündig zum Gehäuse ausgerichtet sind. Der IR-Empfänger wurde hier komplett auf Digitale I/O Pins aufgeschaltet, um zusätzliche +5V und GND nicht verdrahten zu müssen. Dazu wurden die entsprechenden Pins 8 und 9 auf High- (+5V) bzw. Low- (GND) Potential gezogen. Pin 7 empfängt die Signale.
    DSC_2041
  3. Lötstreifenraster so auftrennen, dass die Anschlusspins des Prozessors nicht kurzgeschlossen sind
    DSC_2040
  4. Jetzt die Verbindung mit dem Relaismodul herstellen. Hier müssen die Spannungsversorgung (+5V und GND) sowie die beiden Steuerleitungen für die Relaisangeschlossen werden.

    DSC_2046

    Ein altes Audiokabel von einem Computer-CD-Laufwerk dient als auftrennbare Brücke zum Relaismodul

    DSC_2047

    Steuerleitungen an den Pins D3 und D4

    DSC_2048

    Den Steg hab ich entfernt, um den Stecker tiefer einstecken zu können und das Gehäuse besser zu geht.

     

  5. Jetzt die Schaltkontakte COM1 und COM2 an den beiden Relais mit dem GND-Pin des Steckers verbinden. An NO1 und NO2 kommen die beiden Steckerkontakte „Focus“ und „Auslöser“.

    DSC_2049

    Kontakte NO1 und NO2 mit Focus und Auslöser sowie COM1 und COM2 mit GND verbinden (auf dem Bild leider nicht richtig;-))

     

  6. Batterieclip über den Schalter an Platine verlöten. 9V-Blockbatterie anschließen. Platine mit dem Gehäuse verschrauben.

    ir-receiver

    Die komplette Schaltung . Die Pins am Microcontroller entsprechen den DigitalPins.

     

  7. Gehäuseteile so bearbeiten und Aussparungen herstellen, dass es sich mit den eingebauten Bauteilen und dem Kabel schließen lässt.
  8. Nun geht es an die Programmierung.
    Da ich ja eine vorhandene IR-Fernbedienung benutzen möchte, brauch ich natürlich erst einmal die Daten, die die Fernbedienung aussendet. Dazu hab ich zuerst mal den Sketch IR-Dump aus den Beispielen der IR-Remote-Library von Ken Shirriff ausgeführt. Darin den IR-Signalpin des IR-Empfängers an meinen Aufbau angepasst (nicht vergessen die Stromversorgung des IR-Empfängers wie im Abschnitt 2 beschrieben zu aktivieren).   Den so modifizierten Sketch auf den Arduino aufspielen und aus dem seriellen Monitor  die HEX-Werte der Fernbedienungsknöpfe notieren.
  9. Jetzt müssen die Werte noch verarbeitet werden.
    Ich brauche nur 2 Knöpfe, somit auch nur 2 Werte. Wert 1 steuert den Focus für 1700ms an und löst dann aus.  Wert 2 löst sofort aus.
    Die Auslösung funktioniert nur, wenn Focus und Auslöser gleichzeitig auf Masse (GND) gezogen werden. Dies sollte im folgenden Sketch ersichtlich sein:

    /*
    * External Canon EOS-IR-RemoteControl
    * Based on the IRremote-Library from Ken Shirriff
    */
    #include <IRremote.h>
    int RECV_PIN = 7;               //Pin festlegen, an dem die IR-Signale ankommen
    IRrecv irrecv(RECV_PIN);      //Objekt IRrecv wird erstellt
    decode_results results;         //
    void setup() {
    pinMode(9, OUTPUT);
    digitalWrite(9, HIGH);      //hier hängt der +5V Anschluss vom IR-Empfänger, deshalb auf HIGH geschaltet
    pinMode(8, OUTPUT);
    digitalWrite(8, LOW);      //und hier GND vom IR-Empfänger, deshalb auf GND geschaltet
    pinMode(3,OUTPUT);      //Pin Auslösefunktion 1 an Relais 1
    pinMode(4,OUTPUT);      //Pin Auslösefunktion 2 an Relais 2
    digitalWrite(3, HIGH);      //Relais 1 Pin High geschaltet, da Relais bei Low-Pegel anzieht
    digitalWrite(4, HIGH);      //Relais 2 Pin High geschaltet, da Relais bei Low-Pegel anzieht
    Serial.begin(9600);
    irrecv.enableIRIn();          // Start the receiver
    }
    void loop() {
    if (irrecv.decode(&results)) {                      //wenn ein IR-Signal empfangen wird…
    Serial.println(results.value, HEX);            //empfangenes Signal als HEX-Wert im Serial-Monitor ausgeben
    long a=results.value;                              //Wert in Variable a schreiben

    if (a==(-2122235713)){                                //wenn der Wert dem Signal für das Auslösen mit
    digitalWrite(3,LOW);                                //vorheriger Fokussierung entspricht… erst Pin 3 (Focus) LOW schalten
    delay(1600);                                            //und nach 1600ms
    digitalWrite(4,LOW);                                //Pin 3 (Auslösen) LOW schalten
    delay(800);                                              //Auslöser für 800ms „drücken“
    digitalWrite(3,HIGH);
    digitalWrite(4,HIGH);                                //beide Relais mit HIGH Signal wieder abfallen lassen.
    }

    if (a==(-2122229593)){
    digitalWrite(4,LOW);
    digitalWrite(3,LOW);
    delay(800);
    digitalWrite(4,HIGH);
    digitalWrite(3,HIGH);
    }

    irrecv.resume();           // Receive the next value
    }
    }

  10. Wenn der Sketch aufgespielt wurde, die Schaltung mit der Spannungsquelle (9V Block) und mit dem Klinkeneingang der Canon EOS verbinden. Nach dem Einschalten ist kann das Fernauslösen beginnen.
    Viel Spaß!
 
 

Schlagwörter: , , , , , , , , , , , , , ,