Modulo gps NEO-6M si disconnette all'accensione del Nextion

Buongiorno,
sto sviluppando un piccolo progettino con i seguenti moduli:

  • Arduino UNO
  • DHT22 (per temperatura)
  • GPS compatibile NEO-6M (collegato ad Arduino tramite SoftwareSerial)
  • Nextion in sola ricezione valori (collegato ad Arduino tramite Seriale pin 0, 1)

Carico lo sketch con tutto alimentato ad esclusione del Nextion, il GPS aggancia i satelliti (lampeggia il led sulla sua schedina).
Appena alimento il Nextion, il GPS immediatamente perde la connessione (led fisso)

Sul Nextion leggo correttamente temperatura e umidità, nel campo latitudine invece mi visualizza 0,000000.

Secondo voi, può esserci un conflitto per quanto riguarda le porte seriali ?
Provo a pubblicare lo sketch nel caso qualcuno ha qualche consiglio da potermi dare.

EDIT: solo una volta, con lo sketch pubblicato mi ha visualizzato la coordinata di latitudine (corretta, verificata con Google maps).

P.S.
Ho testato il modulo GPS con i codici di prova inclusi nelle librerie e funziona (visualizzavo sul monitor seriale dell'editor Arduino).

Grazie

#include <DHT.h>                                    // RICHIAMO LA LIBRERIA PER IL SENSORE DHT22
#include <NexText.h>                                // RICHIAMO LA LIBRERIA PER IL NEXTION
#include <TinyGPS++.h>                              // RICHIAMO LA LIBRERIA PER IL GPS
#include <SoftwareSerial.h>                         // RICHIAMO LA LIBRERIA SOFTWARE SERIAL

static const int TXPin = 4, RXPin = 3;              // seriale software per gps

NexText lbtemperatura = NexText(0, 7, "t2");        // RIFERIMENTI ALL'OGGETTO TEMPERATURA SUL NEXTION
NexText lbumidita = NexText(0, 8, "t3");            // RIFERIMENTI ALL'OGGETTO UMIDITA' SUL NEXTION
NexText lblat = NexText(0, 11, "t8");               // RIFERIMENTI ALL'OGGETTO latitudine SUL NEXTION
//NexText lblon = NexText(0, 12, "t9");               // RIFERIMENTI ALL'OGGETTO longitudine SUL NEXTION
//NexText lbalt = NexText(0, 13, "t10");              // RIFERIMENTI ALL'OGGETTO altitudine SUL NEXTION
//NexText lbvel = NexText(0, 14, "t11");              // RIFERIMENTI ALL'OGGETTO velocità SUL NEXTION

#define DHTPIN 9                                    // SENSORE COLLEGATO AL PIN 9 
#define DHTTYPE DHT22                               // SELEZIONO IL TIPO DI SENSORE

DHT dht(DHTPIN, DHTTYPE);                           // CREO OGGETTO DHT
SoftwareSerial gpsSerial(3, 4);                     // IL NEXTION E' COLLEGATO AI PIN 3 (RX) E 4 (TX)
TinyGPSPlus gps;                                    // CREO L'OGGETTO GPS

SoftwareSerial ss(RXPin, TXPin);

float t;                                            // DICHIARO LA VARIABILE PER LA TEMPERATURA
float u;                                            // DICHIARO LA VARIABILE PER L'UMIDITA'
float latitudine;                                   // DICHIARO LA VARIABILE PER LA LATITUDINE
//float longitudine;                                  // DICHIARO LA VARIABILE PER LA LONGITUDINE
//float altitudine;                                   // DICHIARO LA VARIABILE PER L'ALTITUDINE
//float velocita;                                     // DICHIARO LA VARIABILE PER LA VELOCITA'

void setup() {
  Serial.begin (9600);
  ss.begin (9600);
  dht.begin();                                      // INIZIALIZZO IL SENSORE
  nexInit();                                        // INIZIALIZZO IL NEXTION
}

void loop() {

  latitudine = gps.location.lat ();                 // LEGGO LA LATITUDINE
  t = dht.readTemperature();                        // LEGGO LA TEMPERATURA
  u = dht.readHumidity();                           // LEGGO L'UMIDITA'

  updateNextion();
}

  void updateNextion() {
  char sTemp[8];                                    // CREO UN ARRAY DI CARATTERI PER LA TEMPERATURA
  dtostrf(t, 5, 2, sTemp);                          // TRASFORMO UNA VARIABILE FLOAT (t) E LA MEMORIZZO IN UNA STRINGA (sTemp)
  lbtemperatura.setText(sTemp);                     // PASSO UNA STRINGA ALLA LABEL lbtemperatura

  char sUmid[8];                                    // CREO UN ARRAY DI CARATTERI PER L'UMIDITA'
  dtostrf(u, 5, 2, sUmid);                          // TRASFORMO UNA VARIABILE FLOAT (t) E LA MEMORIZZO IN UNA STRINGA (sTemp)
  lbumidita.setText(sUmid);                         // PASSO UNA STRINGA ALLA LABEL lbumidita

  char sLat[10];
  dtostrf(latitudine, 5, 6, sLat);
  lblat.setText(sLat);

  delay(100);
  }

Leggi qui, i Nextion pare che emettano parecchie porcherie a livello RF, prova ad allontanare il più possibile il display dal ricevitore GPS, o usa un antenna esterna, se la situazione migliora ti sarai accertato della causa.

Ciao, Ale.

1 Like

Ciao e grazie.
Sai che probabilmente può essere.

Ho modificato il codice in modo di leggere i dati del gps solo sul monitor seriale, e leggo tutto correttamente, alimento il nextion (con alimentatore separato) a circa 1.5 metri tutto funziona, mi avvicino con il nextion, e sul monitor seriale non leggo più nulla.

Anche tx e rx del nextion sono scollegati.

Magari, è anche il mio modulo gps che non è di alta qualità.....

Non saprei, non ho alcuna esperienza con i moduli GPS, quello che so con certezza è che il Nextion non è di qualità elevata... :grinning:

Ciao, Ale.

1 Like