Controllo luci da due pulsanti a muro + arduino

Ciao a tutti, questo è il mio primo post sul forum, possiedo da oggi un Arduino ed ho già realizzato un semaforo a LED scopiazzando schemi su internet... bel risultato eh? :stuck_out_tongue:

Premetto che sono un programmatore web, quindi per la parte relativa al codice non ho alcun problema. Per contro sono quasi completamente a secco di conoscenze sull'hardware dell'elettronica, quindi chiedo anticipatamente scusa per la mia domanda che è sicuramente banale (e credo che sia stata già formulata sotto varie "salse", ma non sono riuscito a trovare una risposta chiara).

Il mio primo progetto "real life" con Arduino consiste in questo: in sala ho due deviatori a muro che pilotano il lampadario, da due punti differenti della stanza. L'idea è di sostituirli con 2 pulsanti collegati ad un relè, e collegare a questo relè anche Arduino (da quello che ho capito, con un transistor tra il relè ed Arduino, per evitare bruciature), in modo da pilotare l'accensione della luce in modo indifferente dai 3 punti.

La logica secondo cui Arduino accenderà o spegnerà la luce è ancora tutta da vedere; penso ad esempio a fare in modo che si accenda quando fa buio (con un sensore) E c'è movimento (con un altro sensore), oppure di aggiungere un shield di rete per pilotarlo da internet o cellulare... ma questo al momento non mi interessa, si tratta solo di un test per capire se riesco a farlo, poi l'utilità di tutti i giorni verrà in seguito :slight_smile:

Il mio problema è questo: se aziono i due pulsanti a muro io SO cosa voglio fare (se il lampadario è spento e premo evidentemente voglio accenderlo e viceversa), ma Arduino dev'essere in grado di accenderlo se è spento, oppure non fare nulla se è già acceso (e ovviamente viceversa: se Arduino vuole spegnere e il lampadario è già spento deve "skippare" l'azione, se invece è acceso deve spegnere). Come faccio?

Con un relè passo-passo risolvo per i comandi manuali da muro, ma Arduino non saprà mai se al momento la luce è accesa o spenta; esistono dei relè passo passo (o meglio delle schede già pronte che possa collegare direttamente ad Arduino) con un uscita da cui si possa leggere lo stato on/off degli stessi in modo da istruire il software a comportarsi in modo logico?

Immagino che la domanda sia banale perché il concetto del "accendi se è spento, altrimenti lascia com'è / spegni se è acceso, altrimenti lascia com'è) sa tanto di base assoluta su cui basare un sistema domotico, e infatti è la prima cosa che voglio capire per iniziare a rendere la mia casa "intelligente".

Grazie in anticipo a chi mi aiuterà :slight_smile:

A mio avviso, la soluzione migliore è quella di collegare un ingresso analogico di Arduino ad un fotoresistore in serie ad un trimmer in modo da condizionare il suo intervento con la presenza o meno di luce nella sala.

Questo potrebbe servire anche come interruttore crepuscolare

Di schemi ce ne sono tanti in rete, ma se ne hai bisogno chiedi e ti sarà dato! :smiley:

Ciao Cyberhs, grazie mille per la risposta!
Verificare l'accensione o meno della luce tramite il suo "effetto", cioè la luce stessa è una cosa che vorrei evitare (sebbene in effetti sembri la cosa più semplice in questo caso!): vorrei conoscere con esattezza lo stato on/off del relè, anche in ottica di visualizzarne lo stato con un led, o all'interno di un'interfaccia web, o altro...

Se uso una fotoresistenza non saprò mai se Arduino vede la luce accesa, o semplicemente vede luce perché è una splendida giornata di agosto XD

Se uso una fotoresistenza non saprò mai se Arduino vede la luce accesa, o semplicemente vede luce perché è una splendida giornata di agosto smiley-lol

Potrei risponderti che, in questo caso, è inutile accendere il lampadario, ma penso che non sia la risposta che desideri...

Occorre aggiungere un sensore di corrente sul carico delle lampade (per verificare se passa o meno corrente) e portare la sua uscita su Arduino.

Eheheh sul piano concettuale hai perfettamente ragione :slight_smile:

Diciamo che più che altro vorrei capire come fare, anche per pilotare un domani altri dispositivi che vanno a corrente di rete e che non dipendono necessariamente dalla luce ambientale.

Quindi a questo punto l'unico modo è davvero mettere a valle del relè un sensore di corrente? Non esistono dei relè passo-passo con un pin in più da cui prendere semplicemente l'informazione "sono in ON/sono in OFF"?
Sul forum ho letto di qualcuno che accennava a relè con un LED a bordo che si accende quando sono in ON. Penserei alla possibilità di modificarne uno per mandare invece ad Arduino la corrente del LED per fargli capire lo stato, ma mi meraviglia che non ci sia un relè già con un'uscita apposita...?

Grazie ancora :slight_smile:

certo che ci sono rele' passo passo con doppio contatto
es. http://it.rs-online.com/web/p/rele-bistabili/5111026/

o comunque puoi sempre usare o un piccolo rele' ( a 230Vac ) in parallelo alle lampade, o un fotoaccoppiatore per rilevare se c'e' tensione

Doppio contatto = Doppio scambio?

flip79:
Doppio contatto = Doppio scambio?

No, sono due cose diverse

DPST.png

Grazie mille Brunello, sto cercando di interpretare gli schemi... scusami, lo so che sono molto semplici ma io sono davvero alle prime armi con l'elettronica e faccio fatica.

Prendiamo il primo in alto a sinistra: abbiamo i miei due pulsanti che pilotano il relè passo passo. Questo accende e spegne il carico all'estrema destra e fin qui tutto chiaro.

  • il neutro non è in comune tra il carico ed il relè (come ho visto in molti schemi dei relè passo passo) perché si tratta di un relè che pilota l'alta tensione ma funziona con bassa tensione a corrente continua per essere "compatibile" con Arduino?
  • la parte "Relè da Arduino" presuppone la presenza di un secondo Relè direttamente collegato ad Arduino, che funge da terzo interruttore?

Mi sembra di capire che questo primo schema non permetta di controllare da Arduino lo stato di accensione... oppure mi sfugge qualcosa? :slight_smile:

Ti sfugge tutto perchè non sai le basi dell'elettronica digitale, tu vuoi fare con 2 pulsanti un semplice flip flop set-reset , in un qualsiasi libro di testo delle scuole di secondo grado di elettronica digitale potrai farlo con il FF tipo D e il FF tipo JK, se invece vuoi farlo con arduino basta che quando premi il pulsante SET attivi l'uscita , quando premi RESET disattivi l'uscita,
il corrispondente da elettricisti è il relè a doppia bobina detto anche relè bistabile,
invece il FF che hai visto tù per le scale dei condomini si chiama in lingua da elettricisti: relè PASSO-PASSO, nella lingua degli elettronici FF tipo D con l'ingresso in CK e un ponte tra D e Qnegato, o divisore per 2

Ah , non farti venire l'idea di tirare per i tubi e le canaline i pin di arduino per collegare i pulsanti se non vuoi farlo saltare all'istante, arduino così com'è è adatto per collegare pulsanti alla distanza massima di mezzo metro, per fare qualcosa di pratico bisogna sempre aggiungere qualcosa su ogni pin

Ciao Icio, sì esattamente: non ho le basi di elettronica però mi piacerebbe iniziare a capirci qualcosa sfruttando Arduino come strumento di studio. Ho scopiazzato un paio di circuiti pubblicati sul web, studiando come funzionavano per iniziare a capirne almeno la logica, però ora vorrei utilizzare Arduino per questo piccolissimo progetto pratico.

Quello che voglio realizzare io non è ciò che si vede nelle scale, lì di solito tutti i pulsanti accendono la luce e mai la spengono (al massimo ne prolungano il tempo di accensione se premuti quando la luce è già accesa). Come dicevo vorrei due pulsanti che accendono e spengono ciclicamente la luce (da lì appunto l'idea del relè passo passo) ma con l'aggiunta di Arduino che dovrebbe accendere la luce se è spenta e non fare nulla se è già accesa... e viceversa.

In sostanza vorrei riprodurre in miniatura quello che in domotica si definisce "scenario": penso ad esempio a collegare in futuro altre 3 o 4 luci della stanza in modo da far pilotare ad Arduino diverse combinazioni di accensione, però se parto con già tutte le luci accese manualmente e gli dico "accendimi la N.2 e la N.3 e spegni tutte le altre"... se Arduino non sa quali sono quelle accese finirei con 2 e la 3 spente e tutte le altre accese. Non so se mi spiego :slight_smile:

E intanto grazie per il consiglio sulla distanza dei componenti :slight_smile:

In questi ultimi tempi molti stanno cercando di inventare l'acqua calda , gli scenari esistono da decenni e da sempre c'è un solo metodo per farli una rete DMX, costa niente e si trova di tutto a pochi soldi, proprio pochi giorni fà un tizio, ufficio progetti di un'azienda di moda che sanno bene vendere e avere idee ma che sanno bene anche sfruttare gli altri mi ha contattato perchè voleva controllare una ventina di motori stepper via DMX, nessun problema dico io , facciamo una scheda , passatemi le specifiche e la quantità e ci accordiamo sul prezzo, macchè questo vuole consulenza...ma dico..... non ci conosciamo neppure e vuoi consulenza? Ma vai a c......
Adesso tutti si improvvisano domotici solo per controllare 4 luci in croce, creando tutti sistemi incompatibili tra loro quando esiste uno standard consolidato, ci sono programmi gratuiti come freestyler dove puoi fare tutti gli scenari che vuoi, il DMX esiste anche wireless così eviti gran parte dei cavi, con l'estensione RDM si possono anche leggere sensori di allarme etc... Ma lasciamo la domotica a chi la sà fare che ancora loro non si sono ancora messi d'accordo sugli standard

Icio, con me sfondi una porta aperta... nel mio campo (sviluppo web e web design) ogni giorno incontro clienti che parlano del cugino, del nipote, del carissimo amico che è un esperto "DICOMPIUTER" e contestano quanto consiglio - a volte anche disinteressatamente...

Però in questo caso davvero sto parlando di studio, il mio interesse non è di creare il miglior sistema domotico sul mercato, tantomeno di iniziare a 34 anni a studiare l'elettronica in generale (anche perché il mio mestiere richiede una tale formazione continua che neanche potrei permettermelo): cerco solo di capire in modo molto pratico e spiccio come fare questo progetto, cercando anche di capire quanto mi è possibile, in modo molto umile :slight_smile:

fare un impianto domotico sembra una cosa fattibile con poco, una rete seriale, qualche byte di quà qualche altro di là ed ecco fatto, invece ha la sua complessità, ad esempio cosa succede se manca la corrente?, cosa succede se un unità si rompe? cosa succede se attacco e stacco (hot plug) unità dall'impianto ? cosa succederà se c'è un sabotaggio della rete? E' meglio una wired o una wireless? fino ache punto andrò ad espandere l'impianto? che traffico dati dovrà sostenre? Il consumo della corrente dovrà essere ridottissimo, per fare questo si dovrà usare relè doppia bobina? oppure dove serve TRIAC optoisolati? Io conosco solo un sistema per iniziare bene , una CAN-BUS, è attuamente il protocollo più robusto che esista per le reti wired, ma bisogna impadronirsi del campo, per abbattere i costi non si può prendere un arduino e una shield can e fare tutti i nodi con quella, bisognausare un processore con can integrato tipo at90can64 o simile e integrare un can bus OPTOISOLATO, il costo per una ventina di schede simili dovrà essere all'incirca 15-20 euro, per abbattere i costi bisognerà sempre progettare tutto il resto tenendo conto che in standby tutto il sistema dovrà consumare qualche watt , quindi ogni unità dovrà possibilmente andare in sleep quando serve,
bisognerà valutare la possibilità di far funzionare tutto l'impianto a bassa tensione tipo 12v o 24v in modo da essere alimentato tramite batteria e pannelli solari, in questo modo con alimentatori switching controllati a basso consumo ogni scheda potrà consumare in stand-by (che sarà il 99,9 % del loro stato) qualche microwatt, ma bisogna progettarsi tutto,
bisogna saper progettare PCB , programmare controllori SENZA USARE schede confezionate come arduino, saper progettare sistemi, azionamenti, controlli universali, interfacce I/O con triac, mosfet , componenti robusti come i componenti automotive,
Ma soprattutto IL CONSUMO DI CORRENTE, molti fanno impianti a 20 unità che consumano ciascuno in stand-by 3 watt : UNA FOLLIA 20 x 3 x 24 ore x 365 giorni = 525.600 watt con un costo di 84 euro annui di corrente per il solo stand-by. in 10 anni fanno 1000 euro (con aumenti enel) ecologia?

Brunello, la soluzione del fotoaccoppiatore alla fine mi "suona" forse più elegante: a differenza del relè non ho un componente elettro-meccanico perennemente in tensione, e forse il consumo è anche inferiore. Ma quale fotoaccoppiatore devo scegliere?

Ti chiedo anche se puoi commentarmi lo schema che mi hai postato perché non lo comprendo a fondo, soprattutto riguardo la funzione dei vari componenti che hai inserito, oltre ovviamente al fotoaccoppiatore. Grazie ancora per la tua disponibilità!

io ho risolto con un relè doppio contatto ..

quando premi il pulsante a muro pilota il relè , e il secondo contatto collegato ad arduino in quanto e isolato controlla lo stato del relè e quindi del carico .
un rele pilotato da arduino simula un pulsante

// avvio l operazione sui relay
              digitalWrite(3,HIGH);
              delay(100);
              digitalWrite(3,LOW);

in modo tale che anche il relè di arduino non stia costantemente sotto tensione ..

questa e la mia idea .. 2 fili per i pulsanti da portare per i vari pulsanti alla centralina dove hai i relè .. la fase della luce e se riesci sarebbe meglio anche il neutro ..

quindi 3 fili da portare alla centrale che gestisce tutto ..
dal relè porti al di fuori della cassetta di derivazione 2 fili per sapere lo stato 2 per eccitare il relè ..

Ciao Empty_skull, alla fine ho fatto proprio così... curiosamente senza leggere la tua risposta sono andato in quella direzione e appena finito ho visto che mi avevi risposto: grazie mille, è una soluzione PERFETTA, funziona alla grande!

flip79:
Come faccio?

Grazie in anticipo a chi mi aiuterà :slight_smile:

ma di solito il problema più grosso sono i "cablaggi"

per quello che devi realizzare te (che è veramente troppo semplice)
basta un relè passo passo a bassa tensione
che viene comandato sia da i pulsanti di casa che da arduino,
per far sapere se la luce e accesa si mette un fotoaccoppiatore isolato (tipo moc 2030 o 3020 non ricordo bene)
su i cavi che danno corrente alla lampadina/dario prelevandola con una resistenza adatta,

se la luce e accesa il fotoacoppiatore "chiude" i due pin che puoi usare come segnale per arduino,

ATTENZIONE ALLA 220 CHE è SEMPRE UNA VIPERA ]:smiley: