RSS

Archiv der Kategorie: Arduino und Elektronik

Hier werde ich über Elektronik, eigene Elektronik-Bastelprojekte und insbesondere über Arduino-Projekte posten

Bild

Mavic Air mobil power

Heute hab ich für einen Freund eine mobile Lademöglichkeit für die DJI Drohne Magic Air zusammengebaut.  An einer 5V-Powerbank soll das ganze funktionieren.

20180827_220918

Folgende Teile habe ich verwendet:

– 12V Auto-Ladegerät, um 2 Mavic-Air-Akkus zu laden

– DC – DC Step-up Converter

– 3 Batterieclips

Um an einen Stecker für den Akku zu kommen muss das Ladegerät fürs Auto leiden:  Schnipp, Schnapp und ein Stecker war ab.

Um aber das Teil weiter verwenden zu können habe ich an beiden Seiten Batterieclips angelötet. Zu beachten ist jedoch, dass an einer Seite die Drähte “verkehrt“ herum angeschlossen werden müssen, da die Kontakte der Batterieclips ja über den Stecker zu den dann richtigen Kontakte führt.

 

Die Verbindung zur Powerbank läuft über ein USB – Micro USB Kabel zum Step-up-Converter, an dessen Ausgang ebenso ein Batterieclip angeschlossen wird. WICHTIG: Hier auch auf die Polarität achten!

An der kleinen Schraube beim Step-up-Converter kann die passende Spannung eingestellt werden. Ich habe 13,22V eingestellt, was normalerweise gut funktionieren sollte.

Der Akkustecker kann nun auch hier dran angeschlossen werden.

Zum Schluss nochmal alles mit dem Multimeter überprüfen.

Fertig!

 
Hinterlasse einen Kommentar

Verfasst von - 27. August 2018 in Arduino und Elektronik

 

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: , , , , , , , , , , , , , ,

Arduino – Meine erst Erfahrungen mit selbst programmierten Mikrochips

In diesem Jahr habe ich einen sehr genialen Geocache gemacht, der mich total inspiriert hat.

Der Cache hieß „Die verschlüsselte Botschaft“ von Gringoalemao. Neben sehr robusten, handwerklich toll gefertigten Stationen haben mir die Elektrobasteleien basierend auf Mikrokontrollern (Mikrochips) besonders gefallen.

Vor mehr als 25 Jahren hatte ich einmal eine elektrotechnische Ausbildung genossen, die mir mitunter neben dem „normalen Computerwissen“ die Grundkentnisse für den Start in die Materie „Arduino“ und Mikrokontroller lieferte.

Was ist Arduino?

Einfach gesprochen handelt es sich bei einem Arduino um einen Mikrochip von der Firma AVR mit der Typbezeichnung ATMega328. Dieser ist auf einer Platine verbaut, welche mit Buchsenleisten die PINs vom Mikrochip zugänglich macht. Neben einem Anschluß und der Regelung für die Versorgungsspannung ist auch noch ein USB-Anschluß mit Treiberchip für den Anschluß an den PC verbaut. Hierüber können die „Programme“ vom PC auf den Mikrokontroller geladen werden. Ist die Platine über USB angelschlossen, erfolgt auch die Spannungsversorgung über USB.

So sieht beispielsweise ein Arduino aus:

ArduinoUnoSMD

Oben und unten seht ihr Stiftleisten, in die man kleine Kabel einstecken kann. Diese sind nummeriert und dienen als Ein- und Ausgabeschnittstelle zu selbst entworfenen Elektronikbasteleien.

Ein Beispiel: Ich schließe zwischen einem solchen Pin (und der Erde – wg. Stromkreislauf) einen Taster oder Schalter an. Dann kann ich z.B. eine Leuchtdiode, welche an einem anderen Pin angeschlossen ist (auch wieder gegen die Erde) ein und ausschalten.

Hört sich bis jetzt noch nicht so spektakulär an, könnte man ja sogar ohne Chip hinbekommen. Das tolle ist aber, dass ich die Leuchtdiode auch blinken lassen kann – z.B. einen Morsecode oder in einem schnellen oder langsamen Rhytmus. Oder ich schließe noch ein paar zusätzliche LEDs an und baue mir ein Lauflicht (vielleicht wie bei Knight Rider).

Genau da fängt dann der Spaß beim Mikrokontroller an. Ich kann all diese Pins ein- und ausschalten wie ich will, wann ich will. Ich kann jede Menge an Sensoren und Aktoren (z.B. Schalter, Taster, Druck-, Temperatur-, Helligkeits-, Feuchtigkeitsmesser, Infrarot-Sende- und Empfangsdioden, Motoren und Servos, RFID-Leser, Funkuhrensignalchips, IR-Bewegungsmelder, Ultraschallsensoren, Displays, Münzeinwurf  u.v.m) anschliessen und steuern. Kenntnisse in Elektronik sollten zumindest soweit vorhanden sein, dass man das Ohmsche Gesetz (Reihen- und Parallelschaltung) beherrscht und weiß, wozu Widerstände, Kondensatoren, Spulen und Dioden da sind und wie die sich im Stromkreis verhalten;-)

Wie oben schon erklärt, muss man dem Mikrochip mittels „Computerogramm“ sagen, was er tun soll. Eine solches Programm für den Arduino nennt man „Sketch“. Und um einen Sketch am PC zu programmieren, braucht man eine sogenannte Programmierumgebung. Diese wird IDE ( InlineDeviceEnvirement) genannt.

Sketche werden in der Programmiersprache C geschrieben. Ein Beispielsketch ist der Blink-Sketch:

int ledPin = 13; // die LED ist an Pin 13 angeschlossen, was in der Variablen ledPin gespeichert ist
                 // (Diese LED ist bei den meisten Boards integriert)

void setup() {
    pinMode(ledPin, OUTPUT); // legt den LED-Pin als Ausgang fest
}

void loop() {
    digitalWrite(ledPin, HIGH); // LED anschalten
    delay(1000); // 1 Sekunde (=1000 ms) warten (delay() braucht den Parameter in ms)
    digitalWrite(ledPin, LOW); // LED ausschalten
    delay(1000); // 1 Sekunde warten
}

Dieser Sketch lässt nachdem er auf die Arduino-Platine geladen wurde eine LED an Pin13 im einsekündigen Rhythmus blinken.

 

Haustür-Codeschloss

Haustür-Codeschloss

Nachdem ich mit kleinen Beispielprogrammen und begleitender Literatur angefangen habe, einfache Schaltungen und Ideen zu entwickeln, entwickelte ich ein Codeschloss als Zutrittskontrolle für meine Haustür. Ich wollte den Verkabelungs- und Programmieraufwand gering halten und habe die Codeeingabe mit nur 2 Tasten realisiert. Die erste Taste sorgt dafür, dass ein  Wert „hochgezählt“ wird. So entspricht z.B. das 7-malige drücken dem Wert 7. Die zweite Taste übernimmt/bestätigt den Wert und geht dann zur nächsten Ziffer. Ich habe eine 5-stellige Eingabe festgelegt, was einer guten Sicherheit entspricht. Sind alle 5 Ziffern eingegeben, werden die Werte mit dem gespeicherten Code verglichen. Ist der eingegebene Code korrekt, leuchtet die LED 3 sek. und der Türöffnerkontekt wird für 3 sek. betätigt. Ist der Code nicht korrekt, blinkt die LED fünf mal kurz – die Tür bleibt verschlossen.

 

 

 

 

 

 

Weitere Basteleien und Experimente folgten…

 
Hinterlasse einen Kommentar

Verfasst von - 25. September 2015 in Arduino und Elektronik