Page 1 sur 1

Projet Kapduino : déclenchement CHDK

MessagePosté: Dim 27 Septembre 2009, 10:07
de fxix
UN nouveau topic pour une étape cruciale dans le développement de ma nacelle :
Le but à atteindre est simple :
- déclencher la prise de vue en utilisant les fonctionnalités CHDK offertes pour les appareils photos CANON.

Je suis déjà en possession d'un gentled-CHDK qui me permet de déclencher grâce à ma radio-commande.

Plusieurs pistes à creuser :
- peut on utiliser le gentled tel quel entre l'arduino et le photoscope ? Dans ce cas, quel schéma de branchement utiliser ?
- faut-il réaliser un câble plus simple dédier à la liaison Arduino Canon ?

Re: Projet Kapduino : déclenchement CHDK

MessagePosté: Dim 27 Septembre 2009, 10:12
de fxix
concernant le gentled CHDK :

Le site Gentled nous indique :
Writing your own Scripts
CHDK lets you connect one RC channel to the USB port of a CHDK-enabled camera. Either a 400mS long pulse, or a continuous pulse is sent as long as a single joystick is held over.

CHDK2 lets you connect two servo channels to the USB port of a CHDK-enabled Canon camera. Scripts running in the camera can detect joystick movements on the two channels and carry out a variety of actions in response.
A CHDK script can detect when power is applied to the USB port and for how long that power is applied. The CHDK2 uses this to send USB power signals of six different durations:
- 30 mS signal when joystick 1 is moved up
- 60mS signal when joystick 1 is centered
- 90mS signal when joystick 1 is moved down
- 120 mS signal when joystick 2 is moved up
- 150mS signal when joystick 2 is centered
- 180mS signal when joystick 2 is moved down

The get_usb_power CHDK script function returns the time power was applied in 10ms units, so an "up" movement of joystick 2 will return a value of 12 (or possibly 13 since it's not possible for the system to be exactly precise). By using this function a script can determine which joystick was moved and in which direction and use this to carry out an appropriate action.

The essence of the script is an if statement which passes control to one of six subroutines depending on the value returned by get_usb_power. It's relatively simple to modify the script by inserting camera actions in the appropriate subroutines


J'ai testé bêtement une connexion du gentled sur 3 fils (comme pour un servo) et un script pour mettre la sortie à ON pendant 90ms ou 180ms.... et bien le script CHDK de test (qui affiche la position du joystick) affiche "error"

Il va falloir réfléchir un peu plus mon garçon :roll:

Re: Projet Kapduino : déclenchement CHDK

MessagePosté: Dim 27 Septembre 2009, 10:30
de Deltakap
fxix a écrit:- peut on utiliser le gentled tel quel entre l'arduino et le photoscope ? Dans ce cas, quel schéma de branchement utiliser ?

Oui... l'avantage, c'est que la sortie arduino sera compatible "servo" et tu pourras mettre le Gentled CHDK, ou n'importe quel autre Gentled ou même un simple servo de déclenchement... sortie full compatible avec tous les APNs.
Inconvénient: tu ne peux pas utiliser un script comme dans ton post suivant (qui détecte la durée) sauf en utilisant un Gentled CHDK2 (mais il faut 2 sorties de l'arduino pour simuler les 2 canaux de la RC et tu n'auras que 2 commandes (en général déclenchement+zoom)
Pour le branchement, fil noir du Gentled à la masse, fil rouge au +4.8V, fil jaune vers une sortie de l'arduino
PS: sur l'arduino, il faut créer une simple gestion de servo
PS2: autre avantage, tu es certain que ça va déclencher (voir plus loin)

fxix a écrit:- faut-il réaliser un câble plus simple dédier à la liaison Arduino Canon ?

C'est possible aussi... avantage, tu peux utiliser des scripts comme celui de ton post suivant.
Inconvénient: cette sortie arduino ne fonctionnera qu'avec un Canon chdécable.
PS: sur l'arduino, ce n'est plus une gestion de servo, mais ça doit ressembler à une routine de blink de led (mettre la sortie à 1 pendant x millisecondes)
PS2: mon 860 ne déclenche pas avec une sortie arduino en 3.3V, j'ai dû rajouter 2 transistors et une résistance pour lui balancer du 5V

fxix a écrit:J'ai testé bêtement une connexion du gentled sur 3 fils (comme pour un servo) et un script pour mettre la sortie à ON pendant 90ms ou 180ms.... et bien le script CHDK de test (qui affiche la position du joystick) affiche "error"

Pour résumer, si tu veux faire ça (gestion de la durée de l'impulsion) il te faut une sortie directe de l'arduino vers l'APN et pas utiliser le Gentled... qui lui attend une impulsion de récepteur RC (1 puls de durée variable toutes les 20ms)
Le Gentled CHDK normal ne peut servir qu'à déclencher (ou qu'à faire 1 seule action)

Puisque tu as un Gentled, essaies déjà un simple déclenchement de l'APN avec... une gestion de servo et aucun composants à ajouter... déjà, ça va rassurer ;) (et puis en pratique, on n'a pas besoin de grand chose d'autre au niveau de l'APN)
Il sera toujours temps après de tester si ton APN déclenche avec 3.3V... et de faire des trucs un peu plus sympas au niveau des commandes de l'APN

Re: Projet Kapduino : déclenchement CHDK

MessagePosté: Dim 27 Septembre 2009, 16:41
de maka45
Un petit detail:il est possible de tester un script 'remote usb' sans materiel dedie;en branchant-
debranchant plus ou moins rapidement la connection usb standard(apn-pc)dans le port usb du
PC.Un bon test de rapidite...en dessous de 60 millisecondes vous etes bon...
Bons reflexes!

Luc

Re: Projet Kapduino : déclenchement CHDK

MessagePosté: Dim 27 Septembre 2009, 19:06
de fxix
Deltakap a écrit:
fxix a écrit:- peut on utiliser le gentled tel quel entre l'arduino et le photoscope ? Dans ce cas, quel schéma de branchement utiliser ?

Oui... l'avantage, c'est que la sortie arduino sera compatible "servo" et tu pourras mettre le Gentled CHDK, ou n'importe quel autre Gentled ou même un simple servo de déclenchement... sortie full compatible avec tous les APNs.
Inconvénient: tu ne peux pas utiliser un script comme dans ton post suivant (qui détecte la durée) sauf en utilisant un Gentled CHDK2 (mais il faut 2 sorties de l'arduino pour simuler les 2 canaux de la RC et tu n'auras que 2 commandes (en général déclenchement+zoom)
Pour le branchement, fil noir du Gentled à la masse, fil rouge au +4.8V, fil jaune vers une sortie de l'arduino
PS: sur l'arduino, il faut créer une simple gestion de servo
PS2: autre avantage, tu es certain que ça va déclencher (voir plus loin)

[...]

Puisque tu as un Gentled, essaies déjà un simple déclenchement de l'APN avec... une gestion de servo et aucun composants à ajouter... déjà, ça va rassurer ;) (et puis en pratique, on n'a pas besoin de grand chose d'autre au niveau de l'APN)
Il sera toujours temps après de tester si ton APN déclenche avec 3.3V... et de faire des trucs un peu plus sympas au niveau des commandes de l'APN


euh... je met quoi comme fonction pour qu'il déclenche mon gentled ?

Re: Projet Kapduino : déclenchement CHDK

MessagePosté: Dim 27 Septembre 2009, 20:26
de Deltakap
fxix a écrit:euh... je met quoi comme fonction pour qu'il déclenche mon gentled ?

Bonne question ;)

Je ne peux pas tester, mais un truc comme ça doit fonctionner (une photo toutes les 5 sec):

Code: Tout sélectionner
//Déclenchement apn avec Gentled

#define APN_PIN 9 //le fil jaune du Gentled est relié sur cette sortie de l'Arduino

#include <Servo.h>

Servo apn;  // create servo object to control a servo
                 
void setup()
{
  apn.attach(APN_PIN);
  apn.write(0); 
}


void loop()
{
  //shoot
  apn.write(180);// simule la manette poussée à fond
  delay(200); //déclenchement actionné pendant 200ms
  apn.write(0); // simule la manette remise au repos

  delay(5000); // attend 5 sec      
}


De mon coté, ça avance bien :?
Première séance aujourd'hui avec l'arduino en autokap (pas le choix) ... et pas une seule photo !
Après vérification, le déclenchement fonctionne correctement... j'ai du oublier de lancer le script :mrgreen:
Quelle nouille :D

Finalement, le retour vidéo, c'est bien aussi pour s'apercevoir en route de ce genre de blague !

Re: Projet Kapduino : déclenchement CHDK

MessagePosté: Dim 27 Septembre 2009, 21:04
de fxix
merci ce code fonctionne.

J'ai du apporter quelques modifs pour mon cas :

Code: Tout sélectionner
//Déclenchement apn avec Gentled

#define APN_PIN 9 //le fil jaune du Gentled est relié sur cette sortie de l'Arduino

#include <Servo.h>

Servo apn;  // create servo object to control a servo
                 
void setup()
{
  apn.attach(APN_PIN);
  apn.write(90);
}

void photo()
{
  //shoot
  apn.write(180);// simule la manette poussée à fond
  delay(200); //déclenchement actionné pendant 200ms
  apn.write(90); // simule la manette remise au repos     
}

void loop()
{
  //shoot
  photo();
  delay(5000); // attend 5 sec     
}

Modif 1 : la position manette au repos est 90 sinon le CHDK retourne une position haute.
Modif 2 : j'ai extrait la fonction photo pour pouvoir l'inclure dans n'importe quel script.

Re: Projet Kapduino : déclenchement CHDK

MessagePosté: Dim 27 Septembre 2009, 21:27
de Deltakap
Rassuré alors ? ;)

Sinon, l'autre solution (sans Gentled) c'est de couper un cable usb en gardant la partie mini usb. Il y a 4 fils dont un noir et un rouge. le noir est à relier à la masse, le rouge sur le +. En envoyant du 4.8V sur le rouge, tous les Canons CHDKés déclenchent... le problème, c'est qu'on a que 3.3V sur une sortie de l'arduino mini (sur mon 860, c'est pas assez pour déclencher... ça dépend des appareils)
Si ça déclenche avec cette tension, voici un exemple de code:
Code: Tout sélectionner
#define APN_DIRECT_PIN   8    // le fil rouge du cable usb est relié à cette broche de l'arduino

void setup()   {               
  // initialize the digital pin as an output:
  pinMode(APN_DIRECT_PIN, OUTPUT);     
}

// the loop() method runs over and over again,
// as long as the Arduino has power

void loop()                     
{
  digitalWrite(APN_DIRECT_PIN, HIGH);   // set the output on
  delay(400);                  // wait for a 400ms (a régler)
  digitalWrite(APN_DIRECT_PIN, LOW);    // set the output off
  delay(5000);                  // wait for 5 second
}

On peut alors jouer sur le temps où le signal reste haut... et détecter cette durée avec le script CHDK et agir en conséquence

Edit: oups, c'est pas "digitalWrite(ledPin, HIGH); // set the output on" mais "digitalWrite(APN_DIRECT_PIN, HIGH); // set the output on"... copier-coller trop rapide !

Re: Projet Kapduino : déclenchement CHDK

MessagePosté: Dim 27 Septembre 2009, 21:38
de fxix
je testerai çà la semaine prochaine. en tout cas merci

Re: Projet Kapduino : déclenchement CHDK

MessagePosté: Sam 03 Octobre 2009, 15:51
de fxix
çà marche
Avec un câble USB coupé et un programme adapté sur l'APN, le déclenchement de mon Canon A530 via USB fonctionne parfaitement. De quoi continuer les tests et passer à la gestion des servos.

Re: Projet Kapduino : déclenchement CHDK

MessagePosté: Mer 14 Octobre 2009, 17:26
de michel22
chez moi aussi ça marche avec un A570 is et une carte duemilanove.

pas une seule soudure, des fils dénudés à l'arrache, c'est presque magique.

bon je me lance dans ma nacelle autokap.

merci pour le travail de défrichage .

Re: Projet Kapduino : déclenchement CHDK

MessagePosté: Mer 14 Octobre 2009, 19:18
de fxix
michel22 a écrit:bon je me lance dans ma nacelle autokap.

merci pour le travail de défrichage .

De rien... c'est à çà que sert ce projet KAPduino :wink: