Un barographe pour Arbutus

Durant ces jours d’hiver, je me suis amusé avec ma carte Arduino parce que j’avais le projet en tête de faire mon propre barographe de précision qui surveillera la pression pour moi … Ceci afin de remplacer notre vieux baromètre que l’on oublie tout le temps de regarder. Et c’est une erreur de ne pas surveiller la pression car cela nous permet de mieux comprendre l’évolution des systèmes météo (anti-cyclone, dépression, talweg, dorsale, etc. …) qui nous entourent. Par exemple, il y a 2 jours, en Grèce, nous étions au beau milieu d’un système anticyclonique, soleil, ciel bleu et peu de vent. Mais subitement, notre barographe s’est mit à sonner parce que la pression chutait. 3 heures plutard, gros nuage et le vent commençait à souffler. Maintenant on a du mauvais temps avec de la pluie … Il faut dire que la pression est tombée bien bas ! Le barographe nous a indiqué en temps réel par une alarme que le temps changeait. En consultant le bulletin météo, c’était une dépression arrivant 3 heures plus tôt que prévue.

Avec un baromètre, il est aussi possible de naviguer sur les bords d’un système anticyclonique s’y vous parvenez à trouver cette bande étroite où le vent souffle. Une fois cette bande étroite trouvée, il suffit de naviguer à « pression constante » pour garder le vent et le baromètre devient très utile car on navigue avec les yeux sur le baromètre. Pour dire vrai, nous n’avons pour le moment jamais navigué comme cela, mais c’est ce que j’ai lu dans l’excellent ouvrage de météo de Jean-Yves Bernot. Avec ce barographe, j’ai hâte de trouver les conditions …

J’ai donc décider de construire un barographe pour Arbutus lorsque j’ai pris connaissance de l’existence des cartes Arduino.
Arduino, quesako ? Et bien c’est une carte électronique possédant des entrés sorties analogique et numérique et bien plus encore. Avec cette carte il devient possible pour un novice en électronique de faire des systèmes où seul l’imagination à ses limites …
Pour en savoir plus sur Arduino allez voir ici.
Avec Arduino, il devient facile de connecter des capteurs, des moteurs, des moteurs pas à pas, des écrans, de lire des flux NMEA, de mettre des boutons, etc. … Et derrière le mot Arduino, il y a une communauté de passionnés. Il devient donc facile de trouver des tutoriels, des exemples. La chose qui pourrait rebuter est la programmation en C. Pas besoin de connaitre parfaitement les pointeurs et leur allocation de mémoire dynamique, Arduino ne possédant pas beaucoup de mémoire pour le programme, il vaut mieux limiter l’utilisation des librairies … Il faut quand même connaitre comment construire une fonction, les boucles, les conditions, etc…. La base quoi !

Pour le barographe, j’ai utilisé une carte arduino Uno, un écran LCD, un capteur de pression de précision BMP085, un bouton poussoir, un buzzer, et une carte de prototypage.
Arduino Uno : 19.50 Euros
TFT Screen : 22.70 Euros
BMP085 : 9.20 Euros
Proto Shield Arduino Mega Rev 3 : 6.3 Euros

Un régulateur de tension pour transformer la tension des batteries en +7V est aussi nécessaire pour alimenter l’Arduino.

Total : aux alentours de 60 euros sans les fameux frais de port. Et il est possible de faire descendre le prix beaucoup plus bas en achetant en Chine (ce que je fais maintenant) …

Si vous obtenez tout ces équipements, vous devriez avoir la même configuration que moi. J’ai dessiné un schéma pour illustrer comment sont inter-connectés les modules entre eux :
PTDC0258

Pour le choix des valeurs des résistances, n’hésitez pas à me suggérer d’autres valeurs.

Comment est alimenté le barographe ? J’utilise un régulateur de tension qui descent la tension du bord( 12V et plus) à 7V.

Aussi, il est important de dire que ce barographe ne perturbe pas mes autres instruments du bord comme peut le faire un peu mon ordinateur de bord ou le régulateur de tension de mon écran. Aucun parasite n’a pour le moment été observé !

Maintenant, comment dire à la carte Arduino de faire « Papa, maman » ? Avec le code C bien sûr !

Notre barographe est capable d’afficher un graphique de l’historique de la pression sur : 3, 6, 12, 24, 48, 72, 96 et 120 heures. Et il affiche en temps réel la tendance de la pression sur 1 heure et 3 heures, la pression de l’instant ainsi que la température.

capture

Il sonne lorsque la pression chute plus rapidement que 140 Pa/h. Pour éviter que le barographe sonne trop souvent, une fois que l’alarme a été acquittée par le marin, la barographe ne resonnera pas avant 3 heure pour une nouvelle alarme.
Le buzzer que j’avais, a une fréquence de résonance à 2500 Hz, donc, j’ai configuré dans le code pour que l’alarme soit à cette fréquence. Cela fait que l’alarme est bruyante.

Pour ceux qui veulent modifier le code C, ils sont les bienvenus à partager leur améliorations. Spécialement les améliorations qui visent à réduire la quantité de mémoire utilisée ! En effet, arduino uno n’embarque que 32Kb de mémoire pour le programme et le programme dispose ensuite que de 2Kb de mémoire vive. C’est très limité et dans l’état actuel du programme, si vous souhaitez ajouter du code C, il vous faudra d’abord optimiser le code pour trouver de la place car il n’y a plus de place !

Autre chose ! N’ayant pas réussi , au début, à faire fonctionner l’écran seul, la solution a été de mettre à jour la librairie TFT avec la dernière version. Au moment de mes tests, la dernière version de la version TFT était inclue dans la version bêta du logiciel 1.5.5 … Ainsi, en utilisant une version de l’IDE d’Arduino supérieure à 1.5.5, tout devrait fonctionner.

Vous pouvez obtenir la dernière version du barographe sur GitHub.

Comme vous pouvez le lire dans le code, je n’ai pas utilisé de tableau contenant l’historique de le pression pour sauver de la mémoire. Lorsque je lis une nouvelle pression, je l’écris en fin d’un fichier qui contient l’historique de la pression.

Lorsque j’ai besoin de dessiner l’historique pour chaque échelle de temps, je lis le fichier historique à chaque fois. De même, lors de la mise à jour des tendances de pression, je lis ce fichier.

Ce fichier est physiquement sur la carte SD que vous devez insérer à l’arrière de l’écran. J’ai utilisé une carte de 2Gbyte. La moins cher des cartes SD fera l’affaire.

Ici quelques photos du barographe réalisé et installé :

I_DSC3229

_DSC3232

_DSC3233

Ne sous-estimez pas la difficulté pour faire une belle boite en bois qui contiendra votre barographe. Ça prend du temps et nécessite de l’attention.

Voici quelques photos de ceux qui l’ont réalisé :

Le clown :

IMG_20140615_162254

IMG_20140615_162735 (2)

IMG_20140609_161836

IMG_20140609_161415 (1)

Et le carbone :

IMG_1072

IMG_1070

Bravo à ceux qui l’ont réalisé !

Bon vent ou plutôt bonne pression :-)

21 thoughts on “Un barographe pour Arbutus

  1. alain on

    tres tres bien
    une bonne démarche pour les petits marins que nous sommes
    mais commence procurer ce petit bijou

    merci de votre reponse

  2. Anton on

    WOW!
    Mate you are really good programmer! I’m amazed by your skills! I have been looking for ages trying to find nice graphing code and this went over my expectations! Awesome work!
    I noticed that i get some weir readings on the top of the screen, they are « -31633Pa/h-31630Pa/ ». I think this is because of the code formatting on the web page, but I cannot pinpoint the problem. Do you have any idea what is wrong?

    Big thanks!

    • Yes, it looks like the code formatting of the web page doesn’t work very well.
      I will email you the arduino sketch by email.

  3. Bonjour,
    Excellent article!…j’aime beaucoup l’introduction qui explique l’usage du BMP et barographe….je ne fais pas de navigation… donc cela ne coule pas de source pour moi ;- ).

    Je fais suivre l’info sur Arduino Notepad ( blog.mchobby.be ).
    Dominique

  4. Eric Bergelin on

    Bonjour,
    J’ai bien réalisé le montage,
    après avoir contourné les embûches (librairie TFT, librairie 085/180), buzzer trop faible, … Il fonctionne. Pourriez-vous publier la dernière version du code C , (celle proposée ne correspond pas aux HD d’écran avec la température).
    Je vous fournis des photos de l’instrument à bord dès que possible.
    Bravo et merci !

    • Bonjour,
      Bravo pour la réalisation, je suis heureux de voir que ce barographe servira à d’autres navigateurs !
      La dernière version du code ne contient pas l’affichage de la température car, les températures observées n’était pas vraiment très précise (supérieure à la réalité), et comme j’avais besoin de mémoire programme pour gérer l’appuie du bouton par interruption, j’ai supprimé cette partie du code. De ce fait, les captures d’écran publiées dans cette article ne correspondent plus à la dernière version du code.

  5. daniel coppens on

    Bonjour,

    félicitations avec ce projet. J’ ai décidé de construire votre barographe en remplacement de mon Bohlken Westerland défectueux.
    Pourriez-vous m’envoyer la denrnière version du code C par mail.
    Merci d’avance et encore bravo;
    Daniel

    • Bonjour,
      la dernière version du code est telechargeable sur la page concernant le barographe.
      Je reste à votre disposition si vous avez des questions ou des remarques.
      Bonne réalisation,

      Paul

  6. thierry M de Butry on

    Bonjour.
    Tout d’abord bravo pour cet article et ce montage qui correspond bien à mon besoin.
    Une peite question : Avec quelle version de l’IDE Arduino peut on compiler votre code ?
    ESt il facilement adaptable pour un acran TFT de 1/8″ (je ne suis pas un super pro du codage…).

    Merci encore et je garde votre site dans mes favoris :-)

    Thierry

    • Bonjour,

      Comme indiqué dans l’article, il faut utiliser la version 1.5.x beta car sinon il y a des problemes d’affichage.
      Pour adapter le code a un autre ecran, il faut modifier le code. Bien que cela ne soit pas compliqué, une simple modification peut impliquer des difficultés insoupconnées car ds ce programme pour arduino, on manque terriblement de memoire programme …
      Bon courage,

      Paul

  7. thierry M de Butry on

    Ooops !! En effet je suis passé un peu trop vite sur le texte de l’article ;-).
    Merci Paul pour la réponse rapide en tout cas.

    Je vais passer à la réalisation et ferais part du résultat !
    Bonne journée,

    Thierry

  8. Carlos on

    Thank you very much for sharing your great job.
    I’m trying to do the work becouse i find it very useful for my boat. I am now sailing in Argentina and here is hard to find hardware. I am trying to adapt the code to other periphericals. By now I arrived at the end of compilation without syntax errors but there are some « compilinng errors » it seems all about the SD card, any suggestions?

    In file included from C:\Users\Carlos\Documents\Arduino\libraries\SD/SD.h:20,
    from Arbutus.ino:4:
    C:\Users\Carlos\Documents\Arduino\libraries\SD/utility/SdFat.h:286: error: conflicting return type specified for ‘virtual void SdFile::write(uint8_t)’
    C:\Program Files\Arduino\hardware\arduino\cores\arduino/Print.h:48: error: overriding ‘virtual size_t Print::write(uint8_t)’
    In file included from Arbutus.ino:4:
    C:\Users\Carlos\Documents\Arduino\libraries\SD/SD.h:28: error: conflicting return type specified for ‘virtual void File::write(uint8_t)’
    C:\Program Files\Arduino\hardware\arduino\cores\arduino/Print.h:48: error: overriding ‘virtual size_t Print::write(uint8_t)’
    C:\Users\Carlos\Documents\Arduino\libraries\SD/SD.h:30: error: conflicting return type specified for ‘virtual void File::write(const uint8_t*, size_t)’
    C:\Program Files\Arduino\hardware\arduino\cores\arduino/Print.h:53: error: overriding ‘virtual size_t Print::write(const uint8_t*, size_t)’

    • It looks like it’s coming from the SD library … Why is your SD Library located in your « Documents » ? Are you using a specific SD library ?
      Which SD card are you using ?
      I used the SD library provided by the IDE « C:\Program Files\Arduino\libraries\SD\src » …
      Did you try to use your SD card alone ?

    • I used the sensor’s library and it works well for me.
      I never used your screen but I advice you to use each components independantly before integrated all together …
      Like that, you have a proof that the component and its library work well.
      This is what I have done when I realized this barograph at the beginning.
      I never used ucglib either, but as we run out of memory space in the arduino for this program, it would be wise to modify the library to save some memory space (remove all the font defined you don’t need for example …)

      Also, because your screen doesn’t have the same resolution of the screen proposed in this article, think about modifying the code … I had a look on the code, it shouldn’t be complicated …

  9. Daniel on

    Bonjour Paul
    Fin août je vous ai annoncé que je voulais entamer le projet du barographe. Je me suis inspiré de votre projet que j’ ai adapté un peu aux composants utilisés et simplifié car je n’ ai pas d’ échelle variable.
    J’ai bien progressé et les différents modules fonctionnent .
    Comme écran TFT j’ ai utilisé le 2,2 de adafruit avec carte SD et j’ utilise un pro mini arduino.
    À ce jour j’ ai un problème que je ne parviens pas a résoudre.
    Je peux lire les données du capteur BMP180 et dans un autre sketch je peux écrire des données sur la carte SD.
    Si j’ essaye dans le même sketch de lire des données du capteur et sauvegarder sur la carte SD cela ne fonctionne pas.
    Je ne parviens pas a comprendre pourquoi et ou est l’ erreur.
    Si vous voulez jeter un coup d’ œil sur ce probleme je peux vous envoyer le sketch par mail ainsi que une photo de l’ état de l’ écran en simulation.
    Merci d’ avance
    Daniel

  10. Vincent on

    Bonjour,
    Est que votre arduino marche toujours? L’alimentez vous sur le 12V du bord? Il parait qu’il n’aime pas trop les surtensions.
    Merci

    • Bonjour,

      Oui, le barographe fonctionne toujours et est redevenu utile depuis que nous avons quitté les tropiques.
      Je ne branche pas l’arduino directement sur le 12V du bord, j’utilise une régulateur de tension pour l’alimenter en 7V.

      Cordialement,

      Paul

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>