Datalogger Arduino temperatura umidità

Unendo due progetti che puoi leggere su questo blog Datalogging con arduino e sensore DHT11 puoi realizzare il progetto: Datalogger arduino temperaura e umidità.

Datalogger arduino temperatura umidità humidity

Dal nome del progetto “Datalogger arduino temperaura umidità” hai già capito l’obiettivo che puoi raggingere: realizzare un sistema di monitoraggio della temperatura e dell’umidità dell’ambiente in cui lo posizioni.

Come funziona il Datalogger arduino temperatura umidità ?

Il principio di funzionamento è semplice ogni 10 minuti ( 600000 millisecondi = 600 secondi ) rilevi la temperatura e l’umidità attraverso la sonda DHT11 e scrivi in un file di log ( dati.log ) la stringa:

data ora umidità temperatura

il file dati.log lo memorizzi su di una SD Card formattata FAT16 o FAT32 inserita nella SD Card Shield.

Cosa ti serve per realizzare il progetto

L’elenco del materiale è:

  • n.1 arduino uno
  • n.1 RTC Shield
  • n.1 SD Card Shield
  • n.1 sonda DHT11 con relativo cavetto di connessione
  • n.1 Memory card SD da 2Gb max
  • n.3 cavetti per breadboard

tutto il materiale puoi acquistarlo in arduino datalogger kit disponibile sul sito robot-domestici.it

Lo sketch del datalogger arduino

Lo sketch lo puoi realizzare partendo dai due precedentemente presentati per cui commenterò solo le differenze ottenute unendo i due sketch precedenti:

// Date and time functions using a DS1307 RTC connected via I2C and Wire lib

#include <Wire.h>
#include "RTClib.h"
#include <SD.h>
#include <dht11.h>

#define CS 10
#define DHT11_PIN 4

RTC_DS1307 RTC;
dht11 DHT;
char buffer[50];

File myFile;

void setup () {
    Serial.begin(57600);
    Serial.print("Initializing SD card...");
    pinMode(CS, OUTPUT);

    if (!SD.begin(CS)) {
      Serial.println("initialization failed!");
      return;
    }
    Serial.println("initialization done.");

    Wire.begin();
    RTC.begin();
    RTC.sqw(0);		//0 Led off - 1 Freq 1Hz - 2 Freq 4096kHz - 3 Freq 8192kHz - 4 Freq 32768kHz
    if (! RTC.isrunning()) {
      Serial.println("RTC is NOT running!");
      // following line sets the RTC to the date & time this sketch was compiled
      RTC.adjust(DateTime(__DATE__, __TIME__));
    }
}

void loop () {
    DateTime now = RTC.now();

    // -----------------------------------------------------------------------
      int chk;
      chk = DHT.read(DHT11_PIN);    // READ DATA
      int data = 0;                 // RETUTRNCODE
      switch (chk){
        case DHTLIB_OK:  
                    data = 0;                
                    break;
        case DHTLIB_ERROR_CHECKSUM: 
                    data = 997;     // CHECK SUM ERROR
                    break;
        case DHTLIB_ERROR_TIMEOUT: 
                    data = 998;     // TIMEOUT ERROR 
                    break;
        default: 
                    data = 999;     // UNKNOWN ERROR
                    break;
      }

    // -----------------------------------------------------------------------

    sprintf(buffer,  "%02d/%02d/%d %02d:%02d:%02d %d %d", now.day(), now.month(), now.year(), now.hour(), now.minute(), now.second(), DHT.humidity, DHT.temperature, data );
    Serial.println( buffer );

    myFile = SD.open("dati.log", FILE_WRITE);
    if (myFile) {
      myFile.println(buffer);
      myFile.close();
    } else {
      Serial.println("error opening data.log");
    }

    delay(600000);
}

come avrai già intuito la prima differenza risiede nell’inclusione di tutte le librerie necessarie a gestire RTC,SD Card e DHT11:

#include <Wire.h>
#include "RTClib.h"
#include <SD.h>
#include <dht11.h>

alle prime tre librerie presenti nel progetto data logging arduino devi aggiungere la libreria del DHT11, ultima riga.

le linee 08-09: definisci due costanti CS e DHT11_PIN la prima definisce il pin di CABLE SELECT per la gestione della SD Card shield, mentre il secondo il pin a cui hai collegato il pin output della sonda DHT11, nell’esempio io l’ho collegata al pin 4 di Arduino:

Datalogger Arduino temperatura humidity collegamenti

linee 11-13: definisci l’istanza dell’oggetto RTC, del DHT e ilo buffer di 50 caratteri in cui memorizzi i valori letti dai primi due: RTC ( data e ora = 19 caratteri ) e DHT11 ( temperatura e umidità = 6 caratteri );

linee 17-37: non ci sono variazioni;

All’interno della funzione loop() la prima modifica riguarda le linee 42-61:

 // -----------------------------------------------------------------------
      int chk;
      chk = DHT.read(DHT11_PIN);    // READ DATA
      int data = 0;                 // RETUTRNCODE
      switch (chk){
        case DHTLIB_OK: 
                    data = 0;               
                    break;
        case DHTLIB_ERROR_CHECKSUM:
                    data = 997;     // CHECK SUM ERROR
                    break;
        case DHTLIB_ERROR_TIMEOUT:
                    data = 998;     // TIMEOUT ERROR
                    break;
        default:
                    data = 999;     // UNKNOWN ERROR
                    break;
      }

    // -----------------------------------------------------------------------

in cui la linea 44: leggi i dati dal sensore, usando il metodo read() dell’istanza DHT indichi alla sonda di leggere i valori per il datalogger arduino temperatura umidità;

linee 46-59: verifichi il return code dell’interrogazione eseguita alla linea 44 in modo da scrivere nel log eventuali anomalie di comunicazione con la sonda;

linea 63: componi la riga di log da scrivere sulla SD Card e memorizzala nel buffer, la linea è composta come:

gg/mm/aaaa hh:mm:ss uu tt

in cui uu è il valore dell’umidità rilevata e tt il valore di temperatura rilevata;

le linee restanti servono a scrivere nel dile di log il file dati.log.

Ho attivato ieri il mio datalogger arduino umidità temperatura dalle 9:45 alle 17:45 circa lasciando che acquisisse i dati dell’ambiente, casa, ecco il risultato del file alle 17:45:

15/12/2013 09:45:38 43 16
15/12/2013 09:48:16 43 16
15/12/2013 09:48:20 44 14
15/12/2013 09:48:33 45 15
15/12/2013 09:48:39 45 15
15/12/2013 09:58:38 45 15
15/12/2013 10:08:37 45 19
15/12/2013 10:18:36 45 19
15/12/2013 10:28:35 45 19
15/12/2013 10:38:33 44 19
15/12/2013 10:48:32 45 19
15/12/2013 10:58:31 46 18
15/12/2013 11:08:30 44 19
15/12/2013 11:18:29 46 18
15/12/2013 11:28:28 46 18
15/12/2013 11:38:26 45 18
15/12/2013 11:48:25 46 18
15/12/2013 11:58:24 45 18
15/12/2013 12:08:23 45 18
15/12/2013 12:18:22 46 18
15/12/2013 12:28:20 45 18
15/12/2013 12:38:19 45 19
15/12/2013 12:48:18 45 19
15/12/2013 12:58:17 45 19
15/12/2013 13:08:16 44 19
15/12/2013 13:18:15 45 19
15/12/2013 13:28:13 45 18
15/12/2013 13:38:12 46 18
15/12/2013 13:48:11 45 18
15/12/2013 13:58:10 46 18
15/12/2013 14:08:09 45 18
15/12/2013 14:18:07 45 18
15/12/2013 14:28:06 45 18
15/12/2013 14:38:05 45 19
15/12/2013 14:48:04 45 19
15/12/2013 14:58:03 45 19
15/12/2013 15:08:02 45 19
15/12/2013 15:18:00 46 18
15/12/2013 15:27:59 46 18
15/12/2013 15:37:58 46 18
15/12/2013 15:47:57 46 18
15/12/2013 15:57:56 46 18
15/12/2013 16:07:54 45 18
15/12/2013 16:17:53 46 18
15/12/2013 16:27:52 45 19
15/12/2013 16:37:51 45 19
15/12/2013 16:47:50 45 19
15/12/2013 16:57:49 44 19
15/12/2013 17:07:47 45 18
15/12/2013 17:17:46 44 19
15/12/2013 17:27:45 46 18
15/12/2013 17:37:44 45 18
15/12/2013 17:47:43 45 18

ho importato il file in un foglio di calcolo e generato un grafico sull’andamento della temperatura:

Datalogger Arduino temperaturaed un grafico sull’andamento dell’umidità rilevate:

Datalogger Arduino umiditaBuon monitoraggio domotico !!!

  • Questo sito ed i suoi contenuti è fornito "così com'è" e Mauro Alfieri non rilascia alcuna dichiarazione o garanzia di alcun tipo, esplicita o implicita, riguardo alla completezza, accuratezza, affidabilità, idoneità o disponibilità del sito o delle informazioni, prodotti, servizi o grafiche correlate contenute sul sito per qualsiasi scopo.
  • Ti chiedo di leggere e rispettare il regolamento del sito prima di utilizzarlo
  • Ti chiedo di leggere i Termini e Condizioni d'uso del sito prima di utilizzarlo
  • In qualità di Affiliato Amazon io ricevo un guadagno dagli acquisti idonei qualora siano presenti link al suddetto sito.

Permalink link a questo articolo: https://www.mauroalfieri.it/elettronica/datalogger-arduino-temperatura-umidita.html

62 commenti

2 ping

Vai al modulo dei commenti

    • mauro il 19 Dicembre 2013 alle 22:13
    • Rispondi

    Ciao Omonimo,veramente bello il tuo blog,complimenti,da questo sketch volevo creare un progettino simile e per questo ti chiedevo due “dritte”.
    Volevo rilevare la chiusura di un input digitale in intervalli di 10 minuti ( esempio dalle 07:00 alle 07:10 contatto chiuso per 315 volte,per 24h,7 giorni su 7,per tutto l’anno).
    Il tutto viene salvato in un file di log.
    La mia domanda era questa,quanto spazio deve avere la mia sd card??Come faccio a calcolarmelo??
    Spero di essere stato abbastanza chiaro,Grazie in Anticipo.

    Saluti,Mauro

    1. Ciao Mauro,
      la grandezza della SD Card può essere al massimo 2Gb per conoscere quanti giorni puoi registrare devi definire quanto è lunga una stringa di log, per farlo usa un semplice metodo: crea un file txt sul tuo computer che contiene una linea tipo di quelle che vuoi scrivere come log e verifica quanto è grande il file, ad esempio

      20/12/2013 10:40:00 315 occupa 24byte circa

      poi dividi 2Gb = 2048Mb = 2097152byte -> 2097152 / 24 = 87381 record circa

      Mauro

    • mauro il 20 Dicembre 2013 alle 12:52
    • Rispondi

    Grazie 1000,ora è tutto chiaro.

    Saluti,Mauro

    • mauro il 21 Dicembre 2013 alle 14:00
    • Rispondi

    Ciao Mauro,scusa se ti rompo ancora,ma non mi trovo con i tuoi calcoli.
    2 Gb=2048Mb=2147483648 -> 2147483648/24 = 89478485 record circa

    E’ Sbagliato?

    Ciao Mauro

    1. Ciao Mauro,
      così ad occhio direi di si 🙂 non ho una calcolatrice a portata di click.

      Mauro

    • Ennio Maresca il 25 Dicembre 2013 alle 08:06
    • Rispondi

    Buongiorno, bravo, sempre i miei complimenti.
    Approfitto per augurare un Buon Natale e un Sereno e Prospero Anno Nuovo.
    Cordialmente Ennio Maresca Pescara

    1. Grazie Ennio,
      ho diversi progetti in cantiere per il 2014 🙂

      Mauro

    • Gino Maurizio il 1 Gennaio 2014 alle 22:17
    • Rispondi

    Complimenti per i contenuti del blog, molto interessante.
    Mi sono permesso di postare la tua pagina sul mio diario facebook.
    Speriamo che altri si interessano a questo ambiente così interessante.
    Grazie

    1. Grazie Gino,
      hai senza dubbio aiutato a diffondere l’argomento.
      Ho realizzato un kit per questo progetto se vuoi riprodurlo ed é in vendita sul sito robot-domestici.it in questo giorni tra le novità, con é senza display LCD 🙂

      Mauro

    • Carlos Palha il 5 Gennaio 2014 alle 18:24
    • Rispondi

    Hi Friends

    I am trying to do a similar program like this Arduino temperature humidity data logger, but I only will use DHT11 sensors, I have 10 sensors and Arduino uno .
    Can you help me recode your code (for 2 or 3 DHT11 sensors)? I tryed but give many errors and I am a begginer.

    Thanks in advance

    CPalha

    1. Hi Carlos,
      in the future I will write the code for multiple DHT sensor, now i have only one sensor and I can’t try this sketch.

      Mauro

  1. Non riesco a trovare la Shield SD che hai usato, è sufficiente una qualsiasi Shield SD che utilizzi il bus SPI? A proposito, questo bus che pin di Arduino utilizza?

    Grazie

    1. Ciao Andrea,
      la SD Card è stat sostituita con una più aggiornata che non ho ancora provato.
      Sulla compatibilità con Arduino ce ne sono diverse che ho provato ma ognuna usa una propria libreria e metodi di scrittura e lettura.
      Controllare che il negozio da cui acquisti ti rilasci lo sketch di esempio da utilizzare.

      Mauro

        • Andrea il 31 Gennaio 2014 alle 22:21
        • Rispondi

        Grazie Mauro, potrei utilizzare per il datalogger direttamente un Arduino yun?

        1. Ciao Andrea,
          in linea di massima direi di si anche se non l’ho mai testato con la Yun potrebbe essere un ottimo esercizio.

          Mauro

        • Andrea il 31 Gennaio 2014 alle 22:44
        • Rispondi

        comunque nella shield che ho visto c’è scritto: “Shield per Arduino” e “Arduino Library support”
        credo quindi che posso usare la libreria “sd.h” giusto?

        1. Ciao Andre,
          non so di quale shield tu stia parlando ma se la indicano valida per Arduino è certamente compatibile.
          Devi verificare che esista una deguata documentazione sull’utilizzo e che usi pin che il datalogger non usa per altro altrimenti ti troverai in un conflitto di pin 🙂

          Mauro

    • daniel il 10 Marzo 2014 alle 01:42
    • Rispondi

    Ciao mauro sto seguendo i tuoi progetti perché sono fatti veramente molto bene complimenti e li sto utilizzando come spunto per il mio..volevo chiederti una volta creato il file e salvato su SD..posso utilizzarlo per la lettura all’interno di un frame nel mio web server che verrà aggiornato ogni secondo per vedere l’aggiornamento in tempo reale?
    grazie in anticipo 🙂

    1. Ciao Daniel, descritto così vedo delle difficoltà oggettive sui tempi, dipende molto da come pensi di accedere dal webserver per recuperare i dati e come sarà fatto il webserver.

    • daniel il 10 Marzo 2014 alle 14:01
    • Rispondi

    ciao mauro, io utilizzo lo sketch di esempio che hai l’arduino nel software

    1. Ciao Daniel, non comprendo cosa intendi.

    • benaceur il 29 Maggio 2014 alle 23:25
    • Rispondi

    bonjour
    je veut savoir comment sauvegarder les données températures et humidités dans un fichier dans un micro-ordinateur avec une carte arduino uno et capteur température – humidité ( DHT 22)

    1. Bonjour Benaceur,
      pour sauvegarder les données sur un ordinateur, vous pouvez utiliser le port série.
      Vous devez écrire un programme en Vb, Python, C, ou bien sur l’ordinateur qui sauvegarder les données.

    • walter il 31 Luglio 2014 alle 00:09
    • Rispondi

    Salve Mauro, grazie intanto … imparo lentamente ma imparo …
    Non volendo passare le prossime notti a finire, veder funzionare il datalogger temperature…
    ti chiedo un aiuto ….
    Non riesco a capire il motivo perchè non mi da il corretto valore sul file di temperatura ed umidita..

    DHT11, OK, 60.00, 28.00
    31/07/2014 00:08:39 0 17008
    DHT11, OK, 60.00, 28.00
    31/07/2014 00:08:43 0 17008
    DHT11, OK, 60.00, 28.00
    31/07/2014 00:08:47 0 17008
    DHT11, OK, 60.00, 28.00
    31/07/2014 00:08:51 0 17008
    DHT11, OK, 60.00, 28.00
    31/07/2014 00:08:55 0 17008
    DHT11, OK, 60.00, 28.00
    31/07/2014 00:08:59 0 17008
    DHT11, OK, 60.00, 28.00
    31/07/2014 00:09:03 0 17008
    DHT11, OK, 60.00, 28.00
    31/07/2014 00:09:07 0 17008
    DHT11, OK, 60.00, 28.00

    Questo è quello che mi viene fuori ..
    Ho compreso che la riga incrimitata..è
    sprintf(buffer, “%02d/%02d/%d %02d:%02d:%02d %d %d”, now.day(), now.month(), now.year(), now.hour(), now.minute(), now.second(), DHT.humidity, DHT.temperature, data );

    Ma le ho provate tutte..

    Grazie
    Walter

    1. Ciao Walter, prova il sensore con lo sketch di test che fornisce il produttore o venditore e verifica che funzioni correttamente e che i valori siano corretti.

        • walter il 31 Luglio 2014 alle 10:11
        • Rispondi

        Grazie Mauro… intanto il sensore l’ho provato .. funziona… mi tira fuori i valori corretti il problema è sulla scriittura
        sulla SD.
        e su questa riga :
        sprintf(buffer, “%02d/%02d/%d %02d:%02d:%02d %d %d”, now.day(), now.month(), now.year(), now.hour(), now.minute(), now.second(), DHT.humidity, DHT.temperature, data );
        Da quello che ho capito la variabile %d indica la lettura di DHT.humidity o DHT.temperature.
        solo che quando la legge legge iin questo modo
        DHT11, OK, 60.00, 28.00
        31/07/2014 00:09:07 0 17008 –> è il valore che scrive mentre sopra il valore è 28.
        Sto usando una libreria diversa dalla tua del dth11 ma tutto funziona, ho variato i valori nell schetch ..
        e va…
        Walter

        1. Bene Walter,
          sono contento che tu sia riuscito a farlo funzionare.

            • walter il 31 Luglio 2014 alle 19:51

            Scusami Mauro …. si funziona il sensore… ma mi è rimasto il problema del valore errato
            in scrittura su SD della temperatura ed umidità…
            Anche oggi prove ma nulla… non so più cosa provare….

            Grazie Mauro …

          1. Ciao Walter,
            non avevo compreso 🙂
            Potrebbe essere dovuto al differente tipo di variabile restituito dalla classe che stai usando.
            Ad esempio: se la classa DHT11 restituisce un float ( 28,00 ) ed io lo tratto come un intero ( 28 ) può funzionare anche se non è corretto al 100%
            se, invece, la classe restituisce un char ( “28,00” nel monitor seriale appare come 28,00 ) ed io lo tratto come intero o float ( numero %d ) vedrai una conversione del valore che è di certo differente da quello che ti aspetti.
            Il mio consiglio è di verificare la tua classe cosa restituisce, direttamente nella classe o nella documentazione dell’autore.

            • walter il 1 Agosto 2014 alle 20:32

            CIao Mauro,
            ne sono venuto a capo … grazie ancora delle dritte … e delle conoscenze che metti a disposizione…
            Ho aggiunto questo :
            int DHT_h;
            int DHT_t;

            DHT_h = DHT.humidity;
            DHT_t = DHT.temperature;

            e poi ho variato
            sprintf(buffer, “%02d/%02d/%d %02d:%02d:%02d %d %d ” , now.day(), now.month(), now.year(), now.hour(), now.minute(), now.second(), DHT_h, DHT_t, data );
            Serial.println( buffer );

            Ora va…

            Ultimissima cosa…
            Ho il tempo che va 20 minuti indietro …
            Come si setta?

            Ancora grazie
            Walter

          2. Ciao Walter,
            ora che mi hai descritto la soluzione ho compreso il problema, hai fatto delle modifiche alle avriabili rispetto al mio codice e non avevi idea di quale fosse il motivo per cui le stavi facendo 🙂
            Nel mio codice DHT_t e DHT_h non esistono, appartengono ad altri esempi che ho realizzato, da questo la mia confusione.

            Per il reset dell’ora leggi la descrizione dello sketch troverai una sorpresa nella setup().

    • walter il 4 Agosto 2014 alle 17:35
    • Rispondi

    Grazie MAuro….
    Prezioso..
    Con stima
    Walter

    • Ricky il 8 Gennaio 2015 alle 14:03
    • Rispondi

    Ciao, una domanda come mai a me da sempre errore sulla parte

    RTC_DS1307 RTC;
    dht11DHT; (proprio qui)
    char buffer[50];

    e non riesco ad utilizzare il tuo sketch? potresti aiutarmi? non ho mola esperienza e men che meno per le sd logger. grazie mille

    1. Ciao Ricky,
      che errore ti da?

    2. Ciao Ricky,
      che errore ti restituisce ?
      Se non hai molta esperienza ti consiglio di leggere il mio corso on-line per acquisire le basi o di frequentare un corso in aula prima di sperimentare progetti troppo complessi.

    • francesco il 10 Gennaio 2015 alle 01:19
    • Rispondi

    Ciao Mauro,
    ho un problema con la creazione del buffer , usando un dht22 imposto comefloat il valore per poter vedere il valore decimale ma se uso %d nella creazione del buffer me lo tronca come fosse un int.
    cosa posso scrivere per impostare la virgola (anche fissa con due posizioni decimali) ?
    grazie mille

    1. Ciao Francesco,
      ti consiglio di leggere nel reference arduino o in quello del c++ quali opzioni supporta la funzione sprintf.

        • francesco il 11 Gennaio 2015 alle 17:51
        • Rispondi

        ho risolto con questo metodo
        creo tre char,ovvero tre buffer , uno totale e uno per ogni valore float

        [ codice rimosso in automatico ]

        e cosi via in caso di piu valori.
        poi personalmente avendo 8 dht22 condidero float solo la temperatura perche lavirdola sul valore di umidita’ non ha senso ai fini realistici.
        cosi facendo creo una stringa da salvare nella sd o , prossimo step, da spedire adun server

        1. Ciao Francesco,
          sono contento che tu sia riuscito a risolvere il tuo problema.
          Come avrai letto in fondo ad ogni articolo “non è possibile incollare codice nei commenti”.

    • Daniele il 13 Giugno 2015 alle 07:55
    • Rispondi

    Buongiorno Mauro, avevo iniziato a sviluppare un progetto per controllare la temperatuta di una serra ( facendo accendere una stufetta elettrica se la temperatura scendeva sotto un setpoint).Volevo fare un upgrade del progetto per avere un log su SD.. Di conseguenza sto provando ad usare il display via seriale per la mancanza mancanza di pin liberi.
    ho iniziato a fare prove con il progetto diviso per parti e tutto funziona; ma unendo i vari pezzi non va piu niente. Volevo chiederti se avevi provato a fare questa modifica sul tuo progetto e se il problema poteva essere dato dalla limitata SRAM.

    Grazie e complimenti per il sito.

    1. Ciao Daniele,
      ho realizzato diversi progetto di serre, umidificatori, controllori di umidità e temperatura, sia con SD sia con Display LCD, quasi tutti di tipo tradizionali a 8 pin, e non ho mai riscontrato problemi di reset.
      Tuttavia potresti aver scritto del codice accessorio che causa il problema da te riscontrato, ti consiglio di verificare quanta memoria utilizzi, l’IDE dalla versione 1.6.1 in poi te lo specifica in fase di compilazione.

    • Vittorio il 4 Settembre 2015 alle 11:29
    • Rispondi

    Ciao Mauro
    grazie per i consigli dati, ho applicato arduino per la raccolta dati di un arnia, adesso mi ritrovo con qualche migliaia diti raccolti tra differenti dati: umidità, temperatura, radiazione solare.
    non so come poterli leggere facilmente, ci sono dei software più immediati di excel?

    I dati sono salvati in formato csv

    saluti
    Vtttorio

    1. Ciao Vittorio,
      io utilizzo i fogli di calcolo perché ritengo siano alla portata di tutti e facilmente utilizzabili.
      Puoi caricare il dato in un database e realizzarti tutte le interfacce di interrogazione che desideri in php,html,javascript se conosci queste tecnologie. In alternativa i programmi di reportistica a pagamento che conosco io hanno costi e complessità elevati perché usati nelle grandi aziende.

    • Alessandro il 9 Gennaio 2016 alle 18:26
    • Rispondi

    Salve Mauro, volevo chiederti un chiarimento sullo sketch descritto: la scheda SD oltre alla libreria specifica SD.h ha bisogno anche della libreria SPI.h per funzionare, corretto? Come mai quest’ultima non la trovo sullo sketch?
    Grazie
    Alessandro

    1. Ciao Alessandro,
      alcune versioni della libreria SD includono da sole la SPI come nel mio caso.

    • Giorgio Rossi il 19 Gennaio 2016 alle 08:26
    • Rispondi

    Salve ho avuto necessità di di installare il suo sketch per eseguire un datalogger, ho avuto problemi a compilare arduino mega per delle librerie sbagliate, semplicemente installate e funziona, ora l’ultima cosa che non mi funziona è la data e l’ora ossia le scrive ma non sono corrette(01/01/2000…..), premetto che uso arduino mega, la shield di rete con lettore microsd W5100, RTC DS3231 e il classico DHT11 che usate anche voi.

    1. Ciao Giorgio,
      ricorda che su Arduino Mega le porte I2C sono differenti da quelle presenti su Arduino Uno.
      Trovi sul sito arduino.cc tutte le specifiche della scheda per comprendere le differenze con l’arduino uno.

        • Giorgio il 23 Gennaio 2016 alle 14:20
        • Rispondi

        Grazie di aver risposto, allora impostate le porte per il mega mi ritrovo con la data e l’ora ancora come prima, poi perché l’IDE riuscisse a compilarmi lo sketch ho dovuto eliminare la riga 30 e 31 in questo caso mi compila e fa tutto quello che dovrebbe fare al di fuori che aggiornare la data e l’ora

        1. Ciao Giorgio,
          la riga 30/31 si riferisce ad un metodo, come leggi in molti commenti, non supportato da tutte le librerie.
          Probabilmente la tua non lo supporta.
          Se hai modificato i pin per utilizzare correttamente SDA ed SCL della Mega dovrebbe funzionare tutto a meno di non aver commesso qualche altro errore.

    • John il 29 Febbraio 2016 alle 16:16
    • Rispondi

    Cari Amici
    sono n uovo dell’ambiente Arduino e incontro le prime difficoltà, che voi forse avete già incontrato e superato.
    vorrei leggere un file di dati e caratteri residente sull’hard disk del pc
    C’è un modo per farlo?

    Inoltre vorrei scrivere i dati digitati sulla tastiera su un altro file dati residente sull’hard disk del PC
    c’è un modo per farlo?
    Grazie a quanti vorranno inviarmi dei suggerimenti

    1. Ciao John,
      innanzitutto ho provveduto a eliminare il tuo indirizzo di posta dal commento, chi vuole può rispondere al tuo commento.
      Con un blog come il mio, scansito al giorno da oltre 1000000 di bot a caccia di email da riempire di spam, è sconsigliato scrivere il proprio indirizzo email in chiaro nei commenti.
      A meno che non ti piaccia ricevere solo spam fino ad intasarti la casella di posta.

      Non ho capito cosa c’entri arduino / genuino con quello che desideri fare.

  2. BUON GIORNO MAURO SONO ALESSANDRO E SONO UN APPPASSIONATO DIARDUINO TROVO I TUOI PROGETTI MOLTO INTERESSANTI E PER ME SORPRENDENTI…. VOLEVO saperecome e’possibilile reperire lo sketch dei data logger dimostrato sul sito … non tinegoche ho provato a incollare lo sketch che hai postato sulweb mamida errore…fammi sapere come e’possibile avere i tuoi meravigliosi progetti….

    1. Ciao Alessandro,
      solitamente il copia e incolla funziona, verifica di avere una versione dell’IDE adeguata ( scaricata da http://www.arduino.cc ) e che nel copia e incolla non ti sia perso qualche parte del codice.
      Se ti da errore specificami quale errore sia dopo aver compreso il funzionamento dello sketch.

  3. ho una versione IDE 1.6.12.

    ecco lerrore

    Arduino: 1.6.12 (Windows 10), Board: “Arduino/Genuino Uno”

    C:\Users\Admin\AppData\Local\Temp\arduino_modified_sketch_995984\sketch_nov09c.ino: In function ‘void setup()’:

    sketch_nov09c:28: error: ‘class RTC_DS1307’ has no member named ‘sqw’

    RTC.sqw(0); //0 Led off – 1 Freq 1Hz – 2 Freq 4096kHz – 3 Freq 8192kHz – 4 Freq 32768kHz

    ^

    C:\Users\Admin\AppData\Local\Temp\arduino_modified_sketch_995984\sketch_nov09c.ino: At global scope:

    sketch_nov09c:74: error: ‘chk’ does not name a type

    chk = DHT.read(DHT11_PIN); // READ DATA

    ^

    sketch_nov09c:76: error: expected unqualified-id before ‘switch’

    switch (chk){

    ^

    Multiple libraries were found for “SPI.h”
    Used: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI
    Not used: C:\Program Files (x86)\Arduino\libraries\SPI-master
    exit status 1
    ‘class RTC_DS1307’ has no member named ‘sqw’

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    • Michele il 18 Gennaio 2017 alle 09:41
    • Rispondi

    Buon giorno Mauro, grazie per questi interessantissimi articoli, volevo chiederti qual è il metodo migliore per poter inviare diciamo ogni 15 minuti, il valore della temperatura (es) via twitter….

    Avrei pensato ad un ciclo for in cui l’ora assume tutti i valori da 0 a 23 mentre per i minuti solo i valori 00,15,30,45.

    Grazie

    1. Ciao Michele,
      io preferisco usare il loop() come ciclo.
      Con i for annidati nel loop() si rischia presto di perdere il controllo dei tempi se vuoi aggiungere funzionalità allo sketch.

    • pier il 29 Gennaio 2017 alle 00:09
    • Rispondi

    Ciao Mauro
    Scusa la domanda banale .Con quale programma si leggono i dati della sd card scritti con arduino?
    e ancora come si fa ad importarli su un programma di calcolo tipo open office?Grazie per la disponibilità

    1. Ciao Pier,
      io uso OpenOffice o MS Office ed ho scritto alcuni articoli in cui mostro come fare.

    • Paolo il 9 Ottobre 2017 alle 08:44
    • Rispondi

    Ciao Mauro,
    sono nuovo del forum, mi è piaciuto molto il tuo progetto. Avrei l’idea d’utilizzarlo con una termocoppia di tipo K, pensi sia possibile? E se si, hai qualche consiglio da darmi su come interfacciarmi con la sonda? Ti ringrazio anticipatamente per la disponibilità. Ciao Paolo

    1. Ciao Paolo,
      non ho mai posseduto una termocoppia tipo K ma so che in molti nel web hanno dedicato articoli a questo tipo di sonde ed interfacce.

    • Michelone il 20 Febbraio 2019 alle 16:04
    • Rispondi

    Ciao Mauro, ho trovato molto interessante e ben spiegato questo progetto, ti faccio una domanda, come potrei inviare questi dati sul cloud in modo da poterli monitorare anche al di fuori della rete locale, ho trovato diversi progetti che lo facevano ma spiegati in maniera contorta per un neofita come me, riusciresti ad aiutarmi? devo monitorare dal lavoro il locale dove ho a fermentare la birra

    1. Ciao Michelone,
      il trasferimento su Cloud implica molte complesse operazioni da considerare.
      Il modo migliore che ho è consigliarti l’utilizzo di una Yun2 con sistema operativo OpenWRT su cui adattare questo progetto e farle fare da server dei dati a cui connetterti da lavoro.
      Trovi dei miei articoli sulle centraline Yun.

  1. […] progetto presentato lunedì scorso ti ha permesso di monitorare i temperatura ed umidità, se ci aggiungi una Keypad […]

  2. […] humidity temperatura suolo ho deciso di utilizzare i componenti utilizzati dal progetto Datalogger Arduino temperatura umidità che sfrutta il datalogger della adafruit già dotato di SD Card shield e RTC […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.