Samedi, septembre 3 2011

Ajout d’une liaison sans fil Xbee 802.15.4 sur une station météo La crosse Technology WS2305

Il y a 3 ans, j’avais branché ma station météo d’abord sur une Fonera, puis ensuite sur un routeur Netgear WL500 afin d’envoyer les données météo sur un serveur. Ce montage très simple a été remis en cause par une panne « définitive » du routeur et par l’utilisation de la Fonera sur un autre projet. De plus il y avait quelques inconvénients: la consommation électrique du routeur et la présence d’un transformateur, le câble série…

p30_lcf_72dpi_ws2305bla_alu.jpg

Souhaitant à nouveau brancher ma station sur internet, j’ai décidé de  changer de stratégie. Etant donné que je dispose d’un mini PC sous XBMC qui me sert de magnétoscope numérique, j’ai préféré envoyer les données météo sur ce PC. Il me fallait donc une liaison sans fil entre le PC et la station météo qui soit bi directionnelle et qui supporte la distance entre les 2 équipements.

J’ai à ma disposition 2 modules Xbee Pro 802.15.4 permettant le transport d’une liaison série TTL sur la bande des 2.4GHz.

Comme détaillé dans le précédent article sur la liaison avec la Fonera,  il faut localiser à l’aide d’un oscilloscope les signaux TTL de la liaison série de la station. La sortie sur le côté étant à la norme RS232, elle ne convient pas, il faut trouver les signaux en amont du convertisseur RS232 formé ici par des transistors.

IMG_1152_800x600.jpgOn localise sur la carte mère de la station météo 4 points: une masse (GND), une source de courant d’environ 3v (Vcc), le signal Tx et le signal Rx.

Les fils sont ensuite reliés à la carte supportant le module Xbee:

  • Xbee Vcc <-> WS2305 3v
  • Xbee GND <->  WS2305 GND
  • Xbee Tx <-> WS2305 Rx
  • Xbee Rx <-> WS2305  Tx

Le module Xbee normalement alimenté en 3.3v sera ici alimenté en 3.02 V, seule tension disponible sur la carte en dehors des 6v du bloc d’alim.

La carte mère de la station peut maintenant être réinstallée dans son boitier. Le module Xbee est relié par des fils d’une dizaine de centimètres, ce qui permettra de lui trouver une place dans la station.

Le seul emplacement disponible et accessible facilement pour y placer le module c’est le compartiment des piles. Celui-ci n’étant pas utilisé lorsque la station est alimentée par le secteur, le logement est un candidat parfait. La carte d’accueil du module Xbee est collée avec de la colle à chaud au fond du compartiment.

Le module Xbee nécessite juste de plier délicatement l’antenne pour pourvoir refermer le compartiment des piles.

Voilà pour la station météo. Côté PC, nous utilisons un autre module Xbee sur une carte fille (Xbee Explorer chez Sparkfun ) disposant d’un port USB.

Le module est alors vu comme un convertisseur USB / Série FTDI.

usb 4-5: FTDI USB Serial Device converter now attached to ttyUSB0

Afin de permettre aux deux modules de communiquer, il faut configurer quelques paramètres:

  • Les adresses des modules.
  • La puissance du signal.
  • La vitesse du port série.

La configuration se fait sous windows ( :-( ) à l’aide de l’utilitaire X-CTU.

Il faut d’abord régler les adresses des modules.

On paramétrera « Destination Address Low » à 1 pour le module de la station et « 16 bits source Address » à 2. Sur le module de réception du PC, il faut faire l’inverse c’est à dire « Destination Address Low » à 2  et « 16 bits source Address » à 1.

Les deux modules peuvent alors communiquer entre eux. On peut aussi utiliser une adresse de broadcast mais je n’en voie pas l’intérêt ici.

Ensuite il faut définir la puissance « Power Level » au maximum ( 4 ) ou non suivant vos besoins, ainsi que la vitesse du port série, identique à celle de la station météo (2400 Bps)

Nous avons terminé pour la partie électronique.

Côté logiciel, on va utiliser Open2300, un ensemble d’outils pour récupérer les données en provenance de la station. Il suffira de compiler les sources avec un simple « Make ». Si vous souhaitez stocker vos données dans Mysql, il faudra aussi faire un « Make mysql2300″ pour générer l’utilitaire mysql2300.

Si comme moi vous n’utilisez pas l’anémomètre, il vaut mieux patcher les sources à l’aide du fichier suivant: delay.patch afin de réduire le temps de récupération des données.

 

gzip -d delay.patch
cat delay.patch | patch -p1

Pensez aussi à paramétrer le fichier open2300.conf comme il se doit.

Lancé dans la crontab par exemple, cet utilitaire permettra de transmettre les données de la station sur un serveur Mysql. Un petit script perl pourra ensuite grapher les données à l’aide de RRDTools: graph.pl
Quelques lignes d’ HTML et l’on peut facilement mettre ces données en ligne

Jeudi, mai 26 2011

Quand la fraiseuse se met à jour – Episode 2

Vous vous souvenez, il y a quelques temps ma fraiseuse s’est « mise à jour » en s’auto fabricant un support de DREMEL en PEHD. Et bien voilà qu’elle remet ça. Je me suis décidé à remplacer ma table de fraisage en bois par une en PVC avec un système de réglage de l’assiette afin de pouvoir corriger d’éventuels défauts d’alignement ( oui, oui, il y en a un peu… ). Mais avant de remplacer cette table, il faut régler un problème avec les supports des barres de guidage. Les supports sont surélevés avec des rondelles pour permettre le passage des chariots sur douilles à billes. Seulement voilà, avec le poids de la machine, les rondelles commencent à s’enfoncer dans le bois qui n’est pas assez dur (MDF).

J’ai donc entrepris de fraiser des semelles en PEHD pour les supports. Après de longues minutes d’attente voilà mes 4 pieds prêts à poser.

 

Les semelles sont parfaitement ajustées et répartissent le poids de la machine sur le socle en bois.

 

Les bases sont posées, on peut remplacer la table de fraisage. C’est une plaque de PVC très rigide de 15mm d’épaisseur. Elle est montée sur 4 tiges filetées de 6mm afin de pouvoir ajuster précisément sa hauteur. Le pas d’une vis M6 étant de 1mm, ça signifie qu’en serrant l’écrou de réglage d’1 tour je pourrais monter ou descendre la table d’1mm. L’ajustement est donc particulièrement précis.

 

 

Ma table étant ajustable, il faut trouver un moyen précis pour calculer la hauteur requise au 4 coins en corrigeant d’éventuels problèmes d’ajustement de la machine. Pour cela j’ai mis au point un palpeur à monter sur la dremel. Ce n’est rien d’autre qu’un micro interrupteur qui servira à mesurer la hauteur de la table en différents points.

Un petit tour dans les boites à récup et me voilà avec une fiche CINCH, un interrupteur, un cable de souris, un bout de tube et un écrou / boulon de 3mm.

Un petit coup de fer à souder… un petit coup de perceuse pour passer le câble…

Et on assemble le tout à grand coup de colle cyanolite

La fiche CINCH est soudée sur le cable.

Le palpeur est terminé. Je l’installe sur le mandrin de la Dremel et je branche le câble sur l’entrée de la carte de commande servant habituellement au « Homing » de l’axe Z.

 

Le côté mécanique étant terminé, il faut s’attaquer à la partie logicielle. Nous allons utiliser un peu de langage G-CODE pour effectuer une grille de hauteur de la table de fraisage.

(Configuration section)
G21   (mm)
F80    (probe speed)

#1=0  (X start)
#2=50 (X increment)
#3=5 (X count)

#4=0
#5=50
#6=5 (Y count)

#7=2 (Z safety)
#8=-10 (Z probe)
(End configuration section)

(PROBEOPEN probe_table_map.txt)
#9=0 #10=0
G0Z#7
O1 while [#9 lt #6]
#10=0
G0 Y[#4+#5*#9]
O2 while [#10 lt #3]
O3 if [[#9/2] - fix[#9/2] eq 0]
G0X[#1+#2*#10]
O3 else
G0X[#1+#2*[#3-#10-1]]
O3 endif
G38.2Z#8
G0Z#7
#10=[#10+1]
O2 endwhile
#9=[#9+1]
O1 endwhile

(PROBECLOSE)
G0Z#7
G0X#1Y#4
M2

Ce code va lancer des mesures sur un carré de 200 x 200 mm en effectuant une mesure tous les 50mm. Les valeurs sont stockées dans un fichier texte probe_table_map.txt. (Je n’ai rien inventé, j’ai honteusement pompé un exemple proposé avec EMC)

Après quelques minutes, nous disposons d’un fichier texte avec les valeurs mesurées.

0.000000 0.000000 -1.434338 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
50.000000 0.000000 -1.495669 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
100.000000 0.000000 -1.619665 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
150.000000 0.000000 -1.763661 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
200.000000 0.000000 -1.894324 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
200.000000 50.000000 -2.024987 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
150.000000 50.000000 -1.916990 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
100.000000 50.000000 -1.795660 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
50.000000 50.000000 -1.696996 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 50.000000 -1.632998 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 100.000000 -1.766328 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
50.000000 100.000000 -1.834326 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
100.000000 100.000000 -1.944989 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
150.000000 100.000000 -2.528971 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
200.000000 100.000000 -2.115651 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
200.000000 150.000000 -2.167649 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
150.000000 150.000000 -2.086318 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
100.000000 150.000000 -2.014320 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
50.000000 150.000000 -1.939656 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 150.000000 -1.842325 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 200.000000 -1.882324 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
50.000000 200.000000 -1.975655 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
100.000000 200.000000 -2.020987 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
150.000000 200.000000 -2.104984 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
200.000000 200.000000 -2.187648 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000

Ce n’est pas très parlant, mais gnuplot peut nous aider. Nous allons créer un petit programme gnuplot utilisant les fonctions pm3d pour mettre en image l’assiette de la table.

set terminal png size 800,800
set output "heatmmap.png"
set xrange [0:200]
set yrange [0:200]
set cbrange [1:-2]
set view map
set dgrid3d 100,100,2
set palette model RGB
set palette defined
#unset surface
set pm3d at s
splot 'probe_table_map.txt' using 1:2:3  with pm3d at s  notitle

Le résultat avec une table non équilibrée.
On voit immédiatement le déséquilibre, le coin devant/gauche est plus haut de 1mm que le coin derrière/droite !

En ajustant légèrement la vis de réglage devant à gauche, on peut corriger l’assiette.

Le résultat est encore imparfait ( j’ai réglé la table au pif ) mais la méthode fonctionne. C’est long et empirique mais l’essentiel c’est d’obtenir un résultat à la hauteur de ses espérances…

Montage de lentille sur une caméra Kodak Zi8

Je dispose d’une caméra de poche Kodak Zi8. La qualité est excellente, mais elle souffre d’un petit défaut: l’angle de champ est assez réduit. En extérieur, ce n’est pas très grave, on a assez de recul. Mais dans des environnements réduits comme le bateau ou en intérieur, c’est très difficile de cadrer correctement.

Après quelques recherches sur Internet, je suis tombé sur des lentilles type FishEye compatibles avec les téléphones mobiles et les caméras de poche. A 10$ le risque n’est pas bien grand, j’en commande une qui arrive de Hong-Kong quelques jours plus tard.

Les premiers tests sont très concluants, la qualité est au rendez-vous ( Ce n’est pas une lentille Zeiss non plus… ) mais il y a quand même un défaut: la fixation de la lentille. Pour rester amovible, cette lentille est magnétique et vient s’aimanter sur une rondelle de métal collée autour de l’objectif.

Si ce système marche bien quand il est manipulé avec beaucoup de douceur, il en va tout autrement dans un bateau ou sur un vélo par exemple. Le risque de perte de la lentille est très important. Je souhaitais conserver un système amovible facilement pour pouvoir filmer avec ou sans la lentille. Après quelques tests, il s’avère que la lentille tient bien à l’arrachement vertical mais ne tient pas correctement lors d’un glissement transversal. Il faut donc empêcher cette lentille de glisser sur la rondelle métallique et la caler en place avec une sorte de « rebord ».

Il me faut un disque de quelques mm d’épaisseur et d’un diamètre interne de 15 mm. Sortons un morceau de plastique dense et notre chère fraiseuse numérique.

Voilà le disque dessiné avec Qcad.

Un petit tour dans EMC et voilà notre pièce fraichement fraisée.

Le dispositif est en place, tout est parfaitement ajusté.

Il ne reste plus qu’à coller tout ça avec un peu d’epoxy.

Je vais mettre un peu de peinture noire pour maquette histoire de rendre l’ensemble plus harmonieux.

 

 

Cette modification ne prend que quelques minutes et améliore grandement l’utilisation de cette petite caméra !

Jeudi, mai 19 2011

Hacking d'un écran à Led de DealExtreme

Led matrix

Je reviens à la charge avec un joujou récupéré sur le site http://www.dealextreme.com/ avec, cette fois ci, non pas un régulateur à découpage pas chèr mais un afficheur à led pas chér (~ 8€) vendu sous l'appelation « Programmable Scrolling LED Name/Message/Advertising Tag Card Badge », intéressant, la description de l'article nous apprend également qu'il possède une connection USB, chouette, je le vois parfaitement bien sur la face avant de mon serveur pour indiquer des infos comme la charge du système, l'espace disque restant, etc...

Omar m'a hacker

Malheureusement, déception : la connectique USB est propriétaire et bien évidemment, le cable n'est pas fourni, l'envie m'est alors rapidement venue d'ouvrir la bête pour y souder un connecteur standard et là, ce fût la seconde mauvaise surprise, la prise n'est reliée à ... rien. Alors, bien évidemment, on peut programmer cet écran à l'aide des boutons situés sur son dos mais ce n'est franchement pas pratique pour en faire quelque chose d'automatisé...

L'écran est piloté par un unique micro-controleur d'Atmel, un AtMega88, de la même famille que les Arduino, il est donc assez aisé de développer un micro-logiciel libre.

J'ai donc fait une petite séance de reverse engineering, ingénierie inverse en bon français afin de comprendre comment fonctionnait cet écran et j'ai ensuite développer un micro-logiciel de remplacement permettant de piloter l'écran facilement directement avec une interface série.

Dans la vidéo ci-dessous, l'écran est simplement relié à l'ordi par le biais d'un convertisseur série / USB 3V, on y voit un des 2 modes de pilotage de l'écran en action qui permet à l'aide de menu de venir le paramétrer simplement, un autre mode est aussi disponible et est parfaitement adapté à la commande automatisée par le biais de script bash ou autre...

Vous trouverez TOUT en détail sur le fonctionnement de cet écran sur le lien suivant LedMatrix hacking sur le wiki, voici le sommaire de cette page :

LedMatrix hacking
    Introduction
    Ouverture du boitier
    Comment ça marche ?
        Vue globale
        Le coeur
        Interface de programmation
        L'interface USB
        La gestion des boutons
        La matrice de LED
        Accès à la mémoire EEPROM externe
    Ajoutons une connection série
        Vous voulez piloter le montage directement depuis un module USB          
        Si vous possédez déjà une connection série RS232
    Le micro-logiciel libre
        Mode interactif
        Mode non interactif

Cet article est également paru sur :

Logo Made in fr

Lundi, mai 9 2011

Modification d’un trépied photo Manfrotto 785b

Depuis que je suis passé de l’EOS 400D à l’EOS 7D avec les objectifs qui vont bien, un de mes équipements n’a pas suivi: mon trépied Manfrotto 785b.

Il restait donc 2 solutions: en racheter un autre, sachant que le prix n’est quand même pas négligeable pour un bon trépied, pas trop lourd ou modifier l’existant.

Évidemment, j’ai choisi la deuxième  solution!

Tout d’abord, voyons ce qui ne va pas sur ce trépied; le pied est assez léger ( en aluminium ), de bonne qualité mais sa rotule souffre d’un manque de force de serrage très net. Ce problème de rotule interdit l’utilisation du 7D + 70/200 et rend l’utilisation du 7D et 17/40 peu précise. Dans un premier temps, j’ai démonté la tête pour tenter d’augmenter le couple de serrage, en collant un morceau de caoutchouc sur les mâchoires qui appuient sur la boule métallique. Peine perdue, ça marche un tout petit peu mieux, mais ça reste beaucoup trop « light » et peu précis.

Puisque le trépied est de bonne facture mais que ça rotule n’est pas satisfaisante, changeons la rotule! Le problème c’est que la tête est vissée / collée sur la colonne du pied ce qui la rend indémontable… sauf avec une scie à métaux, merci Manfrotto!

Voilà notre tête sans la partie démontable de la colonne.

Hacking  Manfrotto 785b ball head

Toutes les rotules démontables du commerce disposent en dessous d’un pas de vis 3/8″ pour les fixer sur le trépied. L’idée c’est donc de séparer la rotule de la colonne puis d’adjoindre un système de fixation avec une vis 3/8″ pour pouvoir y fixer une nouvelle rotule.

J’ai choisi, comme remplaçante, une rotule Manfrotto 496RC2 pouvant supporter une charge de 6Kg.

Hacking  Manfrotto 785b ball head

Pour fixer la nouvelle tête, j’ai trouvé un adaptateur 1/4″ femelle, 3/8″ mâle qui pourra faire l’affaire. Il suffit pour cela de lui fixer une vis 1/4″, et de coller un morceau de tube métallique qui viendra s’insérer / coller dans le tube de la colonne.

 

Hacking  Manfrotto 785b ball head

 

Le tube est disposé au dos de l’adaptateur avec la vis au milieu. Le vide formé entre le tube et la vis est rempli de colle epoxy pour rendre l’ensemble très solide.

 

Hacking  Manfrotto 785b ball head

La partie haute de la colonne est séparée de l’ancienne rotule avec un coup de scie à métaux.

Hacking  Manfrotto 785b ball head

Le tube et le bout de la colonne sont ensuite collés ensemble.

Hacking  Manfrotto 785b ball head

 

Après le temps de séchage réglementaire, nous voilà avec un beau trépied et une vis de 3/8″ tout à fait standard.

Hacking  Manfrotto 785b ball head

 

Il ne reste plus qu’à lui visser sa nouvelle tête.

Hacking  Manfrotto 785b ball head

 

Sympa non ?

 

Bien sur, cette modification n’a d’intérêt que si vous disposez déjà d’un trépied de ce type, n’allez pas en acheter un pour le modifier ;-)

Mercredi, mars 5 2008

EeePc avec bluetooth intégré

J'ai fait l'acquisition il y a quelques temps d'un EeePc, excellente machine, très réactive, très bon prix bien sûr mais malheureusement, quelques défauts viennent tout de même gâcher tout ça, oui, on ne peut pas tout avoir :

  • La résolution de l'écran est vraiment trop faible
  • L'autonomie n'est pas vraiment extraordinaire, on en attend plus d'une telle machine
  • Pas de Bluetooth

Autant, pour une réduction des coût, je veux bien comprendre le choix de l'écran et de la batterie mais pour le Bluetooth, j'ai du mal, quand on voit les quantités produites, l'ajout d'une telle puce n'aurait sûrement pas mis à mal la marge faite, le marketing doit être sur le coup...

Heureusement, il est assez simple de remédier à ce manque en le faisant nous même, l'opération à donc consister à ajouter une clef Bluetooth dans l'EeePc.

Clef bluetooth ouverte La clef Usb bien calée dans l'écran L'EeePc ouvert

Voici la page sur le wiki qui comporte toutes les explications sur l'ajout d'une clef Usb Bluetooth Belkin F8T012xx1 dans l'EeePc : Projets / EeePc / Bluetooth