Ciao a tutti vi chiedo aiuto riguardo per creare uno sketch che mi permetta di leggere la velocita tramite un modulo gps collegato ad arduino uno non mi serve leggere il valore su un display ma mi basta il monitor seriale, mi serve questo dato perchè sto costruendo un alettone elettro attuato per la mia auto e voglio automatizzarlo facendolo muovere con dei servi in base alla velocità tramite if e while solo che non so come scrivere lo sketch, grazie a tutti per l'aiuto.
Il codice credo che sia il problema minore. Quello maggiore è come costruire l'alettone ossia come farlo muovere in modo che sia in grado di resistere alla pressione dell'aria, e soprattutto il fatto che modificare un veicolo (se parli della tua auto...) teoricamente dovrebbe implicare rifare l'omologazione (e passarla).
A parte tutto questo, se vuoi divertirti a simulare la cosa in scala, inizia a farti un programmino che in base al valore letto da un potenziometro (che simula il valore della velocità) muove di conseguenza un servo.
Poi per la lettura della velocità è secondo me più semplice interfacciarti via Bluetooth ad un adattatore OBD2 e leggere dalla tua auto direttamente la velocità, che non usare un modulo GPS. E anche questa cosa devi iniziare a sperimentarla tu ed eventualmente scrivere se hai problemi, qui nessuno scrive codice "per conto terzi"
Intanto grazie per la risposta, probabilmente mi sono spiegato male io, tutta la parte hardware è gia completa e funzionante, l'alettone è già costruito e risponde perfettamente allo sketch, attualmente posso comandare manualmente lo spoiler con un potenziometro e in più ho anche messo l'automazione che non appena premo il freno lo spoiler si alzi al massimo della sua apertura e questo già è testato e funzionante.
Il mio problema è che attualmente ho lo sketch al 70% perchè vorrei aggiungere l'automazione dell'apertura in base alla velocità e volevo prenderla con il gps perchè non ho disponibile la obd perchè già impegnata e ovviamente non chiedo che me lo scriva nessuno, mi servirebbe giusto qualche consiglio su come usare le librerie e sopratutto quale sapete consigliarmi in particolare per leggere la velocità sul monitor seriale di arduino.
Guarda, per leggere la velocità non servirebbe neanche Arduino, visto che viene espressa in chiaro nella più banale delle sentenze NMEA che ogni GPS trasmette sulla seriale, la sentenza RMC ...
Esempio nella sentenza:
$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A
l'ottava voce, 22.4 è la velocità in nodi, basta moltiplicarla per 1.85 ed avere la velocità in Km/h.
Struttura della sentenza:
RMC Recommended Minimum sentence C
123519 Fix taken at 12:35:19 UTC
A Status A=active or V=Void.
4807.038,N Latitude 48 deg 07.038' N
01131.000,E Longitude 11 deg 31.000' E
022.4 Speed over the ground in knots
084.4 Track angle in degrees True
230394 Date - 23rd of March 1994
003.1,W Magnetic Variation
*6A The checksum data, always begins with *
Guglielmo
grazie guglielmo ma come faccio a leggere quei dati sul monitor seriale?
Ti occorrono DUE seriali, uno è quella del monitor seriale (Serial) su cui scrivi, una la crei con la libreria SoftwareSerial ed è quella da cui leggi il GPS, poi, quello che leggi da quest'ultima, lo scrivi sul monitor seriale.
Guglielmo
P.S.: Si fa anche senza Arduino, ma sarebbe fuori dallo scopo di questo forum e NON sarebbe ammessa come discussione.
non è che potresti farmi un esempio di sketch? grazie mille gugliemo
Lo abbiamo messo un'infinità di volte sul forum (... basta imparare a cercare ) ... comunque ... eccolo qui:
#include <SoftwareSerial.h>
#define SS_RX 10 // RX PIN to receive data
#define SS_TX 11 // TX PIN to transmit data
SoftwareSerial ssSerial(SS_RX, SS_TX);
void setup()
{
delay (1000);
//
Serial.begin(9600); // Initialize USB Serial port
ssSerial.begin(9600); // Initialize SoftwareSerial port
//
Serial.println("--- Ports ready ---");
Serial.println("");
}
void loop()
{
if (ssSerial.available() > 0) Serial.write(ssSerial.read());
if (Serial.available() > 0) ssSerial.write(Serial.read());
}
... è fatto per Arduino UNO, per altre schede, forse, bisogna cambiare i pin che si usano per la SoftwareSerial.
Guglielmo