Nouvelles:

Bienvenue au Forum de discussion Électro-Bidouilleur! Inscrivez-vous pour participer aux discussions!: 
https://forum.bidouilleur.ca/index.php?action=signup Les demandes d'inscription sont révisées quotidiennement.

Menu principal

Projet Reference 10 MHz par GPS

Démarré par david .parrot, Février 26, 2022, 04:50:25 PM

« précédent - suivant »

Ladiode125

Citation de: va2px le Mars 29, 2023, 12:12:40 PM
Super.  Comment as-tu fait pour obtenir le nombre de satellites?

Bonjour,

Dans le code d'Electro-Bidouilleur, il y à  un test pour récupérer la trame venant du GPS qui doit commencer par $GPRMC
(variable : GPRMC_PREAMBL) pour récupérer la date, l'heure et l'année.

if (chaine_caracts_gps_recues.substring(0, 6) == GPRMC_PREAMBLE)    // Comparer les 6 premiers caractères de la chaîne avec le preambule GPS
                                                                                                         // désiré...

Pour ma modification si le test est négatif, je récupère une autre trame qui commence par $GPGGA (variable :GPGGA_PREAMBLE)  et qui contient le nombre de satellite reçut.


        if (chaine_caracts_gps_recues.substring(0, 6) == GPGGA_PREAMBLE)    // Comparer les 6 premiers caractères de la chaîne avec le
                                                                                                                 // preambule GPS désiré...
        {
          if ((chaine_caracts_gps_recues.substring(7,8) == ","))                        // ...et vérifier que la chaîne n'est pas vide ou invalide       
          {                                                                                                     // Données invalides
          }
          else
          {
                                                                                                                  //  Extraction du nombre de satellite
            unsigned short int b = 0;                                                                  // utilisé comme compteur de virgules
            unsigned short int c = 0;                                                                  // utilisé comme compteur de caractères
            do                                                                                                  // Repérer le champ de la date dans la chaîne GPS reçue.
            {
              if (chaine_caracts_gps_recues[c++] == ',') b++;                      // Incrémenter le compteur de virgule si une d'entre elle est détectée
            }
            while (b < 7);
            nombre_satellites_recus = chaine_caracts_gps_recues.substring(c,c+2).toInt();       // Extraire la chaîne de caractères représentant le
                                                                                                                                      // nombre de satellite
          }
        }

Pascal.
PS.
Je ne suis vraiment pas bon en codage et je me suis inspiré du code d'électro bidouilleur, il y a quelque semaine je savais à  peine faire clignoté une LED alors un peu d'indulgence pour le code de ma modification.

va2px

Citation de: Ladiode125 le Mars 29, 2023, 06:08:12 PM

Bonjour,

Dans le code d'Electro-Bidouilleur, il y à  un test pour récupérer la trame venant du GPS qui doit commencer par $GPRMC
(variable : GPRMC_PREAMBL) pour récupérer la date, l'heure et l'année.

if (chaine_caracts_gps_recues.substring(0, 6) == GPRMC_PREAMBLE)    // Comparer les 6 premiers caractères de la chaîne avec le preambule GPS
                                                                                                         // désiré...

Pour ma modification si le test est négatif, je récupère une autre trame qui commence par $GPGGA (variable :GPGGA_PREAMBLE)  et qui contient le nombre de satellite reçut.


        if (chaine_caracts_gps_recues.substring(0, 6) == GPGGA_PREAMBLE)    // Comparer les 6 premiers caractères de la chaîne avec le
                                                                                                                 // preambule GPS désiré...
        {
          if ((chaine_caracts_gps_recues.substring(7,8) == ","))                        // ...et vérifier que la chaîne n'est pas vide ou invalide       
          {                                                                                                     // Données invalides
          }
          else
          {
                                                                                                                  //  Extraction du nombre de satellite
            unsigned short int b = 0;                                                                  // utilisé comme compteur de virgules
            unsigned short int c = 0;                                                                  // utilisé comme compteur de caractères
            do                                                                                                  // Repérer le champ de la date dans la chaîne GPS reçue.
            {
              if (chaine_caracts_gps_recues[c++] == ',') b++;                      // Incrémenter le compteur de virgule si une d'entre elle est détectée
            }
            while (b < 7);
            nombre_satellites_recus = chaine_caracts_gps_recues.substring(c,c+2).toInt();       // Extraire la chaîne de caractères représentant le
                                                                                                                                      // nombre de satellite
          }
        }

Pascal.
PS.
Je ne suis vraiment pas bon en codage et je me suis inspiré du code d'électro bidouilleur, il y a quelque semaine je savais à  peine faire clignoté une LED alors un peu d'indulgence pour le code de ma modification.

Merci Pascal pour les explications.  Il me reste à  voir comment modifier la chaine non verbos pour inclure l'information mais je devrais pouvoir y parvenir.

Ne t'en fais pas pour le code. N'ayant pas codé en C depuis la fin de mes études, je vais pas commencer à  critiquer celui des autres.

Ladiode125

Bonjour. Voici la suite du suivi de l'affichage sur écran TFT de la référence 10 mégahertz.

Tous les boutons sont opérationnels.
Voici une capture des différent écrans, qu'en pensez-vous ?
Voyez vous quelque chose à  améliorer ou à  rajouter.
Pour le bouton N° 3 toujours pas d'idée et vous ?
Je pense peut-être mettre une option pour activer un bip quand l'on touche l'écran tactile et une réinitialisation du programme.

Pour info il y a une demande de confirmation avant de valider la modification des paramètres et pas d'enregistrement dans la mémoire s'il n'y a pas eu de modification.

Bonne fin de journée et bon bidouillage à  tous.

Pascal.

Ladiode125

Bonjour,
C'est l'EEPROM du BlackPill STM32F411CE.

Ladiode125

Citation de: w1200 le Avril 02, 2023, 01:02:37 PM
Vous avez pris où la limite de 10000?

C'est dans le code source du programme d'origine de la référence 10MHz.

                                      // Fonction qui sauvegarde les différents paramètres du système en mémoire flash
                                      // Attention! La mémoire Flash a une durée de vie garantie de 10 000 écritures.
void sauv_params_eeprom()

J'avoue que je n'ai pas vérifié par moi même ce que je vais faire.

Pascal.

Ladiode125

Citation de: w1200 le Avril 02, 2023, 01:24:41 PM
C'est spécifié comme étant l'endurance minimum garantie dans la datasheet.
Exact j'ai trouvé dans de datasheet à  la page 93

1. Guaranteed by characterization results.
NEND Endurance
TA = - 40 to + 85 °C (temp. range 6)
TA = - 40 to + 105 °C (temp. range 7)
TA = - 40 to + 125 °C (temp. range 3)
10 kcycles

Je l'ai affiché à  l'écran pour avoir une idée mais bon il y a de quoi faire  ;D

Ladiode125

Bonjour à  tous.

Petite ébauche du troisième bouton.

Pascal

va2px



philchamp51


Ladiode125


va2px

#311
Citation de: Ladiode125 le Avril 12, 2023, 06:26:12 AM
Je la trouve sobre. Quel type de display utilise tu ?

J'utilises l'applicatiuon node-red.  C'est un logiciel d'automatisation dont l'interface de programmation est graphique.  C'est aussi très modulaire.  On peut aussi y inclure un module de dashboard webifié.  J'ai connecté le GPSDO sur un raspberry pi où node-red est installé.

Il faut préciser aussi que cette vue en est une parmi plusieurs de mon dashboard.  C'est ce qui explique la dimension rectangulaire.

https://nodered.org/

Ladiode125

Bonjour à  tous,
Un petit point sur l'avancement de mon projet de l'adaptation d'un écran TFT.
Pour le 3e bouton, j'ai finalement mis plusieurs options.
J'ai également fait les modifications suivantes :
Changement de couleur du delta de la fréquence et des alarmes en fonction de l'état
Ajustement de l'heure pour la région France et basculement en heure hiver / été (encore en Manuel)
Mise en place d'un nouveau cycle après le cycle long si de très bons résultats (delta =< 0.001 Hz),
un peu optimiste mais on verra bien.
Dans ce mode la durée cycles s'adapte à  chaque fin de cycle.
Maintenant je m'attaque à  la réalisation de mon nouveau boîtier.
Pascal.

Ladiode125

 Bonjour à  tous.
Et bien voilà  j'arrive au terme de ma réalisation.

Il me reste à  faire la mise en forme de l’affichage sur l'écran car j'ai changé et j'ai mis un afficheur de 4 pouces,
ce qui m'a obligé à  réécrire une partie du code mais je n'aurai plus besoin d'ouvrir le boîtier.

Pour moi c'est la fin des postes sur ce sujet mais je me tiens à  votre disposition si vous avez besoin de renseignements sur mon adaptation.

Cordialement Pascal et bonne bidouille à  vous tous.

Ladiode125

Citation de: w1200 le Avril 21, 2023, 03:09:22 PM
Pourquoi le transfo dans ce sens?
Par manque de place je voulais que tous les circuits de puissance se trouvent à  l'arrière derrière le blindage en métal peint en noir.