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);
}