«

»

Dic 19

Stampa Articolo

Centralina alba tramonto arduino – prima parte

So che di Venerdì non andrebbe mai proposto un argomento complesso come una centralina alba tramonto arduino ma siamo in periodo natalizio, siamo tutti più buoni e mi perdonerai 🙂

entralina alba tramonto arduino volta

Bando alle cavolate ho trascorso gli ultimi giorni a scriver progetti natalizi in previsione della prossima settimana in cui cade, appunto, Natale.

Concetti base su cui costruire la centralina alba tramonto arduino

Il primo interrogativo che mi sono posto è stato:

“quanto dura l’alba, il giorno, il tramonto e la notte per riprodurre un effetto reale?”

Si, è al limite della malattia mentale … ma ancora non hai letto tutto, continuando a farmi domande mi sono chiesto:

“la durata di ogni fase come varia a differente latitudine ?”

ed ancora:

“come variano le fasi alba,giorno,tramonto e notte da un giorno all’altro ?”

Anticipo che mi sono fermato alle prime due, ma non escludo di poter realizzare anche una centralina in cui inserire parametrizzazioni più dettagliate 🙂 in futuro.

In pratica ho trovato un sito fantastico che mi ha agevolato: meteo.sm in cui selezionando:

  • località
  • data

puoi ottenere le fasce orarie per alba,giorno,tramonto e notte di una determinata località in un dato giorno.

Ho quindi deciso di prendere come riferimento due città:

  • Roma: capitale dell’italia e con latitudine centrale dell’Italia
  • Betlemme: puoi immaginare il perché parlando di natività ( vedi su wiki )

come data ho scelto il 25 dicembre 2014, prossimo natale, ma puoi ripetere la programmazione ogni anno per avere la tua centralina alba tramonto arduino sempre aggiornata.

Ecco i risultati per Roma:

entralina alba tramonto arduino roma 25 dic 2014

e per Betlemme:

entralina alba tramonto arduino betlemme 25 dic 2014

quindi la tua centralina riprodurrà i tempi di alba,giorno,tramonto e notte del giorno 25 dicembre 2014 a Roma o Betlemme.

Calcolo della durata di ciascuna fase

il passo successivo ad aver ottenuto i dati è convertirli per utilizzarli sulla centralina alba tramonto arduino.

Ho utilizzato un foglio di calcolo nel quale ho riportato gli orari di inizio e fine di ciascuna fase:

centralina alba tramonto arduino excel Roma 25dic2014

fai riferimento alla prima tabella e per ogni fase hai le ore,minuti e secondi di durata da cui con la formula:

Durata in sec. = (Ore x 3600) + ( Minuti x 60 ) + Secondi

ottieni la durata in secondi di ciascuna fase nell’arco della giornata e sapendo che un giorno è composto da 86400 secondi ( 24 ore ) puoi ricavarti la percentuale di tempo occupata da ciascuna fase nell’arco della giornata.

Se non vuoi fare calcoli puoi usare i valori che ho inserito nel foglio di calcolo riportato sopra.

Nella seconda tabella ho sommato la fase di notte fonda in quanto il calcolo parte dalla mezzanotte, spezzando così la notte i due, ma nella realtà è tutto un ciclo unico.

Calcolo dei cicli alba,giorno,tramonto e notte

Per completare il quadro dei dati che ti servono per realizzare la tua centralina alba tramonto arduino c’è la durata che ciascun ciclo deve avere.

Non penserai di lasciarlo sulla base delle 24 ore?

Nessun amico rimarrà così tanto a guardare il tuo presepe anche se stupendo e ricco di particolari 🙂

Ecco perché ho realizzato questa tabella:

centralina alba tramonto arduino excel Roma 25dic2014 cicli

con cui puoi calcolare quanto deve durare ogni fase ( in millisecondi perché arduino lavora in questa scala ) in base alla durata del ciclo completo.

Ad esempio se vuoi che il tuo ciclo di alba-giorno-tramonto-notte duri 1 min sul ciclo di Roma al 25 dicembre 2014 avrai che le singole fasi durano:

  • alba: 4194 millisecondi
  • giorno: 22958 millisecondi
  • tramonto: 4195 millisecondi
  • notte: 28651 millisecondi

Ecco le versioni delle tabelle precedenti per Betlemme:

entralina alba tramonto arduino betlemme

e per ciascun ciclo:

centralina alba tramonto arduino excel Betlemme 25dic2014 cicli

Buon calcolo !!!

Permalink link a questo articolo: http://www.mauroalfieri.it/elettronica/centralina-alba-tramonto-arduino-prima-parte.html

48 comments

2 pings

Vai al modulo dei commenti

  1. giuseppe traversa

    Vorrei sapere se tale progetto può avere il via da un telecomando e quindi anche la fine. Mi spiego meglio ,il loop della centralina può iniziare con un pulsante del telecomando e quindi anche la fine . E come potrei inserire tali input nello sketch.
    Grazie per tutto quello che dirai.
    Giuseppe

    1. Mauro Alfieri

      Ciao Giuseppe,
      a mio avviso si, puoi mettere nel loop() un if() che verifichi la pressione di un tasto del telecomando, leggi i miei articoli sull’IR, e attendere che venga premuto per eseguire lo start/stop del ciclo.

  2. giuseppe traversa

    Grazie, proverò a inserire if().

  3. giuseppe traversa

    Ciao Mauro scusami del ritardo,sono stato a letto e non ho potuto verificare il telecomando.
    Comunque durante questo tempo ho ricevuto dei moduli relè e li ho sostituiti al posto dei led per testarli.
    Non funziona , restano sempre accesi l’alba tramonto e notte.
    Ho provato a cambiare i tempi delle fasi. Ma niente…
    Sto sbagliando qualcosa ? Ho usato gli stessi collegamenti con la differenza invece dei led ho usato i rele.
    Ho anche invertito in analogWrite da LOW in HIGH. niente..
    Mi puoi dire dove sbaglio ? LO so che è presto per parlare del Natale , ma visto gli inconvenienti e gli inprevisti e tutto il lavoro di assemblaggio della struttura scenografica,elettrica ed elettronica che andrò a preparare avrò bisogno di tempo e pazienza. Grazie per la tua disponibiltà

    1. Mauro Alfieri

      Ciao Giuseppe,
      inizio a pensare che ti occorre qualche oretta di buona lettura di elettronica, la differenza tra led e relay è abissale in un progetto come la centralina di alba e tramonto in quanto i led giocano con le dissolvenze in PWM e i relay non possono fare questo.
      Prima di arrivare al telecomando, parte ancora più complessa, ti suggerirei di leggere e comprendere i tutorial del mio corso base on-line gratuito.

  4. giuseppe traversa

    La differenza tra led e relè la conosco, non riuscivo a capire quando dicevi che si possono utilizzare faretti a 220 volt di vari colori ora è chiaro che bisogna modificare lo sketch inserendo i relè. Sono le tue lezioni che ho incominciato a seguire da quando ho acquistato Arduino. Sono a digiuno di programmazione ma di elettrotecnica ho esperienza da quarantanni. Grazie ancora per la tua pazienza.
    Giuseppe

    1. Mauro Alfieri

      Ciao Giuseppe,
      il led sai che deve essere dimmerabile mentre ed il relay non lo è:
      Per collegare dei faretti dovrai usare un mosfet o driver per led.
      In questo modo non dovrai modificare nulla nello sketch per la parte di Alba-Giorno-Tramonto-Notte e potrai concentrarti solo sul telecomanado.

  5. giuseppe traversa

    Grazie per i suggerimenti.
    Ti voglio confidare una cosa : ho 68 anni e sono da poco in pensione per non restare in ozio ho voluto entrare in un mondo che mi ha sempre affascinato “l’informatica” , ma avendo poca esperienza cerco di copiazzare e recepire le funzioni principali. Ho tanto tempo disponibile ( spero) per imparare e con le tue lezioni e sperimenti spero di riuscire.Se ti trovavi nei paraggi ti avrei offerto le nostre famose zeppole. Virtualmente ti offro.Ciao
    Giuseppe

    1. Mauro Alfieri

      Ciao Giuseppe,
      i miei appunti sul web hanno lo scopo di aiutare chi, come te, ha competenza e buona volontà di imparare.
      Io non so tutto … anzi mi mancano ancora milioni di cose da imparare e non so neppure quantificarle, ma ogni giorno ne imparo una e la descrivo nel blog per condividerla con tutti gli appassionati di questi argomenti.
      Sono qui se ti serve qualche chiarimento sui miei articoli.
      Dove devo venire per le zeppole ?

  6. giuseppe traversa

    Bari città quando vuoi casa mia è aperta.

    1. Mauro Alfieri

      Se vengo a Bari ti avviso 🙂

  7. giuseppe traversa

    Ciao Mauro per prima cosa Buona Pasqua.
    dopo tanto tempo ho ripreso il solito progetto della centralina alba ecc.ho letto l’articolo su IR e va tutto bene,ma quando inserisco il comando di un rele nel loop della centralina il rele non viene eccitato.
    Mi spiego meglio : la centralina alba e tramonto funziona correttamente ho solo inserito nel loop un if che quando premo un pulsante del telecomando si dovrebbe accendere il led o il rele e lo stesso si dovrebbe spegnere quando riceve l’altro pulsante. Ma tutto questo non avviene è come se il ricevitore non ha nessun segnale. Cosa sbaglio.
    Grazie per il tuo suggerimento
    Giuseppe

    1. Mauro Alfieri

      Ciao Giuseppe,
      hai provato con un semplice pulsante prima del telecomando IR ?

  8. giuseppe traversa

    no,ora provo Grazie

  9. giuseppe traversa

    ho provato col pulsante e avviene la stessa cosa cioè pigiando il pulsante non accende il led mentre lo sketch della centralina continua a funzionare.Forse l’if di (leggi il pulsante ) l’ho inserito alla fine del loop della centralina.Non so che fare.

    1. Mauro Alfieri

      Ciao Giuseppe,
      questo evidenzia che l’errore è nello sketch, l’if è nel posto sbagliato.
      Ti ho consigliato di lavorare prima con un pulsante proprio per concentrarti prima su dove e come inserire un controllo e solo dopo dedicarti al telecomando.. è la base del ragionamento logico che applico nella realizzazione di tutti i miei sketch.

  10. giuseppe traversa

    ho provato ad inserire all’inizio del loop e le fasi della centralina avvengono quando accendo e spengo il led con il pulsante. Cosa devo cambiare nel loop?

    1. Mauro Alfieri

      Ciao Giuseppe,
      non ho compreso la domanda.

  11. giuseppe traversa

    Vorrei essere più preciso , io vorrei che le due cose ( centralina e comando led o rele) siano indipendenti tra loro,
    Grazie

    1. Mauro Alfieri

      Ciao Giuseppe,
      per fare questo dovrai sostanzialmente cambiare il modo in cui funziona la centralina.
      Il delay è un blocco al funzionamento secondo la tua idea, ti consiglio di leggere gli articoli sul millis() e ribaltare il funzionamento della centralina utilizzando millis() il loop() come ciclo di controllo ed eliminando i for.

  12. giuseppe traversa

    Ciao Mauro,
    in conclusione per inserire un comando qualsiasi nello sketch della centralina devo eliminare il fade (la dissolvenza) del led e inserire millis() che è un intervallo di tempo.Cosi si perde la bellezza della dissolvenza.Ho capito bene o continuo a sbagliare.Se non posso inserire un comando qualsiasi che esuli dal funzionamento della centralina dovrei usare un’altra scheda Arduino? Spero di aver espresso il mio dilemma o continuo a confondere le idee.
    Grazie Giuseppe

    1. Mauro Alfieri

      Ciao Giuseppe,
      purtroppo non mi sono espresso in modo che tu potessi capirmi, forse, il fade non va elimnitao ma riscritto completamente in modo che non faccia uso del delay ma del millis.

  13. giuseppe traversa

    Grazie infinite Mauro sono io che ho interpretato male .Comunque ho risolto completamente il problema senza utilizzare il telecomando.
    Studiando la funzione millis() e il fade ho navigando ho trovato un link di Leonardo Milani in cui elenca una nuova libreria Looper uno schedulatore software per arduino.
    Nelle tue lezioni è spiegato più dettagliatamente questa libreria cosa serve e quando si può utilizzare.
    Forse dirai che per me è ancora presto ,ma mai dire mai.
    Ciao e ancora grazie.

    1. Mauro Alfieri

      Ciao Giuseppe,
      sembra molto interessante. Leonardo è in gamba ed ha scritto molti esempi da usare di questa libreria.

  14. soft

    ciao, scusa io dovrei attivare questo circuito con un pulsante e appena finito il ciclo (dopo la notte) avrei bisogno che il presepe si spenga da solo e si riattivi appunto quando premo il pulsante. ho provato a inserire if(buttonState == HIGH), ma non funziona… o meglio funziona, ma ad ogni cambiamento (alba-giorno-tramonto-sera), devo premerlo se no non cambia. potresti aiutarmi grazie 😉

    1. Mauro Alfieri

      Ciao Soft,
      se stai seguendo questo sketch: http://www.mauroalfieri.it/elettronica/centralina-alba-tramonto-arduino-sketch.html la cosa migliore che posso consigliarti è di inserire all’inizio del loop() un controllo della pressione del pulsante che imposti una variabile a false poi controlli il valore di questa variabile per eseguire il loop(). Una sorta di pausa dal loop;

  15. soft

    l’ho fatto, ma a ogni passaggio da alba a giorno, piuttosto che da giorno a tramonto, mi controlla sei il pulsante è premuto

    1. Mauro Alfieri

      Ciao Soft,
      devi far in modo che il cambio valore della variabile da true e false, o viceversa, avvenga solo alla fine di un ciclo completo alba,giorno,tramonto,notte ..

  16. soft

    come??

    1. Mauro Alfieri

      Ciao Soft,
      potresti sfruttare il reset del count, quando lo riporti a 0, imposti anche la variabile.

  17. soft

    ciao mauro, c’è scritto che se voglio che tutto il ciclo mi duri un minuto devo fare riferimento alla tabella e impostare quei millisecondi… però provando invece che un minuto, tutto il cilo mi dura 30min come mai?

    1. Mauro Alfieri

      Ciao Soft,
      come ti ho scritto devi verificare bene in quale array vai ad inserire i valori della tabella:
      4194+22958+4195+28651 = 59998 / 1000 = 59,998 secondi che corrisponde circa ad 1 min ( 60 secondi )

      1. soft

        io ho inserito i valori che hai messo tu….. riscritto il programma che hai fatto te e ho cancella onminbtlm, lasciando solo oneminrome

        1. Mauro Alfieri

          Ciao Soft,
          nel video presente in questo articolo: http://www.mauroalfieri.it/elettronica/centralina-alba-tramonto-arduino-sketch.html vedi la centralina in funzione con tutto il ciclo che dura circa un minuto.

          Prova a mettere dei serail println dopo ogni fase e verifica i tempi di eseguzione per capire dove avviene l’errore che prolunga sensibilmente il tempo.

  18. Emanuele

    Buongiorno, solo oggi per caso (o meglio poi capirai che proprio un caso non era) mi sono imbattuto nel tuo sito. Complimenti. Mi chiamo Emanuele e da ex studente di informatica, appassionato di elettronica e anche “voglioso” di sperimentare Arduino. Nel tempo, diplomato da vent’anni, ho lasciato l’elettronica, non l’informatica, e mi sono appassionato anche ai presepi. Vengo al dunque. Sto facendo un plastico, e, forse sbagliando, ho improntato l’impianto elettrico con delle lampadine (per ora solo 10) micromignon a 12V da 2 Watt. Non ho ancora l’alimentatore (pensavo anche di riadattarne uno del PC ma credo faccia troppo rumore) e mi è venuto solo ora il dubbio di come fare una intermittenza e/o dissolvenza. Cercando sono “caduto” in questo tuo progetto. Mi piacerebbe, potrei adattare i “tempi”, ma credo che le lampadine che ho siano il problema giusto? Non ho modo di adattare o cosa?
    ciao, ancora complimenti,
    Emanuele

    1. Mauro Alfieri

      Ciao Emanuele,
      se ho ben capito devi realizzare delle dissolvenze su lampadine da 12v 2W ( circa 0,17 A ) ciascuna.
      Per la parte elettronica dovrai predisporre un circuito a mosfet o simile.
      Come esempio di programmazione puoi seguire uno qualsiasi degli articoli in cui descrivo le dissolvenze ed il PWM con arduino.

  19. Domenico Giuliani

    Salve, sono molto interessato al progetto Centralina alba tramonto Arduino. Ho realizzato il tutto su bredboard e funziona benissimo. Avrei pensato però nel mio caso di lasciare un solo led per le stelle e modificare l’altro led delle stelle per attivare un led per il fuoco. Mi diletto di programmazione con arduino, ma ora non saprei come procedere. Potresti aiutarmi? Grazie. Complimenti per il tuo sito. Saluti Domenico.

    1. Mauro Alfieri

      Ciao Domenico,
      bella la tua idea di utilizzare un pin per un effetto fuoco.
      Per aiutarti posso dirti che puoi leggere tutto il mio sketch e comprendere le parti in cui i pin della seconda serie di led, dedicati alle stelle, debbano essere separati dal primo ciclo.
      Infine non hai che da scrivere una funzione che simuli il fuoco, io non conosco come funzioni, e tradurla in codice per la centralina.

  20. Gianluca

    Ciao Mauro, io avrei bisogno di collegare delle strisce led che hanno bisogno di parecchia corrente (il giorno 72W) come posso fare ?

    Grazie
    Gianluca

    1. Mauro Alfieri

      Ciao Gianluca,
      io userei un circuito a mosfet sufficientemente dimensionato.
      Se non trovi nulla nel panorama delle shield vendute per il controllo di led dovrai progettarne una tua.

      1. Gianluca

        Grazie per la risposta, mi sapresti dare una dritta su qualche shield devo cercare ?
        Grazie ancora !

        1. Mauro Alfieri

          Ciao Gianluca,
          prova con qualche shield tipo RGB o LedStrip shield

  21. paolo

    Salve sig. Alfieri,
    ho visionato il suo progetto e volevo chiederLe una cosa: se lo volessi adattare ad un acquario, mi basterebbe solo ricalcolare i tempi, inserendo nello sketch i relativi valori? Ed inoltre , come potrei utilizzare un switch per bypassare i tempi ed avere un test così come nel filmato, indipendentemente dalla programmazione effettuata? Grazie e complimenti per la sua professionalità, e per il suo metodo nel come rende facili e intuitive le sue spiegazioni.

    1. Mauro Alfieri

      Ciao Paolo,
      io non conosco gli acquari e l’argomento tuttavia penso che se ciò che vuoi ottenere sia una tempistica differente ti basta cambiare i tempi.
      Lo switch è più complesso, non impossibile ma di certo richiede un tempo ed una competenza di programmazione importante, puoi leggere i miei tutorial sugli switch e capire come integrarli in questo progetto.

      1. paolo

        grazie perl’attenzione. Leggendo il quarto articolo, potrei usare il potenziometro al minimo per avere il tempo al minimo e quindi come test, senza utilizzare il switch. Volevo inoltre dirle che ho usato l’RGB shield di FuturA e funziona egregiamente ma….. c’è un ma: il passaggio da 0 al massimo, molte volte avviene a scatti e ho l’impressione che si perda la dissolvenza incrociata. Si può risolvere il problema senza infierire sul suo sketch?
        Grazie e buona serata
        Paolo

        1. Mauro Alfieri

          Ciao Paolo,
          l’effetto visivo a scatti devi capire se dipende dalla RGB Shield o dal tipo di lampade/led che hai utilizzato.
          Alcuni led se alimentati da 0 a 255 in modo costante, ossia di uno in uno, hanno come effetto visivo un incremento a scatti, altri non lo fanno.
          Lo stesso effetto potrebbe essere causato dalla shield in quanto i driver potrebbero avere un comportamento non lineare.

          1. paolo

            Ciao e buongiorno Mario,
            allora ho utilizzato la RGB shield per Arduino di Futura (in realtà è della velleman …..http://www.velleman.co.uk/contents/en-uk/p578_ka01.html )mentre per i led ho usato una striscia anonima che avevo. Comunque, ora sto provando il tutto e mi sembra che funzioni egregiamente;
            ATTENZIONE, ho scoperto il perchè:
            avevo lo sketch che la Vellman ha dato in dotazione allo shield (vedi ka01_sample_code) caricato, dove ci sono effetti tra cui la dissolvenza incrociata tra canali, e con lo stesso shield e le stesse strisce, non si avverte alcun baluginio, nè esecuzione a scatti. Dov’è l’arcano?
            Saluti
            Paolo

          2. Mauro Alfieri

            Ciao Paolo,
            non sono certo di aver compreso il tuo commento, hai risolto?

  1. Centralina alba tramonto arduino sketch Mauro Alfieri Elettro

    […] primo articolo hai letto come puoi ricavare i tempi delle fasi alba-giono-tramonto-notte e come tradurre in tempi […]

  2. Centralina alba tramonto arduino potenziometro Mauro Alfieri

    […] Nel primo articolo dedicato alla centralina natalizia hai letto come sono calcolati i tempi di durata di ciascuna fase del ciclo giornaliero. […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>