Ciao a tutti,
dopo una settimanella di lavoro "la sera" e nei ritagli di tempo, ho completato la mia "ciabatta 2.0", ovvero un sistema che tramite Arduino+relè+connessione a Internet mi permette di controllare accensione e spegnimento del "nostro" KnC Jupiter tramite shell Telnet.
Il progetto è ancora in fase iniziale, ma per garantire sicurezza all'installazione ho rinchiuso tutto in box di quelli che si trovano normalmente da Leroy Merlin.
Ecco qualche foto (dell'oggetto finito e del work in progress):.
Il modulo per Arduino con "power over ethernet"
L'altro Arduino, utilizzato per caricare il bootloader "moddato" (più info sotto)
L'installazione della parte "bassa tensione" quindi Arduino + modulo a due relè
Primo step della parte "alta tensione", con i cablaggi da 1,5 mm2 (max 15A)
Collegamenti della parte "alta tensione" completati
Collaudo!
Lista della spesa:
- Arduino Duemilanove o Uno
- Modulo Ethernet compatible POE (Power Over Ethernet)
- Modulo a due relè optoisolato (basta cercare su ebay "relè arduino"), ciascun relè regge 10A
- TpLink POE200, necessario ad alimentare Arduino senza usare un alimentatore 5v dedicato
- contenitore 6 prese IP40 (ma con il senno di poi ne avrei dovuto prendere uno un po' più grande)
- prese "system" 16A
- copriforo (quelli piatti lato Arduino) - utili in futuro per applicare led e prese per sensori di temperatura o fumo
- cavo 1,5mm alta temperatura 16A
- bulloni, viti e rondelle 3mm per fissaggio
- piedini in gomma (sono ventose anti-slittamento) per tenere un po' sollevato il contenitore
- profilato alluminio ad L (l'ho usato per fare l'antistrappo del cavo di alimentazione)
- spina 16A Bticino "salvaspazio"
- cavetti colorati per breadboard, opportunamente ricablati
Come funziona:
Per prima cosa ho cambiato il bootloader e fatto in modo che il firmware di Arduino fosse aggiornabile tramite lan (quindi TFTP), altrimenti dovrei smontare tutto ogni volta che devo applicare un aggiornamento.
Questa parte del lavoro ha richiesto due Arduino, di cui uno riprogrammato come ISP Programmer, e qualche giorno di test e debugging in quanto questo tipo di soluzione è poco diffusa.
Successivamente ho configurato i parametri di rete, facendo in modo che l'indirizzo IP della "ciabatta 2.0" non andasse in conflitto con nessun dispositivo in rete - attenzione particolare se avete il DHCP.
Dopodiché ho applicato la shell Telnet ad Arduino, tramite la quale si possono dare i seguenti comandi:
- r1off/r1on: accensione o spegnimento della presa 1 (quella centrale)
- r2off/r2on: idem come sopra ma per la presa 2
- reboot: spegne per 5 secondi entrambi i relè e poi li riaccende (funzione principale che utilizzerò per resettare in caso di blocco l'ASIC)
- quit: chiude la connessione e mette "a riposo" Arduino
La terza presa è sempre alimentata, l'ho prevista per servizi aggiuntivi "in zona" (es. una lampada, altri apparati, ecc).
La connessione "fuori casa" avviene tramite OpenVPN.
La scelta di una pseudo-shell Telnet è utile in quanto un qualsiasi server Linux connesso in rete può verificare continuamente (tramite cron-job) che l'ASIC stia minando e/o Internet sia funzionante, in caso negativo può resettare il router o l'ASIC stesso (dipende dalla porta a cui sono collegati), tentando autonomamente di sistemare il problema.
Ho già pronta una funzione che legge la temperatura di un termistore, in modo che (per esempio) venga acceso un ventilatore o un condizionatore qualora la temperatura ambientale superasse una certa soglia.
Consigli, pareri o suggerimenti sono più che benvenuti