Retrouvez cet article dans : Linux Magazine Hors série 38
Il est assez facile de trouver dans le commerce des " stations météo " pas trop onéreuses. Trop facile ? En tous cas, pas très amusant. Quel plaisir pour un bricoleur que de monter soi-même sa propre station... Surtout si l’on pense à la puissance d’un système informatique. Hélas, les ordinateurs ne mesurent pas encore la pression atmosphérique. Vite, arrangeons cela !
Pour réaliser un baromètre, il nous faut un capteur de pression ! Voici qui frise la lapalissade, mais le choix dudit capteur n’est pas aussi facile qu’il y paraît. Évidemment, tout le monde pense immédiatement aux populaires et très répandus MPX4115 (par exemple) de Freescale. Je pense que leur précision est insuffisante pour réaliser un baromètre. De plus, leur interface est analogique. Elle oblige donc la mise en place d’une chaîne de numérisation. Pourquoi ne pas trouver un composant plus adapté ?
Laissez-moi vous présenter le MS5534 de la société Intersema [1]. Ce capteur de pression présente, à mon avis, plusieurs avantages. D’abord, son interface est numérique... pas besoin ni de convertisseur, ni de microcontrôleur pour l’interfacer simplement avec un PC (voir la partie suivante). De plus, il est très précis, puisque son erreur dans la plage de mesure courante est inférieure à 1hPa. Enfin, il est extrêmement petit (voir photo) et économe en énergie.
 |
|
Le MS5534-BM à côté d’une pièce d’un centime d’euro
|
Détaillons un peu le fonctionnement de ce capteur. Tous les renseignements qui suivent sont tirés de la documentation [2]. La pression est mesurée par l’intermédiaire d’un capteur piezo-résistif. La tension obtenue est numérisée par un convertisseur analogique-numérique intégré de grande précision. Le composant peut également mesurer et numériser la température du capteur. La lecture des 2 mots de 16 bits correspondants à ces 2 numérisations se fait grâce à une interface série synchrone. Le composant est calibré en usine ce qui permet d’obtenir six paramètres stockés dans une EPROM interne au capteur sous la forme de 4 mots de 16 bits. Ces paramètres, par calcul, donnent une compensation en température de la mesure effectuée. Tous les synoptiques de mesure et de calcul de la pression et de la température sont donnés dans la documentation, ainsi que le protocole de communication avec l’interface série du capteur. À la fin de l’acquisition et du calcul, les deux entiers représentent la température en dixièmes de degrés Celsius et la pression en dixièmes de millibars.
|
Note
|
|
|
Depuis que j’ai acheté et expérimenté ce composant, Intersema en a sorti une nouvelle version MS5534-C au fonctionnement identique et dont les différences essentielles sont une encore plus grande précision et une meilleure résistance aux décharges électrostatiques.
|
Le point délicat concerne l’achat de ce capteur... Parmi les distributeurs courants, je ne l’ai trouvé que chez Sélectronic et à un prix double de celui des MPX* ! Heureusement, Intersema peut vous en vendre directement à titre d’échantillon, le problème étant que la commande se fait pour un nombre minimum d’unités. Organisez des commandes groupées dans les GUL ou entre amis électroniciens... Grâce à cette méthode, vous pourrez acquérir le capteur à environ 40% du prix affiché chez le revendeur cité plus haut (frais de port inclus). Ainsi, le capteur vous coûtera moins cher qu’un MPX*. :-)
|
|
|
2 Une première approche sur port parallèle
|
Voici un premier montage simple du point de vue électronique qui permet une mise en application immédiate du capteur. Tous les fichiers nécessaires pour cette partie sont rassemblés dans l’archive compressée MS5534pp.tar.bz2 disponible au téléchargement sur le site de l’auteur [14]. Le contenu de l’archive est réparti en répertoires faisant référence aux différentes sous-parties suivantes.
 |
|
Figure1 : Détail de l’horloge à quartz et à portes logiques
|
L’interface numérique du MS5534 nous permet de le brancher directement sur le port parallèle de notre PC. La société Intersema fournit un schéma type dans sa note d’application 505 [3].
L’alimentation du montage se fait par l’intermédiaire de 6 lignes de données (qui devront être portées au niveau haut par le logiciel). Il est donc autonome. Chacune de ces lignes est protégée par une diode, puis un circuit de régulation de tension avec une diode Zéner fournit une tension de 3V, tension de service du capteur. Cette alimentation doit impérativement être découplée par un condensateur au tantale de 47µF au plus proche de la broche VDD du capteur.
Le MS5534 a également besoin d’une horloge (convertisseur analogique-numérique oblige) d’une fréquence typique de 32,768 kHz sur la broche MCLK . Cette horloge se doit d’être à quartz, car la conversion est très sensible à l’instabilité de phase (jitter en anglais).
Des portes " inverseuses " sont utilisées pour assurer la translation des niveaux de tension entre les lignes du port parallèle et celles du capteur. L’interface de communication série est synchrone et utilise donc 3 lignes : DIN, DOUT et SCLK. L’horloge de transmission est fournie par la ligne 2 (DATA0) du port parallèle à la broche SCLK.
L’envoi des commandes du PC au capteur se fait par la ligne 3 (DATA1) à la broche DIN et la réception des données par la ligne 12 (PAPER) en provenance de la broche DOUT.
Je n’ai pas pu trouver d’horloge intégrée chez mon détaillant d’électronique. J’ai donc réalisé un circuit avec des portes et un quartz dont le schéma est représenté à la figure 1. L’intégralité du schéma se trouve, au format PostScript (imprimable), dans le fichier ms5534pp.ps. J’ai également changé la référence des portes (celles proposées sur le schéma d’origine n’existant qu’en boîtier CMS).
|
Note
|
|
|
Les fichiers de CAO ont été réalisés avec Kicad [4].
|
J’ai employé toute mon ingéniosité pour réaliser un circuit imprimé simple face avec le minimum de ponts (ce qui explique la répartition un peu tarabiscotée des inverseurs). Je vous propose le typon en résultant dans le fichier ms5534pp-Copper.ps.
Il n’y a que 2 ponts sur l’alimentation. Sa gravure peut paraître délicate au vu du peu d’écart existant entre les pastilles du capteur, mais c’est réalisable (personnellement, j’utilise la méthode à l’acide). Concernant le montage du capteur, j’ai opté pour un montage " à travers ", car le trou à faire est rond et d’un diamètre de 7,5mm ; consultez la documentation du composant pour plus d’information.
Le soudage du capteur doit être fait précautionneusement. En plus de la finesse des pistes, il faut tenir compte de la sensibilité de ce genre de composant vis à vis de la chaleur et des décharges électrostatiques.
 |
|
Le montage terminé vu côté pistes et côté composants
|
Enfin, le montage doit impérativement être mis dans un boîtier afin de protéger le capteur de la lumière, l’exactitude de la mesure en dépend.
Veillez quand même à ce que le boîtier ne soit pas étanche de manière à ce que la pression à l’intérieur suive la pression extérieure.
Du côté commande, il faut piloter le port parallèle. Pas de problème ici, puisque nous avons déjà vu comment réaliser ceci grâce au module noyau ppdev [5]. La bibliothèque de pilotage du MS5534 décrite dans ce qui suit contient une classe C++. L’implémentation de cette classe s’appuie sur une autre classe, SPC, qui encapsule les instructions de dialogue avec ppdev.
|
Note
|
|
|
La bibliothèque SPC est disponible sous licence GNU/GPLv3 sur le site de l’auteur [14]. Pour l’installer, comme pour installer MS5534pp, vous avez besoin de CMake. Que ce soit pour l’une ou pour l’autre de ces bibliothèques, la construction et l’installation se font de la même manière : consultez le fichier INSTALL.
|
Expliquons l’utilisation de la classe MS5534pp.
Le constructeur, auquel on doit passer en paramètre le chemin complet vers le fichier spécial de périphérique attaché au port où est connecté notre montage, se charge de construire une instance de la classe SPC pour accéder à ce port.
La méthode MS5534pp::open se charge d’ouvrir ce port. Si l’ouverture réussit, elle exécute les instructions nécessaires pour alimenter le montage, provoquer un reset du capteur, récupérer les 4 mots de calibration, puis en extraire les 6 paramètres de calcul. À ce stade, nous sommes prêts à mesurer la pression.
La méthode MS5534pp::close assure la libération du port parallèle. Elle est systématiquement appelée par le destructeur de la classe.
La méthode MS5534pp::acquire demande au capteur de faire une acquisition de température et de pression, puis calcule celles-ci. Si on le souhaite, on peut opérer une correction supplémentaire dite du second ordre en utilisant la méthode MS5534pp::order2.
Étudions un peu l’implémentation de la classe dans le fichier MS5534pp.cpp :
L’horloge de la transmission série est produite en inversant à intervalles réguliers l’état de la ligne 2 (DATA0) du port parallèle, par exemple ici (DSCLK désigne le bit 0 du registre DATA) :
|
240:     port.highDataBit (DSCLK); // one duty cycle
241: //  usleep (1000);
242:     port.lowDataBit (DSCLK);
243: //  usleep (1000);
|
Vous remarquerez sans doute que les lignes de code comportant les instructions usleep sont commentées. En environnement utilisateur sur PC, nous sommes loin du temps réel. Sans timing, sur mon PC (je l’avoue, un peu ancien), la fréquence ainsi générée est d’environ 1kHz. Si votre PC est suffisamment rapide pour générer une fréquence beaucoup plus élevée, vous aurez alors besoin de décommenter ces lignes et d’ajuster les valeurs des temporisations.
Les codes des commandes à envoyer au capteur sont enregistrés sous la forme de tableau d’octets : le premier élément contient le nombre de bits à transmettre pour la commande ; les éléments suivants contiennent le masque binaire permettant de positionner la ligne 3 (DATA1) au niveau haut ou au niveau bas conformément au code inscrit dans la documentation.
La méthode privée MS5534pp::out envoie les séquences ainsi obtenues sur le port parallèle en respectant les chronogrammes indiqués par le constructeur : positionnement du bit sur le front descendant de SCLK, lecture par le capteur sur la broche DIN sur le front montant.
La méthode privée MS5534pp::in lit les bits sur le front descendant de l’horloge (ils sont positionnés par le capteur sur la broche DOUT sur le front montant de celle-ci). Les bits lus sont poussés progressivement dans un tampon de lecture de 16 bits.
Concernant la lecture des mots de pression et de température dans la méthode MS5534pp::acquire, après avoir envoyer la commande au capteur, il faut attendre que celui-ci fasse l’acquisition :
|
...
356: do // wait for acquisition
357:Â {
358: } while (port.isHighPaper ());
...
|
Le capteur nous informe que l’acquisition est terminée en passant sa ligne DOUT du niveau haut au niveau bas. Je reconnais que le code ci-dessus contient une faiblesse : il n’y a pas de timeout au cas où le capteur serait planté. Si vous pensez que c’est indispensable, je vous laisse le soin de l’implémenter sachant que la durée maximale de la conversion analogique-numérique est donnée à 35ms.
Pour connaître plus de détails sur l’implémentation que je propose, vous pouvez parcourir le code source. Il est abondamment commenté (en anglais). De plus, vous pouvez générer la documentation de l’API grâce à Doxygen en lançant la commande make html après configuration par CMake.
Le programme d’exemple rPressure fourni avec la bibliothèque MS5534pp est assez simple et illustre l’utilisation de la classe :
|
...
#include "MS5534pp.h"
...
int p, t;
MS5534pp *s;
...
s = new MS5534pp (argv[1]);
if (! s->open ())
{
cerr << s->strerror () << endl;
exit (EXIT_FAILURE);
}
if (! s->acquire (p, t))
{
cerr << s->strerror () << endl;
delete s;
exit (EXIT_FAILURE);
}
s->order2 (p, t);
s->close ();
delete s;
cout << fixed << setprecision(1) << (float)p/10 << endl;
...
|
Le programme prend en paramètre sur la ligne de commande le chemin vers le fichier spécial de périphérique du port parallèle sur lequel est branché le capteur. Il renvoie sur la sortie standard la valeur de la pression avec une résolution de 0,1mbar, celle du capteur. Il est adapté à un relevé périodique grâce à RDDtool [6].
Ce montage constitue une excellente présentation de notre composant. Bien que son interface ne soit pas très actuelle, il est parfaitement adapté à ceux d’entre vous qui ne sont ni motivés, ni équipés pour la programmation d’un microcontrôleur.
" Être moderne... bus USB ? Oui, bus USB ! Aïe, caramba ! " Eh oui, ça fait toujours ça au début. Mais vous allez voir, un bout du chemin a déjà été fait.
Donc l’objectif, vous l’aurez compris, est de réaliser un capteur de pression sur bus USB. Là , pas d’alternative, nous sommes obligés de passer par un microcontrôleur. À l’heure actuelle, l’une des solutions les plus simples est l’utilisation d’un microcontrôleur Atmel AVR et de l’implémentation software du protocole USB par la bibliothèque USBtiny [7]. Cette solution a été présentée dans ce même magazine par notre rédac-chef [8].
Comme pour la partie précédente, tous les fichiers nécessaires sont dans l’archive compressée USBtinyMS5534.tar.bz2 téléchargeable sur le site de l’auteur [14].
Le montage que je décris dans la suite s’appuie sur un microcontrôleur AVR ATtiny2313. Le protocole USB est supporté grâce à la bibliothèque USBtiny. De plus, le microcontrôleur va nous fournir l’horloge dont a besoin le convertisseur du capteur. Pour dialoguer avec le MS5534, nous allons utiliser l’interface série universelle (USI) de l’ATtiny2313.
 |
|
Le montage sur le banc d’essai
|
Vous trouverez le schéma au format PostScript dans le fichier hardware/USBtinyMS5534.ps. Commençons par décrire l’alimentation. Le capteur doit être alimenté sous 3V. La norme USB pour les lignes de transmission est à 3,3V. En jetant un coup d’œil à ladite norme, nous pouvons constater que celle-ci tolère une tension minimum de 2,8V sur les lignes de transmission. La décision est prise : le microcontrôleur sera lui aussi alimenté sous 3V. Ainsi, nous n’aurons qu’une seule source pour tout le montage. Pour obtenir cette tension de 3V, nous utilisons un régulateur de tension LP2950CZ3.0 connecté à l’alimentation du bus USB avec les capacités de découplage qui vont bien.
Le reste du circuit est fort simple. La broche MCLK du MS5534 est connectée à la broche OC1B (PB4) de l’AVR. L’horloge sera générée par le Timer1 en mode CTC. Pour la communication série, la broche DOUT du capteur est connectée à la broche DI (PB5), la broche DIN à DO (PB6) et enfin SCLK à USCK (PB7).
Vous trouverez le typon dans le fichier USBtinyMS5534-Copper.ps. Le circuit est simple face, sans aucun pont. Son format est adapté à un boîtier en plastique ABS bleu de dimensions 72 x 46 x 23 mm vendu par Électronique Diffusion.
|
Remarque
|
|
|
Pour ceux d’entre vous qui souhaitent recompiler le firmware, vous devez d’abord télécharger la dernière version d’USBtiny et copier le répertoire MS5534 contenu dans firmware dans celui contenant les sources de USBtiny obtenu après extraction de l’archive. Le firmware a été compilé avec la version 1.4 de la bibliothèque.
|
Le fichier source du firmware main.c est dans le sous-répertoire firmware/MS5534.
Avant de parcourir un peu son implémentation, je vais vous exposer le protocole de communication que j’ai choisi. Les requêtes USB sont au nombre de 4. Deux sont envoyées sur l’endpoint 0 OUT (transmission de l’hôte vers le périphérique). Ce sont les requêtes MS5534_RESET et MS5534_ACQREQ ; les autres sont envoyées sur l’endpoint 0 IN (transmission du périphérique vers l’hôte), MS5534_CALLOAD et MS5534_ACQLOAD. Afin de ne pas mettre le bus USB en attente pendant l’acquisition, j’ai opté pour un découpage en 2 phases de celle-ci . D’abord, on envoie une requête permettant de commander au capteur de faire une acquisition de pression et de température (MS5534_ACQREQ), puis, après avoir attendu le temps qu’il faut pour réaliser ces acquisitions (2 x 35ms), on envoie une seconde requête permettant de lire le résultat de la précédente (MS5534_ACQLOAD). Pour que l’utilisateur puisse s’assurer que la valeur de l’acquisition a bien été mise à jour, j’ai implémenté un compteur d’acquisition : deux acquisitions successives ne doivent pas avoir un compteur identique. Par conséquent, la requête MS5534_ACQLOAD renvoie 5 octets, les deux mots de 16 bits D1 et D2, plus l’octet du compteur. La requête MS5534_RESET provoque l’envoie d’une commande reset au MS5534. Enfin, la requête MS5534_CALLAOD est utilisée pour lire les 4 mots de calibration du capteur. Elle renvoie 8 octets.
Nous allons suivre le déroulement de la fonction principale :
|
242:  extern int main (void)
243:Â Â {
244:     MCLK_init ();
245:     USI_init ();
246:     usb_init ();
247:     MS5534_reset ();
248:     MS5534_readWs ();
249:     for ( ;; )
250:Â Â Â Â Â {
251:        usb_poll ();
252:Â Â Â Â Â }
253:     return (0);
254:Â Â }
|
Nous commençons par les initialisations. D’abord, concernant le Timer1 (fonction MCLK_init) qui génère l’horloge MCLK, nous configurons celui-ci de manière à ce qu’il fournisse une horloge à une fréquence la plus proche possible de 32,768kHz. Compte tenu de l’horloge de base à 12 MHz, le mieux que nous puissions faire est 32,789 kHz... très bien. Nous configurons ensuite l’interface série universelle (USI_init). Nous utilisons le mode à 3 fils (type SPI) et c’est le Timer0 qui fournira une horloge à 10 kHz pour effectuer la transmission entre le microcontrôleur et le capteur. Vient enfin l’initialisation de l’interface USB par l’appel de la fonction usb_init. Pour terminer, nous nous assurons de l’état du MS5534 en provoquant un reset, puis nous récupérons les mots de calibration W1, W2, W3 et W4 qui sont stockés dans la mémoire du microcontrôleur. Après tout ceci, nous entrons dans la boucle principale qui traite les requêtes USB.
Revenons sur la transmission entre le microcontrôleur et le capteur. L’interface série du MS5534 est compatible avec la transmission SPI. Les séquences d’octets à envoyer pour les commandes sont fournies dans la note d’application 510 d’Intersema [9]. Elles tiennent compte des cycles d’horloge supplémentaires nécessaires lors des échanges de données. La lecture ou l’écriture sont initiées par les appels au fonctions USI_startr et USI_startw. La suite de la transmission est gérée par le vecteur d’interruption de l’interface USI.
 |
|
Le montage terminé côté pistes et côté composants.
|
La programmation du microcontrôleur peut se faire grâce à avrdude :
|
$ avrdude -p t2313 -c usbtiny -U flash:w:main.hex:i \
-U hfuse:w:0xdf:m -U lfuse:w:0xef:m |
Passons au logiciel côté PC. Je vous propose d’une part un programme écrit en C et d’autre part, sur le même principe que dans la partie précédente, une bibliothèque en C++. Les deux utilisent la bibliothèque libusb [10] permettant de contrôler des périphériques USB depuis l’espace utilisateur.
Le programme en C est entièrement implémenté dans le fichier main.c. Son architecture n’est pas différente de celle proposée par Denis Bodor dans sa présentation d’USBtiny. Nous avons une fonction usbOpenDevice qui scanne le bus USB à la recherche de notre montage. J’ai juste rajouté un contrôle des chaînes renvoyées par le périphérique pour être sûr de son identité. En effet, le numéro d’identification de vendeur est celui dédié aux prototypes 0x6666. Le montage ne doit bien sûr pas sortir de votre laboratoire.
|
106:  if ((0 != strncmp (svend, USBTINY_VENDOR_NAME, sizeof (USBTINY_VENDOR_NAME))) &&
(0 != strncmp (sprod, USBTINY_DEVICE_NAME, sizeof (USBTINY_DEVICE_NAME))))
107:Â Â {
108:     usb_close (handle);
109:     handle = NULL;
110:     errorCode = USB_ERROR_MATCH;
111:Â Â }
|
Nous avons ensuite 4 fonctions. Elles adressent chacune une requête au montage :
? MS5534_reset
? MS5534_calibration_load
? MS5534_request_acquisition
? MS5534_acquisition_load
La fonction principale appelle chacune de ces fonctions, puis calcule pression et température.
La bibliothèque C++ contient une classe MS5534usb dont l’interface est quasi identique à celle de la classe MS5534pp. La seule différence concerne le constructeur de la classe qui n’a plus besoin d’aucun paramètre.
Les méthodes publiques permettant la communication avec le capteur reprennent le code d’envoi de message de contrôle sur l’endpoint 0 du périphérique.
La méthode MS5534usb::acquire effectue les deux requêtes USB nécessaires séparées par un délai de 100ms. Elle vérifie que l’acquisition a bien été faite en comparant la valeur du compteur d’acquisition interne au firmware avec la valeur précédente.
L’API de la bibliothèque est documentée suivant la même méthode que pour la bibliothèque MS5534pp. Deux programmes d’exemple sont également fournis. Le programme rPressure est légèrement différent de celui accompagnant l’autre bibliothèque. Il effectue plusieurs mesures de suite (d’origine 20) affiche la moyenne de ces mesures. Ceci permet de s’affranchir du bruit numérique dû à la conversion analogique-numérique effectuée par le capteur.
Si vous le permettez, nous allons terminer par un peu de physique (un tout petit peu).
Pour commencer, afin d’aider ceux d’entre vous qui ne sont pas familiers avec la pression, je vais faire les présentations. La pression est une force exercée par unité de surface. Son unité internationale est le Pascal (Pa) en hommage au physicien, mathématicien et philosophe clermontois Blaise Pascal qui fut le premier à montrer l’existence même de la pression atmosphérique, ainsi que celle du vide [11]. 1 Pascal équivaut à la pression exercée par une force de 1 Newton sur une surface de 1 mètre carré (1 Newton, c’est le poids d’une masse d’environ 100 grammes).
La pression atmosphérique normale au niveau de la mer vaut 101325Pa ou bien, dans l’unité utilisée en météorologie, 1013hPa (hectoPascal, 1hPa = 100Pa). J’ai cité une autre unité : le bar. 1 bar vaut 100000 Pascal. Donc la pression atmosphérique vaut aussi 1013mbar (millibars). Cette pression atmosphérique, conformément à la définition donnée plus haut, correspond au poids de la colonne d’atmosphère au-dessus d’un mètre carré. Ça équivaut au poids d’une colonne d’eau de 10,3 mètres de haut ou encore à celui d’une colonne de mercure de 76 cm. Évidemment, la pression atmosphérique diminue lorsqu’on monte en altitude (la hauteur de la colonne d’air diminuant) [12]. La pression que nous mesurons avec notre capteur est la pression absolue. La pression qu’indique les météorologues sur leurs cartes est la pression relative au niveau de la mer. Si vous désirez enregistrer cette dernière, une bonne solution est de " calibrer " le logiciel en ajoutant le décalage observé par rapport aux cartes de météo [13].
 |
|
La pression atmosphérique absolue à Lyon du 16 au 17 juin. Le beau temps revient-il ?
|
Voici un exemple de relevé de pression absolue obtenu grâce à RRDtool [6].
Terminons par quelques notions de météorologie. J’ai bien dit des " notions "... La météorologie est une science bien trop complexe pour prétendre la résumer en quelques lignes. Usuellement, on entend dire que si la pression relative est haute (supérieure à 1013hPa) le temps sera beau et si la pression est basse (inférieure à 1013hPa) le temps sera pluvieux. Ceci est une idée reçu. La pression actuelle indique le temps actuel.
Si l’on veut " prédire " le temps, il faut prendre en compte l’évolution de la pression. En effet, la répartition des zones de haute pression (anticyclones) et des zones de basse pression (dépressions) conditionne le déplacement des masses d’air et, par conséquent, indique les points de rencontre des masses d’air chaud humide et d’air froid sec donc les points où il va pleuvoir. L’évolution de la pression nous montre donc le déplacement des masses d’air, celles-ci allant des hautes pressions vers les basses pressions, le mouvement tourbillonnant observé sur les images satellites étant dû à la rotation de la Terre (forces de Coriolis). Si la pression augmente, l’anticyclone se rapproche. Les masses d’air se déplacent en " fuyant " le centre de l’anticyclone, il n’y aura pas de rencontre de masses d’air sous celui-ci, donc pas de pluie. Si la pression diminue, c’est la dépression qui se rapproche et donc la zone où se font les fameuses rencontres génératrices de pluie.
Pour être plus complet, il faut prendre en compte la vitesse de l’évolution. Si la pression varie de manière brutale, cela signifie qu’un épisode transitoire et peut-être violent est en approche. Par exemple, lorsqu’un orage arrive la pression diminue rapidement, plus de 2,5hPa par heure.
Voilà , j’espère que tout le monde a survécu et que j’ai été suffisamment clair.
Arrivé au terme de cet article, nous avons réalisé deux montages pratiques (hors catégorie exemples) d’interfaçage avec le PC, l’un sur port parallèle, l’autre sur bus USB. Concernant le bus USB, il y a encore du travail pour qui veut s’en donner la peine : utilisation d’autres solutions hardware, mise au point d’un driver en espace noyau... Que de découvertes en perspective !
Enfin, notre ordinateur est muni d’un baromètre. Des solutions de mesures de température ont déjà été présentées dans d’autres articles.
Il nous manque encore un certain nombre d’équipements pour pouvoir transformer le PC en station de relevé météorologique, mais la voie est ouverte. Il ne reste plus qu’à faire preuve d’imagination et à se mettre au travail.
|
Auteur : Patrice Leygnac
|
|
Liens et références
|
|
|
[1] Site internet de la société Intersema : http://www.intersema.com
[2] Datasheet du MS5534-BÂ : http://www.intersema.com/site/technical/files/ms5534b.pdf
[3] Note d’application 505 d’Intersema : http://www.intersema.com/site/technical/files/an505.pdf
[4] Laboratoire du LIS à Grenoble, Kicad : http://www.lis.inpg.fr/realise_au_lis/kicad/
[5] BODOR (Denis) " Programmation du port parallèle ", in GNU/Linux Magazine, hors-série numéro 23, page 24.
[6] RRDtool, http://oss.oetiker.ch/rrdtool/
[7] USBtiny, http://www.xs4all.nl/~dicks/avr/usbtiny/index.html
[8] BODOR (Denis), " Création d’un périphérique USB avec supports GNU/Linux et Windows ", in GNU/Linux Magazine, numéro 100, page 56.
[9] Note d’application 510 d’Intersema : http://www.intersema.com/site/technical/files/an510.pdf
[10] libusb, http://libusb.wiki.sourceforge.net/
[11] Wikipédia " Blaise Pascal " : http://fr.wikipedia.org/wiki/Blaise_Pascal
[12] Wikipédia " Formule du nivellement barométrique ", http://fr.wikipedia.org/wiki/Formule_du_nivellement_barométrique
[13] Météo France rubrique " Ma météo " : http://www.meteofrance.com/FR/index.jsp
[14] Site de l’auteur, Arvernux : http://www.arvernux.fr
|
Retrouvez cet article dans : Linux Magazine Hors série 38