lundi 28 septembre 2015

Contrôler son appareil photo avec gphoto


Afin de photographier l'évolution d'une fresque, je me demandais s'il n'était pas possible de commander par usb mon appareil photo comme sur les soft canon sous windows.
Gphoto sous linux permet de faire un multitude d'opérations tel que prendre une photo, une vidéo et les transférer. Vous trouverez sur leur site une liste des appareils supportés (obtenable par un --list-cameras). (Attention si vous avec un montage automatique de l'appareil photo, il vous faudra le démonter pour utiliser gphoto). 

Pour identifier votre appareil vous pouvez utiliser l'option --auto-detect, gphoto gère l'usb et les ports série. Il suffira de précisez quel appareil vous utilisez avec les options --camera= et --port=usb:Bus:Device. Exemple : gphoto2 --camera="Canon PowerShot A520 (PTP mode)" --port="usb:001:004" --shell (gphoto nécessite les droits administrateur sous debian si vous voulez éviter cela allez voir ici). 

Vous pouvez également récupérer les infos Bus et Device à l'aide de lsusb. L'option --shell permet de lancer un shell pour utiliser gphoto et ses commandes directement.

Pour capturer une photo il faut utiliser l'option --capture-image, par défaut la photo est stockée dans l'appareil photo (ram ou carte mémoire). Si vous voulez directement récupérer la photo utilisez la commande --capture-image-and-download

Si vous voulez savoir quelles sont toutes les configuration possible de votre appareil photo vous pouvez utiliser ce petit script (que j'ai nommé RECUP_CONFIG.sh dans l'archive jointe) :

for i in `gphoto2 --list-config`;
 do echo $i >> options_appareil.txt gphoto2 --get-config $i >> options_appareil.txt 
done 

Vous pourrez voir toutes les configurations possibles dans le fichier options_appareil.txt. Pour modifier une configuration de l'appareil on utilise l'option --set-config conf=valeur. "conf" est soit le chemin soit le label. (Attention dans mon cas avec le PowerShot A520, il fallait que l'appareil photo soit déjà initialisé pour avoir accès aux configuration relatives à la photo prise, ie qu'il ait l'objectif ouvert, la seule solution que j'ai trouvé est de faire un "gphoto2 --capture image" auparavant). Voici le petit script utilisé pour photographier la fresque avec un PowerShot A520 : 

#!/bin/bash 

##################################################
#   Script de capture photo pour powershot A520  #
##################################################

#NB : gphoto2 détecte automatiquement l'appareil photo,
# pour éviter les conflits l'appareil est précisé. 

###Configuration###

CAMERA="Canon PowerShot A520 (PTP mode)"
ID="04a9:30c1"  #vendeur et ID du produit
PATHTOSCRIPT="/home/$USER/RMLL_Photo_script"
TIME=30  #à voir : --interval --count
PICTFOLD="Path/To/Capture/"
FILENAME="date +%Y-%m-%d_%H-%M-%S"
#FILENAME="+%Y-%m-%d_%Hh%M" pour la date de l'appareil photo 
#(synchronisable avec l'option --set-config "Set camera time to PC time")

###Détection du port usb###

LSUSB=`lsusb -d $ID`
BUS=`echo $LSUSB | cut -c 5-7`
DEVICE=`echo $LSUSB | cut -c 16-18`

###Prog###

if [ ! -d $PICTFOLD ]; then 
 mkdir $PICTFOLD
fi
cd $PICTFOLD
while true; do
 old_IFS=$IFS     # sauvegarde du séparateur de champ
 IFS=$'\n'    # nouveau séparateur de champ, le caractère fin de ligne
 #toutes les lignes non commentées
 for ligne in $(cat $PATHTOSCRIPT/current_options | grep --invert-match '#'); do
  if [ $ligne ]; then   #si elles ne sont pas vide
   gphoto2 --port "usb:$BUS,$DEVICE" --camera "$CAMERA" --set-config $ligne
  fi
 done
 IFS=$old_IFS     # rétablissement du séparateur de champ par défaut
 gphoto2 --port "usb:$BUS,$DEVICE" --camera "$CAMERA" \
 --capture-image-and-download --filename `$FILENAME`
 #ça prend 30 sec sur mon A520
 sleep $TIME
done


Avec le fichier de configuration current_options qui permet de changer les configurations pendant que le script est lancé : 

Voir le fichier options_appareil.txt pour plus de détails sur les valeurs des configs on peut utiliser les labels ou les chemins. 
  • L'appareil sauvegarde la valeur attribué à la config en ram. 
  • Si une ligne contient un commentaire, elle ne sera pas prise en compte
  • Si l'appareil n'est pas initialisé (pour l'instant je sais seulement le faire avec --capture-image) les options relative à la photo sont inutilisables. Chaque config est à séparer par un retour à la ligne. 
Exemple pour allumer le flash : 
  • Avec un label : Mode flash=2 
  • Avec le chemin : /main/capturesettings/canonflashmode=2  
Pour plus d'infos et d'options su gphoto allez voir le man :) Ci joint les sources :).

jeudi 24 septembre 2015

Réparation d'un lot de game boys color


Le prix des consoles rétros à vraiment explosé ces dernières années, maintenant dès que j'achète de l'occasion sur Ebay j'ai pris l'habitude de choisir des consoles vendues pour pièces/hors services.

J'ai souvent acheté des objets HS/avec des défauts qui semblent électroniques, qui une fois arrivés chez moi n'ont jamais eu besoin d'une quelconque réparation, un coup de chiffon et c'était reparti.
C'est le cas surtout pour des consoles du genre de l'atari 2600 qui n'est pas évidente à utiliser sur les télévisions récentes. La fréquence de la chaîne à afficher sur l'atari 2600 est centrée sur 59 MHz, et les recherches automatiques ne traitent souvent pas ce canal.

Cette fois-ci j'ai craqué pour un lot de 10 game boys "HS" (avec des jeux aux étiquettes déchirées), bien sur il fallait se douter que ces consoles provenaient d'un gars déjà bricoleur qui les avait déjà touchées (et à l'odeur de renfermé qu'elles avaient, elles ont été exposées à l'humidité).

Après un premier test sur les consoles, je me suis rendu compte qu'aucune n'était totalement fonctionnelle, une seule chose à faire : les démonter toutes et tester chaque écran et chaque carte mère en combinaison avec ma game boy chérie.

Cet article présente principales pannes que j'ai rencontré.