WEMOS D1 mini con Modulo GPS NEO-6M : una domanda....

Salve a tutti
sto cercando di acquisire i dati GPS dal modulo NEO-6M collegato alla scheda WEMOS D1 MINI. Di seguito lo scheda di connessione (Il modulo MPU6050 non è ancora installato) e la foto del sistema e la snapshot delle impostazioni dell’ambiente di sviluppo insieme con l’output della seriale. Come vedete non riesco a ricevere i dati GPS? Mi sapete dire se è tutto corretto o se c’è un errore nella connessione delle parti? Il software che sto usando è il seguente:

#include <SoftwareSerial.h>

#include <TinyGPS.h>

/* This sample code demonstrates the normal use of a TinyGPS object.
  It requires the use of SoftwareSerial, and assumes that you have a
  4800-baud serial GPS device hooked up on pins 4(rx) and 3(tx).
*/

TinyGPS gps;
SoftwareSerial ss(4, 3);

void setup()
{
 Serial.begin(115200);
 ss.begin(4800);
 
 Serial.print("Simple TinyGPS library v. "); Serial.println(TinyGPS::library_version());
 Serial.println("by Mikal Hart");
 Serial.println();
}

void loop()
{
 bool newData = false;
 unsigned long chars;
 unsigned short sentences, failed;

 // For one second we parse GPS data and report some key values
 for (unsigned long start = millis(); millis() - start < 1000;)
 {
   while (ss.available())
   {
     char c = ss.read();
     // Serial.write(c); // uncomment this line if you want to see the GPS data flowing
     if (gps.encode(c)) // Did a new valid sentence come in?
       newData = true;
   }
 }

 if (newData)
 {
   float flat, flon;
   unsigned long age;
   gps.f_get_position(&flat, &flon, &age);
   Serial.print("LAT=");
   Serial.print(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flat, 6);
   Serial.print(" LON=");
   Serial.print(flon == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flon, 6);
   Serial.print(" SAT=");
   Serial.print(gps.satellites() == TinyGPS::GPS_INVALID_SATELLITES ? 0 : gps.satellites());
   Serial.print(" PREC=");
   Serial.print(gps.hdop() == TinyGPS::GPS_INVALID_HDOP ? 0 : gps.hdop());
 }
 
 gps.stats(&chars, &sentences, &failed);
 Serial.print(" CHARS=");
 Serial.print(chars);
 Serial.print(" SENTENCES=");
 Serial.print(sentences);
 Serial.print(" CSUM ERR=");
 Serial.println(failed);
 if (chars == 0)
   Serial.println("** No characters received from GPS: check wiring **");
}

Ogni consiglio è ben accetto…

Grazie mille per il vostro prezioso supporto.

Francesco

A me pare di vedere il collegamento seriale sbagliato
Tx va con Rx e viceversa

Ciao Brunello il TX del GPS (cavo grigio) è collegato al RX della scheda e viceversa. Può dipendere dal fatto che il gps è dentro casa e non riceve dati dal satellite? E il software è corretto?

Di default il modulo è impostato a 9600 baud

e si, dentro casa non è che riesce a vedere i satelliti

>Francesco_s73: ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post iniziale (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More → Modify che si trova in basso a destra del tuo post) e racchiudere il codice all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra). Grazie.

Guglielmo

Devo cambiare il baud o lo posso lasciare a 9600?

in caso di assenza di segnale satellitare mi devo aspettare quell'output?

mi puoi consigliare uno sketch ottimizzato per leggere i dati dal gps?

a che serve il connetto usb posto sul modulo GPS? solo per alimentare o lo posso usare anche per prelevare i dati direttamente senza usare la scheda?

Grazie

E togli quel collegamento sui 5V della Wemos, se stai usando la USB Non è bello alimentare la Wemos da USb e poi immetterci un'altro 5V. Il collegamento a 5V dello schema è nel caso di alimentazione esterna, quando non sei collegato a un PC

Ma un link a quel modulo GPS, lo hai ?

>Francesco_s73: ma lo hai visto il mio post #4 ? ... procedi alla correzione, come da regolamento, o dovrò chudere il thread.

>Brunello: ti prego dall'astenerti dal rispondere a chi NON rispetta in regolamento (... o sarò costretto a cominciare a cancellare le risposte :confused: ). Grazie.

Guglielmo

Guglielmo scusami ma devo ancora prendere dimestichezza con il forum. Ho provato a modificare come mi hai detto tu ma non mi compaiono i tasti dell'editor quando provo a modificare il post.

se ho capito bene quindi non devo fare il REPLY alle risposte che ricevo ma devo sempre modificare il messaggio originale aggiungendo in coda le mie risposte?

Francesco

Francesco_s73:
se ho capito bene quindi non devo fare il REPLY alle risposte che ricevo ma devo sempre modificare il messaggio originale aggiungendo in coda le mie risposte?

NO, no … le risposte vanno bene così.

Devi andare sul tuo primo messaggio, fare click sul link, in basso a destra, “More”, ti si apre un menu a tendina, devi scegliere “Modify” … ti si aprirà il tuo post originale che potrai modificare.

Devi mettere i tag CODE prima e dopo il codice … prima del codice devi mettere [ code ] (senza gli spazi che ho messo io tra le parentesi), dopo il codice devi mettere [ /code ] (sempre senza gli spazi) così da avere il codice racchiuso così:

#include <SoftwareSerial.h>

#include <TinyGPS.h>
...
...
...

Tutto chiaro ?

Guglielmo

brunello22: Ma un link a quel modulo GPS, lo hai ?

ecco il link amazon...

https://www.amazon.it/dp/B01N2GK1YK/ref=pe_3310731_189395851_TE_3p_dp_1

brunello22: E togli quel collegamento sui 5V della Wemos, se stai usando la USB Non è bello alimentare la Wemos da USb e poi immetterci un'altro 5V. Il collegamento a 5V dello schema è nel caso di alimentazione esterna, quando non sei collegato a un PC

Ciao Brunello ho fatto tutto quello che mi hai detto ma non riesco a ricevere dati dal GPS.... il led rosso del modulo GPS lampeggia. Ti trovi? Che altro posso fare per tentare a farlo funzionare?

Francesco

Scusa, ma se tu gli hai detto di usare un softwareSerial sui pin 4 e 3, perchè lo colleghi al Tx e Rx ?

Prova questo

//Collegare TX del GPS al pin D5 della Wemos
//Collegare RX del GPS al pin D6 della Wemos
#include <SoftwareSerial.h>
#include <TinyGPS.h>
float lat = 43.84, lon = 10.28;

//Collegare TX del GPS al pin D5 della Wemos
//Collegare RX del GPS al pin D6 della Wemos
SoftwareSerial gpsSerial(D5, D6); //rx,tx

TinyGPS gps;

void setup() {
  Serial.begin(115200);
  gpsSerial.begin(9600);
}
void loop() {
  while (gpsSerial.available()) {
    if (gps.encode(gpsSerial.read()))
    {
      gps.f_get_position(&lat, &lon);
      // display position
      Serial.print("Position: ");
      Serial.print("Latitude:");
      Serial.print(lat, 6);
      Serial.print(";");
      Serial.print("Longitude:");
      Serial.println(lon, 6);
    }
  }
  String latitude = String(lat, 6);
  String longitude = String(lon, 6);
  Serial.println(latitude + ";" + longitude);
  delay(1000);
}

Brunello ho fatto.

sulla porta seriale leggo solo:

ets Jan 8 2013,rst cause:4, boot mode:(1,6)

wdt reset

che significa?

Uhmmm, si resetta

come mai… D5 e D6 non sono neanche problematici

Wemos_Neo6M_bb.jpg

io cambierei libreria del GPS

https://github.com/mikalhart/TinyGPSPlus

Bingo!! funziona non avevo collegato i due ground...

Grazie mille Brunello!

Francesco