Scelta dei materiali:
Arduino UNO: E’ chiaro sembra scontato, ma da principiante è il primo passo anche se agli inizi i pin a disposizione sembravano non bastare, poi abbiamo scoperto I2C e Shif-register, un sospiro di sollievo!!!
Display: 204 HD HD44780 pilotato con IO/Expander PCF8574AP e libreria LiquidCrystal_I2C (http://hmario.home.xs4all.nl/arduino/LiquidCrystal_I2C/LiquidCrystal_I2C.zip); è il più usato in assoluto, ci sono un mare di esempi e tutorial, non è il più grande, ne esistono da 402 o *4, ma sono complicatini da gestire via software, sapendo che la memoria è limitata, ci è sembrata la scelta migliore, costa anche pochissimo e questo non guasta con il pcf poi lo piloti con due soli pin di Arduino!!!
RTC: DS1307 E' tra i più usati, ci sono molte librerie a disposizione ed ha a mio avviso una buona precisione, considerando che comandiamo un acquario ci è sembrata la scelta migliore. Dalla versione 3.0 dello sketch è stato abbandonato l'uso della libreria. Personalmente lo ho in funzione con la sua batteria tampone da quasi due anni e non ho riscontrato imprecisioni apprezzabili, ho usato lo schema classico, in rete ce ne sono molte versioni, ma alla fine si equivalgono quasi tutte, io ho adottato quello di adafruit, e lavora anche lui sul bus I2C, sembra scontato, ma magari chiarisce qualcosa ai principianti come me che leggono questi miei strafalcioni.
Tasti: Sei in tutto, per navigazione nei menù e inserimento dati Su/+, Giù/-, Dx, Sx, Ok e Esc, letti anch’essi via I2C con libreria Wire, quindi anche questi letti con due soli pin, più avanti sarà più chiaro il loro utilizzo, di fatto niente tastierini e cose complicate da gestire via software.
Buzzer: Occupa un pin, abbiamo deciso di usarlo non solo per avere un feedback sonoro alla pressione dei tasti, ma anche per l’implementazione di allarmi in caso di guasto per esempio al riscaldatore.
Sensori di temperatura: DS18B20 due per l’esattezza, sono digitali, hanno una bella libreria (https://github.com/milesburton/Arduino-Temperature-Control-Library/archive/master.zip), usano il protocollo OneWire (http://www.pjrc.com/teensy/arduino_libraries/OneWire.zip)e su un solo pin di Arduino ne metti in cascata quanti ne vuoi, esistono in versione water-proof già belli e pronti da mettere in ammollo. Abbiamo deciso di usarne due per posizionarli in punti diversi della vasca e rilevare la temperatura media.
Scheda relé: Servirà a comandare i vari accessori che decideremo di implementare, è comandata tramite un PCF8574 IC inverter 74HC540N (grazie brunello).
La scheda ad ogni modo servirà per accendere o spengere:
Rel 1 - Riscaldatori
Rel 2 - Alimentatore linea luci 1 (alim. separate per non avere un black-out totale in caso di guasto)
Rel 3 - Alimentatore linea luci 2 (alim. separate per non avere un black-out totale in caso di guasto)
Rel 4 - Alimentatore linea luci 3 (alim. separate per non avere un black-out totale in caso di guasto)
Rel 5 - Elettrovalvola e per i cambi parziali (Scarico)
Rel 6 - Elettrovalvola e per i cambi parziali (Carico)
Rel 7 - Elettrovalvola per la CO2
Rel 8 - Varie ed eventuali
Sulla scheda relé approfondisco un pochino: da principiante ho fatto delle prove, perché ero orientato all’uso dei foto accoppiatori con i triac, ma ho dovuto abbandonare perché con questa soluzione è possibile pilotare on/off solo accessori o componenti VAC, tornando a quanto detto sopra in merito alla filosofia di sviluppo di questo progetto, con i relé posso pilotare on/off accessori o componeti in VAC e VDC (esistono in commercio p.e. elettrovalvole a 12/24/230 VAC o VDC, con i triac potrei comandare solo le VAC, con i relé non avrei limitazioni di scelta), ad ogni modo qualunque strada si scelga di percorrere, in rete c’è una vasta scelta di schede pilotabili con arduino, solo che spesso i piccoli relé a 5v che vengono usati sono delle cinesate, è per questo che io personalmente ho deciso di auto costruirmela.
Ho scelto i relé a 12v, ed i finder in particolare, per avere affidabilità sicura e 8Ah da poterci far scorrere dentro, i relé cinesi di cui è invasa la rete, anche se dichiarano dati di targa analoghi non sono così affidabili ne ho volutamente stressati un paio e su uno ho letteralmente squagliato i contatti e l'altro a cominciato a ronzare tanto che l'ho staccato prima di fare altri casini, siccome tengo alla sicurezza mia e dei miei pescetti (i discus oltretutto costicchiano assai moltissimo), ho scelto questi per i quali esiste apposito zoccolino in caso se ne rompesse uno (non devo ne smontare la scheda ne dissaldare nulla) e lo zoccolino stesso a la sua mollettina di tenuta in caso di montaggio verticale, in più i miei in particolare sono a doppio contatto, quindi staccano entrambe le fasi, considerando che lavoriamo con l'acqua non mi sembra una cosa da poco, con questo non voglio imporre nulla a nessuno, di fatto al controller in teoria si dovrebbe alla fine avere la possibilità di attaccare svariate schede commerciali, e con i relé di fatto potrò pilotare qualsiasi cosa, pur rimanendo nei limiti dei relé della scheda scelta.
Chi volesse seguire i miei passi può leggere questo link: http://arduino.cc/forum/index.php/topic,128951.msg970310.html#msg970310
Alimentazione: abbiamo deciso di usare un comunissimo alimentatore da parete da 12VDC, come ne esistono a iosa in commercio, scartando di fatto un vero e proprio circuito aggiuntivo perché in caso di guasto, ne puoi trovare facilmente un altro anche dal ferramenta sotto casa, diversamente intervenire su un circuito, può essere per un principiante difficoltoso, sulla bread vedrete che c’è anche un piccolo stadio di alimentazione a 5v realizzato con un LN7805 per alimentare gli integrati ed il display, con i 12V poi alimento anche la scheda relé.
Ecco come attualmente nel progetto, sono impegnati i pin di Arduino.
Digitali
0 – Libero
1 – Libero
2- Al piedino INT del PCF con cui vengono letti i tasti (ancora non sfruttato via SW)
3 – PWM della linea 1 delle luci
4 – One Wire - Sensori di temperatura DS18B20
5 – PWM della linea 2 delle luci
6 – PWM della linea 3 delle luci
7 – Buzzer
8 – Libero
9 - Libero
10 – Libero
11 – Libero
12 - Libero
13 - Libero
Analogici
A0 – Libero
A1 – Libero
A2 – Libero
A3 – Libero
A4/SDA – SDA dell’I2C
A5/SCL – SCL dell’I2C
Altri
Aref - Non utilizzato
Reset - Non utilizzato
GND - Connesso alla gnd della bread
5V - Non utilizzato
3,3V - Non utilizzato
Vin - 12V