Show Posts
Pages: 1 [2] 3 4 ... 9
16  International / Software / Re: Consiglio su dove memorizzare i dati on: September 03, 2013, 04:02:14 am
Grazie Niki,
vedro di informarmi su quesi Database's, non sono molto ferrato in tema Mysql ecc...

Comunque mi piacerebbe poterli mandare su un DB remoto raggiungibile da ovunque, pero dovro farmene una cultura prima poiche io e mysql non ci conosciamo (ancora) :-)

Grazie delle info
Saluti
Remo
17  International / Software / Re: Consiglio su dove memorizzare i dati on: September 03, 2013, 03:41:43 am
Scusa, nel post mio precedente ho dimenticato di menzionarlo.
Sono anche connesso alla rete tramite modulo ethernet.
allo stesso tempo mando i dati qui --> http://open.sen.se/sensemeters/tab/2649/?preview=on
Pero non mi piace tanto poiche non posso fare un log nel passato.

Saluti
Remo
18  International / Software / Re: Consiglio su dove memorizzare i dati on: September 03, 2013, 03:27:56 am
log20130903.txt
log20130902.txt

Ho paura che come nome file quello sia troppo lungo

20130903.TXT
20130902.TXT

così potrebbe andare

Però potrebbe diventare macchinoso se non hai rtc a bordo, e c'è da gestire il passaggio tra le 23.59 e le 00.00 del giorno seguente.

Potresti generare un file che si chiama LAST.TXT che contiene solo l'ultima lettura, e ad ogni passaggio lo sovrascrivi (non append), mentre nello stesso momento appendi i dati nel log di pertinenza.
Per fare lo stesso mestiere attraverso un webserver devi avere ovviamente l'harware per accedere alla rete, e poi avere abbastanza risorse nella MCU per gestire il codice di send/retrieve dei dati .



Si ho RTC a bordo e riesco a gestire il cambio delle 23.59
LAvoro con um Arduino Mega R3 che gestisce un TFT 7" (external supply),un RTC,un sensore di P/T/H,un Xbee.
 pensi sia sufficiente per la gestione delle risorse ?

Saluti
19  International / Software / Re: Consiglio su dove memorizzare i dati on: September 03, 2013, 03:23:22 am
Ciao Leo,
grazie del consiglio, leggendolo mi hai fatto venire un’altra idea.

Al momento scrivo su SD ad ogni impulso ricevuto che tradotto in numeri di righe :

1 Min : circa 3 righe
1 Ora : circa 180 righe
24 h   : circa 4300 righe !!
1 mese: circa 129000 righe !! Arghhhh
1 anno : circa 1.500.000 righe !! Aiutooooo

Soluzione : in fondo mi basta il valore ad ogni ora che ridurrebbe di mooooltooo i dati contenuti sulla SD….circa 8500 righe annuali contro il milione e mezzo !!

Grazie del consiglio, provero a modificare lo sketch, salvera ogni ora inclusi i picchi di massimo consumo.

Anche se la cosa del WebServer mi stuzzica :--))

Grazie ancora e buona giornata

Remo
20  International / Software / Consiglio su dove memorizzare i dati on: September 03, 2013, 02:51:35 am
Buongiorno a tutti,
ho realizzato un progetto (monitoraggio energia casalinga) con l’aiuto di molti di voi.
Ormai è in funzione da quasi 4 mesi.

I dati generati dall’Arduino vengono memorizzati su una SD da 4 Gb.
Ho cosi la possibilità di esportarli in Excel oppure, di rileggere gli ultimi valori in caso di Reset.

Problema : Dopo 4 mesi il file generato sulla SD si aggira a circa 15Mb , l’arduino ci mette un bel po ad aggiungere i dati ! (rallentandomi il ciclo di misura)
Per non parlare di un reset, i tempi di attesa si allungano a quasi 4 minuti !!

Ultimamente pero l’arduino non riusciva piu a inizializzare la SD, cancellando tutti i dati l’Arduino rifunziona correttamente.

Questa variante di scrittura/lettura dati mi sembrava la piu facile ma purtroppo non si è rivelata la piu efficiente.

Mi chiedevo se esiste la possibilita di inviare tutto su un WebServer(pubblico) che abbia la possibilita di memorizzarmi anche tutti i dati (in modo da rileggere gli ultimi valori).

Ho provato con Xively (www.xively.com) funzionerebbe se non fosse che i tempi di risposta del server funziona a singhiozzi (certe volte anche un minuto!!), rallentandomi i tempi di calcolo di tutto il sistema !

In allegato la visualizzazione del mio progetto su un TFT 7"

Grazie e buona giornata
Remo
21  International / Hardware / Re: Collegare TFT 7" su Arduino Mega on: June 08, 2013, 01:51:36 pm
Grazie della dritta, ho seguito il tuo link, da li sono saltato su altri
finendo su questo --> http://electronics.henningkarlsen.com

Risolto...grazie mille.

Remo
22  International / Hardware / Risolto-Collegare TFT 7" su Arduino Mega on: June 08, 2013, 09:32:15 am
Ciao a tutti,
da qualche giorno mi è arrivato questo TFT dalla Cina.

http://www.tjskl.org.cn/products/7_quot_tft_lcd_module_800_480_with_touch_panel_ssd1963_arm_stm32_cortex_m3_code_ssd1963_display_chip-mpz5872a22-z5394520.html

Sto cercando degli schemi su come collegarlo all'Rduino Mega ma invano, tuto cio che ho trovato è in relazione con uno Shield (che nn ho).

Qualcuno è in grado di darmi una mano ?

Grazie e saluti
Remo
23  International / Software / Re: Rileggere variabili dalla ultima riga da una SD (Arduino MEga) on: April 30, 2013, 12:38:35 pm
Ciao a tutti,
problema risolto, i miei 2 Xbee comunicano beati, e dopo un reset tutto continua come se non fosse successo niente.
Un grazie a tutti coloro che mi hanno consigliato.
Buona serata a tutti
Remo

P.S. se qualcuno fosse cosi gentile ed indicarmi come si fa a settar equesto topic come risolto...

24  International / Software / Re: Rileggere variabili dalla ultima riga da una SD (Arduino MEga) on: April 29, 2013, 12:39:50 pm
Ok, Final result :

Sono riuscito a scoprire l'inghippo :-)

Durante la scrittura su SD, mettevo il File.print("\n") alla fine della sequenza, questo mi provocava una riga vuota.
Purtroppo me ne son potuto accorgere solo usando un textEditor non classico (uso MAc).

Ecco il Result utilizzando l'esempio di Pablos che ringrazio.
Code:
inizializzazione SD completata.
scrivo valori...done.
inizializzazione SD completata.
scrivo valori...done.
12345,12331,43221,52523,32411,46222,262322,25222,124442
12345,12331,43221,52523,32411,46222,262322,25222,124442
12345,12331,43221,52523,32411,46222,262322,25222,124442
12345,12331,43221,52523,32411,46222,262322,25222,124442
12345,12331,43221,52523,32411,46222,262322,25222,124442
ultima linea 12345,12331,43221,52523,32411,46222,262322,25222,124442
1
12345
12331
43221
52523
32411
46222
262322
25222
124442

Ora cerchero di implementare il tutto nel mio di sketch.

Grazie ancora e buona serata.

Remo
25  International / Software / Re: Rileggere variabili dalla ultima riga da una SD (Arduino MEga) on: April 29, 2013, 05:03:36 am
Penso sia tutto un fattore di inizializzazione.

Stasera riprovo il tuo esempio, usando le tue init ecc...

P.S. la mia SD Card è una da 8 GB l'ho partizionata in 2 da 4Gb, cattiva idea ?

Saluti e buon pomeriggio

Remo
26  International / Software / Re: Rileggere variabili dalla ultima riga da una SD (Arduino MEga) on: April 29, 2013, 01:16:43 am
Se ci avrei fatto caso me lo sarei chiesto. smiley-cool

Buona giornata
Remo
27  International / Software / Re: Rileggere variabili dalla ultima riga da una SD (Arduino MEga) on: April 29, 2013, 01:05:02 am
Buongiorno a tutti.

@Pablos : Vedró di far rifunzionare il tuo esempio (che all'inizio funzionava)

@Leo72 : Grazie delle delucidazioni, non saprei quali domande avrei dovuto pormi, non saró tanto sveglio !!

Buona giornata a tutti
Remo
28  International / Software / Re: Rileggere variabili dalla ultima riga da una SD (Arduino MEga) on: April 28, 2013, 01:08:59 pm
con la Init SD del mio enviroment invece mi trova il file, ma il risultato rimanne invariato :-(
ecco l'output
-------

Code:
initialization done.
28,4,2013,19,36,8,113165,112972,2
28,4,2013,19,36,16,113165,112972,3
28,4,2013,19,37,8,113165,112972,2
28,4,2013,19,37,16,113165,112972,3
28,4,2013,19,37,24,113165,112972,4
28,4,2013,19,37,32,113165,112972,5
28,4,2013,19,37,40,113165,112972,6
28,4,2013,19,38,48,113165,112972,7
28,4,2013,19,38,56,113165,112972,8
28,4,2013,19,38,64,113165,112972,9
28,4,2013,19,38,8,113165,112972,2
28,4,2013,20,3,8,113165,112972,2
28,4,2013,20,3,16,113165,112972,3
28,4,2013,20,3,8,113165,112972,2
28,4,2013,20,4,16,113165,112972,3
28,4,2013,20,4,8,113165,112972,2
28,4,2013,20,5,8,113165,112972,2
28,4,2013,20,5,16,113165,112972,3
28,4,2013,20,6,8,113165,112972,2
28,4,2013,20,6,16,113165,112972,3
ultima linea
0
0
0
0
0
0
0
0
0
----------
29  International / Software / Re: Rileggere variabili dalla ultima riga da una SD (Arduino MEga) on: April 28, 2013, 12:53:11 pm
Ciao Pablos,
infatti, l'errore "file non trovato appare".
Non saprei dove sbaglio a questo punto.
Il file di testo memorizzato sulla SD non presenta righe vuote.

Unico dubbio è l'utilizzo dei comandi per la SD (diverse librerie ? )

Se uso la tua inizializzazione allegata nel codice, nel momento di scrittura l'arduino mi da errore di apertura.

Come detto in post precedenti, uso la Libreria apresente nell'enviroment arduino.

Quello che mi chiedo , come mai mi fa vedre le righe (in debug) se poi mi dice file non trovato ?

Ecco l'output della seriale al momento ...

dimenticavo uso piu Seriali perche sto usando 2 Xbee

Saluti Remo
----------------
Code:
file non trovato
ultima linea
0
0
0
0
0
0
0
0
0
inizializzazione SD completata.
28,4,2013,19,36,8,113165,112972,2
28,4,2013,19,36,16,113165,112972,3
28,4,2013,19,37,8,113165,112972,2
28,4,2013,19,37,16,113165,112972,3
28,4,2013,19,37,24,113165,112972,4
28,4,2013,19,37,32,113165,112972,5
28,4,2013,19,37,40,113165,112972,6
28,4,2013,19,38,48,113165,112972,7
28,4,2013,19,38,56,113165,112972,8
28,4,2013,19,38,64,113165,112972,9
28,4,2013,19,38,8,113165,112972,2
ultima linea
0
0
0
0
0
0
0
0
0
 secondi passati --> 17 consumo attuale --> 1764.71 Giri disco al momento --> 2
****************************************************************
 Contatore tariffa alta --> 113165 Contatore tariffa bassa --> 112972 Consumo Giornaliero in w/h --> 8
 DATA: 28.4.2013   ORA:19:52:26


apertura file fallita...


30  International / Software / Re: Rileggere variabili dalla ultima riga da una SD (Arduino MEga) on: April 27, 2013, 12:18:44 pm
allego il mio sketch (confusionario)
se riesci a carpirne il problema te ne sarei grato.



Code:
int result;
int buttonPin = 22;
int buttonPin1 = 24;

int giri = 0;

#include <Wire.h>
#include "RTClib.h"
#include <SD.h>
#include <SPI.h>
#define DEBUG_RIGHE_FILE 1 //0=non legge ... 1=legge
int button = 8;
int start;
int stop_;
int tempo;
RTC_DS1307 RTC;
int flag = 0;
int anno;
int mese;
int giorno;
int ora;
int minuti;
int secondi;
int data;
long contatore_alto =113165;
long contatore_basso = 112972;
int flag_contatore;
 int kw_giorno;
 int giri_kw;
File contatore;
String ReadLine;
int riavvio = 0;
char charBuf[80];
byte err_sd=1;
Sd2Card card;
SdVolume volume;
SdFile root;
SdFile file;



void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);
    Wire.begin();
    RTC.begin();
    pinMode (button,INPUT);
  pinMode(buttonPin,OUTPUT);
   pinMode(buttonPin1,OUTPUT);
     pinMode(53, OUTPUT);
  leggi_SD(); //vai alla funzione leggi l'ultima riga da sd  
  
  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__));
  }
  sd_init();
  leggi_SD();
}

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

void leggi_SD(){
  String ReadLine;
  char charBuf[50];
contatore = SD.open("valori2.txt",FILE_READ);
    
if(contatore) {
   int16_t c;
       while ((c = contatore.read())>0){
         ReadLine += (char)c;
           if((char)c=='\n') {                

                 #if DEBUG_RIGHE_FILE              
                 Serial.print(ReadLine);//debug
                 #endif

               if(c > 0) ReadLine="";  
            }  
       }  
   }
  Serial.print("ultima linea ");//debug
  Serial.println(ReadLine);//debug  //questa è l'ultima linea
  ReadLine.toCharArray(charBuf, 50); //metto i singoli caratteri in un array di char
  estrai_valori(charBuf);//vai alla funzione estrai dati
}


void estrai_valori(char *charBuffer){
 unsigned long temp[]= {0,0,0,0,0,0,0,0,0};
  char *p = charBuffer;  
  byte i = 0;

  while (*p != '\0')
  {
    if (*p == ',') { ++i;  ++p;  continue;}
    if (isdigit(*p))
    {
         temp[i] *= 10;
         temp[i] += (*p - '0');            
    }    
     ++p;
  }  

Serial.println(temp[0]);Serial.println(temp[1]);Serial.println(temp[2]);Serial.println(temp[3]);Serial.println(temp[4]);
Serial.println(temp[5]);Serial.println(temp[6]);Serial.println(temp[7]);Serial.println(temp[8]);

contatore.close();
}




void loop() {
 
  DateTime now = RTC.now();
    
    anno = (now.year());
    mese = (now.month());
    giorno =(now.day());
    ora = (now.hour());
    minuti = (now.minute());
    secondi = (now.second());
  
     if (ora > 7 && ora < 21) { flag_contatore = 0;} else {flag_contatore = 1;}
     if (ora == 0 && minuti == 0 && secondi < 20) {giri_kw = 0; kw_giorno = 0;}
  
  
    if (flag == 0) {
   start = (now.unixtime());
   //Serial.println(start);
   }
         flag =1 ;
  
  

 
  // Se arriva impulso tramite Xbee allora si comincia
  if (Serial.available()) {
    int inByte = Serial.read();
  // Serial1.println( Serial.write(inByte));
  
  
   if (inByte == 'I') {      
      giri = giri + 1;
      kw_giorno = kw_giorno + 8.333333;
  
     if (giri == 120) {
      
       if (flag_contatore == 0) {contatore_alto = contatore_alto + 1;}
       if (flag_contatore == 1) {contatore_basso = contatore_basso + 1;}
       giri = 0;}
      
    
    
      tempo = now.unixtime() - start ;
      flag = 0;
    digitalWrite (buttonPin,HIGH);
    delay(150);
    float z = tempo/3600.000000000;
    float  consumo_mom = 8.333333 / z;
  
  
  // Stampa su monitor
    Serial.print (" secondi passati --> ");
    Serial.print (tempo);
    Serial.print (" consumo attuale --> ");
    Serial.print (consumo_mom);
    Serial.print (" Giri disco al momento --> ");
    Serial.println (giri);
    Serial.println ("****************************************************************");
    Serial.print (" Contatore tariffa alta --> ");
    Serial.print (contatore_alto);
    Serial.print (" Contatore tariffa bassa --> ");
    Serial.print (contatore_basso);
     Serial.print (" Consumo Giornaliero in w/h --> ");
    Serial.println (kw_giorno);
    Serial.print (" DATA: ");
    Serial.print (giorno);
    Serial.print (".");
    Serial.print (mese);
    Serial.print (".");
    Serial.print (anno);
    Serial.print ("   ORA:");
    Serial.print (ora);
    Serial.print (":");
    Serial.print (minuti);
    Serial.print (":");
    Serial.print (secondi);
    Serial.println ();
    Serial.println ();
    Serial.println ();
    
    
//Scrittura su SD  
contatore = SD.open("valori2.txt", FILE_WRITE);
      // if the file opened okay, write to it:
  if(contatore) {
    Serial.print("scrivo valori...");
    delay(250);
      contatore.print(giorno);
     contatore.print(",");
     contatore.print(mese);
      contatore.print(",");
       contatore.print(anno);
         contatore.print(",");
      
         contatore.print(ora);
          contatore.print(",");
           contatore.print(minuti);
         //   contatore.print(",");
         //    contatore.print(secondi);
            
              contatore.print(",");
              
              //  contatore.print(consumo_mom,0);
                
              //   contatore.print(",");
                   contatore.print(kw_giorno);
                  
                    contatore.print(",");
                     contatore.print(contatore_alto);
                    
                       contatore.print(",");
                        contatore.print(contatore_basso);
                        
                          contatore.print(",");
                           contatore.print(giri);
                            
                            contatore.print("\n");
                          
                        
                          
// close the file:
  contatore.close();
    Serial.println("done.");

  } else {
    // if the file didn't open, print an error:
    Serial.println("apertura file fallita...");
  }
    
    
}

  

  digitalWrite (buttonPin,LOW);
 

  









  // read from port 1, send to port 0:
 // if (Serial1.available()) {
   // int inByte = Serial1.read();
  }
}
 
Pages: 1 [2] 3 4 ... 9