Go Down

Topic: Datalogger online tramite server remoto (Read 224 times) previous topic - next topic

giacomo_contorni

Salve a tutti sto cercando di realizzare un prototipo, per conto di un azienda, di un datalogger che deve esser messo in alcune cucine campione sparse in quasi tutto il mondo, questo datalogger deve essere in grado di leggere temperatura, umidità, data e ora e registrare i dati ogni 3 ore circa su una scheda micro SD; Fin qui tutto facile l aparte difficile è riuscire ogni 6 mesi circa ad inviare il file creato all' interno della SD all'  azienda costruttrice delle cucine, possibilmente in wifi. Grazie in anticipo allgo il software del datalogger offline.



//Funzione data e ora reale tramite modulo DS1307 RTC connesso tramite bus I2C e libreria Wire
/*ARDUINO UNO --> VCC --> VCC
          NANO    GND --> GND
          MINI    SDA --> A4
                  SCL --> A5
                   
 ARDUINO MEGA --> VCC --> VCC
                  GND --> GND
                  SDA --> 20
                  SCL --> 21                   
                  */

// COLLEGAMENTO MODULO TE417 su arduino mega
/* vcc --> 5v
   gnd --> gnd
   sck --> 52
   mosi --> 51
   miso --> 50
   cs --> 53
*/

// COLLEGAMENTO MODULO TE417 su arduino uno
/* vcc --> 5v
   gnd --> gnd
   sck --> 13
   mosi --> 11
   miso --> 12
   cs --> 10
*/
//COLLEGAMENTO MODULO DHT22
/*
 * 1 --> VCC
 * 2 --> pin digitale 2
 * 3 --> niente
 * 4 --> GND
 */
// librerie modulo RTC             
#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 RTC;

// libreria sensore DHT-22
#include <DHT.h>
DHT dht;
 
// librerie già presenti di default nell`Arduino IDE per modulo SD card
#include <SPI.h>
#include <SD.h>
File myFile;
  int valore;
void setup()
{
  pinMode(LED_BUILTIN,OUTPUT);//led inserito nella board arduino pin 13
  dht.setup(2); // pin connessione digitale DHT22 (2)
  Wire.begin(); //inizializzazione Wire
  RTC.begin(); //inizializzazione modulo RTC

  // Aprire la comunicazione seriale
  Serial.begin(9600);
  while (!Serial) { } // Attendere l`apertura della comunicazione seriale
   
     // inizializzazione SD Card
  if (SD.begin())
  {
    Serial.println("SD card is ready to use.");
    digitalWrite(LED_BUILTIN,LOW); // se il led è spento il dataloger funziona correttamente
  } else
  {
    Serial.println("SD card initialization failed");
    digitalWrite(LED_BUILTIN,HIGH); //se il led rimane acceso il datalogger è da ricontrollare
    return;
   
 }
 
  if (! RTC.isrunning())
   {
    Serial.println("RTC is NOT running!");
    //la seguente riga imposta l'RTC sulla data e l'ora
    // PER MODIFICARE AD ALTRA DATA E ORA, PROCEDERE COME DA ESEMPIO QUI SOTTO
    // PER SETTARE AD ESEMPIO "Gennaio 21, 2014 alle 3am" SI DEVE EDITARE:
    // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
    RTC.adjust(DateTime(2018, 3, 14, 8, 52, 0));
   }
}

void loop() {
   delay(dht.getMinimumSamplingPeriod()); //attesa configurazione DHT22
 
  String dataString = ""; // creo una stringa per assemblare i dati di log
  float hum = dht.getHumidity(); //lettura valore umidità e salvataggio su variabile "hum"
  float temp = dht.getTemperature(); //lettura valore temperatura e salvataggio su variabile "temp"
  DateTime now = RTC.now();
 
    /*ANNO   -->  now.year()
    MESE    -->  now.month()
    GIORNO  -->  now.day()
    ORA     -->  now.hour()
    MINUTI  -->  now.minute()
    SECONDI -->  now.second()*/
 
  int a = now.year();
  int M = now.month();
  int g = now.day();
  int h = now.hour();
  int m = now.minute();
  int s = now.second();
  char mystring[] = "hum% --> ";
  char mystring2[] = "temp --> ";
 
  /* Aprire il file. Da notare che può essere aperto un solo file alla volta,
   quindi bisogna chiudere questa prima di aprirne un'altra.*/
myFile = SD.open("datalog.txt", FILE_WRITE);

  // Se è presente il file, scrivi data, ora, umidità, temperatura:
  if (myFile) {   
   // stringa con scrittura data e ora
   myFile.println(String(a)+"/"+String(M)+"/"+String(g)+",  "+String(h)+":"+String(m)+":"+String(s)+",  "+String(mystring)+""+String(hum)+"  "+String(mystring2)+""+String(temp));
 
    myFile.close(); //chiusura file datalogger
   
    // Scrivi sul monitor seriale data, ora, umidità, temperatura:
      Serial.println(String(a)+"/"+String(M)+"/"+String(g)+",  "+String(h)+":"+String(m)+":"+String(s)+",  "+String(mystring)+""+String(hum)+"  "+String(mystring2)+""+String(temp));
      delay(3000);  // Ogni 3 secondi
  }
  // Se il file non è aperto, scrivi sul monitor seriale:
  else {
    Serial.println("Errore apertura datalog.txt");
  }
}





gpb01

#1
Mar 14, 2018, 02:08 pm Last Edit: Mar 14, 2018, 02:33 pm by gpb01
Salve a tutti sto cercando di realizzare un prototipo, per conto di un azienda, di un datalogger che deve esser messo in alcune cucine campione sparse in quasi tutto il mondo .....
Mmmm ... cominciamo maluccio ... ::)

... prima di tutto,  nella sezione in lingua Inglese si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post ...

... poi, essendo il tuo primo post, nel rispetto del regolamento (… 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 il su citato REGOLAMENTO ...

... quindi, in conformità al succitato regolamento, punto 7, devi editare il tuo post qui sopra (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) ...

... a seguire, sempre in conformità al suddetto regolamento, punto 13, il cross-posting è proibito (anche tra lingue diverse) e tu hai messo la stessa domanda in due diverse sezioni del forum. Quella duplicata è stata quindi cancellata ...

... per finire ... ti segnalo che su questo forum viene visto molto di cattivo occhio chi viene qui a chiedere assistenza gratuita per un "prodotto commerciale" che verrà installato su delle cucine vendute in giro per tutto il mondo.
L'azienda che produce le cucine ha sicuramente i soldi per pagare un consulente e farsi risolvere il probelma invece che venire qui a sfruttare "gratis" le conoscenze di gente che lo fa solo per passione e senza fini di lucro.
Inoltre, chi con questo mestiere ci "campa" ... sicuramente NON sarebbe contento della cosa ...

Guglielmo

P.S.: Il tuo post è già stato spostato nell'opportuna sezione del forum "Italiano"
Search is Your friend ... or I am Your enemy !

Go Up