DIY GnuVario : variomètre opensource - openhardware Arduino

Salut !

Nickel le code jpg63 :pouce: Dès que j’aurais bien fini les fonctions “de bases” je vais m’y coller pour l’intégrer sur le GitHub.

Autrement ça y est ! j’ai fini la sortie sur la SDCard des trâmes IGC ! :smiley:

https://github.com/prunkdump/arduino-variometer

Mais pour l’instant il n’y a pas l’entête ! Il faut que je fasse un petit programme pour la sauvegarder sur l’EEPROM avec les différents paramètres personnalisé que l’on peut spécifier. Pour qu’elle soit recopié au démarrage sur la carte SD avant les trâmes B.

Le temps que je comprenne ce qu’il faut mettre au minimum.

A suivre !

wow, énorme vous êtes au top !

Super boulot.

Dans la trame, il y a entre autres les informations du pilote, de la voile et de l’appli. Il pourrait être intéressant d’avoir en plus des infos IGC, les infos de paramétrage, seuil de monté, descente, zerotage, volume …

Un petit code pourrait lire un fichier TXT sur la carte SD et l’écrire dans l’eeprom, un peut comme le code de calibration

du coup par une simple manipulation des fichiers sur la carte SD, il deviendrait très simple de modifier le vario sans avoir à compiler

@prunkdump, concernant le minimum pour les trames IGC :

Tu trouveras des exemples réels à https://github.com/vmath54/xcsoar/tree/master/IGC :
sample_flarm.igc : log d’un flarm
sample_xcsoar.igc : log d’un XCSoar

Le plus simple est la log XCSoar ; c’est celle qui a le moins d’entete ; puis dans le corps, il n’y a que des trames B et F
Les trames F donnent de l’info sur les satellites utilisés : http://carrier.csi.cam.ac.uk/forsterlewis/soaring/igc_file_format/igc_format_2008.html#link_F
Elles sont obligatoires
xcsoar se content de mettre des trames F vides toutes les 4mn30 (ex : F135435 : c’est l’heure UTC)

Je pense que les trames d’entete minimums sont :

AXXX // Manufacter code. Mettre XXX si on n’en a pas
HFDTM100GPSDatum:WGS84 // le “GPS Datum”
I023638FXA3940SIU // extension des records B. Doit etre après les records H, avant les records B

Une trame d’entete qui serait intéressante : HFDTE (exemple : HFDTE020517) qui indique la date de log
Problème : elle varie, et doit être avant la trame I. Ca ne marcherait pas avec l’idée de mettre les entetes dans l’EEPROM.

je l’avais publié quelques posts avant, voila l’entête d’un syride nav

AXSR
HFDTE220417
HFFXA035
HFPLTPILOTINCHARGE: jpg63
HFCM2CREW2:
HFGTYGLIDERTYPE: not set
HFGIDGLIDERID: 0
HFDTM100GPSDATUM: WGS-1984
HFRFWFIRMWAREVERSION: 3.25
HFRHWHARDWAREVERSION: 1.0
HFFTYFRTYPE: Syride, SYS’Nav
HFGPS: UBlox,MAX7Q,56ch,10000m
HFPRSPRESSALTSENSOR: ST,LPS331AP,11000m
HFCIDCOMPETITIONID:
HFCCLCOMPETITIONCLASS: 3BB13301
I023638TAS3940SIU

A RECORD - FR ID NUMBER

A XXX ABC FLIGHT:1 Nom de l’application

H RECORD - FILEHEADER

HFDTE 160701 UTC date of flight, here 16th July 2001
HFFXA 035 Typical fix accuracy, here 35 meters. FXA field can also be added to each B record
HFRFW FIRMWAREVERSION:6.4 Firmware (i.e. software) version of the logger - anything you like
HFRHW HARDWAREVERSION:3.0 Hardware version of the logger - any text that is appropriate

HFRFWFIRMWAREVERSION 6.4 Firmware (i.e. software) version of the logger - anything you like
HFRHWHARDWAREVERSION 3.0 Hardware version of the logger - any text that is appropriate
HFFTYFRTYPE Calibri,FunkyLogger 77 Flight Recorded Type - any text is ok

HFGPS Marconi,Superstar,12ch,10000m Manufacturer of the GPS receiver inside the logger. Do we really care? Any text will work
HFPRSPRESSALTSENSOR Sensyn,XYZ11,11000m Manufacturer of the pressure sensor in the logger. Any text.
HFFTY Calibri,FunkyLogger 77 Flight Recorded Type - any text is ok
HFPLTPILOTINCHARGE: Bloggs Bill D Free-text name of the pilot
HFCM2CREW2 Smith-Barry John A Free-text name of the second pilot in a two seater
HFGTYGLIDERTYPE Schleicher ASH-25 Free-text glider type
HFGIDGLIDERID N116 EL Free-text aircraft registration number or code, e.g. N-number in USA. Or the number on the fin - it doesn’t really matter
HFDTM100GPSDATUM WGS-1984 Which GPS datum is the logger using. Always 100 in my experience but see the original FAI document if you want do something unusual.

Si cela peut aider

Vous me faites rever avec vos codes moi je suis une quiche…Je vais voir si ca existe un bouquin genre arduino pour les nuls…En attendant que ca vole…

L’en tête d’un igc sur Skytraxx est plus courte

AXSX001 SKYTRAXX V1.34 SN:3420841179
HOPLTPILOT: Name
HOGTYGLIDERTYPE: Glider
HOCIDCOMPETITIONID: 0000
HODTM100GPSDATUM: WGS-84
HOCCLCOMPETITION CLASS: Paraglider (Standard)
HPSITSITE: Unknown
HFDTE070614
B1426364422576N00519991EA0113201251
B1426374422576N00519986EA0113201251
B1426384422576N00519981EA0113301250
B1426394422576N00519976EA0113501251

ça fini par

LXSX;MC:2.9;MS:-4.1;MSP:44;Dist:16.2
G1643F21AAD150F41F52DC4BD76D50E36

en repensant à mon problème de GPS, je me dis qu’une des causes possible
est un contact avec les soudures dessous
par sécurité je mettrai un bout de plastique d’emballage pour isoler
voir photo

https://i58.servimg.com/u/f58/12/58/57/57/isolat10.jpg

sinon pour tester un autre emplacement de la carte BT
la mini-carteSD risque d’être coton à sortir, mais ça rentre en limant un peu la carte
et en dessoudant les broches du connecteurs

https://i58.servimg.com/u/f58/12/58/57/57/testmo10.jpg

Vous pouvez vérifier s’il vous plait les trâmes “F” sur les fichiers IGC générés par vos varios ? Parceque effectivement dans la doc cette trâme est marquée comme obligatoire (au moins toutes les 5 minutes). Est-ce que les varios la laisse vide comme XCSoar ?

Oui Vmath54 j’avais prévu de mettre la date dans l’IGC. Elle sera dans l’EEPROM mais elle sera écrasée par le vraie date donnée par le GPS lors de la création du fichier. Merci beaucoup pour les infos ! J’ai plus qu’à comprendre. La doc est très bien faite mais un peu complexe.

@GtD73 : Pas de soucis :smiley: tu pourras aussi nous aider avec tes qualités de parapentiste ou en électronique ! L’essentiel c’est que ça te donne envie ! Il faut commencer doucement la programmation Arduino. Le “starter kit” est un peu cher mais très pédagogique. On arrive vite à faire des petits trucs sympas. Autrement tu peux faire comme Van Hurlu : trouve toi un “petit” projet à bricoler.

@Van Hurlu : Je ne pense pas qu’il y ait beaucoup de risque de faux contact sous le GPS. Il n’y a presque pas de cicuit de ce côté. Juste une masse. Par contre si tu veux tu peux limer le bord qui touche les pins de la carte SD. Tu peux limer la partie bleu foncée. En tout cas elles sont belles tes soudures !

Je viens de finir la mise à jour du Fritzing

FlyMe et XCTrack : pas de F
Ça marche très bien dans LogFly et sur la CFD (fai approved)

Exemple :

AXCT XCTrack 0.6.0 - translations: 2017-05-04 15:17:05 on Lenovo Tab2A7-20F 4.4.2
HPPLTPILOT:Pilote Name
HOSITSite:Montlambert
HPCCLCOMPETITION CLASS:FAI-3 (PG)
HPGTYGLIDERTYPE:NIVIUK Hook 3
HODTM100GPSDATUM:WGS-84
HFALG:GEO
HFDTE090517

Ensuite que des B et les G de validation fai à la fin.

@Prunkdump
sur ton lecteur les deux broches les plus extrêmes sont notées GND
est ce qu’elles permettent la continuité du GND sur ta carte ou est ce que l’une est juste là pour aider à “tenir” la carte ?
sans le lecteur je n’ai pas la continuité sur la carte ? est ce normal ?

j’espère être clair dans ma question

Une autre manière de formuler aurait pu être :
si on enlève le lecteur de carte, est ce que la continuité du GND est bonne partout ailleurs ?

Très clair ! Ouai il y a une broche de la SD card qui n’est pas reliée à la masse. Je n’ai pas pu trouver de chemin sur le circuit. Mais ce n’est pas grave car sur la plaque de la carte SD les deux pins sont connectés. Donc il suffit de relier l’une ou l’autre. J’ai laissé la pin non relié pour la solidité de l’ensemble effectivement.

@jpg63 Pourrais-tu me renvoyer le Fritzing en le nommant variometer.fzz que je puisse le mettre sur le GitHub ? Attention en faisant “enregistrer sous”, pas juste en changeant le nom de fichier. Parceque je n’ai plus fritzing sur mon PC. J’utilise KiCad maintenant.

Pour l’entête IGC :

Bon bin c’est a ne rien y comprendre. Sur la doc il disent qu’il y a plein de trucs obligatoire mais apparemment presque aucun constructeur ne suit ces recommandations. Et ça valide quand même les traces. :grat: Donc du coup je vais me limiter aux trâmes réellement interessantes au niveau de l’information qu’elles donnent. Vous me direz si ça vous convient.

A+

Je viens de tout remonter, le voyant sur la carte GPS clignote (c’est déjà mieux)
mais je ne dois pas faire le fix, car même après 8min je n’ai jamais le zéro de la vitesse

:grrr2: :grrr2: :grrr2:

une idée ?

De toutes façon on ne sera jamais fai certifié à cause du manque de la signature des G. Et la CFD est assez cool (il peux même manquer pas mal de points, si c’est pas à un endroit proche d’une zone no pb) Du coup fait au mini mini et zou ! Du moment que c’est accepter par les log de sauvegarde des traces. (Logfly par exemple, qqun utilise autre chose ?)

À noter que dans logfly quand on va dans détail d’un vol on peux switcher entre alti baro et gps.

Du coup, punkdump, le code tourne correctement maintenant avec toutes les fonctions ? Ça rentre en RAM ?

@Van Hurlu

Si le GPS clignotte avec un intervalle du genre 1s c’est qu’il fait le fix. Si tu ne l’a pas sur le vario c’est :
-> Soit que le GPS n’est pas activé dans le code
-> Soit que la connection entre le GPS et l’arduino n’est pas bonne.

  1. Donc vérifies que tu utilises bien un firmware qui marche avec le GPS. Tu as mon dernier “FIRM.HEX” que j’ai envoyé dans les messages précédents.
  2. Testes la connexion entre la pin “TX” du GPS en la pin “RX” de l’arduino.

Tiens nous au jus.

@Xiboard

Ok je suis en train de faire au plus simple. Voilà ce que j’ai prévu :

AXXX vario model name
HFDTE010100 (la date)
HFPLTPILOTINCHARGE: pilot name
HFGTYGLIDERTYPE: glider type
HFDTM100GPSDATUM: WGS-1984
HFFTYFRTYPE: vario model name

  • Les trâmes B

Et oui du coup le dernier code tourne correctement avec tout activé ! :smiley: Mais il n’y a pas encore l’entête pour l’instant.

je ne peux pas me servir de ton FIRM, j’ai un FIRM spécial avec la correction
#define MS5611_INTERRUPT_COMPARE 71

J’ai regardé le code variometer.ino et je trouve bien
#define HAVE_GPS
#define HAVE_SDCARD
//#define HAVE_BLUETOOTH

la connexion entre la pin “TX” du GPS en la pin “RX” de l’arduino est bonne

je trouve que le buzzer chauffe sacrément beaucoup, la plaque et la soudure (juste sous le buz) sont brulantes

Si si tu peux prendre ce Firmware ! J’ai fais cette modif pour tout le monde.

C’est vrai qu’elles sont très grosses tes deux soudures sous le buzzer. Vérifies si tu n’as pas fait de court circuit. Sur la photo précédente que tu as envoyé (sans le bluetooth) :

  1. Vérifies que la soudure de la pin gauche du buzzer ne fait pas contact avec le chemin qui passe entre les deux pins. Tu testes entre la pin gauche du buzzer et les deux pins centrales bas du L9110.

  2. Vérifies la même chose pour la pin de droite.

  3. Vérifies que la pin de droite du buzzer ne fait pas contact avec la masse (à droite)

  4. J’ai aussi quelques doutes sur toutes les pins centrales de la carte. Vérifie qu’elles ne font pas contact avec les voisines.

Bon courage.

Salut à tous,

Je reviens avec mes soucis de sdcard.
Je résume :
c’est une micro SD samsung 32Go, insérée dans un adaptateur SDcard. Elle est partitionnée comme l’a indiqué prunkdup :
une seule partition primaire, de 1 Go, formatée fat16.

Le vario arrive bien à charger des firms depuis cette carte ; ca marche à tous les coups. Mais si je démarre le vario avec une carte insérée, il se bloque dans la minute qui suit le fix GPS ; il écrit un fichier de 0 octets (GPS000.txt).
C’est systématique.

J’ai essayé de valider ma sdcard avec un arduino sur une breadbord ; je dispose d’un module lecteur de micro sd.

J’ai fait des lectures/écritures avec la librairie “standard” SD.H , avec la lib I2Cdev.h ; ca marche systématiquement.

J’ai ensuite fait un bout de programme qui inclue les libs SdCard.h et LightFat16.h, toujours avec la lib I2Cdev.h

  • l’appel de file.init() échoue de temps en temps, de manière aléatoire.

  • lorsque le file.init() s’est bien déroulé, j’essaie d’envoyer un petit message : appels à file.write() avec à chaque fois un caractère en uint8_t, séparé par un délai de 100 ms

  • je termine avec un file.sync()

Ca écrit bien un fichier GPS000.txt sur la sdcard, mais toujours avec 0 octets.

Je joins le fichier .ino correspondant

@prunkdump, j’oublie qq chose, ou bien ca confirme l’incompatibilité de la lib LightFat16.h avec ma sdcard ?
Peut-être parceque celle-ci est trop grosse (32 Go) ?

Comme je te l’ai dit, ce n’est pas vital pour moi ; je voulais juste creuser un peu.

Si tu vois d’autres essais à faire, pas de problème.

En vacances pour 1 semaine à Annecy, je vais pouvoir vous faire des retours et des tests en vols

Les conditions n’ont pas permis un grand vol, les gouttes m’ont obligé à poser, mais vous pourrait regarder la trace.

Mes impressions, très réactif, un peu trop présent avec le zerotage, un petit changement de son. Avec un son qui gregreute et non qui bip ce serait super.

voici le fritzing modifier

si le code avec igc est terminé dans la semaine, je pourrais le tester en vol et vous retourner des traces