Arduino Forum

International => Français => Topic started by: fitness04 on Apr 01, 2018, 12:25 pm

Title: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: fitness04 on Apr 01, 2018, 12:25 pm
Bonjour à tous,

Je suis sur un projet mesure et de direction du vent avec un anémomètre DAVIS que j'ai récupéré, une Arduino UNO et un Shield Ethernet.

Je me suis inspiré de ce site : http://cactus.io/projects/weather/arduino-weather-station-davis-anemometer

Pas de problème pour afficher la vitesse et la direction instantanées mais, en plus d'afficher les mesures de vent et direction instantanées, j'aimerais pouvoir afficher les mesures suivantes :
- Vent moyen sur 5 mn
- Direction moyenne sur 5 mn

Pour ce faire, j'utilise deux tableau de mesures (un pour la vitesse et un pour la direction) et je fais la moyenne.
Si pour la vitesse, il me semble que c'est correct, je ne pense pas que pour la direction ce soit la bonne méthode car on fait la moyenne sur des angles et la moindre oscillation de la girouette (autour de 0 à 360 par exemple)peut faire varier beaucoup cette moyenne et donner une direction fausse.

Pour tester le code, je fais une moyenne sur 2 mn seulement donc 48 mesures (tableau total).

Donc, je sollicite l'aide du forum pour :
- valider ou non mes calculs de moyenne
- Je fais deux tableaux de 120 mesures chacun pour calculer la moyenne vitesse et la moyenne direction. N'est-ce pas trop pour le stockage sur la mémoire de l'Arduino UNO ?

- Est-il possible de ne faire qu'un seul tableau pour les deux mesures avec un seul algorithme de déplacement dans ce tableau (code optimisé !) ?
 - Enfin, à la mise en route (dans le cas où, à terme, il serait alimenté en autonomie par un panneau solaire et coupé la nuit), le temps qu'il y ait suffisamment de valeurs de mesure dans les tableaux, les moyennes sont forcément fausses. Comment faire pour ne pas afficher de moyennes erronées ?

Bon, ça fait pas mal de questions pour un seul sujet mais, je plante un peu là !

Je poste le code sur un deuxième post car le message dépasse le maximum autorisé !

Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: Artouste on Apr 01, 2018, 01:03 pm
Bonjour à tous,

Je suis sur un projet mesure et de direction du vent avec un anémomètre DAVIS que j'ai récupéré, une Arduino UNO et un Shield Ethernet.

Je me suis inspiré de ce site : http://cactus.io/projects/weather/arduino-weather-station-davis-anemometer

Pas de problème pour afficher la vitesse et la direction instantanées mais, en plus d'afficher les mesures de vent et direction instantanées, j'aimerais pouvoir afficher les mesures suivantes :
- Vent moyen sur 5 mn
- Direction moyenne sur 5 mn

Pour ce faire, j'utilise deux tableau de mesures (un pour la vitesse et un pour la direction) et je fais la moyenne.
Si pour la vitesse, il me semble que c'est correct, je ne pense pas que pour la direction ce soit la bonne méthode car on fait la moyenne sur des angles et la moindre oscillation de la girouette (autour de 0 à 360 par exemple)peut faire varier beaucoup cette moyenne et donner une direction fausse.
Bonjour
Dans ce genre d'appli , Il ne faut pas juste faire une simple moyenne arithmétique sur n echantillons , il faut introduire un peu de filtrage numérique.
Une methode assez souvent efficace consiste déjà à evacuer les acquisitions extremes (buffer circulaire)
Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: fitness04 on Apr 01, 2018, 01:18 pm
Oups ! posté trop vite! Voici le code entre balises :

Code: [Select]
//Capteur anémomètre-Girouette DAVIS
//Inspiré du site ci dessous
//http://cactus.io/hookups/weather/anemometer/davis/hookup-arduino-to-davis-anemometer-software

#include <SPI.h>   
#include <Ethernet.h>

#include "TimerOne.h"
#include <math.h>

#define TX_Pin 8
#define WindSensor_Pin (2)
#define WindVane_Pin (A2)
#define VaneOffset 0   

volatile unsigned long tipCount;   
volatile unsigned long contactTime;

volatile unsigned int  timerCount;   
volatile unsigned long rotations;   
volatile unsigned long contactBounceTime;
String girouette = "";

volatile float windSpeed;
int vaneValue;       
int vaneDirection; 
int calDirection;   
int lastDirValue;   

const int numReadings = 48;//2mn
const int numReadingsDir = 48;//2mn

int readings[numReadings];     
int readIndex = 0;
int total = 0;
int averageSpeed = 0;
int windSpeedMax = 0;

int readingsDir[numReadingsDir];   
int readIndexDir = 0;
int totalDir = 0;
int averageDir = 0;

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 1, 19);
EthernetServer server(80);

void setup() {

  lastDirValue = 0;
  rotations = 0;

  timerCount = 0;

  // disable the SD card by switching pin 4 high
  pinMode(4, OUTPUT);
  digitalWrite(4, HIGH);

  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();

  Serial.begin(9600);
  for (int thisReading = 0; thisReading < numReadings; thisReading++) {
    readings[thisReading] = 0;
  }
  for (int thisReadingDir = 0; thisReadingDir < numReadingsDir; thisReadingDir++) {
    readingsDir[thisReadingDir] = 0;
  }

  pinMode(TX_Pin, OUTPUT);
  pinMode(WindSensor_Pin, INPUT);
  attachInterrupt(digitalPinToInterrupt(WindSensor_Pin), isr_rotation, FALLING);

  // Setup the timer interupt for 0.5 second (500 000 microSecondes)
  Timer1.initialize(500000);
  Timer1.attachInterrupt(isr_timer);

  sei();
}

void loop() {

  getWindDirection();

  // Only update the display if change greater than 5 degrees.
  if (abs(calDirection - lastDirValue) > 5) {
    lastDirValue = calDirection;
  }


  EthernetClient client = server.available();
  if (client) {
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          digitalWrite(TX_Pin, HIGH);
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println("Refresh: 10");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.print("<br>&nbsp;&nbsp;Vent instantane : ");
          client.print(windSpeed);
          client.println(" Km/h<br />");
          client.print("<br>&nbsp;&nbsp;Vent moyen (sur 2 mn) ");
          client.print(averageSpeed);
          client.println(" Km/h<br />");
          client.print("<br>&nbsp;&nbsp;Vent maxi ");
          client.print(windSpeedMax);
          client.println(" Km/h<br />");
          getWindDirection();
          client.print("<br>&nbsp;&nbsp;Orientation : ");
          client.print(calDirection);
          client.print(" &deg -  ");
          getHeading(calDirection);
          client.print(girouette);
          client.print(" <br />");
          client.print("<br>&nbsp;&nbsp;Direction moyenne : ");
          client.print(averageDir);
          client.print(" &deg -  ");
          getHeading(averageDir);
          client.print(girouette);
          client.print(" <br />");
          client.print(" <br />");
          client.println("</html>");
          digitalWrite(TX_Pin, LOW);     // Turn the TX LED off
          break;
        }
        if (c == '\n') {
          currentLineIsBlank = true;
        } else if (c != '\r') {
          currentLineIsBlank = false;
        }

      }
    }
  }
  delay(1);
  client.stop();
  Ethernet.maintain();

}//Fin loop

// isr routine for timer interrupt
void isr_timer() {

  timerCount++;

  if (timerCount == 5)//5 x .5 = 2.5 s
  {
    // convert to mp/h using the formula V=P(2.25/T)- Davis Anemometer
    // V = P(2.25/2.5) = P * 0.9
    //en Km/h = P * 0.9 * 1.60934
    windSpeed = rotations * 0.9 * 1.60934;
    // Calcul moyenne sur 2 mn
    total = total - readings[readIndex];
    readings[readIndex] = windSpeed;
    total = total + readings[readIndex];
    readIndex = readIndex + 1;
    if (readIndex >= numReadings) {
      readIndex = 0;
    }
    averageSpeed = total / numReadings;
    if (windSpeed >= windSpeedMax ) {
      windSpeedMax = windSpeed;
    }
    Serial.print("vitesse moyenne : ");
    Serial.println(averageSpeed);
    Serial.print("Vitesse maxi : ");
    Serial.println(windSpeedMax);

    rotations = 0;
    timerCount = 0;
  }
}
// interrupt handler to increment the rotation count for wind speed
void isr_rotation ()   {

  if ((millis() - contactBounceTime) > 15 ) {
    rotations++;
    contactBounceTime = millis();
  }
}

// Get Wind Direction
void getWindDirection() {

  vaneValue = analogRead(WindVane_Pin);
  Serial.print(vaneValue);
  Serial.println();
  vaneDirection = map(vaneValue, 0, 1023, 0, 360);
  calDirection = vaneDirection + VaneOffset;

  if (calDirection > 360)
    calDirection = calDirection - 360;

  if (calDirection < 0)
    calDirection = calDirection + 360;

  // Calcul moyenne sur 2 mn
  totalDir = totalDir - readingsDir[readIndexDir];
  readingsDir[readIndexDir] = calDirection;
  totalDir = totalDir + readingsDir[readIndexDir];
  readIndexDir = readIndexDir + 1;
  if (readIndexDir >= numReadingsDir) {
    readIndexDir = 0;
  }
  averageDir = totalDir / numReadingsDir;
  Serial.print("direction moyenne : ");
  Serial.println(averageDir);
  //Fin calcul moyenne
}
// Converts compass direction to heading
void getHeading(int direction) {
  if (direction < 22)
    girouette = (" N");
  else if (direction < 67)
    girouette = (" NE");
  else if (direction < 112)
    girouette = (" E");
  else if (direction < 157)
    girouette = (" SE");
  else if (direction < 202)
    girouette = (" S");
  else if (direction < 247)
    girouette = (" SO");
  else if (direction < 292)
    girouette = (" O");
  else if (direction < 337)
    girouette = (" NO");
  else
    girouette = (" N");
}
Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: dbrion06 on Mar 14, 2019, 11:42 am
Pour la direction, vous avez eu raison de constater que l'on ne peut pas la moyenner.
Par contre, si les écarts entre une direction de référence et la direction restent petits, on peut faire la moyenne.
On peut parier que, au cours du temps, la direction du vent ne s'écartera pas trop de la première mesure (j'espère que vos moyennes ne sont pas glissantes; sinon, c'est affreux)

l'écart est rendu "petit" de la façon suivante:
s'il est supérieur à 180 degrés, on retire 360 degrés (la mesure est modulo 360 degrés: ça garde un sens);
s'il est inférieur à -180 degrén on rajoute 360 degrés;

exemple : si votre première direction est de 359 degrés, et votre 15 ième direction de 10 degrés, l'écart vaut :
-349 degrés, une fois replié, il vaudra 11 degrés.

Après avoir calculé la valeur de ces écarts repliés, il suffit de rajouter à la direction de réference (et de replier le résultat, si besoin).

Une solution plus lourde (fait appel à de la trigo)  est de calculer la vitesse moyenne, composante par composante .... Cette solution n'utilise "que" des entiers... (en pratique, les résultats sont très voisins)
Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: Zlika on Mar 14, 2019, 12:35 pm
Bonjour,

Je trouve que le calcul par vectorisation est plutôt intéressant à faire et pas si compliqué que cela à réaliser.

Il suffit de décomposer la direction en deux vecteurs (de deux directions perpendiculaires) et de les pondérer avec la vitesse du vent pour ne filtrer que les directions pertinentes.

les ranger dans un tableau de dimension (N échantillons, 2 (N/S, O/E)) avec stockage par glissement.

Puis faire la somme des vecteurs pour obtenir une direction unique.

Vous pouvez éventuellement analyser les valeurs des directions opposées dans le temps pour déceler un changement de direction important.

Edit : après analyse, modification du tableau (n, 4) => (n, 2) car le signe détermine la direction.
Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: dbrion06 on Mar 14, 2019, 01:05 pm
Le calcul de direction par moyenne vectorielle, tel que vous l'envisagez, est interessant et a un sens physique.

Je vois deux inconvénients :

l'un qui relève de la mauvaise foi humaine (la paresse à faire de la trigo sur des floats: la charge de calcul du processeur (pas si hénaurme) peut être allégée par l'emploi de tables remplies automatiquement avec un programme C sur PC -voire avec Excel-). Le peu de trigo nécessaire reste à faire...

l'autre qui relève de la méchanceté du monde : que se passe-t-il si l'indication de vitesse est bloquée électriquement (défaut de branchement)  ou mécaniquement à zéro (un dur sur un anémomètre: une feuille qui s'est coincée dans sa mécanique) alors que la girouette reste fonctionnelle?  (c'est une valeur très probable en cas de panne)


Sinon, il est très bien, et on peut détecter un changement de direction avec le ratio
(norme de la moyenne vectorielle) / (vitesse moyenne)  qui demande deux lignes de code de plus. (si le vent souffle dans tous les sens,  sa moyenne vectorielle sera petite , sa moyenne (mesurée avec un anémomètre sain) sera assez grande).
Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: Zlika on Mar 14, 2019, 02:37 pm
Pour ce qui est de la trigo, on parle d'un cosinus et un sinus par échantillon.

si on part sur l'hypothèse que (sens trigonométrique):

- Nord => 0°
- Ouest => 90°
- Sud => 180°
- Est => 225°

Donnée vecteur Nord/Sud = cos(angle)*vitesse
Donnée vecteur Ouest/Est = sin(angle)*vitesse

Pour retrouver l'angle final Après avoir additionné les Nord/Sud et les Ouest/Est:

angle = atan( Ouest/Est / Nord/Sud ) et ajouter 180° si Nord/Sud est négatif.

Si l'un des deux vecteurs est égale à 0, inutile de faire le calcul (en particulier si c'est Nord/Sud car pas de solution) car le résultat est évident ;).

Attention, l'unité utilisée est le degrés, ce qui n'est pas celui utilisé par la bibliothèque math.
Donc il faudra penser à convertir..

Après, pour les chutes de météorites, la nidification des oiseaux, les tirs de carabine du voisin, etc... , je maitrise moins   :D


Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: dbrion06 on Mar 14, 2019, 03:41 pm
Vous oubliez un atan2;

Le calcul d'une moyenne vectorielle avec des secteurs pas trop larges (22 ou 20 degrés) peut être fait de façon "standard" avec la librairie trigonomètrique, qui est très bien faite et très optimisée (pas la peine de bricoler pour s'adapter à un capteur grossier; un capteur ayant plus de secteurs peut sortir, être moins cher et ne devrait pas obliger à se refendre d'un code -soumis à bugs et fautes de frappe-)

Et, désolé, mais un appareil exposé en plein air est soumis de par son principe à de forts risques d'usure et de blocages.... que l'on ne peut malheureusement pas traiter avec sarcasme et désinvolture).
Calculer une moyenne des écarts de direction (outre le fait que, sur de tout petits micros, avec d'autres quantités, permet de s'affranchir de risques de débordements) et faire comme si l'anémomètre n'existait pas permet de maîtriser ... la moitié du risque d'une panne très courante.
Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: Zlika on Mar 14, 2019, 04:26 pm
Oups, désolé. Notation anglo-saxon de atan. Je corrige...
atan car je fait la division avant. Je n'est donc qu'un seul paramètre.
Mais j'aurais très bien pu le faire avec atan2.

De quel code parlez vous, je n'en ai pas écrit.

Sarcasme ?? Désinvolture ?? Ce n'est qu'une interprétation faites par vous-même.

Si vous partez du principe que de toute façon ça va merder un jour, ne faites rien et laissez aux autres le plaisir de créer.

Je suis là pour proposer des solutions et faire des remarques qui apportent une réflection.
Je ne livre jamais une solution clé en main sinon j'aurais moi même écrit le code, mais ça n'a pas d'intérêt.
Le but est de partager et d'apprendre des autres. Sans réflection, pas de plaisir.

 Vos commentaires ne proposent rien, ou alors vous n'avez pas fini votre post.
Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: J-M-L on Mar 14, 2019, 04:49 pm
Quote
Sarcasme ?? Désinvolture ?? Ce n'est qu'une interprétation faites par vous-même
Si vous partez du principe que de toute façon ça va merder un jour, ne faites rien et laissez aux autres le plaisir de créer.
les joies de la communication écrite et des interprétations :)

Pour moi le point est valide, et les adjectifs qualificatifs inutiles...

On a 2 capteurs, d'un point de vue reflexion on peut se demander si on peut trouver une approche qui fonctionne encore si l'un des 2 capteurs est défaillant.

est-ce que la vitesse du vent est une donnée pertinente et importante si on ne sait pas dans quel sens le vent souffle ? inversement est-ce que le sens du vent est utile si on ne sait pas sa vitesse ?

On pourrait aussi envisager un code qui part sur l'idée que les 2 fonctionnent mais que s'il détecte qu'un des 2 capteurs semble "mort" (à définir) alors il bascule sur un mode dégradé qui utilise une approche différente.

Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: Zlika on Mar 14, 2019, 05:03 pm
On peut toujours mettre en place une 'surveillance' des capteurs dans le temps (évolution sur une période donnée), mais quand il n'y a pas de vent, cela ne veut pas dire que le capteur est hs.

En pondérant la direction avec la vitesse, on élimine une information 'direction' qui n'a aucun sens (quand tous fonctionne).
Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: J-M-L on Mar 14, 2019, 05:05 pm
Quote
mais quand il n'y a pas de vent, cela ne veut pas dire que le capteur est hs.
c'est vrai :)
Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: dbrion06 on Mar 15, 2019, 01:47 pm
Si un anémomètre ne detecte pas de vent, (vent affiché  nul constamment),
ça veut dire (énumération sans prétention à l'exhaustivité)
a) qu'il n'y a pas de vent
b) que le capteur impulsionnel est débranché (mais qu'il reste fonctionnel.... une fois rebranché)
c) que le seuil de démarrage de l'anémomètre n'a pas été atteint (il y a un hysteresis dû au frottement)

Le point c est à détailler, il peut indiquer que
c1) l'anémomètre est encrassé ou ses roulements ovalisés .
 Celà le disqualifie pour des calculs d'évaporation -pilotage d'irrigation -, ou liés aux concentrations d'éventuels polluants mais pas pour des calculs de vent fort.
c2) l'anemomètre a perdu une coupelle lors de tempêtes, ou est faussé par les mêmes causes. La mesure est alors fausse.... et est pire qu'inutile...

Les girouettes ont un peu les mêmes défauts, mais moins marqués...

J'ai bien indiqué que cette liste est forcément sommaire, et non exhaustive. Les services météorologiques anglais, dans les années 80, se sont automatisés et ont réussi à faire une liste cohérente dans les années 90 -il leur à fallu 10 ans pour constater et analyser les dégâts, et cesser de pifomètrer des algorithmes censés exercer le plaisir de créer. Je ne sais pas,  si, en 20 ans, on a fait mieux et je sais que ma mémoire simplifie.
Notez aussi que passer d'une description en français -ou en anglais-   d'un algorithme à son codage est presque automatique,  et ne relève, ni de la reflection -elle a été faite en amont,dans ... certains cas), ni du plaisir de creer..

En passant, je trouve assez prétentieux le fait de qualifier de création le fait de balancer des idées de code basées, dans le meilleur des cas, sur un capteur de direction à 4 valeurs (pour un prix analogue, on sait faire mieux avec un encodeur optique sur l'axe de la girouette, générant moins de frottements qu'un capteur à bases de résistances dérivant dans le temps).
Et manifestement, la gestion des pannes n'a pas été prévue (comme création, on peut se demander ce qui reste à créer après des analyses approfondies de pannes par le UK Met Office au millénaire dernier: ça relève plutôt dans votre cas de la réinvention de la roue,  carrée de plus -codage sur 4 valeurs des positions  surun cercle, sans se poser la question des erreurs introduites par une quantification grossière)

Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: J-M-L on Mar 15, 2019, 02:58 pm
bon.... fitness04 a pas dit non plus qu'il voulait travailler à météo france et recouvrir la france de son invention pour calculer le temps à 10 jours ...

l'important c'est la spécification, ce que l'on veut.

Pour un bidouillage qui peut planter sans conséquences (si ce n'est pour son amour propre) ou ne marchera que une semaine, installé au fond du jardin sous un arbre, juste pour le fun et après on le démonte, c'est pas la même chose qu'un truc installé au sommet du mont Washington et doit résister à des vents incroyables ou qui est sensé donner aux avions des informations pour atterrir...

Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: Zlika on Mar 15, 2019, 04:34 pm
@dbrion06

Vous ne semblez pas comprendre que les quatre points cardinaux évoqués dans mon post précédent ne sont là que pour donner une relation entre l'orientation réelle (N/S/E/O) et l'angle en degrés retournée par la girouette (qui bien sûr, ne se limite pas à ces quatre positions).

Sans cette relation, les propositions de calcul faisant intervenir des cosinus et des sinus d'angles (et non pas quatre directions comme vous semblez le croire, sinon je me serais limité aux résultats, soit -1, 0 ou 1) n'auraient aucun sens. Une girouette de base ne sait pas où se trouve le Nord, c'est à l'utilisateur de l'orienter. Et dans la mesure où, dans ma démonstration, je donne un résultat faisant référence aux points cardinaux, cette relation me semble être un minimum à donner pour la compréhension de la démarche.

Libre à vous de proposer un autre algorithme de calcul. Je serais l'un des premier à le lire avec plaisir. Vous pouvez, de même, me corriger si je fais une erreur (ce ne serait pas la première fois et sûrement pas la dernière) du moment que vous apportez les arguments pour le prouver.

Ma proposition d'algorithme de calcul n'est certes pas à la hauteur de ceux de météo France, mais elle est facile à comprendre et ne nécessite pas l'utilisation d'un tableur Excel comme vous le suggérez. On parle d'un projet à base d'arduino Uno, qui nous limite donc en terme de capacité et de puissance.

Comme précisé par @J-M-L, je ne pense pas que ce projet soit destiné à une utilisation proche de celle de la NASA pour envoyer un satellite dans l'espace.

Il ne s'agit que d'un projet diy avec du matériel de récupération (cf premier post) destiné à apprendre et comprendre.

Est-il nécessaire de fiabiliser à outrance un tel système?

C'est à @fitness04 de décider. Mais je ne crois pas trop m'avancer en supposant qu' il ne va doubler ou tripler les capteurs pour s'assurer de la validité des valeurs retournées alors qu'un simple regard sur les arbres va déjà lui fournir un indice sur un éventuel disfonctionnement.

Faut-il prévoir un guide de dépannage pour un tel système?

Si, pour 2 capteurs et une carte Arduino Uno, vous avez besoin d'un guide de dépannage , j'aurais tendance à douter de votre capacité à gérer un système plus complexe, mais je peux me tromper...

Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: dbrion06 on Mar 15, 2019, 05:00 pm
Merci beaucoup, Monsieur Zlika  pour la qualité de vos arguments (je n'en déduis rien, par charité, de votre capacité à gérer un système complexe).
Veuillez noter:
* que l'arithmétique modulo x est un grand classique (pas dans l'argument "il faut un manuel de maintenance")
* que des capteurs de récup sont encore plus sujets aux pannes par blocage (sinon, pourquoi seraient ils vendus à bas prix)
* que des traitements simples (en cas de panne/absence d'anémomètre, faire une moyenne sur des écarts repliés) existent depuis 40 ans et que je les ai documentés depuis le début.
* que, tant qu'à faire un traitement complet (j'ai eu l'honnêteté de le suggérer, en constatant que la bibliothèque trigo de l'arduino était de bonne qualité et rapide) autant ne pas faire de cascades de bricolages, au lieu du sacro saint DIY  (l'argument massue: puisque c'est un acronyme anglais, faut acheter sans réfléchir et pleurer sur les fora quand ça morchepo)

Précisez (numéro de post) quand est ce que la demande originelle portait sur
* un truc qu'il plante sous des arbres
* du matos de recup (normalement, c'est qu'il était bon ... à jeter, du fait de durs : si je l'avais lu, vous voyez quelle aurait été ma réponse)
ou si ce ne sont que des spéculations destinées à masquer une incompétence se parant du titre de créativité.
Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: J-M-L on Mar 15, 2019, 05:15 pm
vous faites semblant de ne pas comprendre ?


vous avez introduit 2 inconvénients vous mêmes - la "paresse/mauvaise foi humaine" (faire des maths) et la "méchanceté du monde " (tolérance aux pannes)... et vous vous accrochez à ces points...

tout ce qui est dit c'est qu'il est commun (surtout sur ce forum) de faire des trucs mal ficelés qui ne passeraient pas en industrie et que ce qui compte au final c'est l'usage attendu.

et c'était hors sujet, les questions portant sur:
Quote
- valider ou non mes calculs de moyenne
- Je fais deux tableaux de 120 mesures chacun pour calculer la moyenne vitesse et la moyenne direction. N'est-ce pas trop pour le stockage sur la mémoire de l'Arduino UNO ?

- Est-il possible de ne faire qu'un seul tableau pour les deux mesures avec un seul algorithme de déplacement dans ce tableau (code optimisé !) ?
 - Enfin, à la mise en route (dans le cas où, à terme, il serait alimenté en autonomie par un panneau solaire et coupé la nuit), le temps qu'il y ait suffisamment de valeurs de mesure dans les tableaux, les moyennes sont forcément fausses. Comment faire pour ne pas afficher de moyennes erronées ?

Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: dbrion06 on Mar 15, 2019, 05:29 pm
Je "m'accroche à ces points" parce que je suis assez ennuyé par des  arguties de pisseurs de codes imbus de leur supériorité.
Je n'ai pas répondu à la question portant sur la consommation mémoire, pour ne pas avoir à dire
a) qu'une information primordiale  est donnée au linkage (le reste de la mémoire "globale")
b) qu'on peut calculer une moyenne au fil de l'eau (et n'afficher que toutes les x mesures), au prix d'un float (on ne sait pas la valeur du cumul) et d'un compteur : 4+2 == 6 octets -ça, ça doit se trouver-

Tiens, le calcul de la moyenne au fil de l'eau (et son exploitation pour affichage) répond aussi à la dernière question, portant sur le démarrage que vous avez copié coller pour marquer un point (quand y avez vous répondu).
Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: J-M-L on Mar 15, 2019, 05:41 pm
donc je résume

vous parlez de "paresse/mauvaise foi humaine" et "méchanceté du monde" plutôt que de répondre aux questions parce que vous êtes "assez ennuyé par des  arguties de pisseurs de codes imbus de leur supériorité", tout cela parce que Zlika a suggéré une approche de décomposition sur deux axes orthogonaux et pondération par la vitesse ?

je ne sais pas où vous avez vu une supériorité quelconque dans ce commentaire et ni en quoi votre commentaire sur la mauvaise foi humaine et méchanceté du monde apporte une solution aux questions...

bref, vous êtes de mauvais poil, c'est pas grave, vous vous exprimez parce que c'est un monde libre, très bien, vous faites comme vous voulez.. Ceux qui ne sont pas de votre avis peuvent s'exprimer aussi... même si ce sont des "pisseurs de codes imbus de leur supériorité".. leur avis mérite autant d'être exprimé que le votre...

bon ça va finir dans le bar cette conversation..

@fitness04 désolé ça ne répond pas trop à vos questions
Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: dbrion06 on Mar 15, 2019, 05:44 pm
Quelle réponse avez vous donné (à part la sacro sainte liste circulaire, ennuyeuse à gérer quand on débute) à la question....
Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: J-M-L on Mar 15, 2019, 06:11 pm
c'est Artouste qui a parlé de "buffer circulaire" au premier post... pas moi..

J'ai simplement essayé (en vain) de ramener un peu de sérénité dans la discussion que vous avez envenimé en parlant de manière forte inappropriée de "sarcasme et désinvolture"... pour recentrer le débat.

Je vous rappelle que j'ai dit que votre point était valide, et les adjectifs qualificatifs inutiles...

mais vous vous obstinez à chercher des noises aux participants qui ne sont pas de votre avis... vous trouverez sans doute toujours quelqu'un ici pour ne pas laisser passer sans rien dire..

Ce forum a vocation de formation, les posts ne sont pas lus que par ceux qui y participent, mais d'autres - nouveaux ou chevronnés - lisent aussi ces posts... 

On peut avoir des avis opposés et le débat peut rester courtois. On peut proposer des solutions s'appuyant sur des "design patterns" (tiens encore de l'anglais) et autres techniques classiques, en employant le vocabulaire adapté sans avoir à s'entendre dire que c'est de la frime...

Modérés vos propos et votre interprétation toute subjective de ce que vous pensez lire dans les explication des autres participants et ça ira tout de suite bcp mieux.

 
Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: Zlika on Mar 15, 2019, 06:19 pm
Monsieur dbrion06,

Quote
Précisez (numéro de post) quand est ce que la demande originelle portait sur
* un truc qu'il plante sous des arbres
* du matos de recup (normalement, c'est qu'il était bon ... à jeter, du fait de durs : si je l'avais lu, vous voyez quelle aurait été ma réponse)
Si vous preniez le temps de mettre en doute vos convictions, je suis sûr que la partie, en gras, ne vous aurai surement pas échappé

Quote
Bonjour à tous,

Je suis sur un projet mesure et de direction du vent avec un anémomètre DAVIS que j'ai récupéré , une Arduino UNO et un Shield Ethernet.
, tout comme celle-ci.

Quote
Il ne s'agit que d'un projet diy avec du matériel de récupération (cf premier post)
.

Vous savez sûrement que la première chose que l'on fait quand on choisi son matériel, et de définir les critères en fonction de son domaine d'application (précision, robustesse, prix, disponibilité en quantité, délais de livraison ou nombre de fournisseur).

Sans analyser tout ces critères, il me semble que le choix a été relativement mis en évidence dans ce premier post.

Pour ce qui est du' truc' qui plante, on en ai actuellement qu'au projet. Cela inclut évidement la mise au point et les corrections de bugs.

Si vous êtes capable de réunir différents composants ensemble, de produire un code un minimum conséquent qui compile et fonctionne du premier coup, en ayant inclu vos routines de contrôles pour vérifier le comportement de chaque composants, alors vous êtes, sans conteste, bien plus organisé et intelligent que moi... Mais la encore, je peux me tromper.

Pour ce qui est du diy, je vous suggère de prendre un peu de recul.

Vous êtes sur un site destiné à vendre des cartes électroniques qui ne font rien si on apporte pas un minimum de matière (programmation, modules externes,...).
Ils ne vendent pas des machines à laver ou des fours micro-onde, bardés de certifications et de normes, destinés à monsieur et madame tous le monde en l'accompagnant de sa documentation technique.

Ces cartes ne sont pas destinées à être utilisée par une personne qui n'a pas un minimum de connaissance en électronique et en programmation.
Lorsqu'il achète cette carte, il est conscient que le résultat escompté ne sera pas forcément à la hauteur du projet qu'il a imaginé et aura sûrement besoin d'un peu d'aide(d'où l'existence de ce forum).
Il ne va pas, de même, prétendre produire un objet destiné à la vente grand public (on ne vend pas n'importe quoi à n'importe qui, il y a des normes).

Aux vues de toutes ces remarques, je comprends difficilement votre comparaison avec le monde professionnel, ainsi que vos propos, de mon point de vue péjoratif, sur le concept du 'do it yourself'.

Pour un usage professionnel et fonctionnel au déballage, il y a d'autres sites spécialisés (mais de mon point de vue moins marrant).

Quote
* que des traitements simples (en cas de panne/absence d'anémomètre, faire une moyenne sur des écarts repliés) existent depuis 40 ans et que je les ai documentés depuis le début.
Peut-être que, professionnellement, vous êtes plus enclin à cogiter sur les problèmes pouvant survenir sur un produit fini. Mais si vous regardez les sujets des posts, les demandeurs se concentrent beaucoup plus sur le fonctionnement tout court d'un projet en cours de développement. La partie SAV n'est franchement pas leurs préoccupations.
Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: dbrion06 on Mar 15, 2019, 06:34 pm
Et en clair, sans baratin (destiné à dissimuler une abyssale incompétence), vous voulez dire quoi?

Si son anémomètre  est de recupération :
* il est absurde de compter sur un service normal.
* il ***faut** faire des moyennes dedirection sans pondérer par la vitesse du vent, en les repliant (calcul modulo 360 degrés); un calcul utilisé depuis des décennies (moyenner l'écart par rapport à lapremière direction) est le seul possible: en plus, il ne consomme pas  de ressources et ne fait pas le pari -stupide, dans le cas de la recup- que deux capteurs marchent...
J'en ai donné les détails ... dans mon premier post (tout en concédant qu'une moyenne vectorielle avait plus de sens, ce à condition d'être fait proprement -i.e sans escroquerie , en péride d'inflation,  l'escroquerie intellectuelle est la pire, fût elle habillée de connaissances en codage-.)
Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: Zlika on Mar 15, 2019, 07:09 pm
C'est vous qui partez du principe qu'il ne marchera pas ou plus.
Tout les arguments sont bons pour vous afin de rabaisser les posts des autres.

Vous avez fait votre proposition, et j'ai fait la mienne.

Si vous ne supportez pas que l'on puisse avoir un autre avis que le vôtre, je vous conseille de ne pas continuer dans cette voie.
Vous allez vous mettre beaucoup de monde à dos si vous continuez à imposer partager vos idées de la sorte.
Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: fdufnews on Mar 15, 2019, 07:52 pm
Et en clair, sans baratin (destiné à dissimuler une abyssale incompétence), vous voulez dire quoi?
Ça me rappelle quelqu'un.....
Pépé sors de ce corps
Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: kamill on Mar 15, 2019, 07:55 pm
J'allais le dire!
Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: bidouilleelec on Mar 16, 2019, 09:29 am
Bonjour fdufnews,

Ça me rappelle quelqu'un.....
Pépé sors de ce corps
Cela pourrait être une bonne nouvelle ?

Cordialement,
bidouilleelec
Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: fitness04 on Mar 16, 2019, 09:23 pm
Bonjour a tous,

J'ai pas tout lu car je decouvre que ce sujet est "déterré"...
La discution semble passionnée et depasse un peu mes capacités...

Mais, ma station meteo est maintenant opérationnelle et placée sur mon toit.

Elle émet  sur Thingspeak et Blynk.

Le calcul de la directon du vent est satisfaisant et la fiabilité de la station semble correcte. Même le minuscule panneau solaire suffit pour alimenter la Pro mini +NRF24L01.
Le capteur Davis fonctionne bien même  s'il est d'occasion.

C'est d'ailleurs grâce  a ce Forum que j'y suis arrivé (et beaucoup d'autres recherches sur Internet...).

Si j'ai le temps, je redigerai un projet fini qui pourra servir à  d'autres.

Je vais tout de même  lire tous les posts pour voir si je comprend...

Merci à  tous.
Title: Re: Anémomètre calcul de moyennes de vitesse et direction du vent
Post by: dbrion06 on Mar 21, 2019, 10:50 am
PEut être que vous avez une erreur infinie.... ce qui vous ouvre de grands espaces...