Monitor seriale: problema nella stampa a intervalli di un'ora

Buonasera ragazzi, mi chiamo Francois e sono nuovo nel forum.
Scrivo per chiedere informazioni riguardo il monitor seriale di arduino. Nello specifico ho un hardware composto dal sensore di temperatura e umidità DHT11.
Il mio obiettivo è quello di ottenere nel monitor seriale delle misure di temperatura e umidità a intervalli di un'ora. Inoltre se non chiedo tropppo vorrei esportare i dati in excel.
Grazie buona conversazione!!!!

Buonasera,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

Eppure era chiaramente indicato il link di dove mettere la presentazione ... ::slight_smile:
... e l'hai messa nel posto sbagliato ... l'ho spostata io, ma devi fare molta più attenzione a quello che ti si scrive e ... rileggi molto bene TUTTO il REGOLAMENTO dato che NON è permesso aprire più thread con lo stesso argomento.

Ho cancellato io il tuo thread duplicato ... per questo specifico argomento continua qui. Grazie.

Guglielmo

OK ti chiedo di scusarmi!!

Che modello Arduino hai? Cosa ti occorre sapere relativamente al monitor seriale?

Il monitor seriale NON ha la possibilità di registrare i dati su un file ... ti consiglio di usare invece un emulatore di terminale, tipo CoolTerm, che è gratuito, è multipiattaforma e permette di salvare quello che riceve direttamente su file.

Guglielmo

Il modello che utilizzo è arduino uno.
nello specifico vorrei che la stampa su monitor seriale avvenisse una volta ogni ora, in modo da avere 24 misure nell'arco della giornata.
Una volta ottenuti i 24 valori li devo esportare su excel, magari utilizzando il programma che mi hai consigliato.

Ok, la prima cosa da valutare è … ti serve “precisione” nella misura del tempo?

Perché l’oscillatore di Arduino UNO va bene per brevi periodi, ma sui lunghi periodi si hanno errori non indifferenti, quindi, se ti servono misure a tempi “esatti”, la prima cosa che devi prevdere è un RTC … ti consiglio un modulo basato su DS3231 che è quello che offre la maggiore precisione.

Una volta che hai l’RTC, puoi mettere un “allarme” ogni ora, trasmetti i dati via seriale ed il programma che ti ho consigliato te li salva già su file. Se nel trasmetterli già separi i vari valori con un carattere specifico (es. la virgola o il punto e virgola) e vai a capo per ogni set di valori hai bello che creato un file formato CSV (comma-separated values) che importi direttamente in Excel senza dover fare altro.

Guglielmo

e tenere sempre aperto l'emulatore di terminale? mai stand-by ne un giochino, su quel PC?
salva in EEPROM le letture (e le ore) e fattele trasmettere quando sei comodo

noi saremmo anche d'accordo, ma occorre considerare una cosa:

se fai così devi tenere acceso e connesso continuamente il PC

se consideri che un PC serve e costa ben più di uno shield SD direi che ti conviene salvare i dati su scheda sd e quando sei comodo mettere la scheda nel PC

scheda che conterrà, d'accordo, un file CSV

oppure, in assenza di una scheda SD, tieni i dati registrati in un array e li trasmetti a comando

edit

rispondevo all'autore, bruciato sul tempo.....

Standardoil:
e tenere sempre aperto l'emulatore di terminale? mai stand-by ne un giochino, su quel PC?

Le mie macchine da "lavoro" sono accese H24 365/365 e NON ci si fanno girare i giochini !!! :smiling_imp:

Direi che la soluzione di Ducembarr di usare una SD è sicuramente la più semplice e pulita, ma ...
... se per l'OP è una "necessità" catturare su PC ogni ora i dati, penso che non abbia problemi a tenerlo acceso e NON giocarci sopra.

Ci dirà lui quali sono le sue vere esigenze ... :slight_smile:

Guglielmo

"Ok, la prima cosa da valutare è ... ti serve "precisione" nella misura del tempo?"

direi che avere una media di circa dieci valori orari non sarebbe male.

Per quanto riguarda l'uso del PC o dell'SD, opterei per la seconda, visto che il PC posso utilizzarlo per altro.

Esiste una sintassi che faccia fare ad arduino: fai la media di 10 valori ogni ora e stampami il valore sull'SD alla fine di ogni ora?

Francois88:
Esiste una sintassi che faccia fare ad arduino: fai la media di 10 valori ogni ora e stampami il valore sull'SD alla fine di ogni ora?

Arduino è un microcontrollore e ... il programma per fare qualsiasi cosa devi scriverlo TU :slight_smile:

Hai a disposizione una serie di funzioni e di librerie (più altre scritte da terze parti che puoi installare) che ti possono aiutare ... per la gestione del "tempo", la gestione della "Seriale", la gestione delle schede "SD", ecc. ecc. ...

Ma sono solo funzione e metodi di classi, tu devi scrivere il codice per utilizzarle e per far fare al microcontrollore quello che ti occorre :slight_smile:

Guglielmo

gpb01:
Le mie macchine da "lavoro" sono accese H24 365/365 e NON ci si fanno girare i giochini !!! :smiling_imp:

Guglielmo

Negriero...

elettroni liberi elettroni felici, fate giocare i vostri transistor, CMOS vuol dire anche gioia: non solo tensione

beh, non saprei bene come esprimermi, ma io direi che non è bello che tu cambi idea a seconda di cosa ti viene proposto:

mi spiego: se ci dici cosa devi fare magari ti possiamo anche dare indicazioni "mirate"

ma se ci lasci parlare "a ruota libera" e poi ogni tanto "scegli" cosa ti pare buono, non è che poi potremo aiutarti molto...

la prima legge di Nelosn (che sono io):
Chi vuole sapere cosa deve fare deve sapere cosa vuole fare
la sua estensione dal discente al docente recita:
La risposta giusta si può ottenere solo dalla domanda giusta, domande sbagliate danno risposte inutili

"beh, non saprei bene come esprimermi, ma io direi che non è bello che tu cambi idea a seconda di cosa ti viene proposto:

mi spiego: se ci dici cosa devi fare magari ti possiamo anche dare indicazioni "mirate"

ma se ci lasci parlare "a ruota libera" e poi ogni tanto "scegli" cosa ti pare buono, non è che poi potremo aiutarti molto..."

Non mi sembra cosi complicata la mia domanda. Provo a scriverla meglio:

Arduino fammi un favore...Leggi dieci valori di temperatura ogni ora. Di questi dieci valori rilevati fai una media. Restituisci il valore medio nel seriale o in una SD.

Come si fa a fare questo?

Francois88:
Non mi sembra cosi complicata la mia domanda. Provo a scriverla meglio:

Arduino fammi un favore…Leggi dieci valori di temperatura ogni ora. Di questi dieci valori rilevati fai una media. Restituisci il valore medio nel seriale o in una SD.

Come si fa a fare questo?

La risposta la trovi nel punto 16.1 del REGOLAMENTO (… che dovresti aver letto) … TU scrivi il software, NOI ti aiutiamo a correggere quanto TU hai fatto. :slight_smile:

Se non hai mai sviluppato su Arduino, o hai sviluppato molto poco, puoi cominciare con studiare QUESTO proseguire con QUESTO e acquistare qualche buon libro (QUESTO) … dopo di che puoi cominciare a scrivere il tuo programma, metterlo qui (… mi raccomando, sempre racchiuso tra i tag CODE che, in fase di edit, ti inserisce il bottone </> … primo a sinistra) e chiedere aiuto sui punti che non ti funzionano o che non capisci. :wink:

Guglielmo

P.S.: Il punto 16.13 del su citato regolamento … ti chiarisce il perché qui NON sviluppiamo per gli altri, ma aiutiamo gli altri a sviluppare il loro programma.

Grazie :slight_smile:

Francois88:
Arduino fammi un favore...Leggi dieci valori di temperatura ogni ora. Di questi dieci valori rilevati fai una media. Restituisci il valore medio nel seriale o in una SD.

Si tratta "solo" di riscrivere la sequenza di operazioni che hai elencato usando le sole operazioni più semplici permesse da un linguaggio di programmazione (operazioni con le variabili, decisioni, ripetizioni)

Dopo di che si possono tradurre quasi uno a uno in istruzioni con la sintassi corretta. Se funzionano su carta, allora, a meno di errori semantici nella traduzione, funzioneranno anche sulla macchina.

"Arduino fammi un favore..."

Non ha un corrispettivo macchina, la macchina non fa favori :smiley:

"Leggi dieci valori di temperatura ogni ora."

Ogni 6 minuti leggi un valore e salvalo in una variabile (possono essere tante variabili diverse, o un array)

"Di questi dieci valori rilevati fai una media."

Se hai salvato 10 valori:
fanne la somma
dividi per 10

Come farne la somma dipende da come scegli di salvare i valori. Variabili singole? Array?
Per sapere se hai salvato la quantità di valori voluta, basta usare una variabile contatore, oppure, nel caso si usi un array (soluzione più sensata), si può controllare il valore dell'indice dell'array stesso.

"Restituisci il valore medio nel seriale o in una SD."

Trasmetti il risultato sulla seriale (con la sintassi prevista per la trasmissione seriale).

Rimarrebbe da descrivere in modo più semplice "ogni 6 minuti", ma questo dipende da come si vuole contare il tempo, e anche se il dato deve essere prodotto allo scadere preciso di ogni ora (alle 2, alle 3 ecc) oppure solo uno all'ora indipendentemente se coincidente con il cambio ora. E in tal caso bisognerebbe anche decidere "come partire" con le prime misure... si parte al cambio dell'ora? Oppure per la prima frazione di ora iniziale ci si accontenta di meno valori su cui fare la media?

Apposta, Francois, ti è stato chiesto che cosa vuoi fare: per capire meglio quali sono le tue esigenze precise, ad esempio per capire se vuoi solo fare un singolo esperimento per vedere come varia la temperatura e la prova può essere facilmente ripetuta in caso di problemi: in tal caso, puoi anche lasciare il computer acceso senza usarlo per altro per il tempo necessario e riavviare la prova in caso di assenza di energia o altro.

Se non ti serve precisione negli orari di misura, puoi usare senza problemi l'economico risuonatore ceramico di Arduino Uno, altrimenti devi usare almeno una scheda di altro produttore che usi un quarzo per il clock del microcontrollore.