Pages: 1 [2] 3 4 ... 6   Go Down
Author Topic: Greenhouse Project v 0.5 Final rev5 IDE 1.0  (Read 13412 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
God Member
*****
Karma: 0
Posts: 589
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

L'ultimo suggerimento è quello di mettere la cartella radice all'inizio del path, cioè "/log/1112.txt"

Già provato, ma nulla. Cmq ho fatto dei passi avanti, anche se sono arrivata a qualcosa di ancora più ridicolo.
Sono ripartita da zero, ho scritto un codice solo per il file sulla sd, l'ho integrato ecc.
Ed ecco i risultati.
Questo codice, funziona.
Crea un file di log aaaammgg.csv nella dir LOG sulla sd. Tutti i dati vengono normalmente loggati, da seriale si vede tutto, su LCD i dati dei sensori vengono mostrati correttamente.

Code:
 
void loop () {
// Verifica presenza file di log formattato in TimeStamp:
  char filename[] = "LOG/00000000.csv";
  getFilename(filename);
  if (SD.exists(filename)) {
    Serial.print(filename);
    Serial.println(" esiste.");
  }
  else {
    Serial.println("File di Log non presente.");
    // Se il file di log non esiste viene creato:
    Serial.println("Creazione File di Log...");
    myFile = SD.open(filename, FILE_WRITE);
    // Scrittura dell'Header del file di Log e successiva chiusura:
    myFile.println("millis, date, t_out, rh_out, t_in, rh_in, t_h20, t_heat, heat");
    myFile.close();
  }

Adesso a questo codice voglio aggiungere un paio di righe, per mostrare su LCD la creazione del file di log quando avviene.
Scrivo questo:
Code:
 
void loop () {
// Verifica presenza file di log formattato in TimeStamp:
  char filename[] = "LOG/00000000.csv";
  getFilename(filename);
  if (SD.exists(filename)) {
    Serial.print(filename);
    Serial.println(" esiste.");
  }
  else {
    Serial.println("File di Log non presente.");
    lcd.clear ();
    lcd.setCursor(0, 0);
    lcd.print("FileLog Missing.");
    // Se il file di log non esiste viene creato:
    Serial.println("Creazione File di Log...");
    lcd.setCursor(0, 1);
    lcd.print("Building FileLog...");
    myFile = SD.open(filename, FILE_WRITE);
    // Scrittura dell'Header del file di Log e successiva chiusura:
    myFile.println("millis, date, t_out, rh_out, t_in, rh_in, t_h20, t_heat, heat");
    myFile.close();
    delay(1000);
    lcd.clear ();
  }

Non funziona nulla. La seriale smette di dar segni di vita dopo i mess del setup.
Lo schermo LCD è vuoto e non vengono loggati dati.
Paradossalmente se avvio questo secondo codice senza sd inserita, i messaggi appaiono corretti, la seriale va e i dati appaiono sullo schermo.
Perché due righe di lcd.print fanno questo??
ed anche verrebbe da chiedersi, perché fanno questo solamente quando vado a creare un file in sottodir, mentre in root non ci sono problemi?
Mboh.

« Last Edit: December 04, 2011, 01:00:10 pm by DanielaES » Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Mi viene da pensare che le 2 lib insieme possano ad esempio consumare la memoria a disposizione oppure la lentezza di scrittura della SD pianti. Se no ricordo male c'era un bug sulla SD che la rendeva lenta, forse si bloccano insieme
Logged


Offline Offline
God Member
*****
Karma: 0
Posts: 589
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mi viene da pensare che le 2 lib insieme possano ad esempio consumare la memoria a disposizione oppure la lentezza di scrittura della SD pianti. Se no ricordo male c'era un bug sulla SD che la rendeva lenta, forse si bloccano insieme

O bella. Vuol dire che sono qua da due settimane ed ho già trovato il primo bug della mia vita?
che tra l'altro non accade in root?
Ma non c'è qualcuno con lcd e sd che abbia voglia di provare a riprodurre l'errore?
chissa se si risolve spostando i comandi lcd dopo quelli sd e mettendo un delay dopo che la sd ha chiuso il file... mumble.
Vabbeh, ora provo, poi per oggi basta che mi è venuto il malditesta :\
cmq leo, grazie di esserci stato smiley
Logged

Offline Offline
God Member
*****
Karma: 0
Posts: 589
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Aggiungere un delay dopo la chiusura non cambia nulla.
500ms e continua a non funzionare. Non so se si tratti di bug od altro tuttavia, fin tanto che qualche genio non comprenderà l'arcano, ci rinuncio smiley
Quindi, nell'ottica del progetto finale: un timestamp mensile aaaamm.csv, nella sottodirectory /LOG, senza -purtroppo- messaggio su LCD alla creazione del file. Essendo un evento che capita una volta al mese, a mezzanotte... posso sopravvivere.
Dovrò però vedere di postare su LCD qualche debug per la SD, giusto come promemoria se faccio partire tutto senza scheda inserita smiley
Logged

Riva del Garda, TN / Forlì
Offline Offline
Edison Member
*
Karma: 8
Posts: 2246
Il piu' modesto al mondo
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

scusate l'intromissione aggiungendo una cosa che attualmente non è ciò di cui state parlando  smiley-lol

invece che gestire l'LCD con uno shift register usa un pcf8574 se hai ancora A4 e A5 liberi.

la gestione è molto più facile inoltre conosco una libreria che ho usato più volte che ti permette di lavorare semplicemente nel codice cambiano la riga di inizializzazione del display  smiley-wink
Logged

Il nuovo forum italiano sull'elettronica: http://www.electroit.tk/ <--- Nuovamente online!

Offline Offline
God Member
*****
Karma: 0
Posts: 589
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

scusate l'intromissione aggiungendo una cosa che attualmente non è ciò di cui state parlando  smiley-lol

invece che gestire l'LCD con uno shift register usa un pcf8574 se hai ancora A4 e A5 liberi.

Ma figurati, ogni intervento è sempre utile smiley
Premettendo che A4 ed A5 li ho occupati con l'RTC e che quindi, forse, non posso usare la tua opzione... hai link a guide/tut per capire di cosa stai parlando?
Logged

Offline Offline
God Member
*****
Karma: 0
Posts: 589
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ecco qua l'aggiornamento del progetto!
Per chi fosse interessato o per chi ne avesse bisogno in futuro.
Il punto a cui sono arrivata sembra abbastanza stabile e, per una serie di ragioni che spiegherò dopo, sembra essere un punto di arrivo con l'attuale configurazione.

------------------------------------
Greenhouse Project v 0.4d

Monitoraggio temperatura ed umidità, interne ed esterne, con due sensori DHT22.
Monitoraggio intensità luminosa con sensore TSL235R - pin 5.
Monitoraggio temperatura riscaldatore e acqua di irrigazione con due sensori DS18S20.
Indicazione stato relé su Pin A0.

LCD 2 WIRES: DATAPIN D2 - CLKPIN D3
Aggiunto carattere speciale per il grado centigrado °
 
File di log nella cartella ROOT, timestamp mensile aaaamm.csv
Loop di 1 secondo, datalogging MILLS ogni 60secondi
Marcatore di avvenuto log su LCD - (2,0)
Codice per calcolare la media delle luminosità all'interno del periodo di log
Diplay ad Lcd della mediaHz quando viene calcolata.

---------------------------

Ho implementato l'hardware ed il software per LCD 2 wires con 74LS164. Una figata.
Funziona esattamente come prima, lo sketch ha le medesime dimensioni e tutto utilizzando solo due pin dell'arduino.

Il datalogging è completato.
Il file di log, con cadenza mensile, è creato nella root. Se assente viene creato ed inizializzato con l'header corretto per il timestamp dei sensori in csv.

I dati dei sensori vengono mostrati sull'LCD con un refresh di 1 secondo e per sfizio ho aggiunto anche il carattere del grado centigrado.
Il log invece viene fatto attraverso un ciclo interno ogni minuto circa.

Il sensore di luminosità TSL235R è impressionante. Ha una sensibilità pazzesca, rileva le minime fluttuazioni di luminosità.
Decisamente mi sento di consigliarlo, sebbene questa sensibilità sia un problema.
Loggando ogni minuto, se all'atto del Log c'è una schiarita, un fulmine od altro... viene segnato un valore che non è, necessariamente, rappresentativo dell'effettiva luminosità.
Per ovviare a questo problema ho scritto due righe di codice che fanno la media della luminosità nel periodo di log. Il datalogging avviene sulla media e non sulla frequenza istantanea.
La media è "intelligente" significa che, se inserite un delay maggiore nel ciclo principale, comunque la media sarà corretta al periodo di log.
Il sensori di temp ed umidità hanno invece una risposta più lenta, quindi un discorso simile è superfluo.

L'indicazione stato relè su A0 è attiva, ma non c'è ancora il codice per il relè.
La configurazione dell'LCD 2 wires libera molti pin che, tuttavia, non credo siano utilizzabili allo stato attuale.
Lo sketch occupa quasi la totalità della memoria SRAM, aggiungere ulteriori funzioni sembra rendere instabile l'arduino. Direi che siamo al limite smiley
Quindi salvo colpi di genio, direi che questo sketch è il massimo che si possa implementare su un 2009.

E' tuttavia un buon punto di arrivo, sensori, display e datalogging sono una configurazione accettabile per un progetto.
Al momento l'arduino sta funzionando da 24 ore senza interruzione, senza apparenti problemi. Quindi dovrebbe reggere smiley

Nella mia tabella di marcia c'è ancora il web server.
Considerato il punto di arresto, probabile causa ram overflow, a cui sono arrivata... dovrò prendere una piccola deviazione.

Il progetto quindi si svilupperà nell'ottica multiprocessore con due 328 standalone che comunicano tra loro.
Il master si occuperà di sensori ed lcd, lo slave riceverà i dati e tramite la ethernet shield li loggherà sulla sd e farà da web server.
In questo modo la distribuzione delle librerie sarà ottimizzata.
Il web server richiede la SDFAT che è la stessa necessaria per il datalogging. Mettendo le funzioni insieme, posso eliminare la libreria dal master che supporta sensori ed lcd.

Non ho ancora studiato bene il protocollo di comunicazione che probabilmente sarà I2C anche se stamattina ho trovato una libreria che se funziona... smiley-razz
(poi leo mi cazzia)

A seguire fotina e codice completo.
Il codice è ultracommentato e un po' disordinato... abbiate pazienza smiley

* Greenhouse_Project_v_0_4d_LCD2Wires.pde (13.18 KB - downloaded 45 times.)
« Last Edit: December 08, 2012, 11:15:49 am by DanielaES » Logged

Verona
Offline Offline
Jr. Member
**
Karma: 0
Posts: 79
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

volevo solo farti i complimenti per il tuo progetto, se un giorno mi costruisco una serra sarà utile (qualche piantina strana da serra in mente c'è l'ho umh! smiley-grin )

 
Logged

0
Offline Offline
Faraday Member
**
Karma: 30
Posts: 2905
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
volevo solo farti i complimenti per il tuo progetto, se un giorno mi costruisco una serra sarà utile (qualche piantina strana da serra in mente c'è l'ho umh! smiley-grin )
 

Salve, sono della finanza, il suo IP ci è noto, la teniamo d'occhio smiley-grin
Logged

AvrDudeQui front end per avrdude https://gitorious.org/avrdudequi/pages/Home

Offline Offline
God Member
*****
Karma: 0
Posts: 589
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

volevo solo farti i complimenti per il tuo progetto, se un giorno mi costruisco una serra sarà utile (qualche piantina strana da serra in mente c'è l'ho umh! smiley-grin )

Non è nulla di che... fuori è pieno di progetti arduino per serre.
Mi pare vendano pure un garduino!
Io sono arrivata all'arduino proprio seguendo quei progetti smiley
Sulle piante strane non commento... ^___^
Logged

Offline Offline
God Member
*****
Karma: 0
Posts: 589
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Aggiornamento.
Da sx a dx, dall'alto in basso.
Panduino, controller lcd 2 pin versione compatta, monofaccia e senza ponticelli, shield sensori.
Pcb per astro e secondo panduino.
Certo che questo fatto che non si possono allegare immagini... mah. Cmq tinypic non fa il resize.
« Last Edit: December 08, 2012, 11:18:03 am by DanielaES » Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 110
Posts: 6974
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Complimenti, bellissimo progetto.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Verona
Offline Offline
Jr. Member
**
Karma: 0
Posts: 79
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si vede che sotto c'è una mano femminile, quasi quasi invidio quelle piantine, chissà come saranno amorevolmente curate... (sempre che l'arduino non prenda fuoca e trasformi la serra in un bel forno!  smiley-twist )
Logged

Offline Offline
God Member
*****
Karma: 0
Posts: 589
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Aggiornamento:
Finita la costruzione del/dei Panduino.
Finita la costruzione della shield con i connettori per i sensori
Finita la costruzione per il modulo shift register lcd... scendendo con la dimensione delle piste sono riuscita a fare un monofaccia che si attacca dietro all'lcd. Molto bellino smiley
Caricato lo sketch nel Panduino standAlone.

Per la realizzazione dei pcb cfr qui:
http://arduino.cc/forum/index.php/topic,85424.0.html
http://arduino.cc/forum/index.php/topic,86397.0.html
Per la laccatura cfr qui:
http://arduino.cc/forum/index.php/topic,86134.0.html
Per la programmazione del chip in standalone cfr guida del prof. Menniti e qui:
http://arduino.cc/forum/index.php/topic,87754.0.html
« Last Edit: December 08, 2012, 11:18:21 am by DanielaES » Logged

Verona
Offline Offline
Jr. Member
**
Karma: 0
Posts: 79
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

complimenti, fa sempre piacere vedere progetti completi.. smiley-grin
Logged

Pages: 1 [2] 3 4 ... 6   Go Up
Jump to: