bleugafoto

Des photos, et des restes. le blog de ecaheti.

[RaspberryPi] Premières astrophotos !

Sunday 28 June 2015 à 0:04

Bon, vite fait, des photos prises avec un Raspberry Pi dans le télescope du grand-père. J’ai absolument pas joué sur les options pour prendre les photos, j’ai fait un bête et con “raspistill -o cam.jpg” et roule ma poule. Franchement c’est pas si mal !

La Lune - Oculaire x20

La Lune - Oculaire x20

Saturne - Oculaire x20

Saturne - Oculaire x20 - Crop 100%

Saturne - Oculaire x20 + doubleur
On se rapproche, mais c’est plein d’aberration de couleur et puis c’est flou.

Saturne - Oculaire x20 + doubleur - Crop 100%

Saturne - Oculaire x6

Saturne - Oculaire x6 - Crop 100%
Là, franchement, j’ai arrêté parce que je me suis dis que je ne ferais pas mieux.

[RaspberryPi] Premiers pas vers l’astrophoto …

Wednesday 24 June 2015 à 12:45

Il y a peu, j’ai récupéré un télescope. Pas de toute première jeunesse, il avait été offert à mon grand-père pour ses … pour son anniversaire d’il y a longtemps, vers la fin des années 80. Je n’étais à peine plus haut que trois pommes et deux beignets avec mes 6 ou 7 ans, mais j’avais été admiratif devant l’objet d’astronomie.

Plus de 25 ans plus tard, suite au départ de ma grand-mère partie rejoindre son amour disparu 20 ans avant (mon grand-père, donc), j’ai mis la main un peu par hasard sur le télescope lors du partage des affaires de mes aïeux.

  • Premier constat : il est vieux.
  • Deuxième constat : j’y connais QUE DALLE en astronomie. Bien que l’espace m’intéresse, je connais que pouic aux télescopes, leur fonctionnement, leurs vocabulaires, et ce qu’on peut en faire.

C’est un Merak fait par Perl, avec un diamètre de 115mm et une distance focale de 900mm, avec un oculaire de 6mm et un de 20mm et un doubleur de focal. D’après ce que j’ai compris, pour commencer, c’est déjà pas mal. Je vous passe la partie mise en place : lecture d’une doc avec une superbe photo bichrome du télescope, bienvenue dans le passé, alignement du chercheur avec l’axe du télescope, et utilisation des deux oculaires.

Voilà, c’est en place, et je fais mes réglages sur la flèche de la cathédrale de Rouen (la plus haute de France à 151m, pour l’anecdote), que j’immortalise avec mon appareil photo un peu à l’arrache, à l’aide du 20mm Panasonic qui a le bon goût d’avoir une lentille frontal pas trop grosse et donc de s’aligner facilement avec l’oculaire du télescope.

Bon, venons en à la partie “geek” du bouzin : l’avantage de faire des réalisations régulières avec un Raspberry Pi, c’est qu’il arrive un moment où on se rend compte qu’on a du stock en rab à la maison. Je récupère donc :

  • l’ancien R-Pi de mon robot, un B+
  • une Camera Pi
  • un dongle Wi-Fi USB
  • la batterie externe de mon robot (que j’ai du aller rechercher dans le sac de maternité de madame, heureux évènement devant arrivé dans les semaines prochaines, promis chérie je le remets chargé dès que j’ai fini)
  • un bout de carton
  • du petit scotch d’électricien

Coût total neuf, surement moins de 100 euros, coût en récup’ : 0€.

L’idée est donc de mettre la caméra devant l’oculaire à la place de mon oeil, et de faire des photos. Evidement, tout cela se fait de jour, parce que c’est plus facile ! Pour faire des photos, j’utilise bêtement la commande raspistill via ssh. Mais il est nettement plus facile de régler l’alignement optique avec une visu en temps réel de la camera.

J’ai donc utilisé MJPG-streamer, qui permet de balancer des captures avec un format préréglé à l’avance via le réseau, soit sur une page web, soit sur VLC. Pour se faire, j’ai suivi le tuto disponible sur le merveilleux site http://www.instructables.com. Attention cependant, pour pouvoir utiliser la Camera Pi avec MJPG-streamer, il faut au préalable charger le module de compatibilité V4L2 dans le R-Pi :

sudo modprobe bcm2835-v4l2

Egalement, à l’étape 3 du tuto on vous demande de téléchopper via svn la dernière version du soft, mais l’adresse est obsolète. Il faut donc récupérer le soft via :

svn checkout svn://svn.code.sf.net/p/mjpg-streamer/code/ mjpg-streamer-code

Une fois que c’est fait, vous pouvez nuancer la fin du tuto d’instructables.com avec quelques options (format de l’image, port de streaming, etc) via la doc faite à l’arrache par le dev de Mjpg-streamer sur son blog.

Vous finissez donc avec un télescope qui prend des photos, et qui peut même faire du streaming sur l’internet mondial (rep à ça Philae et Hubble !).



Alors vous me direz “mais elle est flou ton image !”. Oui, en effet, j’ai une impression de netteté bien supérieur en vidéo ou en visu direct dans l’oculaire. Deux explications :

  1. J’ai peut être mal réglé la partie optique
  2. J’ai l’impression que cela pourrait être du à des turbulences entre les couches d’air chaud et froid traversées par les rayons arrivant au télescope.

Mais cela dit, dans la notice c’est écrit que ce n’est pas un instrument d’observation terrestre, et je pense que face à un astre le problème devrait être moindre.

Il reste également d’autre point à régler, comme la latence du streaming. Il existe il me semble des solutions bien mieux adapté pour visualiser ce que voit la caméra en alternative à MJPG-streamer, où la réactivité est meilleur. Dernier point, si le mode automatique de raspistill se débrouille pas trop mal de jour, il faudra probablement mieux paramétrer la prise de vue lors de photo de nuit. Ensuite peut-être viendra le temps de l’utilisation de technique plus avancer comme l’empilement d’image pour l’observation plus profonde, ou bien l’utilisation d’une camera sans filtre infra-rouge.

Bref, to be continued comme on dit au pays de la NSA.

Résumé du projet :

  • Récupérer certaines infos sur Internet
  • Récupérer des infos locales
  • Créer une image avec ses infos
  • Afficher l’image

Vous vous souvenez du thermostat pour mon radiateur électrique ? Bien. Ce Raspberry Pi avait donc 2 rôles : faire des acquisitions de températures pour les envoyer à un serveur qui log ces données pour la postérité et, en fonction d’un fichier de consigne, piloter un radiateur pour choisir quelle commande de chauffage il doit utiliser, en fonction de la température ambiante et de l’heure (chauffer pendant la journée en semaine, c’est pas cool avec Dame Nature).
Bref, c’est un Raspberry Pi qui se tourne un peu les pouces. Et c’est là qu’intervient le recyclage d’un écran Adafruit (2.8′, tactile, avec des boutons en dessous, non utilisé dans mon cas … pour le moment) qui dormait dans une boite parce que je n’avais pas pu l’utiliser sur mon robot comme prévu.

Un boitier adapté (Adafruit également) et un peu de code plus tard, voilà tout plein d’info pertinente afficher sur l’écran !

On y voit donc :

  • La date
  • L’heure
  • La température interne
  • L’état de la commande de chauffage
  • La température extérieure, le taux d’humidité relative, la vitesse du vent, et la date d’acquisition de ses trois infos.

Cette dernière ligne est en fait issue d’un site qui recense plein de donnée météo, le National Oceanic and Atmospheric Administration. Il existe sous Debian l’outil weather-util permettant de récupérer ces infos en utilisant le nom de la station météo, son code d’immatriculation, ou bien des coordonnées dans votre petit terminal. Vous trouverez des détails sur son utilisation ici. Cela dit, je me suis rendu compte qu’en tapant http://weather.noaa.gov/pub/data/observations/metar/decoded/XXXX.TXT dans votre navigateur internet on peut récupérer les mêmes infos, il suffit de remplacer XXXX par le code de la station, trouvable via le site weather.nooa.gov. Avec un simple wget on récupère un TXT, il ne reste plus qu’à le traiter.

Concernant le traitement des données, j’ai fait un bout de code en C qui récupère le .TXT, le décode pour récupérer les données (température/humidité/vent/horodatage), récupère les infos de la sonde locale (réutilisation du code du thermostat), et on passe tous ces paramètres dans la commande « convert » venant du package debian « imagemagick » qui va afficher tout plein de texte sur un fond noir (Détails ici).

Pour utiliser l’écran, il faut avoir installé les petits package prévu par Adafruit (le tuto ici) et lancer la commande permettant d’envoyer l’image. Avec un cron toutes les minutes, ça permet d’afficher un résumé météo rapide.

Et voilà le travail ! Il faudrait encore modifié la plaquette d’essai histoire de rendre ça encore plus joli. Voir même afficher sur l’image de fond un graph de la température, changer l’afficher avec les boutons, ou que sais-je encore !

On avait donc parlé ici, puis par ici de comment on fait un robot (vite fait, hein).

J’ai fini par arrivé à un résultat convaincant, que je vous présente via une petite vidéo. C’est de l’accélérer x3 car il faut le reconnaitre, si les moteurs pas à pas me fournisse une grande précision, c’est quand même pas avec ça que je vais battre Schumacher… quoi que on me dit dans l’oreillette que sur une piste de ski c’est jouable.

Bref, voilà la vidéo, et si vous activez les sous-titres vous aurez quelques explications supplémentaire.

YouTube Preview Image

Il reste bien évidemment des ajustements à faire. J’ai notamment acheté des moteurs CC et le drive qui va derrière pour améliorer la vitesse du robot. Comme j’avais déjà 2 moteurs pas à pas 5V, ainsi que 2 moteurs 12V (ceux de la vidéos), je vais pouvoir motorisé la caméra également. Et/ou faire une tourelle avec un laser-destruktor-de-la-mor, mais j’ai un soucis de batterie à gérer pour ça.

[Raspberry Pi] Thermostat pour radiateur Pass Program

Tuesday 25 November 2014 à 15:47

J’ai laissé un peu de côté mon p’tit robot RPi-kee pour m’atteler à un autre projet, un peu plus terre à terre, et nettement plus utile pour l’humanité. Sous cette introduction un peu pompeuse, se cache sauvegarde de la planète, économie d’énergie et tout le bullshit marketing qui va avec.

Depuis maintenant plus d’un an, j’ai l’honneur d’avoir dans mon salon un Raspberry Pi avec une sonde DS18xxx et un système logiciel pour récupérer cette température et la coller dans une base de données. Si vous me demandez quelle était la température le 4 juin 2014 à 11h dans mon appartement, je suis capable de vous répondre ! C’est beau la technologie. Mais pas très utile.

Avec l’hiver qui vient (TM de la famille Stark), nous avons remis en route un radiateur sur les 5 disponibles chez nous. J’ai beau avec un appartement neuf (refait en 2008), il a été construit avec des jolis convecteurs peuvent être un gouffre financier. Nous avons donc pris l’habitude de le mettre en route le matin au réveil, de le couper en partant, de le relancer le soir en rentrant et finalement de l’éteindre au coucher.

Et si on automatisait tout ça ?

J’ai donc commencé par regarder de plus près mes radiateurs. Il s’agit de modèle F18 de chez Atlantic (mais si, la pub radio avec Charlotte de Turkeim…), qui ne sont pas vraiment haut de gamme, bien au contraire. Néanmoins, ils ont l’avantage d’être “programmable”. Ils disposent de base de 2 thermostats (un “jour” et un “nuit”) ainsi qu’un mode hors gel, et off. On peut donc avec un curseur passé de jour à nuit, à off et à hors gel. Mais alors, programmable, ça veut dire quoi ?
Ça veut dire qu’ils sont connectés à mon réseau électrique par 3 fils : Phase (fil marron, 220V alternatif), Neutre (fil bleu), et le p’tit dernier, le Pilote (fil noir). J’ai donc enquêté un peu, et j’ai regardé comment était câblé tout ça en démontant le cache dans le mur où vont (les putes, TM Tywin Lannister) les fils du radiateur. Comme je le disais plus haut, mon appartement est à peu près neuf, et donc l’électricité est bien faite. Je suis descendu voir mon tableau électrique, et que vois-je : 5 fils noirs qui ne sont connectés à rien, et un fil marron. J’ai pris l’initiative de penser que tout ça est un pré câblage pour un boitier de contrôle.

En regardant la documentation du radiateur, j’ai appris que le fil pilote permet de mettre le radiateur dans des modes de fonctionnement particuliers en fonction du signal envoyé sur le fil pilote. Les différents signaux sont les suivants :

  • Rien : mode jour
  • 220V double alternance : mode nuit
  • 220V alternance positive : mode arrêt délestage
  • 220V alternance négative : mode hors gel
  • 220V double alternance un peu déphasée: mode jour -1°C
  • 220V double alternance un peu plus déphasée: mode jour -2°C

Au final, chaque mode est une transformation du signal 220V plus ou moins compliqué. Quand on regarde la doc toujours, on voit qu’il est possible d’installer (ou de faire installer) un boitier dans le tableau électrique pour réaliser ses opérations. Après, il existe plusieurs options genre thermostat sans fil à placer dans le salon, programmateur plus ou moins complexe, et tout ça, pour faire des sous ! Pour vous donner une idée, le programmateur simple pour UN radiateur coûte entre 50 et 100 euros, et je ne vous parle même pas du thermostat central, et j’évite le sujet du prix de l’intervention de l’installateur agréé.

Le truc quand même bien fait, c’est que le pilotage entre le mode jour et le mode nuit est super simple : soit on déconnecte le fil pilote, soit on y colle 220V.

Voilà, l’objectif est défini, faire un interrupteur commandé par une électronique, le Raspberry Pi en l’occurrence. Et coup de bol, celui qui trône dans mon salon est à 2m du radiateur (caché derrière un meuble, parce que le côté esthétique est important aussi).

Hardware requis :

Le mot clé, c’est “relai”. Un relai en électronique, c’est un interrupteur commandé. On met une tension à la borne du relai, il se ferme. On met 0V, il s’ouvre. De l’autre côté du relai, on branche le 220V et le fil pilote, et zou, terminé.
Evidemment, en pratique, il faut rajouter quelques fioritures pour avoir quelques choses d’utilisable. Et par chance (ou bien alors parce que c’est un besoin pas si exceptionnel) j’ai trouvé sur le site mchobby.be un joli pack “Relai 220V“, avec la doc de montage adéquat.

Ce kit est composé d’un relai pilotable en 5V, d’une diode de roue libre (l’entrée d’un relai est une bobine dans lequel le courant est stocké, la diode de roue libre permet au relai de se vider proprement quand vous le déconnecter), d’un couple transistor/résistance pour piloter le relai (en gros, ça fait la conversion entre une GPIO 3,3V du RPi ou du 5V d’un Arduino pour avoir suffisamment de patate pour attaquer le relai), et pour la rigolade d’une LED pour voir quand le relai est fermé (d’ailleurs elle est monté à l’envers sur le schéma de mchobby, pensez à la retourner si vous l’utilisez). Comme support le site conseil une carte permaproto, ce qui est un très bon conseil. Avoir un support solide quand on joue avec le secteur, c’est plutôt sécurisant.
Coût total : moins de 20€ (hors Raspberry Pi que j’avais déjà).

J’ai rajouté un câble pour relier le triplet 5V/Gnd/GPIO au RPi, un câble pour relier le 220V et le fil pilote (pour le coup, je me suis branché directement au domino reliant le radiateur au réseau câblé dans le mur), et voilà pour le hardware.

Côté Soft :

J’utilise la même librairie de pilotage de GPIO que pour RPi-kee, qui dispose pour le test d’un petit utilitaire pour switcher les GPIO à partir du shell de Debian, très pratique pour les premiers tests, permettant de vérifier le concept.
Ensuite, j’ai préparé un petit tableau Excel avec quelques infos pertinentes, comme une température de consigne, et également des plages horaires pendant lesquelles le radiateur doit être en mode jour. Une fois le tableau sauvegardé au format CSV, reste à faire une bout de code en C pour lire le fichier, trouvé la température de consigne, et déterminer si le radiateur doit être en mode jour ou en mode nuit. Condition supplémentaire, si la température de la pièce est supérieure à la consigne, alors on passe forcément en mode nuit.
La seule opération qui reste à faire sur le radiateur est donc de configurer correctement les deux roulettes de puissance. Celle du mode nuit le plus bas possible, est celle du mode jour assez haute pour chauffer la pièce normalement.
Le plus “difficile” pour ce programme, c’est surtout le décodage du fichier texte contenant les données de la sonde de température, et le décodage du fichier de consigne. Oui, piloter une GPIO avec WiringPi, c’est juste tout con.

Le soft final est lancé avec une tâche planifiée (crontab) tous les quarts d’heure, et roulez jeunesse. Ensuite on peut faire un peu tout et n’importe quoi pour rendre le truc plus facile d’accès, comme une interface web pour la configuration du fichier de consigne ou la lecture en live de la sonde de température, histoire que d’autres personnes du foyer puisse modifier le chauffage sans avoir à modifier le CSV via SSH.

Au final j’ai donc un radiateur qui s’allume le matin avant que je me lève, et qui se coupe tout seul quand il fait bon. Mission accomplie, et si je veux utiliser mes autres radiateurs, je n’ai plus qu’à relier les fils pilotes dans mon tableau électrique.

Note de bas de page : quand on touche au 220V, on met le circuit hors tension avec le disjoncteur AVANT ! Si vous mourrez en faisant de la merde dans votre tableau électrique, spa dma faute !