DIY GnuVario : variomètre opensource - openhardware Arduino

bon, pas réussi à résoudre pour de bon mon pbm de boot-loader, la nuit devrait porter conseil.
J’ai même cru à un moment avoir brické completement mon vario…
Mais finalement j’arrive quand même à mettre à jour le firmware en téléversant “classiquement” depuis l’IDE, (donc sans passer par la carte SD), c’est déja ça. J’ai fait sortir provisoirement un petit connecteur pour le FTDI.

Baptiste: une petite question sur la sélection du programmateur dans l’étape 4 de ton mini tuto, il faut prendre “arduinoISP” (sans espace) ou “arduino as ISP”?
Avec le premier, j’ai un message d’erreur : “avrdude: Error: Could not find USBtiny device (0x2341/0x49)”
(note: J’ai bien mis le condo 10µF)
Avec le second, j’ai un message plus long, et je brick carrément la carte programmateur, (impossible de re-televerser dessus classiquement)… à priori j’ai fumé 2 arduinos :tomate:

si non, j’ai fait les essais de déplacement de la carte BT
Finalement ça ne passe pas du tout dans aucune des 2 solutions évoquées.

J’envisage 2 autres pistes :

  • Décaisser un petit rectangle dans le fond du boitier de la taille de la carte, l’insérer et refermer avec le velcro sur toute la surface.
    Pas super élégant mais ça devrait faire le job.
    Dans cette position :

https://img4.hostingpics.net/pics/254230IMG20170507001934.jpg

  • Remplacer le lecteur de carte SD par un mini SD, avec un petit connecteur en fils fin (ça devrait être neutre d’un point de vue du code), et ainsi gagner la place de mettre à coté le module BT.

https://img4.hostingpics.net/pics/589943IMG20170507001845.jpg

Je pense partir sur la première solution pour l’instant.

Moi j’ai monté la carte bluetooth à l’emplacement prévu et j’ai réussi à avoir la vitesse au bout de 3mn30 ! C’est pas si mauvais !
Je verrais demain si le fix gps est stable

Quand on voie la différence de taille entre un lecteur de carte SD vs un miniSD, il est évident que si on veut gagner de la place c’est une voie intéressante. le module BT pourrait utiliser cette place économisée.
je vais me commander un lecteur de mini-carte pour voir.
mon inquiétude est que la mini-carte SD risque d’être plus difficile à insérer et sortir du boitier.

Pas de panique Ptikiki !

C’est juste moi qui ait mal expliqué :oops: Et c’est impossible que tu ait brické une carte Arduino sans vrai programmateur. En plus j’avais oublié que Arduino avait créé eux même un programmateur : d’où le “ArduinoISP”.

Alors voici les précisions que j’ai oubliés :

-> Si tu n’arrives plus à uploader sur ton Arduino “programmateur” c’est à cause du condensateur et du fait qu’il soit connecté à l’autre Arduino. En fait le condensateur sert à empêcher le Reset de l’arduino. Donc déconnectes juste ton arduino de la breadboard et tu pourras à nouveau télécharger des sketchs dessus par le port série.

-> Ensuite rebranche le sans condensateur dans un premier temps. Et effectivement il faut mettre dans l’IDE “Arduino as ISP” et choisir le modèle de la carte que tu programmes (pas le modèle de la carte “programmeur”).

-> Vérifie les connexions entre les deux arduinos pin à pin (pour vérifier que je ne t’ai pas dis de bêtises avec le connecteur d’écran). Puis fais un essai : “burn bootloader”.

-> Si ça ne fonctionne pas ajoute le condensateur.

-> Une fois que c’est bon. Récupère les deux commandes et change le firmware du bootloader.

Pour le repositionnmeent du bluetooth :

T’es sur que ça ne passe pas ? Moi je viens de faire un essai rapide et c’est vraiment pas loin avec le bluetooth posé contre les cartes. As-tu tordu les broches de l’écran ? Parceque je pense que ça pourrait passer (mes excuses pour les tirets à répétitions) :
-> En tordant les broches dans l’autre sens vers l’antenne.
-> En refaisant un connecteur d’écran plus court qui se connecte directement côté antenne. (Je sais pas si je suis très clair, pour l’instant les “pipes” du connecteur sont tournées vers le bas du vario. On pourrait les tourner vers le haut, vers l’antenne)
-> En dessoudant le bouton reset (il fait pas mal de hauteur inutile)
-> Peut-être en tournant à 90° la batterie dans l’autre sens partie jaune vers le bluetooth.

Super que tout le monde ait réussi à faire marcher l’IDE ! :pouce:

Non mais là il faut juste le sortir plus souvent ou arrêter de tirer sur la laisse…

:sors:

J’ai un petit soucis de temps en temps que je n’arrive pas à comprendre :
Le vario ne initialise pas :

m/s et m s’affichent mais c’est tout. Pas de bip, ni rien. Je suis dans cette conf :

#define HAVE_SPEAKER
#define HAVE_ACCELEROMETER
#define HAVE_SCREEN
//#define HAVE_GPS
//#define HAVE_SDCARD
#define HAVE_BLUETOOTH

J’ai pourtant réussi à faire firmwareUpdate() en le retournant donc j’imagine que c’est pas un pb de Fastwire. Est ce que ça bloque à ce niveau :

  while( ! (ms5611_dataReady()
#ifdef HAVE_ACCELEROMETER
            && vertaccel_dataReady()
#endif //HAVE_ACCELEROMETER
            ) ) {
  }

??

ça me la fait que 2 fois pour le moment, et j’ai réussi à faire un FirmUpdate et après ça ne fait plus… Étrange. A noter : jamais aucune interruption du vario après.

Ca m’est arrivé aussi. Deux hypothèses :

-> Soit on initialise trop vite l’accéléromètre à l’allumage sans lui laisser le temps de “démarrer”. Ca expliquerait pourquoi le problème n’apparait pas quand la SD Card est activée car elle s’initialise avant et laisse donc un petit délais à l’accéléromètre.

-> Soit la batterie est à un niveau suffisant pour alimenter l’arduino mais pas pour alimenter l’accéléromètre. Du coup parfois l’un démarre et pas l’autre.

On va peut être devoir ajouter à la bibliothèque de l’accéléromètre une vérification du temps minimal depuis l’allumage. Vérifie aussi qu’il n’y à pas un court circuit avec les deux connecteurs de gauche de l’écran (VCC et GND). Je n’aurais pas du les mettre si proche. Il faut vraiment faire attention de bien les isoler.

Pour le GPS/Bluetooth :

Ca y est je me suit lancé dans le code. Voici le principe :

Il n’y aura plus qu’un buffer pour la réception et l’émission de 128 octets. Lorsque le GPS envoie des données elles sont écrites dans ce buffer et l’entête NMEA et la parité sont vérifié. Si la trâme n’est pas GGA ou RMC ou si la parité n’est pas bonne la trame est enlevée du buffer. Ainsi lors de l’envois du GPS tout devrait rentrer dans le buffer sans avoir besoin de lire les données pour le libérer.

Une fois les données reçues ont peut les analyser dans le buffer tranquillement. Il contient simplement les deux trâmes GGA et RMC. Pendant ce temps le buffer est aussi utiliser pour envoyer les deux trâmes sur le bluetooth.

Ensuite on jette l’ensemble et on écrit les données supplémentaires à envoyer dans le même buffer. Il sera assez grand pour recevoir les trâmes LXNAV ou openvario que l’on envoie. Il pourra alors faire l’envoie efficacement.

A+

niveau batterie, le reversale est en 2000mAh, aidé d’un microcontroleur qui s’endort de temps en temps … :wink:

En passant sur un circuit unique et pas des briques ensemble, je pense qu’il est possible de gagner un peu d’autonomie (pas de passage de 5V a 3.3 dans chaque brique)
Il avance petit a petit, Si des personnes veulent vérifier d’ailleurs mon schema, je suis pas a l’abris d’une boulette. (mon objectif est de passer le vario en CMS sur un seul circuit imprimé)

Il est chargé à fond et pas de cc, j’ai tout isolé très proprement avec de la gaine thermo à la taille idéale (merci le taf…)

Le délais, m’étonnerai pas. Là ça me le fait presque à tout les coups.
Je viens de rajouter un delay(500) et une petite musique d’allumage. Là je ne semble plus avoir le soucis. A voir si ça le refait.

Super pour la partie optim du buffer !!! karma+

@gargle : il me semble que l’on a pas de 5V. On passe du 3,7 au 3,3 dans chaque brique effectivement, pas de quoi trop perdre tout de même. Effectivement pour le futur si vous faites une version tt intégré, ça devrai être mieux avec -comme dit prunkdump- un seul bon régul.

Moi avant de souder la batterie, je l’ai cyclé une fois sur un chargeur modélisme. Il me semble avoir tenu facilement 2h avec fix GPS en auto.
Et pour avoir testé pas mal de batteries, les infos des batteries pas cher sont souvent un peu fausses. Normal, il y a une tolérance, mais rarement à notre avantage ! (C’est flagrant sur les accu 18650)

PS : ancien modéliste aussi =) (encore un peu mais vachement moins !).

Que l’alti affichée sur l’écran du vario soit rectifiée après le fix GPS ; c’est bien. de toute manière, on ne peut pas le rectifier autrement.

Mais je crois que si on transmet en NNMEA une altitude barométrique à une app externe, il faut transmettre l’alti normalisée.
Si on transmet l’altitude qui a été recalée par rapport au premier fix GPS, on envoie alors une alti calculée GPS ; c’est très différent, et ca ne présente plus d’intéret.

J’en profite pour signaler un petit “bug” je pense, dans la manière de traiter le premier fix GPS :
J’ai des problèmes de fix GPS avec mon vario ; je vous en ferais part dans un prochain post.

Tout à l’heure, j’ai démarré mon vario à l’extérieur, dans un espace libre, immobile.
Affichage de l’altitude largement inférieure à l’altitude réelle ( différence de 50 m ?) ; donc, je pense que c’était l’altitude baro normalisée
Il a mis un certain temps (5 mn ?) pour arriver à faire le fix GPS ; ou plutot, à afficher en bas O km/h et O Gr.

Mais visiblement, la qualité du signal GPS était très mauvaise :
. il continuait à afficher une vitesse de 0 km/h alors que je marchais assez rapidement ; ceci pendant au moins une minute.
. pendant tout ce temps, il n’a pas recalculé l’altitude comme il le fait normalement, lorsqu’il a les infos GPS.

Le problème : au bout d’environ une minute, les infos GPS ont bien été prises en compte ; en tout cas, la vitesse s’est bien affichée.
Mais l’altitude recalculée, probablement à partir d’infos GPS par encore stable, était très largement surévaluée ; plus de 50m dans l’autre sens (en positif)
Ensuite, je me suis baladé à pied, sur un terrain avec du dénivellé ; l’altitude affichée a bien suivi ce dénivellé (varie positivement quand ca monte, négativement quand ca descend), mais le décalage erroné positif de plus de 50m a persisté.

Je ne sais pas comment on peut traiter ce problème correctement.
Il faudrait :
. soit pouvoir forcer à nouveau le recalcul d’altitude à partir des infos GPS
. soit pouvoir saisir un QHN ; peut-être dans une future version du vario ?

Je vous fais part de mes petits soucis avec le vario.

pour le moment, le module bluetooth n’est pas encore installé.

1er problème :

Le fix GPS est très difficile ; environ 5 mn sur une terrain dégagé, en restant immobile.
Je vais essayer de sortir l’antenne GPS du boitier pour voir si ca améliore la réception.

2eme problème

Un blocage du vario, lorsque je démarre avec une sdcard insérée (à priori, pas de blocage si pas de sdcard dans le lecteur) :
environ 1 ou 2 mn après le “fix GPS”, le vario se bloque ; je suppose que c’est au moment de l’écriture de la trace sur la sdcard ?

Coté sdcard, je retrouve des fichiers GPS000.TXT, GPS001.TXT, … tous à 0 octets

J’ai lansé un fsck linux sur la sdcard ; ca donne ceci :
fsck de util-linux 2.27.1

fsck.fat 3.0.28 (2015-05-16
)
0x25: Dirty bit is set. Fs was not properly unmounted and some data may be corrupt.

Automatically removing dirty bit.

/GPS000.TXT
File size is 0 bytes, cluster chain length is > 0 bytes.
Truncating file to 0 bytes.

/GPS001.TXT
File size is 0 bytes, cluster chain length is > 0 bytes. Truncating file to 0 bytes.

C’est une sdcard de 16 Go, que j’ai repartitionnée sous linux avec gparted :
1 seule partition principale de 2 Go, formatée en FAT16

Je l’utilise pour la mise à jour de firm ; elle est donc bien reconnue par le vario

Une idée ?

Hello,

Pas d’idée pour ton probléme, mais je me demande si mon “pbm” de bootloader n’était en fait un pbm de sd card également…

En tout cas, j’ai réussi à recharger le bootloader, un grand merci à prunkdump pour l’aide précieuse.
Et il à fallut que je reformate la SD pour que ça marche, c’était peut-être la root-cause, même si comme toi vmath54, les fichiers se créaient bien…

Bcp de temps perdu, mais je vais pouvoir maintenant repasser à des choses plus utiles, ce sont les joies du bidouillage :pouce:

@vmath54
Entièrement d’accord :
Trames RMC et GGA : alti GPS - donnes gps
Trames lxnav ou autre : pression baro non corrigée ou alti non corrigée.
Bon d’après mes essais avec XCtrack c’est pas grave. Il fait le recalage avec l’alti gps en permanence et utilise la donnée baro pour les variations. (Enfin c’est paramétrable)

Par rapport au fix et la correction juste après, on en a parlé il y a qq pages. On sait que c’est à revoir.
Correction continue (98% alti baro + 2% alti GPS) ou dès que la précision est correcte…

Entrer un QNH : ça doit être faisable via XCSoar. Mais bon… Bien pour toi en planeur peut être :wink:

Désolé Gargle je n’arrive pas pour l’instant à trouver le temps de bien analyser ton schéma. Je veux pas dire de bêtises. J’ai juste vu que tu étais resté sur un schéma à 5V. A mon avis il faudrait mieux repasser à 3.3V qui est plus standard pour tous les composants.

Justement pour les régulateurs :

J’ai trouvé que pololu faisait des régulateurs “haute performances” :

https://www.pololu.com/product/2122

C’est bien trop cher pour nous mais ça pourrait être interessant d’en avoir un équivalent pour tester. Gargle tu pourrais utiliser le schéma sur leur site. En enlevant quand même quelques condensateur (la c’est un peu à la limite du ridicule).

@vmath54 je pense aussi à un problème de formatage (A moins que tu ais activé le bluetooth dans le code qui pour l’instant bugge avec la carte SD ?). Est tu sûr que ta partitition ne fait pas plus de 2Go ? Attention même quelques octet en plus la rende incompatible. Puisque tu est sous linux reteste avec une partition de 1G avec la procédure suivante :


1) Trouve la carte SD :
-> ls /dev/sd*
-> Insère la carte SD
-> ls /dev/sd*
-> observe les nouveaux fichiers qui sont apparus. Disons /dev/sdb* pour cet exemple.

2) Créer une partition de 1Go
-> fdisk /dev/sdb
: d      (efface une partition, à répéter pour tout effacer)

: n (nouvelle)
: p (primaire)
:     (par défaut, partition 1)
:     (par défaut, first sector)
: +1G  (Pour last sector)

:t     (changer type) 
:6    (FAT16)

:w   (pour écrire ou "q" pour quiter sans écrire)

3) Formatage de la partition 

-> mkfs.vfat -F16 /dev/sdb1


Pour l’envois des infomations sur bluetooth/carte SD :

Effectivement je pense que vous avez trouvé la meilleure solution :pouce:

-> On envois sur le bluetooth les trames GPS non modifiées. En les ayant interprété au passage : affichage de la vitesse, recalage de l’altitude barométrique (à améliorer :D), date heure, nombre de sattellites.

-> On envois aussi des trâmes LXNav avec l’altitude normalisée, le vario (et plus si on arrive à implémenter)

-> On envois au démarrage une entête IGC sur la carte SD. Puis des trâmes “B” au fur et à mesure du vol.

Est-ce que quelqu’un à testé si on pouvait enlever des fichiers IGC tout le bordel à la fin ? :grat: Est-ce encore accepté par les logiciels ?


Edit :

Super ptitkiki que tu ais réussi. Et ce n’est pas du temps perdu ! Ca t’as appris comment programmer des bootloader et ce n’est pas rien. Moi il m’a fallut une semaine pour bien maîtriser tout ça et pouvoir vous envoyer les cartes pré-chargé. Je suis sûr que tu t’en servira un jour.

A+

:+1: pour tout !
Les igc j’avais déjà test, ça peux s’arrêter comme ça. Par contre faudra tester la dernière trame B incomplète si ça merde. Mais assez facile à corriger.

J’avais bien formaté FAT 16, avec une seule partition primaire de taille inférieure à 2 Go.
Et avec le dernier code du dépot git sans modification (sauf le niveau sonore) ; donc le code bluetooth est bien désactivé.

J’ai reconfirmé en suivant à la lettre ta proposition.
Même problème : ca bloque dans la minute qui suit le fix GPS. A chaque fois, il crée le fichier GPS000.TXT avec 0 octets.

Confirmé plusieurs fois ; confirmé aussi que ca ne bloque pas si je retire la sdcard.

Bon, faut que je me sauve, je continuerais plus tard …

Je rentre d’une après de vol, petit retour et gros bug

j’ai fixer le vario sur le faisceau d’élévateur gauche et mon syride nav à droite.
1ere constatation la vario est très réactif, il est presque aussi sensible que mon syride, il n’a pas de retard, le volume est niquel et l’affichage est très lisible

Malheureusement, j’ai eu un fonctionnement très bizarre, je m’explique :

1er problème : après 5 à 10min de vol, l’écran du vario est passé en inverse vidéo, il s’est éteint, plus d’affichage, le son fonctionné toujours.
2eme problème : En vol, j’ai éteint et rallumé le vario, l’affichage est revenu. Vario et de l’altitude se sont affiché pendant quelques minutes, je pense le temps du fix du gps et la tout à planté, plus de son ni d’affichage
3eme problème : après ce second bug, j’ai essayé de rallumé le vario 2 ou 3 fois sans succès. de retour à la maison tout remarche mais aucun enregistrement sur la SD

je pense qu’il y a un bug au fix du GPS ou à la perte du fix, j’ai volé avec une couche de nuage totale et un plaf de 300 à 400 m au dessus, les GPS n’aiment jamais bien ça.
couverture nuageuse 8/8, aérologie dynamique, thermique malgré la couverture nuageuse et vent fort, le vario bipper pas mal

Décidément vous excellez en bug bizarre … :shock: Bin au moins le vario est bien testé ! Mais il va falloir débugger :grat:

Pour vmath54, si tu as formaté comme moi le problème vient forcément du driver de carte SD que j’ai programmé (sur le vario) :? Il ne serait pas compatible avec toutes les cartes. Malheureusement cela vas être très difficile pour moi à debugger sans avoir la carte en main.

Il faudrait déjà que tu essayes avec une autre carte (plus ancienne si possible) pour être sur que le problème viens de la bibliothèque. Dès que j’ai un peu de temps de t’enverrai un petit programme tester la lecture de la carte SD. As tu par hasard une breadboard, un arduino et un lecteur de carte SD ?

Pour jpg63. Quel dommage qu’il y ai eu un problème en vol ! On aurait pu avoir une première vrai trace :smiley: Alors ici je suis presque sur que cela viens d’un faux contact. Et comme l’écran et la carte SD partagent les même connexions : un faux contact sur l’un peu avoir une influence sur l’autre.

Je dis ça parceque la bibliothèque de l’écran n’envois jamais la commande de retournement d’écran. As-tu vérifié l’isolation de tes connecteurs d’écran ?

Je veux bien la référence de la gaine thermo idéale Xiboard :smiley:

Arff ! pas facile à trouver une vielle sdcard. J’avais cherché dans les magasins une sdcard <= 2Go, je n’ai pas trouvé.
Celle que j’utilise est une samsung 32 EVO+ achetée récemment ; c’est du luxe pour l’usage en cours.
Donc, une micro usb avec la carte adaptateur SD.
Je l’ai utilisée par ailleurs, en FAT 16 : délog de flarm, nouveau firm pour ce vario, … ca fonctionnait.

Pour le breadboard et l’arduino : oui j’ai cela.
Pour le lecteur sdcard : j’ai un module lecteur de micro sdcard ; celui-la :
http://www.ebay.fr/itm/2PCS-TF-Micro-SD-Card-Module-Mini-SD-Card-Module-Memory-Module-Arduino-ARM-AVR-/311445858353

Je suis pret à faire des tests si ca peut faire avancer le chmilblick
J’ai qqs compétences en informatique, ca pourrait aider.

pour les problèmes de fix gps : pas encore eu le temps de creuser. Mais je dispose d’un autre module GPS, que je pense identique à celui du vario ; je vais pouvoir intervertir l’antenne, pour voir si ca améliore.

j’ai mis de la gaine thermo sur chaque pin de l’écran, mais je vais tout vérifier et certainement souder l’ensemble de la connectique de l’écran. Je referais des tests, j’ai quant même l’impression que le problème est arrivé lors du fix du GPS alors que le vario bipper était en pleine charge

je referais d’autres vols et d’autres tests

Je ne pense pas que ce type de régulateur corresponde bien à ce que l’on recherche…
C’est un step-up/ step down, c’est à dire qu’il porte la tension à 3,3v, en alimentant au dessus OU au dessous.
Pour nous, il ne faut qu’un step down, puisque via l’USB (5v) ou via la batterie (entre 4,2 et 3,6v), il ne faut que réduite la tension. Le circuit sera plus simple que sur ce modéle.
En restant chez Pololu, ça serait plutôt :
https://www.pololu.com/product/2842

Mais n’importe quel régulateur 3,3v faible bruit faible dropout devrait faire l’affaire, par exemple celui ci, avec le montage proposé dans la datasheet :
http://www.linear.com/product/LT1763

étrange, moi j’ai une 4go (taille réélle du volume 3,7Go), formatée en FAT sous win7, et no pbm, pour la mise à jour de firm ni pour l’écriture de la trace GPS…

C’est clair, je voulais dire temps perdu par rapport au vario, mais clairement pas du temps perdu pour moi, même si j’ai bien galéré :wink: Ça fait longtemps que je me demandais comment flasher un bootloader, ça ouvre la porte des cartes custom, c’est énorme, un grand merci à toi pour tes explications didactiques :pouce:

@Gargle : je suis preneur de checker ton schéma en cours, tu dessines sous quoi?