mi piacerebbe fare un sistema di navigazione per la mia piccola barca a vela
Vorrei creare un sistema che mi indica la VMG(Velocity Made Good), scarroccio e deriva
Utilizzerei un modulo che indica i gradi bussola, un modulo gps che indica la rotta reale in modo da fare la comparazione e scoprire lo scarroccio e un pulsante da premere quando la barca è contro vento in modo da far calcolare la VMG semplicemente con il coseno dell'angolo rispetto al vento
A qualcuno interessa magari farlo a 4 mani?
Ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato.
Grazie.
... cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO della sezione Italiana del forum, (... e, per evitare future possibili discussioni/incomprensioni, prestando sempre molta attenzione al punto 15), dopo di che, come da suddetto regolamento (punto 16.7), fai la tua presentazione NELL'APPOSITA DISCUSSIONE spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.
Grazie,
Guglielmo
P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto.
P.P.S.: Evitate di utilizzare la traduzione automatica fatta dal browser ... vi impedisce di capire la lingua della sezione dove andate a scrivere ...
sono andato avanti con il mio progetto e in fine sono riuscito a far funzionare ambedue i sensori che ho acquistato(GPS e magnetometro) però mi sorge un dubbio, il limite di non poter collegare più di un sensore di questo tipo ad Arduino se non ricorrendo al protocollo I2C pensi possa essere un limite?
Ovvero potrei non avere i dati abbastanza fedeli?
Collegare più di un GPS non serve a nulla, meglio uno solo ma di qualità (non una cinesata farlocca), altri sensori normalmente osno su bus I2C e quindi collegabili in parallelo.
Certamente Guglielmo, il mio sensore è già saldato(da me) , collegato installato e funzionante, ho provato a cercare sul forum ma il semplice ricavare i gradi di rollio e beccheggio non compare
Non sono un super esperto e non capisco quale sia la strada da percorrere
Non credo che quel sensore vada bene ... ... vedo che, cercando con Google, per misurare le inclinazioni tutti usano delle MPU6050 o delle IMU e, comunque, c'è sempre il problema del alto drift del giroscopio e dell'alta inerzia dell'accelerometro e le cose si complicano parecchio ...
Ma non sono esperto in materia ... magari aspetta che passi qualcuno che ne sa di più
alla fine sono riuscito a far funzionare sia GPS che magnetometro che mi danno COG(course over ground) e angolo bussola
Su consiglio di Guglielmo ho anche acquistato un modulo giroscopio GY-521 MPU6050
Quindi ho : angolo bussola, direzione bussola reale e vorrei aggiungere beccheggio e rollio con quest'ultimo sensore ma nonostante abbia letto e riletto informazioni sul protocollo I2C non riesco a capire quali comandi inserire per leggere i due sensori mettendoli in parallelo(i due sensori hanno indirizzo Gyro : 0x68 e HMC : 0x0D
allego lo sketch che fa funzionare i primi due e chiedo aiuto per comprendere come aggiungere i comandi per il terzo
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
#include <Wire.h>
#include <MechaQMC5883.h>
MechaQMC5883 qmc;
static const int RXPin = 10, TXPin = 11;
static const uint32_t GPSBaud = 9600;
// The TinyGPS++ object
TinyGPSPlus gps;
// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);
void setup(){
Serial.begin(9600);
ss.begin(GPSBaud);
qmc.init();
qmc.setMode(Mode_Continuous,ODR_200Hz,RNG_2G,OSR_256);
}
void loop(){
int x, y, z;
int a;
float rad;
qmc.read(&x, &y, &z,&a);
rad =atan2(y, x);
a = rad * (180.0 / PI);
if (a < 0) {
a = 360 + a;
}
if (a > 360) {
a = a -360;
}
while (ss.available() > 0){
gps.encode(ss.read());
if (gps.location.isUpdated()){
Serial.print("Latitude= ");
Serial.print(gps.location.lat(), 6);
Serial.print(" Longitude= ");
Serial.print(gps.location.lng(), 6);
Serial.print(" COG= ");
Serial.print(gps.course.deg());
/* Serial.print("x: ");
Serial.print(x);
Serial.print(" y: ");
Serial.print(y);
Serial.print(" z: ");
Serial.print(z); */
Serial.print(" a: ");
Serial.print(a);
Serial.println();
}
}
}```
Mi piacerebbe davvero aver capito cosa intendi ma purtroppo il mio livello di neofita non mi aiuta
Posso chiederti una risposta più dettagliata?
Oppure se qualcuno ha lo stesso problema potremmo vederlo assieme
Grazie
Siamo messi maluccio eh ... queste sono veramente LE BASI ...
... ti suggersico di dare un'occhiata al punto 16.1 del REGOLAMENTO ... troverai dei pdf ed un ottimo libro ... ti consiglio lo studio di tutto quanto indicato, perché, senza le basi, ma solo con il copia/incolla, più di far lampeggiare un LED NON fai ...
Premesso questo, in generale, se uno cerca su Google "Arduino library xxxxxxx" dove al posto di xxxxxxx mette il sensore che ha, normalmente trova tutti i link alle librerie ed al loro nome. Poi, nell'IDE di Arduino, tramite il "library manager" (il gestore di librerie), sapendo il nome, le trova e le installa. A quel punto vengono fuori gli "esempi" legati alla libreria e si vede come si usa, ma ...
... ripeto,senza le fontamenta NON si arriva da nessuna parte, per cui, dai retta ... ferma il progetto, prenditi il dovuto tempo e studiati quanto indicato. Vedrai che poi sarai molto più produttivo e molte cose ti saranno più chiare.