Go Down

Topic: Calcul de vitesse (Read 983 times) previous topic - next topic

Faremos

Bonjour tout est dans le titre.
J'ai un accéléromètre et grâce à l'accélération en m/s2 j'arrive à obtenir une vitesse en m/s mais sa reste une solution peut fiable car je cumule des erreurs (vibration, vitesse des relevé du capteur, variation d'accélération et décélération …) sur la vitesse et au bout 1h d'accélération et décélération a l'arrêt j'ai une vitesse très élever ou très négative.
Avez-vous une idée comment mesurer une vitesse fiable d'un objet volant donc sans roue ?

infobarquee

#1
Nov 02, 2015, 08:29 am Last Edit: Nov 02, 2015, 08:50 am by infobarquee
bonjour,
gps

EDIT :
tu veux mesurer la vitesse sur quoi et en faisant quoi?
une ligne droite, un parcours, etc....
AUCUNE AIDE PAR MP

Jambe

#2
Nov 02, 2015, 08:52 am Last Edit: Nov 02, 2015, 08:52 am by Jambe
Yep, pareil, une puce GPS a une quinzaine d'euros, 2-3 lignes de code et tu aura une vitesse précise  et juste

Faremos

D'accord j'y avait pensé mais j'aurais crus que sa serai encore plus compliquer a obtenir la vitesse merci je vais me renseigner dessus c'est pour un drone et dans tout les cas il aura une puce GPS sa tombe bien.

Faremos

Pour info qu'elle référence de module GPS vous me conseillez, car il y en beaucoup ?

Jambe

#5
Nov 02, 2015, 10:17 am Last Edit: Nov 02, 2015, 10:18 am by Jambe
J'ai acheté exactement cette référence il y a peu. Elle marche au poil, pas de configuration nécessaire
https://www.amazon.fr/dp/B011BBMKA4/ref=cm_sw_r_awd_BLYnwb2SFWR26

Et si tu es intéressé, j'avais un petit code pour afficher latitude longitude vitesse et cap sur un LCD 16x02

infobarquee

attention, le gps ne fonctionne qu'en plein air et très très très mal en indoor.
si tu expliquais ton projet, ca serait plus simple.
AUCUNE AIDE PAR MP

Faremos

Ben simplement faire un drone de plein air en haute montagne principalement.

infobarquee

Ben simplement faire un drone de plein air en haute montagne principalement.
donc gps
AUCUNE AIDE PAR MP

Faremos

Oui voila je vais prendre celui que ma conseiller Jambe merci

Jambe

#10
Nov 02, 2015, 07:26 pm Last Edit: Nov 02, 2015, 07:27 pm by Jambe
Voici mon fameux code.

Pour explication, mon setup me permettait de voir si mes futurs affichages se plaçaient correctement sur mon LCD, et aussi le gros delay pas beau de 30 000 ms donnait suffisamment de temps au GPS de choper un fix, vraiment pas nécessaire car le loop fonctionnait sans fix, et surtout affreux, il aurait été plus opportun de tester le fix avant d'engager le loop par exemple.

Je suis passé aussi par une fonction a part histoire de me faire la main. Ce code etait mon premier mini projet d'apprentissage.


Code: [Select]

#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
#include <TinyGPS++.h>

SoftwareSerial ss(2, 3); // ouverture voie serie soft
LiquidCrystal lcd(4,5,6,7,8,9); // creation objet lcd
TinyGPSPlus gps; // creation objet GPS


void setup()
{
    ss.begin(9600); // ouverture de la voie serie
    lcd.begin(16,2); // initialisation de l'écran
    lcd.print("latxxxxxx");
    lcd.setCursor(12, 0);
    lcd.println("XXX");
    lcd.setCursor(0, 1);
    lcd.print("lonxxxxxx");
    lcd.setCursor(13, 1);
    lcd.print("kmh");
    delay(2000);
    lcd.clear();
    delay(100);
    lcd.println("wait 30 sec");
    delay(30000); // methode trop facile d'attente d'un fix gps
    lcd.clear(); 

}

void loop()
{
  while (ss.available())  // tant que le gps fournie des data alors...
    if (gps.encode(ss.read()))  // si gps.encode est "true" alors on lit les data du gps (j'ai galeré
sur ce point, avant de comprendre que gps.encode() doit renvoyer true, c'est tout.)


      {displayInfo();} // alors on appelle la fonction d'affichage.
}

void displayInfo() //fonction d'affichage
{
lcd.setCursor(0, 0);
lcd.print(gps.location.lat(), 6);  // affiche la latitude avec 6 décimales
lcd.setCursor(13, 0);
lcd.print(gps.cardinal(gps.course.deg())); // converti et affiche le cap en degré en cap "point cardinaux" cad N NE NNE E etc...
lcd.setCursor(0, 1);
lcd.print(gps.location.lng(), 6); // affiche la longitude avec 6 décimales
lcd.setCursor(12, 1);
lcd.print(gps.speed.kmph()); // affiche la vitesse en km/h


}


Si tu as des questions sur ce code, hésites pas

Go Up