Autopiloter un kontiki

Fermé
Dich - 26 juin 2017 à 16:39
 Dich - 28 juin 2017 à 15:23
Bonjour à tous,

ça fait très longtemps que je suis entrain de chercher et fouiner partout a une solution pour mon projet.
au fait, je veux fabriquer un KONTIKI (une sorte de torpide semi immerger qui sert pour la péché voir PJ), comme je suis nulle sur la programmation je ne peux pas avance.
j'utilise pour ce projet une HMC5883L avec un arduino, mon besoin est d'allumer le Kontiki qui ensuite demande a la HMC5883L d'enregistrer son orientation et que a chaque fois divier la HMC5883l controller le servo moteur.
il ne faut pas oublier qu''il y aura des erreurs si les vagues vont tourner le Kontiki a 360° par exemple tout en sachant le servo a 180°.
(il me faut le code initial aprés je peux le modifier afin de le rendre plus efficace)
est ce que je peux avoir ce code ou au moins me redériger vers lien identique.


d'avance merci
votre aide sera très précieuse

3 réponses

YCN- Messages postés 116 Date d'inscription mercredi 24 juin 2015 Statut Membre Dernière intervention 13 juillet 2017 12
28 juin 2017 à 09:56
Salut,

A) apprend à utiliser des servo moteur
B) apprend à utiliser HMC5883L
C) apprend à utiliser ton truc de pèche
D) met tout ensemble

Voilà je ne pense pas qu'on puisse faire beaucoup plus pour toi.

GIYF
1
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
28 juin 2017 à 10:44
Tout à fait :-)

De plus, comme il dit que que Kontiki doit être "construit", s'il le fabrique de toutes pièces, il va falloir qu'il s'assure de la flottabilité de sa construction, qu'il s'assure de l’étanchéité pour mettre les composants et batterie à l'abri, qu'il détermine la puissance nécessaire des moteurs pour assurer une navigation malgré les vagues et les courants, en tenant compte du tirant d'eau de l'appareil, qu'il gère l'énergie permettant au Kontiki de revenir à la plage, qu'il calcule la distance parcourue et la position de l'appareil en l'estimant (puisque le composant n'est qu'une boussole, pas un GPS), qu'il sache estimer une position et calculer un cap en tenant compte de la déclinaison magnétique, des courants de marée s'il y en a dans la zone de navigation, de la dérive due au vent,...

bref, c'est un beau projet, mais il faut travailler :-)

certainement, ajouter un composant capable de renvoyer une position GPS aiderait, surtout si l'appareil est sensé naviguer loin, comme le Kontiki de la vidéo qu'il poste sur l'autre forum, et qu'il n'a pas posté ici malgré son affirmation "voir PJ".


Dal
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
26 juin 2017 à 17:06
0
j'ai vraiment essayé plusieurs codes mais sans réussite, voici le code:

<#include <Wire.h>
#include <HMC5883L.h>
#include <Servo.h>

#define SERVO 9
#define CENTER 100
#define GOAL 0

HMC5883L compass;
int goal = GOAL;
float declinationAngle = 0.212; // Radians
Servo myservo;


void setup() {


Serial.begin(9600);
myservo.attach(SERVO);
Wire.begin();
compass = HMC5883L();
// Set scale to +/- 1.3 Ga
int error = compass.SetScale(1.3);
if (error != 0)
Serial.println(compass.GetErrorText(error));
// Set measurement mode to continous
error = compass.SetMeasurementMode(Measurement_Continuous);
if (error != 0)
Serial.println(compass.GetErrorText(error));
}

void loop() {

int angle = getDegrees();
int error = goal - angle;
if (error >= 180)
error -= 360;
if (error <= -180)
error += 360;
// Update servo and keep with range of +/- 60
if (error > 60)
error = 60;
if (error < -60)
error = -60;
myservo.write(CENTER + error);
delay(10);
}

int getDegrees () {
MagnetometerScaled scaled = compass.ReadScaledAxis();
// Calculate heading when the magnetometer is level, then correct for signs of axis.
float heading = atan2(scaled.YAxis, scaled.XAxis) + declinationAngle;
// Correct for when signs are reversed.
if(heading < 0)
heading += 2 * PI;
// Check for wrap due to addition of declination.
if(heading > 2 * PI)
heading -= 2 * PI;
// Convert radians to degrees for readability.
return (int) (heading * 180 / M_PI);
}/>

je veux savoir au moins est ce que ce code va avec mon projet ou pas?

d'avance Merci
0
Chris 94 Messages postés 50978 Date d'inscription mardi 8 janvier 2008 Statut Modérateur Dernière intervention 17 février 2023 7 325
27 juin 2017 à 16:39
Salut,

Ah ! Dis donc : ça ne ressemblerait pas beaucoup au code donné ici ?
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931 > Chris 94 Messages postés 50978 Date d'inscription mardi 8 janvier 2008 Statut Modérateur Dernière intervention 17 février 2023
28 juin 2017 à 07:30
Bonjour Chris,

en effet c'est mot pour mot la même question, on ne peut pas lui reprocher de la poser un peu partout.
0
Merci infiniment pour vos réaction.

j'ai presque fini avec la partie mécanique (95%) il me reste que quelque détails.
je ne peux pas marquer un avancement coté programmation car je suis nul.

a vrais dire, je commence a faire des essaye avec le langage Arduino mais je sais bien que je ne peux pas créer comme ce code dont j'ai posté au dessus.

c'est vrai que j'ai fais plusieurs post sur plusieurs forum, c'est par ce que je travaille sur ce projet plus que 6 mois.

Merci d'avance pour votre aide.
cordialement.
0