Ardu-Aquarium Controller v. 3.3.1

bella rici, schedine bellissime, te le stampano proprio in viola ? :slight_smile:

su molti schemi hai dimenticato i valori di resistenze, condensatori ecc. vedi ad esempio quella per il sesnore livello, oppure quelle i2c. riguardale tutte

Si uso https://oshpark.com e le fanno così, lo ho già usato e per il poco che capisco la qualità è ottima, in rete c'è sicuramente qualcosa di più economico, ma con loro è tutto così easy che faccio fatica a cambiare, se poi arrivo a 10 pezzi per scheda e supero i 150 pollici totali, il prezzo scende a 1$ per pollice quadrato :D.
Per i valori invece ? superficialità da principiante... :blush: lunedì sistemo tutto.

Ciao e grazie per averle guardate.

I miei complimentiiiii, ma hai realizzato solo la versione smd?
è possibile avere un PCB ovviamente pagando.
grazie ciao max

Testato:
bella rici, schedine bellissime, te le stampano proprio in viola ? :slight_smile:
su molti schemi hai dimenticato i valori di resistenze, condensatori ecc. vedi ad esempio quella per il sesnore livello, oppure quelle i2c. riguardale tutte

Ancora grazie per la tua segnalazione, ho messo i valori come da tuo giusto suggerimento, spero di non aver dimenticato nulla...
Riallego qui e nel post precedente.

maxweb74:
I miei complimentiiiii, ma hai realizzato solo la versione smd?
è possibile avere un PCB ovviamente pagando.
grazie ciao max

Più avanti, tempo permettendo vedrò di fare anche le versioni DIL, per i PCB, magari sentiamoci in PM ma non dovrebbero esserci problemi, se non quelli strettamente lagati al raggiungimento di alcune quote che poi determineranno il prezzo finale dei singoli pcb.

I pcb, possono tranquillamente essere usati anche in tanti altri progetti, quindi se altri fossero SERIAMENTE/AFFIDABILMENTE INTERESSATI mi scrivano in PM.

Riccardo.

edit 14/04/2014: rimossi i file per revisione degli stessi.

Ciao Riciweb,
posso chiederti una cosa se non ti disturba?
sono riuscito a pilotare PCF 8574AP
con solo questo sistema:

#include <IOexp.h>
#include <Wire.h>
IOexp SCHDOSATORE(0x38);
void setup()
{
  Wire.begin(); // join i2c bus (address optional for master)
 // Serial.begin(9600);
}
void loop()
{
  SCHDOSATORE.write( P0, false);
  delay(500);
  SCHDOSATORE.toggle(P0);
  delay(500);  
}

il consiglio che mi hai dato di usare - File/Esempi/02.Digital/BlinkWithoutDelay come faccio a cambiare il pin 13 le ho provate tutte quelle che conosco molto poche sinceramente

grazie mille

messaggio coretto da maiuscolo a minuscolo

edit by mod: per favore includere il codice usando gli appositi tag

usare il maiuscolo equivale a urlare, cerca di farne a meno.

Anche le variabili e il codice sono scritte in maiuscolo/minuscolo per uno scopo preciso, anche se non influisce sul funzionamento è per leggibilità.

In maiuscolo le costanti, con la prima lettera mnaiuscola i topi di classe, con la prima lettera minuscola le variabili

scusate ma non mi si toglieva anche disinserito il tasto non scriveva in minuscolo
scusate scusate ma ultimamente o il pc e fuori o la linea adsl info e ko

ciao lesto,
scusa ancora mi puoi aiutare a capire questa cosa
grazie

lesto:
usare il maiuscolo equivale a urlare, cerca di farne a meno.

Ciao lesto, in realtà stamattina, il forum non funzionava molto bene, perché anche a me è capitato, di visualizzarlo tutto in maiuscolo, anche ora i titoli dei topic sono tutti in maiuscolo, in più in alcuni momenti, cambiava anche il font del titolo, magari Leo ha una spiegazione.

michele73:
Ciao Riciweb,
posso chiederti una cosa se non ti disturba?

Michele, l'esempio che ti ho suggerito, serve a capire un metodo, a te non deve interessare l'uso del pin 13, ma il metodo che viene usato, ad ogni modo puoi "immaginare" che il pin 13 sia l'equivalente di uno dei pin di SCHDOSATORE, e applicare il metodo che ti ho suggerito per temporizzare l'attuazione del dosatore. Ma tu hai un problema in più, nel senso che devi interrogare RTC per sapere se è il momento giusto per dosare e a quel punto far funzionare il dosatore utilizzando il metodo che ti ho suggerito.

Ciao Riccardo.

Ciao Riciweb,
grazie all'ultima spiegazione forse mi sono svegliato puoi vedere se ho capito bene la prima parte milles
posto il codice che sono riuscito a fare, mi puoi illuminare come posso variare "long interval = 50;" per impostare diversamente i tempi vedi sotto sottolineati
ancora grazie per l'aiuto

_________
// Teste I2C - IO Expander pcf8574P
// Example code for the IOexp libary
// Analog In 5 - SCL
// Analog In 4 - SDA
// Endereço I2C 0 0 0 A2 A1 A0

#include <IOexp.h>
#include <Wire.h>

IOexp schdosatore(0x38);

int ledState = LOW;             // ledState used to set the LED
long previousMillis = 0;

long interval = 50;
//[u]long interval1 = 700;[/u]       
//[u]long interval2 = 1000;[/u]

void setup()
{
  Wire.begin(); // join i2c bus 
  Serial.begin(9600);
  schdosatore.write(P0,OUTPUT);
  schdosatore.write(P1,OUTPUT);
  schdosatore.write(P2,OUTPUT);
  schdosatore.write(P3,OUTPUT);
  schdosatore.write(P4,OUTPUT);
  schdosatore.write(P5,OUTPUT);
  schdosatore.write(P6,OUTPUT);
  schdosatore.write(P7,OUTPUT);
}

void dosatore0()
{
  unsigned long currentMillis = millis();
 
  if(currentMillis - previousMillis > interval)
  {
    // save the last time you blinked the LED 
    previousMillis = currentMillis;   

    // if the LED is off turn it on and vice-versa:
    if (ledState == LOW)
      ledState = HIGH;
    else
      ledState = LOW;
    
    // set the LED with the ledState of the variable:
    schdosatore.write(P0 , ledState);
   }
}

void dosatore1()
{
  unsigned long currentMillis = millis();
 
  if(currentMillis - previousMillis > interval)
  {
    // save the last time you blinked the LED 
    previousMillis = currentMillis;   

    // if the LED is off turn it on and vice-versa:
    if (ledState == LOW)
      ledState = HIGH;
    else
      ledState = LOW;
    
    // set the LED with the ledState of the variable:
    schdosatore.write(P1 , ledState);
    }
}

void dosatore2()
{
  unsigned long currentMillis = millis();
 
  if(currentMillis - previousMillis > interval)
  {
    // save the last time you blinked the LED 
    previousMillis = currentMillis;   

    // if the LED is off turn it on and vice-versa:
    if (ledState == LOW)
      ledState = HIGH;
    else
      ledState = LOW;
    
    // set the LED with the ledState of the variable:
    schdosatore.write(P2 , ledState);
    }
}

void loop()
{
  dosatore0();
  dosatore1();
  dosatore2();
}

edit by mod: per favore includere il codice usando gli appositi tag code

Ciao Michele…
Se avessi provato a compilare ciò che hai postato avresti saputo senza chiederlo che non può funzionare, per errori di vario genere…
Ad esempio hai usato il metodo di dichiarazione dei pin di Arduino per dichiarare i pin del PCF, eppure hai usato un esempio della IOexp ed avresti dovuto sapere che i pin del PCF non vanno dichiarati come input o output

schdosatore.write(P0,OUTPUT);

Non so quante volte te lo ho scritto, ma continuare ad usare sketch scritti da altri non solo non ti aiuta a capire cosa fai, ma ti fa commettere diversi errori, che da ciò che vedo sono soprattutto dovuti al fatto che non ti sei mai messo seriamente ad imparare come si programma Arduino… :relaxed:
In più, te lo scrivo simpaticamente :P, mi metti nella condizione dello zoppo che aiuta lo sciancato perché non è che io sia questa grande cima in programmazione, credimi! :frowning:
Ad ogni modo ecco cosa hai fatto: hai preso l’esempio dei millis, lo hai messo nel frullatore insieme a quello della IOexp e di nuovo hai chiesto se così poteva funzionare, ma non è così che si fa :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes:
Scrivendo oltretutto tre funzioni identiche ma una per ogni dosatore.
Voglio aiutarti, ma tu devi impegnarti e studiare un pochino come tutti io compreso facciamo.
Iniziamo:
Aprendo il file .h della IOexp vedrai che ogni pin del PCF ha un suo indirizzo, quindi puoi dichiarare come costanti i dosatori e dargli un nome per esmpio

const byte fertilizzante = 0x1; //corrisponde al pin 0 del pcf
const byte biocondizionatore = 0x2; //corrisponde al pin 1 del pcf

e via così per i dosatori.
Altra cosa, puoi dichiarare dei tempi di dosaggio, suppongo che a x tempo di funzionamento del dosatore corrispondano tot ml di liquido erogato, quindi puoi fare una cosa del genere:

unsigned long unadose = 10000; //1 secondo
unsigned long duedosi = 20000; //2 secondi
unsigned lond tredosi = 30000; //3 secondi

a questo punto puoi scriverti una funzione tipo questa:

void attivadosatore( byte dosatore, unsigned long dose)
{ schdosatore.write(dosatore, true); //attivo il dosatore
//calcolo il tempo trascorso in base a dose
// e se il tempo di funzionamento del dosatore è >= a dose…
schdosatore.write(dosatore, false); //disattivo il dosatore
}

All’interno del loop quando è il momento giusto richiamerai la funzione scrivendo:

attivadosatore(fertilizzante, tredosi);
attivadosatore(biocondizionatore, unadose);

Ora mi aspetto che tu metta su una bread o quello che ti pare per poter provare in modo efficace lo sketch che scriverai da solo senza scopiazzare in giro ]:smiley: ]:smiley: ]:smiley:
Ciao

P.S. leggi qua e fatti due risate http://www.leonardomiliani.com/2013/la-sindrome-di-gundam/

rici mancano ancora altri component negli schemi :wink:

:astonished: Cosa?
Lo sapevo che ne combinavo una delle mie... :blush:

Ciao Riciweb,
grazie ancora per aiuto, ma devo imparare anch'io come tutti del resto da qualcuno hanno imparato.
buona giornata

riciweb devo farti veramente i complimenti un bellissimo progetto e fatto veramente bene :slight_smile: :slight_smile:
anche io sto facendo un automazione per acquari con arduino un pò diversa ma in linea di massima siamo li XD

per il sensore di livello dell'acqua perchè non hai usato un sensore ad ultrasuoni?
anche con questo avresti la possibilità di misurare in continuo il livello dell'acqua

per il pH hai gia provato qualcosa?

il problema con gli ultrasuino mi pare fosse che potrebbe dare fastidio ad alcuni animali

lesto:
il problema con gli ultrasuino mi pare fosse che potrebbe dare fastidio ad alcuni animali

a si? :fearful:
o cavolo allora se è così devo vedere di sostituirli e mettere altro uff :~

ma il sensore che ha usato riciweb dove posso trovarlo?perchè ho cercato ma non sono riuscito a trovarlo

vinciolo:
riciweb devo farti veramente i complimenti un bellissimo progetto e fatto veramente bene :slight_smile: :slight_smile:
anche io sto facendo un automazione per acquari con arduino un pò diversa ma in linea di massima siamo li XD
per il sensore di livello dell'acqua perchè non hai usato un sensore ad ultrasuoni?
anche con questo avresti la possibilità di misurare in continuo il livello dell'acqua
per il pH hai gia provato qualcosa?

Ciao e grazie, ma i complimenti sono immeritati, se hai già fatto qualcosa e ti va, condividila, magari scambiamo qualche idea.

Per gli ultrasuoni quoto lesto in pieno.

Per il PH ancora personalmente non ho provato nulla, sto cercando di capire in giro vari tipi di schemi che ho trovato, non mi piace usare le cose senza capire almeno a grandi linee come funzionano, ed ancora meno mi piace la pappa pronta, ma faccio fatica a causa della mia estrema scarsità in elettronica, così ancora non mi decido; amplificazione del segnale, condizionamento dello stesso e calibrazione, sono cose purtroppo fuori dalla mia portata, sto provando a studiare, ma è una faticaccia per me :blush:
Un'altro ragazzo che mi aiuta invece sta facendo prove con un chip della texas LMP91200, vedremo.

vinciolo:
ma il sensore che ha usato riciweb dove posso trovarlo?perchè ho cercato ma non sono riuscito a trovarlo

Qui http://www.milonetech.com/Purchase_eTape.html
io l'ho preso qui http://www.robot-italy.com/it/liquid-level-sensor.html
costicchia un pò, ma non c'è nient'altro che fa le stesse cose...

Ciao. :slight_smile:

ammazza se costa sto sensore

io ho fatto l'automazione con arduino mega, un touch da 2,8", sensori di temperatura digitali per la vasca e analogici perla plafoniera a led, schede relè, pompe dosometriche,e teoricamente anche il cambio acqua.

però non per essere testardo ma i sensori ad ultrasuoni sono accesi al massimo per qualche microsecondo ogni ora per controllare il livello e per qualche secondo al massimo quando funziona la pompa di rabbocco quindi non credo che siano tanto pericolosi

sarebbe inutile misurare h24 la colonna d'acqua anche perchè l'evaporazione non è istantanea quindi un controllo all'ora va più che bene

per il pH sto per fare delle prove con un circuito che sto realizzato prendendo spunto dal progetto pH-duino
appena ho qualche risultato vi faccio sapere:)

vinciolo:
però non per essere testardo ma i sensori ad ultrasuoni sono accesi al massimo per qualche microsecondo ogni ora per controllare il livello e per qualche secondo al massimo quando funziona la pompa di rabbocco quindi non credo che siano tanto pericolosi
sarebbe inutile misurare h24 la colonna d'acqua anche perchè l'evaporazione non è istantanea quindi un controllo all'ora va più che bene

In parte hai ragione, ovvero nel casi di utilizzo come semplice osmoregolatore, ma se li usi anche per i cambi dell'acqua ecco che li tieni accesi per diversi minuti continuamente, personalmente non me la sono sentita di usarli, in più non so nemmeno se ne esistano per uso in ambienti costantemente umidi e se siano efficaci anche per rilevazioni su superfici liquide, personalmente non me la sono sentita di usarli.
Se li provi, sarei curioso di sapere come ti trovi.
Attendo notizie anche per il PH ovviamente.

Ciao