Sommario:

Arduino Dusk/Dawn Clock Timer: 15 passaggi
Arduino Dusk/Dawn Clock Timer: 15 passaggi

Video: Arduino Dusk/Dawn Clock Timer: 15 passaggi

Video: Arduino Dusk/Dawn Clock Timer: 15 passaggi
Video: Arduino Tutorial!! DIY: How To Make a SUNRISE Alarm Clock (with arduino , rtc , super bright led) 2024, Novembre
Anonim
Arduino Dusk/Dawn Clock Timer
Arduino Dusk/Dawn Clock Timer

Riepilogo:

Questo timer basato su Arduino può accendere una luce da 220 V al tramonto, all'alba o all'ora specificata.

Introduzione:

Alcune luci di casa mia si accendono automaticamente al tramonto, fino a un'ora prestabilita o fino all'alba (tutta la notte).

La posizione delle luci non consente l'uso di un sensore di luce. I normali timer dell'orologio disponibili si accendono a un'ora specifica. Per accendersi al tramonto è quindi necessario regolare regolarmente l'impostazione del programma orario.

Come bella sfida, ho deciso di costruire invece un timer autonomo basato su Arduino personalizzato. Utilizza un orologio in tempo reale e la libreria Dusk2Dawn per determinare l'ora in cui le luci devono essere accese o spente. La custodia per questo timer è stampata in 3D e può essere trovata su Thingiverse. Il codice Arduino per questo progetto può essere trovato su GitHub.

Nella creazione di questo timer ho tratto ispirazione da molti progetti e circuiti su Internet. Ringrazio tutti i contributori non espressamente citati.

Per motivi di leggibilità, nei passaggi sono mostrati schemi parziali, dove necessario, invece di uno schema elettrico completo.

Soluzioni alternative:

Invece di un timer autonomo, ci sono molte soluzioni in cui un sistema di automazione domestica intelligente guida le luci. Il mio obiettivo era avere una soluzione indipendente, che non dipendesse dalla connettività WIFI (o altro).

Restrizioni:

Il codice fornito con questo progetto includeva un'implementazione delle modifiche all'ora legale basata sul sistema europeo di ora legale.

Passaggio 1: elenco delle parti e strumenti

Elenco delle parti e strumenti
Elenco delle parti e strumenti

Parti:

Costo totale delle parti (esclusa la stampa 3d) circa € 30, -.

  • Arduino Nano V3 (compatibile) senza header
  • Alimentazione 5V 0,6A (34 x 20 x 15 mm)
  • Relè allo stato solido 5V - Attivo basso - 2A 230VAC
  • Orologio in tempo reale DS3231 (piccolo)
  • Display OLED da 0,96" SPI 128*64 pixel
  • Encoder rotativo - EC11 - 20mm
  • Manopola 6mm albero 15mm * 17mm
  • Circuito stampato breadboard,
  • 4* viti M3x25mm
  • Custodia stampata in 3D
  • Guaina termoretraibile
  • fili
  • Morsettiera a vite (per collegare i fili neutri)

Strumenti richiesti:

  • Saldatore
  • Filo di saldatura
  • Pompa dissaldante
  • Spelafili
  • Taglierine
  • Stampante 3D (per stampare la custodia)
  • Piccoli attrezzi assortiti

AVVERTIMENTO

Questo circuito funziona a 230 V CA e se non sei abituato a lavorare con la tensione di rete o non hai ampia esperienza nel lavorare con la tensione di rete da 230 V CA, stai lontano da questo progetto

Non mi assumo alcuna responsabilità per eventuali perdite o danni derivanti direttamente o come conseguenza del seguire questo progetto

Si consiglia sempre di prestare la dovuta attenzione e precauzione mentre si lavora con la rete CA

Passaggio 2: preparare il display OLED e l'orologio in tempo reale

Prepara il display OLED e l'orologio in tempo reale
Prepara il display OLED e l'orologio in tempo reale

La custodia stampata in 3D è progettata per dimensioni minime. Di conseguenza, le intestazioni del display OLED e dell'orologio in tempo reale devono essere rimosse.

In preparazione per il passaggio successivo, eliminare ogni residuo di saldatura dai fori con la pompa dissaldante.

Passaggio 3: preparare l'encoder rotativo

Preparare l'encoder rotativo
Preparare l'encoder rotativo

L'encoder rotativo ha connettori fragili. Per evitare danni, montare un pezzo di circuito stampato sull'encoder.

Nella foto è già predisposto anche il collegamento a terra (in alto a destra e al centro in basso).

Nota: assicurarsi che l'encoder rotativo con circuito stampato si inserisca nella custodia senza toccare Arduino. Potrebbe essere necessario molare il circuito stampato per ottenere una perfetta aderenza.

Passaggio 4: allegato

Allegato
Allegato
Allegato
Allegato

Stampa le tre parti della custodia con una stampante 3D. Fare riferimento alle istruzioni su Thingiverse.

Passaggio 5: disabilita il LED di alimentazione di Arduino (opzionale)

Disabilita il LED di alimentazione di Arduino (opzionale)
Disabilita il LED di alimentazione di Arduino (opzionale)

Per evitare di avere un bagliore verde nel timer, il LED di alimentazione dell'Arduino può essere disabilitato.

Si noti che questa modifica è facoltativa.

La modifica all'Arduino Nano consiste nel rimuovere la resistenza accanto al led di alimentazione (vedi cerchio rosso in figura).

Passaggio 6: alimentatore + relè a stato solido

Alimentatore + relè a stato solido
Alimentatore + relè a stato solido

In questa fase l'alimentatore e il relè a stato solido vengono combinati e montati nella parte inferiore della custodia.

I collegamenti tra l'alimentatore e il relè sono realizzati nella parte inferiore di questi componenti. La morsettiera a vite del relè verrà utilizzata per il collegamento ad Arduino.

Nota: quando si effettuano i collegamenti, assicurarsi che i fori di montaggio del relè a stato solido siano mantenuti liberi.

  • Saldare un cavo di collegamento tra il relè a stato solido A1 a una delle connessioni CA dell'alimentatore
  • Saldare un filo all'altra connessione CA dell'alimentatore (questo sarà collegato alla morsettiera a vite neutra al punto 7)
  • Saldare un filo tra l'alimentatore -Vo al relè DC-
  • Saldare un filo per collegare l'alimentatore +Vo al relè DC+

Nota: potrebbe essere necessario accorciare i cavi dell'alimentatore e del relè per poterlo inserire nella custodia.

Passaggio 7: Arduino Nano + alimentatore + relè a stato solido

Arduino Nano + Alimentatore + Relè a stato solido
Arduino Nano + Alimentatore + Relè a stato solido

In questo passaggio, Arduino Nano è collegato all'alimentatore e al relè a stato solido.

  • Tagliare due fili di circa 70 mm di lunghezza. Striscia 30 mm di isolamento da un lato e 4 mm dall'altro.
  • Saldare il lato con isolamento spelato di 30 mm all'Arduino +5 V e GND, con il filo che si attacca
  • Tagliare due tubi termoretraibili di 20 mm di lunghezza e montarli sulla parte spelata di 25 mm. Questo isola i fili fino al collegamento con la morsettiera a vite di montaggio DC+ e DC- del relè a stato solido.
  • Notare che i fili per GND e +5V devono incrociarsi per collegarsi correttamente alla morsettiera a vite del relè.
  • Tagliare un filo di circa 40 mm di lunghezza e spelare 4 mm di isolamento di entrambe le estremità. Saldare un lato alla connessione A2 sul RETRO dell'Arduino e collegare l'altro lato alla connessione CH1 della morsettiera a vite per montaggio a stato solido.

AVVERTIMENTO

L'Arduino è alimentato direttamente dall'alimentatore stabile +5V invece di utilizzare il regolatore di alimentazione interno di Arduino. Pertanto, non è sicuro collegare l'USB quando Arduino riceve alimentazione dall'alimentatore.

Scollegare sempre la rete 230VAC prima di utilizzare la connessione USB Arduino.

Passaggio 8: Arduino Nano + Orologio in tempo reale

Arduino Nano + Orologio in tempo reale
Arduino Nano + Orologio in tempo reale

In questo passaggio l'orologio in tempo reale è collegato ad Arduino, in parte utilizzando i cavi preparati nel passaggio precedente.

  • Saldare il filo proveniente da Arduino GND (collegato anche a DC- del relè) a '–' dell'orologio in tempo reale.
  • Saldare il filo proveniente da Arduino +5V (collegato anche a DC+ del relè) al '+' dell'orologio in tempo reale.
  • Tagliare due fili di circa 40 mm di lunghezza e spelare 4 mm di isolamento di entrambe le estremità.
  • Saldare un filo tra Arduino A4 e l'orologio in tempo reale D (SDA).
  • Saldare un filo tra Arduino A5 e l'orologio in tempo reale C (SCL).
  • Modellare i fili dell'orologio in tempo reale per assicurarsi che non interferiscano con l'encoder rotante. Per questo, i fili devono essere nella parte inferiore del contenitore.

Passaggio 9: collegare il display OLED

Collega il display OLED
Collega il display OLED

In questo passaggio il display OLED SPI viene aggiunto ad Arduino.

  • Tagliare 2 fili di 65 mm di lunghezza e spelare 4 mm di isolamento di entrambe le estremità.
  • Saldare un filo alla connessione GND del display OLED. Saldare questo filo al filo isolato del tubo termoretraibile proveniente da Arduino GND (fare riferimento al passaggio 4) e collegare entrambi i fili alla morsettiera a vite con montaggio in CC del relè a stato solido.
  • Saldare un filo alla connessione VCC del display OLED. Saldare questo filo al filo isolato del tubo termoretraibile proveniente da Arduino +5V (fare riferimento al passaggio 4) e collegare entrambi i fili alla morsettiera a vite di montaggio DC+ del relè a stato solido.
  • Tagliare 5 fili di 65 mm di lunghezza e spellare 4 mm di isolamento di entrambe le estremità.
  • Saldare un filo per collegare D0 (CLK) ad Arduino D10
  • Saldare un filo per collegare D1 (MOSI / DATA) ad Arduino D9
  • Saldare un filo per collegare RES (RT) ad Arduino D8
  • Saldare un filo per collegare DC ad Arduino D11
  • Saldare un filo per collegare CS ad Arduino D12

Nota: l'ordine dei cavi del display non è logico. Questo è il risultato del primo utilizzo dell'esempio Adafruit e quindi della modifica delle connessioni perché l'utilizzo di D13 provoca sempre un LED rosso sull'Arduino.

Alternativa

È possibile utilizzare un ordine "normale" per le connessioni SPI. Per questo, la definizione dell'uscita digitale del programma Arduino in oledcontrol.cpp deve essere regolata di conseguenza:

// Utilizzo del software SPI

// definizioni dei pin

#define CS_PIN 12

#define RST_PIN 8

#define DC_PIN 11

#define MOSI_PIN 9

#define CLK_PIN 10

Passaggio 10: codificatore rotante

Encoder rotativo
Encoder rotativo

Lo schema mostra le connessioni dell'Arduino all'encoder rotativo (encoder visto dall'alto).

  • Tagliare 4 fili di 45 mm e spellare 4 mm di isolamento di entrambe le estremità.
  • Collega Arduino GND ai connettori in alto a destra e in basso al centro dell'encoder
  • Collega Arduino D2 in basso a sinistra dell'encoder
  • Collega Arduino D3 in basso a destra dell'encoder
  • Collega Arduino D4 in alto a sinistra dell'encoder

Passaggio 11: installazione nell'armadio

Installazione nell'armadio
Installazione nell'armadio

Installare tutta l'elettronica nella parte inferiore della custodia:

  • Fai scorrere Arduino sullo slot verticale
  • Fai scorrere l'orologio in tempo reale nello scomparto inferiore
  • Far scorrere l'alimentatore e il relè nel vano superiore, assicurarsi che il relè si trovi sui suoi supporti.

Passaggio 12: collegamento alla rete / luce da accendere

Collegamento alla rete/luce da accendere
Collegamento alla rete/luce da accendere
Collegamento alla rete/luce da accendere
Collegamento alla rete/luce da accendere

AVVERTIMENTO

Assicurarsi di prestare la dovuta attenzione e precauzione mentre si lavora con la rete CA, assicurarsi che la rete CA sia scollegata

Non mi assumo alcuna responsabilità per eventuali perdite o danni derivanti direttamente o come conseguenza del seguire questo progetto

  • Collegare la fase di rete CA alla morsettiera a vite A1 (sinistra) del relè.
  • Collegare la fase della luce da commutare alla morsettiera a vite B1 (destra) del relè.
  • Utilizzare una morsettiera a vite separata per collegare il filo neutro della rete CA, il filo neutro della luce e il filo neutro dell'alimentatore.
  • Per fissare la trazione, montare una fascetta avvolgente attorno a ciascuno dei cavi di alimentazione.

Passaggio 13: finitura dell'involucro

Finitura della custodia
Finitura della custodia

A questo punto il montaggio nell'armadio è completato

  • Fai scorrere il display OLED attraverso il foro di montaggio del display nella parte centrale della custodia.
  • Far scorrere il codificatore rotante attraverso il foro nella parte centrale, assicurarsi che l'antirotazione sia allineato. Montare l'encoder rotativo utilizzando la rondella e il dado inclusi.
  • Montare la parte superiore della custodia e chiudere la custodia montando le quattro viti M3x25 mm dal basso.

Passaggio 14: programmazione di Arduino

AVVERTIMENTO

L'Arduino è alimentato direttamente dall'alimentatore stabile +5V invece di utilizzare il regolatore di alimentazione interno di Arduino. Pertanto, non è sicuro collegare l'USB quando Arduino riceve alimentazione dall'alimentatore.

Scollegare sempre la rete 230VAC prima di utilizzare la connessione USB Arduino.

Recupera il programma timer Arduino da GitHub.

Questo programma utilizza l'IDE Arduino, che può essere ottenuto qui.

Il programma utilizza le seguenti librerie aggiuntive:

SSD1303Ascii

Libreria Arduino Wire

Nota che viene utilizzata anche la libreria crepuscolo2dawn, ma inclusa come codice a causa di un cambiamento nella sua interfaccia.

Per garantire un calcolo corretto del crepuscolo/alba, è necessario impostare la longitudine, la latitudine e il fuso orario.

Come descritto nell'esempio crepuscolo2dawn, un modo semplice per trovare la longitudine e la latitudine di qualsiasi posizione è trovare il punto in Google Maps, fare clic con il pulsante destro del mouse sul luogo sulla mappa e selezionare "Cosa c'è qui?". In basso vedrai una scheda con le coordinate.

Longitudine e latitudine sono hardcoded nel programma, nelle righe 19 e 20 di Dusk2Dawn.cpp:

/* La latitudine e la longitudine della tua posizione devono essere impostate qui.

* * SUGGERIMENTO: un modo semplice per trovare la longitudine e la latitudine di qualsiasi località è * trovare il punto in Google Maps, fare clic con il pulsante destro del mouse sul luogo sulla mappa e * selezionare "Cosa c'è qui?". In fondo, vedrai una scheda con le * coordinate. */ #define LATITUDE 52.097105; // Utrecht #define LONGTITUDE 5.068294; // Utrecht

Il fuso orario è anche hardcoded nella riga 24 di Dusk2Dawn.cpp. Per impostazione predefinita è impostato su Paesi Bassi (GMT + 1):

/* Inserisci qui il tuo fuso orario (offset rispetto a GMT).

*/ #define FUSO ORARIO 1

Quando si programma Arduino per la prima volta, è necessario inizializzare la memoria EEPROM. Per questo, cambia la riga 11 di timer.cpp per eseguire l'inizializzazione della EEPROM:

// cambia in true per la prima programmazione

#define INITIALIZE_EEPROM_MEMORY false

Carica il programma su Arduino e avvia Arduino.

Disabilita l'inizializzazione della EEPROM e carica nuovamente il programma su Arduino. Il timer ora ricorderà le impostazioni del tempo di commutazione al riavvio.

Passaggio 15: impostazione dell'ora e dei tempi di commutazione

Concetti di interazione dell'utente:

  • La pressione breve viene utilizzata per confermare le selezioni. Inoltre, nella schermata principale del timer, una breve pressione accende o spegne la luce.
  • La pressione lunga viene utilizzata per accedere al menu dalla schermata principale del timer. In qualsiasi punto del menu, una pressione prolungata tornerà alla schermata principale del timer.
  • '>' Cursus di selezione. Questo cursore indica l'opzione selezionata in un menu.

Schermata principale del timer

La schermata principale del timer mostra:

Giorno della settimana Su

Ora attuale 16:00

Stato attuale del timer e ora di commutazione successiva Timer OFF fino alle 17:12

Ora dell'alba e del tramonto Alba 08:05 Tramonto 17:10

Impostazione dell'ora corretta

Premere a lungo per accedere al menu. Vengono visualizzate le seguenti opzioni:

IndietroImposta oraProgramma settimanaleProgramma week-endOpzioni

Selezionare Imposta ora per impostare la data e l'ora dell'orologio in tempo reale. Inserisci i valori corretti per:

AnnoMeseGiornoOra

Il timer determina automaticamente il giorno della settimana. Anche il passaggio all'ora legale viene eseguito automaticamente. L'ora legale è implementata solo per il fuso orario europeo.

Impostazione del programma orario

Il timer ha 2 programmi, uno per i giorni della settimana, uno per il fine settimana. Nota che il venerdì è considerato parte del fine settimana, le luci possono rimanere accese un po' più a lungo.

Ogni timer ha un momento di accensione e spegnimento. Il momento può essere:

  • Ora: ora esatta specificata
  • Alba: cambia in base all'ora calcolata dell'alba
  • Crepuscolo: cambia in base all'ora calcolata del crepuscolo

Per il tramonto e l'alba è possibile inserire un valore di correzione di 59 minuti prima o dopo.

Esempi:

Per accendere una luce tutta la notte, selezionare accensione alle (tramonto + 10min), spegnimento alle (alba - 10min)

Per accendere una luce la sera, seleziona accendi al tramonto, spegni alle ore: 22:30.

Opzioni

Nella schermata delle opzioni è possibile impostare un timeout per la commutazione della schermata.

Quando lo schermo è spento, premendo la manopola del codificatore rotante si tornerà alla schermata principale del timer.

Consigliato: