lundi 12 septembre 2011

Liaison téléinfo : le compteur électrique on the web

Les compteurs électriques récents disposent d'une sortie à  deux fils émettant en temps réel la consommation de votre installation : la liaison téléinfo. Les données étant présentes, il est dommage de ne pas pouvoir en disposer ! Nous allons y remédier. L'idée de base est de récupérer la consommation et de pouvoir la suivre de n'importe ou.
le montage aura 3 étages :
  • l'adaptation du signal pour le rendre facilement exploitable
  • la récupération et l'analyse des données
  • la présentation sur le réseau sous forme de graphiques[1]

Adaptation du signal

On trouve chez edf les spécifications techniques de la sortie téléinfo. Outre le signal, elles décrivent les messages que vous pourrez recevoir (nous y reviendrons). La 1ère étape est de transformer le signal pour le rendre lisible par notre équipement. plutôt que de ré-inventer la roue, une petite recherche sur le web nous remonte nombre de schémas (voir les liens). La source première semble être Bernard Lefrancois, mais ce n'est sans doute pas la seule. Quoi qu'il en soit, le montage est simple :
  • un optocoupleur
  • une/deux NAND
Voici ma version du schéma réalisé avec Kicad : schema teleinfo Voir ci-dessous pour les sources des schémas et le pourquoi de tous ces connecteurs inutiles.

Récupération des données

la 1ère étape est de récupérer tout cela avec un PC pour valider le concept. On s'installe donc au pied du compteur avec son PC portable et sa plaque d'essai[2] 1st Le port série est relié au connecteur Liaison vers un PC du schéma ci-dessus.
Parlons maintenant un peu des données. Elles sont transmises en boucle par votre compteur à  un débit de 1200 Bauds en 7E1[3]. Chaque trame commence par le caractère STX:0x02 et se termine par ETX:0x03. le contenu des trames dépend de votre abonnement. Dans mon cas (monophasé, heures creuses/pleines), on trouve ceci : plaque à  essai pour PC
ADCO XXXXXX088671 K
OPTARIF HC.. <
ISOUSC 60 <
HCHC 005124904 _
HCHP 007483956 =
PTEC HC.. S
IINST 002 Y
IMAX 052 F
PAPP 00400 %
HHPHC D /
MOTDETAT 000000 B
dans la GTL Je ne vais pas vous décrire par le menu les différents champs, tout est très bien détaillé dans le pdf linké précédemment. Sachez cependant que ce qui va nous intéresser le plus est :
  • HCHC : consommation totale en heures creuses
  • HCHP : consommation totale en heures pleines
  • PTEC : période tarifaire en cours (ici heures creuses)
  • IINST : l'intensité instantanée
Une fois ceci connu, il est très simple d'exploiter les données, on lit la trame sur le port série, on converti les caractères en nombre, et voila ! Vous trouverez même chez MicElectroLinGenMet des programmes en C tout fait pour exploiter ces données.
Bon, c'est bien joli de suivre sa consommation pour faire des économies, mais c'est pas en laissant un PC allumé qu'on va améliorer les choses !

On the web

Il me faut donc un moyen de lire et exporter tout cela sur le web à  basse consommation. Mon choix s'est porté sur une plateforme arduino. Pourquoi ? C'est simple :
  • il faut un arduino dans tout projet électronique[4]
  • c'est facile d'accès, tout intégré et avec plein de bibliothèques
  • les extensions[5] sont faciles et existent en grand nombre (en particulier pour l'ethernet)
  • les AVR c'est le bien
Arduino dans la GTLBref, des arguments imparables !
Pour l'ethernet, mon choix s'est porté sur un modèle à  enc28J60 plutôt que l'officiel à  base de Wiznet. Il est plus lourd à  programmer, mais beaucoup moins cher. Ici, une comparaison[6] entre les 2 shields.
Le reste n'est que du C, très simple donc ;)
Le programme est relativement léger. On lit le port série régulièrement, on accumule dans un tableau pour conserver un historique sur 24h et on affiche le tout via l'API Google chart. Vous trouverez les sources ci-dessous.
web
Voila, après quelques mois de fonctionnement sur plaque à  essai, tout va bien. J'avais prévu d'en faire un typon[7] mais au final, je me suis contenté d'une plaque à  trous.
Vous pouvez voir comme je suis fort en soudure et routage[8] :)
coté face coté pile en fonctionnement

Conclusion

Voila, un montage simple et facile qui vous permettra d'attendre le super nouveau compteur d'EDF. Dans les évolutions, on pourrait envisager une intégration Google powermeter[9] ou un historique plus grand[10]
Dans les utilisations réelles[11] je peux citer :
  • le réglage de la pompe à  chaleur pour qu'elle ne déborde plus en heures pleines
  • la découverte de l'oubli du chauffe-eau pendant les vacances[12]
Et pour finir, quelques liens :

Notes

[1] parce que j'aime bien les graphiques !
[2] madame ne vous laissera sans doute pas faire très longtemps ;)
[3] 7 bits de data, parité pair, 1 bit de stop
[4] au milieu, à  gauche
[5] shields
[6] en faveur du wiznet
[7] voir dans les sources kicad ci-dessous
[8] ironie inside
[9] si j'arrive à  faire du SSL?
[10] pour l'instant via un munin hébergé ailleurs
[11] je veux dire autre que le plaisir de voir de jolies couleurs
[12] et envoi de mamie pour l'extinction :)


Commentaires du post original

Programmateur de machine à  laver

Le besoin

Notre machine à  laver, un peu ancienne, ne dispose pas de fonction retardateur. Il est donc impossible de la programmer pour qu'elle démarre en heures creuses. De plus le bouton de démarrage n'est pas "à  état". C'est à  dire que chaque pression démarre ou arrête la machine mais qu'il revient dans son état initial après. Impossible de mettre l'alimentation sur programmateur et d'enclencher le démarrage en avance.
L'idée qui germe alors dans mon cerveau geek est de construire un doigt robotisé qui appui sur le bouton au moment opportun ! Bien sur, il est possible de caler le bouton enfoncé avec un bout de carton et d'utiliser le programmateur sus-cité, mais alors ou est le fun[1] ? De même d'aucun objecterons qu'un relais soudé sur les contacts internes du bouton peuvent mieux simuler une pression qu'une action mécanique moins fiable. J'objecterai alors, à  mon tour, que souder des trucs dans un appareil qui fonctionne très bien est à  mon goà»t plus risqué que d'appuyer sur un bouton[2]. Je n'ai pas l'intention de changer une machine qui marche très bien.
Ceci étant posé, je me suis lancé dans la construction d'un "doigt" qui appuiera sur le bouton après un temps choisit.

La réalisation

Posons les bases :
  • pour le "doigt" un simple servo fait l'affaire, un angle au repos et un angle pour l'appui sur le bouton. Il ne doit pas empêcher d'appuyer manuellement.
  • il faut aussi un écran pour régler le temps d'attente avant le déclenchement du lave-linge
  • pour le servo cerveau, un arduino, simple et facile même si sur-dimensionné

Écran LCD : Nokia

Pour l'écran, je me suis vite orienté vers les quelques Nokia 5110 qui traà®nent dans un tiroir depuis quelques années. Je les ai gardés justement pour ce genre d'utilisation car leur écran LCD est très facilement réutilisable à  partir d'un µC. Il existe foultitude sites et de bibliothèques pour les utiliser. Il suffit donc de suivre les instructions et de souder une petite nappe. à€ ce moment, la force de l'arduino entre en jeu, les bibliothèques ! J'ai utilisé celle de NuElectronics légèrement modifiée par mes soins. Et hop :
photo

Commande

Pour l'affichage, c'est bon. Pour la commande, il n'est pas besoin de grand chose, il nous faut juste régler la temporisation et la lancer. Soit 3 boutons : up, down et ok.
Les fonctions offertes sont, elles aussi, simples :
  • réglage du minuteur
  • réglage des angles repos/travail du servo (avec enregistrement en eeprom)
  • test
On se reportera au schéma suivant pour les menus et les interactions de l'interface.
photo photo photo
Le concept est validé et fonctionnel.

Finalisation

Il ne reste plus qu'à  améliorer le WAF[3] de l'ensemble si l'on veut que l'objet soit utilisé.
on commence donc par rendre tout cela un peu plus transportable en en faisant un shield[4] facile à  enficher sur notre arduino.
photo photo photo
Ensuite on agence tout ceci dans un belle boà®te de vis qui avait le malheur de traà®ner dans mes pattes. Quelques coups de dremel, de perceuse et le tour est joué.
photo photo photo
Pour finir, il ne reste qu'à  fixer notre doigt au-dessus du bouton. Pour une fois, j'ai choisit de rester simple: un morceau de scotch double-face[5].
photo photo
Voila, cela fait quelques mois que ce montage est en fonction et il donne entièrement satisfaction. Nous gagnons des € tous les soir grà¢ce aux heures creuses et dans 10 ans je pense que nous aurons économisé suffisamment pour rembourser le temps que j'y ai passé ;)
Ah oui, si quelqu'un a envie de se lancer dans la même chose, le code est bien sur disponible en GPL dans mon dépot : programmation de machine à  laver

Notes

[1] bande de rabat-joie
[2] puisque je vous dis que je veux un robot!!
[3] pas le plus amusant, mais le plus important
[4] si on peut appeler ça un shield !
[5] trop simple :(


Commentaires du post original

samedi 9 juillet 2011

Utiliser un arduino comme programmeur ISP

L'arduino est devenu le microcontroleur[1](µC) à  tout faire. De part sa communauté, de nombreuses bibliothèques et programmes sont proposés et disponibles pour nombre d'utilisations. Nous allons aujourd'hui en découvrir une un peu particulière. Nous allons apprendre à  (re)programmer un autre microcontroleur à  l'aide d'un arduino.

Charger un programme dans un arduino est très simple, cela grà¢ce au bootloader chargé dans l'ATmega. Basiquement, ce petit programme exécuté au démarrage de votre arduino récupère le code via la liaison usb et programme l'ATmega de la carte[2]. Si rien ne lui est envoyé, alors il démarre le programme déjà  présent dans la mémoire flash. Le bootloader ou le programme à  exécuter sont stockés dans 2 zones mémoires différentes.

Seulement il peut arriver que ce bootloader soit cassé[3] ou ne soit pas présent[4]. De plus, un certain nombre de µC ne peuvent pas héberger de bootloader. Dans ce cas, il faut les programmer autrement. On utilise alors un programmeur qui se charge de cette tà¢che.

Les µC d'atmel disposent en général d'une fonction très utile : l'ISP (In-System Programming). Celle-ci permet de les reprogrammer à  l'aide de 4 fils, alors qu'ils sont déjà  dans un montage. Nous allons utiliser cette fonction pour reprogrammer notre arduino.

Exemple avec un ATtiny45

Commençons par programmer un simple petit ATtiny45 (cible) à  l'aide d'un arduino Duemilanove (programmeur).

Il nous faut d'abord utiliser le sketch ArduinoISP présent dans les exemples fournis avec l'IDE de l'arduino. Vous pouvez aussi le télécharger sur le site mega-isp. Compilez le et chargez le dans l'arduino.

Note: par défaut la vitesse utilisée lors de la (future) programmation de la cible est de 19200bps, vous pouvez changer cela dans le code, mais il faudra alors penser à  reporter cette valeur dans les commandes de programmation.

Depuis la version Diecimila les arduino intègrent une fonction d'auto-reset qui permet de redémarrer la carte (et donc lancer le bootloader) quand une communication série débute[5]. C'est très utile pour programmer l'arduino, mais cela va nous poser problème ici. Nous devons donc le désactiver. Pour notre version Duemilanove, le plus simple et le moins intrusif est de relier le reset au +5V par une résistance de 120ohms, ce qui maintiendra le reset à  l'état haut[6]. Je vous laisse voir le site officiel pour les autres méthodes.

Ensuite, nous relions les différentes pattes nécessaires pour la programmation ISP :

Arduino     ATTiny45  Fonction
  10           1       reset 
  11           5       MOSI
  12           6       MISO
  13           7       SCK

Référez vous à  la datasheet de votre µC pour connaitre les pattes à  relier.

Enfin, le sketch ArduinoISP utilise 3 leds d'état que vous relierez à  la masse via une résistance adéquate[7].

Arduino    led (anode)
   7       jaune: programation en cours
   8       rouge: erreur
   9       vert : heartbeat

Voici le schéma du montage sur plaque à  essai :

montage montage

Vous pouvez ignorer la led verte de gauche, elle ne sert qu'a tester le programme chargé.

Enfin, vient le moment tant attendu, vous pouvez connecter l'arduino à  l'USB et programmer votre ATtiny en utilisant avrdude :

avrdude -V -p t45 -c avrisp  -b 19200 -P /dev/ttyUSB0 -U flash:w:led.hex

Quelques mots sur les options (voyez la doc pour les détails) :

  • -p t45 : pour dire que l'on programme un ATtiny45
  • -c avrisp : le type de programmeur utilisé
  • -b 19200 : la vitesse de la liaison (à  changer éventuellement en fonction du code de ArduinoISP)
  • -P /dev/ttyUSB0 : le port sur lequel est connecté votre arduino
  • -U flash:w:led.hex : on écrit (w) dans la flash le programme compilé led.hex

Et voila, selon votre programme de test, la led devrait commencer à  clignoter.

Programmer un arduino à  partir d'un arduino

Attention: Pour pouvoir programmer plus de 256 octets (ce qui va être nécessaire pour la suite), il vous faut utiliser ArduinoISP de l'IDE version 22 minimum, ou utiliser les sources prises sur mega-isp vues ci-dessus. C'est un bug connu de l'IDE 21

Nous allons reprogrammer le bootloader de l'arduino. On peut avoir de nombreuses raisons de faire cela: pour le réparer, pour préparer un nouveau µC, pour le remplacer par une version plus efficace. Dans mon cas, c'est cette dernière opération que je veux réaliser. Le bootloader du Duemilanove, empêche l'utilisation du watchdog dans les programmes. On trouve la correction dans des bootloader alternatifs[8] ou dans celui de l'arduino UNO (optiboot). Ce dernier étant compatible avec la majorité des versions précédentes, nous allons donc l'utiliser. Ceci impliquera de choisir Arduino Uno dans le menu Board de l'IDE lors des prochaines programmation, puisque le bootloader sera celui de l'Uno. Je vous conseille d'y coller une étiquette pour ne pas l'oublier.

Notre arduino programmeur sera préparé de la même manière que ci-dessus, c'est-à -dire qu'on lui chargera le sketch ArduinoISP. On le connecte alors vers les pattes ISP de notre arduino cible. On peut utiliser soit le connecteur ICSP soit relier directement aux connecteurs femelle sur lesquels on branche habituellement les shields.

Note: On peut aussi se contenter d'un seul arduino (programmeur) et utiliser une plaque à  essai pour simuler le 2ème. Dans ce cas, les différentes options sont décrites sur le site officiel.

Voyez ci-dessous les connexions à  établir.

arduino isp to arduino montage

La cible doit être alimentée. Vous pouvez faire cela via l'USB, mais je le déconseille ainsi, vous n'aurez qu'un seul /dev/ttyUSBx et c'est un risque d'erreur en moins. Utilisez plutôt l'entrée VIN de l'arduino à  programmer.

Il ne nous reste plus qu'à  utiliser l'IDE pour flasher la cible.

  • choisir ce que vous allez programmer dans le menu Tools / Board :
    • UNO pour avoir l'optiboot
    • ou bien duamilanove avec atmega328
    • ou autre chose suivant votre modèle d'arduino
  • puis Tools / Burn Bootloader / w/Arduino as ISP

Note: Si vous avez changé la vitesse dans le sketch ArduinoISP, il vous faudra mettre à  jour le paramètre arduinoisp.speed présent dans le fichiers programmers.txt[9], soit directement, soit en le surchargeant via votre fichier preferences.txt[10]

Nous pouvons aussi utiliser avrdude pour faire cela à  l'ancienne. il suffit d'enchainer les 3 commandes suivantes, voir de les regrouper en une seule[11]

Vous trouverez les valeurs de fuses et les fichiers de bootloader dans le fichier texte boards.txt de votre installation[12]. Les différents fichiers hex du bootloader sont dans un sous répertoire bootloaders[13]. Rappelons que les commandes suivantes s'appliquent pour programmer un optiboot sur un arduino Duemilanove.

La 1ère action est de débloquer l'accès au bootloader :

avrdude -p m328p -P /dev/ttyUSB0 -c avrisp -b 19200 -e -U lock:w:0x3F:m

Ensuite, il faut flasher le bootloader :

avrdude -p m328p -P /dev/ttyUSB0 -c avrisp -b 19200 -D -U flash:w:optiboot_atmega328.hex

notons que vous pouvez relire le fichier flashé ainsi :

avrdude -p m328p -P /dev/ttyUSB0 -c avrisp -b 19200 -D -U flash:r:read.hex:i

et enfin rebloquer l'accès au bootloader :

avrdude -p m328p -P /dev/ttyUSB0 -c avrisp -b 19200 -U lock:w:0x0F:m

Programmer directement un arduino (Bitbang FT232)

Note: Je n'ai pas personnellement utilisé cette technique, ce que vous vous apprêtez à  lire n'est donc que ma compréhension résultant de mes lectures. Cela-dit de nombreux témoignages existent sur sa viabilité et elle est visiblement beaucoup utilisée.

Une autre méthode pour reprogrammer le bootloader de votre arduino est la technique dite BitBang. Elle utilise un mode particulier du chipset FTDI présent sur les arduino. Ce mode permet de jouer directement avec les pattes de sorties du chipset et ainsi de l'utiliser pour simuler un programmeur ISP.

Le principe est donc de relier les pattes du FTDI au connecteur ICSP de l'arduino. pour cela il vous faudra souder une barette sur les trous 1 à  4 nommés X3 sur votre arduino. Puis d'établir les connexions nécessaires avec le connecteur ICSP dont nous avons déjà  parlé.

La deuxième étape est de patcher avrdude pour lui ajouter un nouveau programmeur[14]. Et enfin de reprogrammer celui-ci avec avrdude en lui donnant le bon fichier .hex à  manger.

L'énorme avantage de cette méthode est bien entendu que vous n'avez besoin que d'un seul arduino, et qu'il peut donc se reprogrammer lui-même. Les inconvénients sont que vous devez souder sur votre arduino et utiliser un autre avrdude que celui fournit avec l'environnement de programmation standard.

Pour plus de détails, je vous renvoi vers les liens suivants :

Un vrai programmeur

Pour autant que ces techniques soient amusantes leur mise en place et utilisation devient vite assez lourde. Cela est très bien pour un besoin ponctuel, mais pour une utilisation régulière, je ne saurais trop vous conseiller d'acheter un vrai programmeur de µC. Pas besoin de dépenser des centaines d'€ pour cela. On trouve facilement des programmeur ISP pour pas cher. Notons en particulier le USBtinyISP de LadyAda[15]. Une simple recherche avec stk500 ou avrisp vous renverra aussi une foultitude de résultats sur un site d'enchères bien connu.

Ainsi, vous économiserez un arduino et vous vous simplifierez la vie. Plus rapides, plus sur et plus transportables, ils ont tout pour plaire. Il ne vous reste alors qu'à  prévoir un connecteur ISP sur vos montages et hop. On peut aussi réaliser un petit adaptateur comme ci-dessous pour l'utiliser facilement sur une plaque à  essais.

montage

Voila, félicitations aux courageux qui sont arrivés jusqu'ici, et si vous avez des questions ou des remarques, les commentaires sont ouverts[16].

Notes

[1] oui, je sais c'est plus qu'un µC (régulateur, liaison usb ...)

[2] ie: charge le code dans la mémoire fash

[3] par une fausse manip

[4] cas d'un atmega neuf

[5] basé sur le passage de DTR au niveau bas

[6] il est actif à  l'état bas, vous l'aurez compris

[7] 330ohms pour mes leds

[8] tel celui de ladyAda

[9] dans /usr/share/arduino/hardware/arduino/ chez moi

[10] dans ~/.arduino

[11] en gardant le même ordre pour les options -U

[12] chez moi dans /usr/share/arduino/hardware/arduino/

[13] soit /usr/share/arduino/hardware/arduino/bootloaders/ chez moi

[14] à  utiliser via l'option -c

[15] je vous jure, que je n'ai pas d'actions chez AdaFruit !

[16] Je ne pouvais pas finir sans une dernière note de bas de page :)


Commentaires du post original

mercredi 15 juin 2011

Lecture de bandes magnétiques

CML'autre jour dans le train, je lisais Open Silicium #2 et j'ai été effaré de lire que le numéro de carte bancaire se retrouvait sur la bande magnétique des billets SNCF. Ni une, ni deux, uns fois mes pénates retrouvées, j'ai voulu en avoir le cÅ“ur net !

Ne voulant pas acheter un lecteur de carte, je me suis intéressé à  la méthode Batagllia présentée au paragraphe 2.1 Le principe est simple, on utilise une tête de lecture telle qu'on en trouve dans les lecteurs de K7 audio, sur laquelle on soude une prise jack elle-même branchée sur l'entrée micro d'une carte son. Un logiciel se charge alors d'interpréter le signal reçu en données intelligibles. L'auto-radio que j'avais au fond de mes cartons étant un CD, je me suis tourné vers la fausse K7 que j'utilise pour brancher mon lecteur MP3 dans la voiture.

Je ne vais pas détailler le processus entier, je vous renvoi plutôt vers une série de liens en fin d'article, outre bien sur Open Scilicium déjà  cité. Vous pouvez aussi regarder la vidéo suivante.

Côté résultats, la lecture de cartes marche plutôt bien. J'ai réussit à  lire des données sur toutes celles que j'ai essayés : carte bancaire, tickets de parking, cartes de fidélité, cartes d'accès etc... Il faut quand même attraper le coup de main pour passer la tête de lecture à  la bonne vitesse.

CMQuand aux billets de train, j'ai eu plus de mal, plusieurs lectures donnant parfois des résultats différents. J'ai tout de même réussit à  voir pas mal d'informations telles que les gares de départ et d'arrivée, le prix, le numéro de train etc...

Par contre, pas de numéro de carte bleue ! Bonne nouvelle ! Soit les données sont déjà  perdues (bande LoCo), soit elles ne sont pas présentes sur tous les type de billets. Ceux de mes tests ayant été acheté via internet et livrés à  la maison.

Voila, un petit hack simple et facile, mais il est toujours amusant de regarder ce que l'on n'est pas censés voir ;)

Liens


Commentaires du post original

dimanche 30 janvier 2011

Console série pour Linux

Lorsque l'on dispose d'un serveur sous Linux sans écran/clavier, il est parfois difficile de savoir ce qu'il se passe. Si la connexion réseau est morte par exemple. Dans ce cas, il est utile d'avoir un moyen d'accéder au serveur sans avoir à  déplacer un écran depuis un autre PC. Nous allons voir comment mettre en place une console sur le port série de notre serveur. Tout d'abord les différentes options matérielles simples et peu couteuses, suivie de la configuration logicielle de votre serveur.

Materiel

console sur un autre PC

Le plus simple est de mettre en place un terminal série sur un autre PC et de le relier à  votre serveur via un cà¢ble série. Par contre, cela nécessite que votre PC client dispose d'un port série (ou USB avec l'adaptateur qui va bien) et surtout qu'il ne soit pas trop loin du serveur. C'est généralement une bonne solution de dépannage mais rarement une solution à  long terme.

Dans un tel cas, j'utilise principalement screen ou cutecom comme logiciel terminal. Bien entendu il en existe plein d'autres selon vos préférences. Citons le vénérable minicom ou

minitel

Ici, nous avons sans doute la solution la plus fun. On trouve des minitels partout et pour quelques euros. Regardez aussi dans les placards de grand-mère ! Il vous faudra un minitel 1B. Pour le reconnaitre, c'est simple, il doit disposer de la touche Fcnt.

Ensuite un simple petit montage à  base de 2 transistors, une combinaison de touches magique, et vous voici avec un superbe terminal série vintage au possible ! Pour la petite histoire, j'ai fait mon montage à  partir d'un article du GLMF #1 :)

minitel

Vous trouverez le schéma du montage dans les liens ci-dessous. Pour basculer votre minitel dans le bon mode[1] :

  • Fcnt+P 4 pour le passer en 4800bps
  • Fcnt+T A pour basculer en clavier américain
  • Fcnt+T E pour enlever l'echo local

Par contre il ne monte pas à  plus de 4800bps et la touche | manque sur le clavier.

vtXXX

Maintenant on arrive à  une solution plus rare. Ce genre d'équipement a eu son heure de gloire lorsque les ordinateurs se résumaient à  des mainframes. On peut en trouver dans des ventes au enchères ou dans des poubelles de grandes sociétés[2]. L'avantage est que ce sont de vrais terminaux série disposant de plein d'options. C'est aussi une vrai satisfaction de marier ainsi l'histoire de l'informatique avec votre NAS dernier cri :)

IOLAN

Pour finir, voici la solution la plus professionnelle. Un équipement qui vous permet d'exporter une[3] console série sur le réseau. Vous pouvez alors y accéder via telnet/ssh de n'importe ou. cela reste tout de même assez difficile à  trouver ou à  des prix relativement prohibitifs. iolan On peut aussi facilement en construire un à  partir d'un microcontroleur et d'un chip réseau. J'imagine cela très facilement avec un arduino et un shield ethernet.

Logiciel

Voyons maintenant la partie logicielle. Nous allons faire en sorte que notre OS favori utilise le port série pour ses messages.

grub

Dans le fichier /boot/grub/menu.lst avant les options automagic

serial --unit=0 --speed=38400 --word=8 --parity=no --stop=1
terminal --timeout=10 serial console

messages de boot

Dans le fichier /boot/grub/menu.lst

# kopt=root=/dev/mapper/vg00-root ro console=ttyS0,38400n8

Puis pour appliquer les 2 précédents changements, on utilise la commande suivante en tant que root :

FortCigogne-NG:~# update-grub

Au prochain reboot, grub et le noyau nous parleront via le port série.

console après boot

Pour finir, on configure le démarrage d'un login sur le port ttyS0, afin de pouvoir se logger une fois le boot terminé. Cela se passe dans le fichier /etc/inittab ou l'on ajoute la ligne suivante :

T0:23:respawn:/sbin/getty -L ttyS0 38400 vt100

On peut tester directement le fonctionnement en redémarrant la lecture de l'inittab :

init q

Bibliographie

http://www.vanemery.com/Linux/Serial/serial-console.html http://znark.com/tech/serialconsole.html http://www.howtoforge.com/setting_up_a_serial_console http://www.totofweb.net/robots-projet-52.html http://yip.free.fr/bidouilles/minitel/terminal.html

Notes

[1] à  faire à  chaque utilisation

[2] c'est de la que vient le mien

[3] ou plusieurs


Commentaires du post original

samedi 30 octobre 2010

Décoration rétro-geek

Au fond d'un carton, j'ai retrouvé une pile de vieilles disquettes. D'une utilité douteuse, elle me faisaient quand même de l'Å“il. Il me reste bien un PC avec le lecteur adéquat mais il faut le rebrancher. Et puis, 1.44Mo, à  l'heure ou la moindre petite clef USB fait 4Go ...

disquettes

Mais tout de même, à  une époque elles ont tenues une grosse place dans mon univers informatique. Que d'heures passées à  faire des copies bercé par le doux son du lecteur. Que de montées d'adrénaline en reconnaissant le bruit caractéristique du secteur illisible ... Ma nostalgie m'empêche de les jeter ! Je leur doit de les recycler.

Et puis elles me sont apparues telle qu'elles sont, des carrés tous identiques, de couleurs variées. Mais bien sur, ce sont des pixels ! Et vu leur taille la résolution ne doit pas être bien élevée. Des gros pixels, une faible résolution, la nostalgie ... elles se sont évadées d'une borne d'arcade ! Mais pas n'importe laquelle : Space Invader !

Une fois la révélation faite, le reste est simple, quelques étiquettes décollées pour leur rendre leur pureté originelle, un peu de double-face et les voila enfin de retour à  leur état naturel.

disquettes

Avouez qu'il a de la gueule mon crabe :)

disquettes


Commentaires du post original

vendredi 22 octobre 2010

De l'utilisation de Sketchup pour l'aménagement intérieur

En voyant l'article de Nicolas sur le planet made-in-fr, je me suis rappelé un article en cours depuis quelques mois. Voici donc l'occasion de le finir :)

Background: notre cuisine est plutôt petite et ouverte sur la pièce de vie principale. Ce qui veut dire, peu de rangements et un besoin d'organisation pour que le bordel ne se voit pas. Pour cela nous avons prévu une petite arrière-cuisine qui se doit d'être aménagée au mieux avec des étagères. Seulement cette pièce est très torturée possède un vélux, deux sous-pentes perpendiculaires et héberge le four. Exit donc les aménagements tout fait ou les étagères Ikea. Nous allons devoir faire du sur-mesure.

Sketchup

Jusqu'à  présent, j'ai toujours commencé par des représentations en 3D à  main levée suivis de plans à  l'échelle, le tout sur papier (par exemple pour la cuisine). Jusqu'à  ce que je découvre Sketchup. Pour ceux qui ne connaissent pas :

Google SketchUp est un logiciel de modélisation 3D, d'animation et de cartographie orienté vers l'architecture. Initialement édité par la société @Last Software (racheté par Google depuis lors), ce logiciel se caractérise par des outils simples (rotation, extrusion, déplacement, etc.), qui en font un logiciel de 3D très différent des modeleurs 3D classiques.
source: Wikipédia

Après une courte phase d'apprentissage[1] on se retrouve très rapidement capable de modéliser des pièces, des meubles à  l'échelle. Vous pouvez positionner facilement les cotes, faire différents essais, voir votre mise en place sous tous les angles, gérer les alignements ...

100 fois sur le métier, remettez votre ouvrage, n'a jamais été aussi facile :)

Une fois la modélisation faite, le maitre d'ouvrage[2], peut étudier la proposition sous tous les angles. on est donc sur que cela conviendra parfaitement aux besoins avant de commencer quoi que ce soit. Et ça n'a pas de prix :)

Un autre énorme avantage dans mon cas : le calcul automatique des cotes. J'ai commencé par modéliser ma pièce biscornue. une fois fait, j'ai positionné chaque étagère à  sa hauteur (en fonction de ce que l'on voulait mettre dessus) sans me préoccuper de leur taille[3]. Enfin il m'a suffit de positionner les cotes pour avoir directement la taille de chaque morceau de bois ! Au final, lors de la découpe, je n'ai pas eu plus d'un cm de décalage par rapport aux plans.

Dernier point, l'optimisation des découpes. C'est toujours la galère de calculer combien de planche de CP il va falloir pour minimiser les pertes. On peut découper à  l'échelle les étagères en papier et les positionner sur d'autres plus grandes. On peut aussi sortir la calculette et attraper un mal de tête. Avec Sketchup, on fait pareil mais plus facilement et sans papier ni aspirine :) Et hop, un plan de découpe !

Réalisation

Malheureusement, je n'ai pas de photos de la construction. Voici quand même quelques détails sur celle-çi.

Les étagères sont en contre-plaqué de 20mm. La portée étant très grande (2.44m au plus) et le poids prévu aussi (conserves, four, bouteilles d'eau), le CP apporte une rigidité bien venue. Pour les plus grandes, j'ai même ajouté une cornière en acier sur l'avant histoire de renforcer encore cela.

Elles reposent, pour toute la longueur, sur des tasseaux fixés au mur. Ces tasseaux sont biseautés[4] pour s'adapter à  l'angle de la sous-pente. Les cotés des étagères sont biseautés de la même manière.

Une série de "poteaux" placés entre chaque étagère limitent la portée sur l'avant. Ainsi l'accès est maximisé et la surface est très peu compartimentée. La tranche de chaque étagère est embellie d'une baguette simplement clouée pour cacher la feuillure du CP et arrondir les angles.

Au final, c'est très logeable et très solide[5] et le maitre d'ouvrage est satisfait.

Notes

[1] les tutos vidéo sont super

[2] comprendre madame

[3] alignement automatique !

[4] merci la scie circulaire sous table

[5] je monte dessus sans que ça bouge


Commentaires du post original