Taula de continguts:

Temporitzador de rellotge Arduino capvespre / alba: 15 passos
Temporitzador de rellotge Arduino capvespre / alba: 15 passos

Vídeo: Temporitzador de rellotge Arduino capvespre / alba: 15 passos

Vídeo: Temporitzador de rellotge Arduino capvespre / alba: 15 passos
Vídeo: PIC16F877A with DS3231 RTC 2024, De novembre
Anonim
Temporitzador de rellotge Arduino capvespre / alba
Temporitzador de rellotge Arduino capvespre / alba

Resum:

Aquest temporitzador basat en Arduino pot canviar una llum de 220 V al capvespre, a l’alba o a l’hora especificada.

Introducció:

Alguns dels llums de casa meva s’encenen automàticament al capvespre, fins a una hora predeterminada o fins a la matinada (tota la nit).

La ubicació dels llums no permet l’ús d’un sensor de llum. Els temporitzadors habituals disponibles s’encenen a una hora específica. Per activar el capvespre, per tant, cal ajustar regularment la configuració del programa del temporitzador.

Com a bon repte, vaig decidir construir un temporitzador autònom basat en Arduino. Utilitza un rellotge en temps real i la biblioteca Dusk2Dawn per determinar l’hora en què s’han d’encendre o apagar els llums. El recinte d’aquest temporitzador s’imprimeix en 3D i es pot trobar a Thingiverse. El codi Arduino d’aquest projecte es pot trobar a GitHub.

En la creació d’aquest temporitzador em vaig inspirar en molts dissenys i circuits a Internet. El meu agraïment a tots els col·laboradors que no s’esmenten explícitament.

Per a la llegibilitat, es mostren diagrames parcials en els passos necessaris, en lloc d'un diagrama de circuits complet.

Solucions alternatives:

En lloc d’un temporitzador autònom, hi ha moltes solucions on un sistema domòtic intel·ligent dirigeix els llums. El meu objectiu era tenir una solució independent, que no depengués de la connectivitat WIFI (o d’altres).

Restriccions:

El codi proporcionat amb aquest projecte incloïa una implementació de canvis d’estiu basada en el sistema europeu d’estiu.

Pas 1: Llista de peces i eines

Llista de peces i eines
Llista de peces i eines

Parts:

Cost total de les peces (sense imprimir en 3D) aproximadament 30 €, -.

  • Arduino Nano V3 (compatible) sense capçaleres
  • Font d'alimentació 5V 0.6A (34 x 20 x 15mm)
  • Relé d'estat sòlid 5V - Actiu baix - 2A 230VAC
  • Rellotge en temps real DS3231 (petit)
  • Pantalla OLED de 0,96”SPI 128 * 64 píxels
  • Codificador rotatiu - EC11 - 20mm
  • Pom de 6mm eix 15mm * 17mm
  • Tauler de circuits impresos de taulers de pa,
  • 4 * cargols M3x25mm
  • Recinte imprès en 3D
  • Tubs retràctils
  • Filferros
  • Bloqueig de bornes de cargol (per connectar cables neutres)

Eines necessàries:

  • Soldador
  • Fil de soldadura
  • Bomba desoldadora
  • Decapants de filferro
  • Cortadores
  • Impressora 3D (per imprimir el recinte)
  • Eines petites variades

AVÍS

Aquest circuit funciona amb corrent altern de 230 V i, si no esteu acostumat a treballar amb tensió de xarxa o no teniu experiència en el treball amb la tensió de corrent altern de 230 V, estigueu allunyat d’aquest projecte

No assumeixo cap responsabilitat per qualsevol pèrdua o dany derivat directament o com a conseqüència de seguir aquest projecte

Sempre s’aconsella tenir les precaucions i precaucions adequades mentre es treballa amb corrent altern

Pas 2: prepareu la pantalla OLED i el rellotge en temps real

Prepareu la pantalla OLED i el rellotge en temps real
Prepareu la pantalla OLED i el rellotge en temps real

El recinte imprès en 3D està dissenyat per a una mida mínima. Com a resultat, cal eliminar les capçaleres de la pantalla OLED i del rellotge en temps real.

En preparació per al següent pas, elimineu qualsevol soldadura que quedi dels forats amb la bomba de dessoldatge.

Pas 3: prepareu el codificador rotatiu

Prepareu el codificador rotatiu
Prepareu el codificador rotatiu

El codificador rotatiu té uns connectors febles. Per evitar danys, munteu un tros de placa de circuit imprès al codificador.

A la imatge, la connexió de terra (a la part superior dreta i mitja inferior) també està preparada.

Nota: Assegureu-vos que el codificador rotatiu amb placa de circuit imprès s'adapti al recinte sense tocar l'Arduino. Pot ser que sigui necessari moldre la placa de circuit imprès per aconseguir un ajust perfecte.

Pas 4: recinte

Recinte
Recinte
Recinte
Recinte

Imprimiu les tres parts del recinte amb una impressora 3D. Consulteu les instruccions de Thingiverse.

Pas 5: desactiveu el LED d'alimentació d'Arduino (opcional)

Desactiva el LED d'alimentació d'Arduino (opcional)
Desactiva el LED d'alimentació d'Arduino (opcional)

Per evitar que el temporitzador tingui una llum verda, es pot desactivar el LED d'alimentació de l'Arduino.

Tingueu en compte que aquesta modificació és opcional.

La modificació de l'Arduino Nano consisteix a treure la resistència al costat del led d'alimentació (vegeu el cercle vermell de la imatge).

Pas 6: font d'alimentació + relé d'estat sòlid

Font d'alimentació + relé d'estat sòlid
Font d'alimentació + relé d'estat sòlid

En aquest pas, la font d'alimentació i el relé d'estat sòlid es combinen i es munten a la part inferior del recinte.

Les connexions entre l'alimentació i el relé es fan a la part inferior d'aquests components. El bloc de borns del relé s’utilitzarà per connectar-se a l’Arduino.

Nota: Quan feu connexions, assegureu-vos que els forats de muntatge del relé d'estat sòlid es mantinguin lliures.

  • Soldeu un cable de connexió entre el relé d'estat sòlid A1 a una de les connexions de CA de la font d'alimentació
  • Soldeu un cable a l’altra connexió de CA de la font d’alimentació (es connectarà al bloc de borns de cargol neutre al pas 7)
  • Soldeu un cable entre la font d'alimentació -Vo per retransmetre DC-
  • Soldeu un cable per connectar l’alimentació + Vo al relé DC +

Nota: pot ser que sigui necessari escurçar els cables de la font d'alimentació i del relé per poder cabre al recinte.

Pas 7: Arduino Nano + font d'alimentació + relé d'estat sòlid

Arduino Nano + font d'alimentació + relé d'estat sòlid
Arduino Nano + font d'alimentació + relé d'estat sòlid

En aquest pas, l'Arduino Nano està connectat a la font d'alimentació i al relé d'estat sòlid.

  • Tallar dos cables d'aproximadament 70 mm de longitud. Tireu 30 mm d’aïllament per un costat i 4 mm per l’altre costat.
  • Soldeu el lateral amb un aïllament de 30 mm a l'Arduino + 5V i el GND, amb el cable que s'enfila
  • Tallar dos tubs termorretractors de 20 mm de longitud i muntar-los sobre la part despullada de 25 mm. Això aïlla els cables fins a la connexió amb els borns de cargol de muntatge DC + i DC- del relé d'estat sòlid.
  • Tingueu en compte que els cables de GND i + 5V han de creuar-se per connectar-se correctament al bloc de bornes del cargol del relé.
  • Tallar un fil d'aproximadament 40 mm de longitud i desprendre 4 mm d'aïllament dels dos extrems. Soldeu un costat a la connexió A2 a la part posterior de l'Arduino i connecteu l'altre costat a la connexió CH1 del bloc de borns de cargol de muntatge d'estat sòlid.

AVÍS

L'Arduino s'alimenta directament de la font d'alimentació estable de + 5V en lloc d'utilitzar el regulador de potència intern Arduino. Per tant, no és segur connectar USB quan l'Arduino rep alimentació de la font d'alimentació.

Desconnecteu sempre la xarxa de 230VAC abans d’utilitzar la connexió USB Arduino.

Pas 8: Arduino Nano + Rellotge en temps real

Arduino Nano + Rellotge en temps real
Arduino Nano + Rellotge en temps real

En aquest pas, el rellotge en temps real es connecta a l'Arduino, en part mitjançant l'ús dels cables preparats al pas anterior.

  • Soldeu el cable que prové d’Arduino GND (també connectat a DC- del relé) a ‘-’ del rellotge de temps real.
  • Soldeu el cable procedent d’Arduino + 5V (també connectat a DC + del relé) a ‘+’ del rellotge de temps real.
  • Talla dos cables d'aproximadament 40 mm de longitud i tira 4 mm d'aïllament d'ambdós extrems.
  • Soldeu un cable entre Arduino A4 i el rellotge D en temps real (SDA).
  • Soldeu un cable entre Arduino A5 i el rellotge en temps real C (SCL).
  • Formeu els cables del rellotge de temps real per assegurar-vos que no interfereixin amb el codificador rotatiu. Per a això, els cables han d’estar a la part inferior del recinte.

Pas 9: connecteu la pantalla OLED

Connecteu la pantalla OLED
Connecteu la pantalla OLED

En aquest pas, la pantalla OLED SPI s'afegeix a l'Arduino.

  • Talla 2 cables de 65 mm de longitud i tira 4 mm d’aïllament d’ambdós extrems.
  • Soldeu un cable a la connexió GND de la pantalla OLED. Soldeu aquest cable al cable aïllat de tubs termorretractables procedents de l'Arduino GND (consulteu el pas 4) i connecteu els dos cables al bloc de borns de cargol de muntatge CC del relé d'estat sòlid.
  • Soldeu un cable a la connexió VCC de la pantalla OLED. Soldeu aquest cable al cable aïllat de tubs termorretractables procedents de l’Arduino + 5V (consulteu el pas 4) i connecteu els dos cables al bloc de borns del cargol de muntatge DC + del relé d’estat sòlid.
  • Talla 5 cables de 65 mm de longitud i tira 4 mm d’aïllament d’ambdós extrems.
  • Soldeu un cable per connectar D0 (CLK) a Arduino D10
  • Soldeu un cable per connectar D1 (MOSI / DATA) a Arduino D9
  • Soldeu un cable per connectar RES (RT) a Arduino D8
  • Soldeu un cable per connectar CC a Arduino D11
  • Soldeu un cable per connectar CS a Arduino D12

Nota: L'ordre dels cables de visualització no és lògic. Aquest és el resultat d’utilitzar primer l’exemple d’Adafruit i, a continuació, canviar les connexions perquè l’ús de D13 dóna lloc a un LED vermell a l’Arduino tot el temps.

Alternativa

És possible utilitzar un ordre ‘normal’ per a les connexions SPI. Per a això, cal definir la definició de sortida digital del programa Arduino a oledcontrol.cpp:

// Utilització del programari SPI

// definicions de pin

#define CS_PIN 12

#define RST_PIN 8

#define DC_PIN 11

#define MOSI_PIN 9

#defineix CLK_PIN 10

Pas 10: codificador rotatiu

Codificador rotatiu
Codificador rotatiu

El diagrama mostra les connexions de l’Arduino al codificador rotatiu (codificador vist des de la part superior).

  • Talla 4 cables de 45 mm i tira 4 mm d’aïllament d’ambdós extrems.
  • Connecteu Arduino GND als connectors centrals superior dret i inferior del codificador
  • Connecteu Arduino D2 a la part inferior esquerra del codificador
  • Connecteu Arduino D3 a la part inferior dreta del codificador
  • Connecteu Arduino D4 a la part superior esquerra del codificador

Pas 11: Instal·lació al recinte

Instal·lació al recinte
Instal·lació al recinte

Instal·leu tots els aparells electrònics a la part inferior del recinte:

  • Feu lliscar l'Arduino a la ranura vertical
  • Feu lliscar el rellotge en temps real al compartiment inferior
  • Feu lliscar la font d'alimentació i el relé al compartiment superior per assegurar-vos que el relé es troba a les seves muntures.

Pas 12: Connexió a la xarxa elèctrica / llum que es canviarà

Connexió a la xarxa elèctrica / llum que es canviarà
Connexió a la xarxa elèctrica / llum que es canviarà
Connexió a la xarxa elèctrica / llum que es canviarà
Connexió a la xarxa elèctrica / llum que es canviarà

AVÍS

Assegureu-vos de tenir les precaucions i precaucions adequades mentre treballeu amb la xarxa elèctrica de CA. Assegureu-vos que la xarxa de CA està desconnectada

No assumeixo cap responsabilitat per qualsevol pèrdua o dany derivat directament o com a conseqüència de seguir aquest projecte

  • Connecteu la fase de corrent altern al bloc de borns del cargol A1 (esquerra) del relé.
  • Connecteu la fase de la llum que es commutarà al bloc de borns del cargol B1 (dreta) del relé.
  • Utilitzeu un bloc de borns de cargol independent per connectar el cable neutre de la xarxa de CA, el cable neutre de llum i el cable neutre de la font d'alimentació.
  • Per alleujar la tensió, munteu un embolcall al voltant de cadascun dels cables d’alimentació.

Pas 13: Acabar el recinte

Acabant el recinte
Acabant el recinte

En aquest pas es completa el muntatge al recinte

  • Feu lliscar la pantalla OLED pel forat de muntatge de la pantalla a la part mitjana del recinte.
  • Feu lliscar el codificador rotatiu pel forat de la part central i assegureu-vos que les línies antirotació queden alineades. Munteu el codificador rotatiu utilitzant la rosca i la rosca incloses.
  • Munteu la part superior del recinte i tanqueu-lo muntant els quatre cargols M3x25mm des de la part inferior.

Pas 14: programació de l'Arduino

AVÍS

L'Arduino s'alimenta directament de la font d'alimentació estable de + 5V en lloc d'utilitzar el regulador de potència intern Arduino. Per tant, no és segur connectar USB quan l'Arduino rep alimentació de la font d'alimentació.

Desconnecteu sempre la xarxa elèctrica de 230VAC abans d’utilitzar la connexió USB Arduino.

Recupereu el programa del temporitzador Arduino de GitHub.

Aquest programa utilitza l'IDE Arduino, que es pot obtenir aquí.

El programa utilitza les biblioteques addicionals següents:

SSD1303Ascii

Biblioteca Arduino Wire

Tingueu en compte que també s’utilitza la biblioteca dusk2dawn, però s’inclou com a codi a causa d’un canvi a la seva interfície.

Per garantir un càlcul correcte del capvespre / alba, cal definir la longitud i la latitud i la zona horària.

Tal com es descriu a l'exemple dusk2dawn, una manera senzilla de trobar la longitud i la latitud de qualsevol ubicació és trobar el lloc a Google Maps, fer clic amb el botó dret al lloc del mapa i seleccionar "Què hi ha aquí?". A la part inferior, veureu una targeta amb les coordenades.

La longitud i la latitud estan codificades al programa, a les línies 19 i 20 de Dusk2Dawn.cpp:

/ * La latitud i la longitud de la vostra ubicació s’han d’establir aquí.

* * SUGGERIMENT: una manera senzilla de trobar la longitud i la latitud de qualsevol ubicació és * trobar el lloc a Google Maps, fer clic amb el botó dret al lloc del mapa i * seleccionar "Què hi ha aquí?". A la part inferior, veureu una targeta amb les coordenades *. * / #define LATITUDE 52.097105; // Utrecht #define LONGTITUDE 5.068294; // Utrecht

La zona horària també està codificada a la línia 24. Dusk2Dawn.cpp. Per defecte, s'estableix a Països Baixos (GMT + 1):

/ * Introduïu aquí la vostra zona horària (desplaçament a GMT).

* / #define TIMEZONE 1

En programar l’Arduino per primera vegada, cal inicialitzar la memòria EEPROM. Per a això, canvieu la línia 11 de timer.cpp per fer la inicialització EEPROM:

// canvia a true per programar per primera vegada

#define INITIALIZE_EEPROM_MEMORY false

Pengeu el programa a l'Arduino i arrenceu-lo.

Desactiveu la inicialització EEPROM i torneu a carregar el programa a l'Arduino. Ara el temporitzador recordarà la configuració de l’hora del canvi quan es reiniciï.

Pas 15: Configuració de l'hora i dels horaris de canvi

Conceptes d'interacció amb l'usuari:

  • La premuda breu s’utilitza per confirmar les seleccions. A més, a la pantalla principal del temporitzador, premeu breument per encendre o apagar la llum.
  • Es manté premuda per entrar al menú des de la pantalla principal del temporitzador. En qualsevol lloc del menú, es mantindrà una pulsació llarga per tornar a la pantalla principal del temporitzador.
  • ‘>’ Cursus de selecció. Aquest cursor indica l'opció seleccionada en un menú.

Pantalla principal del temporitzador

La pantalla principal del temporitzador mostra:

Dia de la setmana Su

Hora actual a les 16:00

Estat actual del temporitzador i següent temps d’interruptor Temporitzador DESACTIVAT fins a les 17:12

Hora d’alba i capvespre Alba 08:05 Capvespre 17:10

Definir l’hora correcta

Manteniu premuda per entrar al menú. Es mostren les opcions següents:

Tornar Configuració de l'hora Programa del dia de la setmana Programa del cap de setmana Opcions

Seleccioneu l'hora establerta per establir la data i l'hora del rellotge de temps real. Introduïu els valors correctes per a:

AnyMonthDayTime

El temporitzador determina automàticament el dia de la setmana. El canvi d’horari d’estiu també es fa automàticament. L’horari d’estiu només s’implementa per a la zona horària europea.

Configuració del programa del temporitzador

El temporitzador té 2 programes, un per a dies setmanals i un per a caps de setmana. Tingueu en compte que el divendres es considera part del cap de setmana; els llums poden romandre encesos una mica més.

Cada temporitzador té un moment d’encesa i apagat. El moment pot ser:

  • Hora: hora exacta especificada
  • Amanecer: canvia segons l’hora calculada de l’alba
  • Vespre: canvia segons l’hora calculada del vespre

Al capvespre i l’alba és possible introduir un valor de correcció de 59 minuts abans o després.

Exemples:

Per encendre una llum tota la nit, seleccioneu l'encès al capvespre (+ 10 min), apagueu a (l'alba - 10 min)

Per encendre un llum al vespre, seleccioneu encendre'l al vespre i apagar-lo a les 22:30.

Opcions

A la pantalla d'opcions es pot establir un temps d'espera per canviar de pantalla.

Quan la pantalla estigui apagada, prement el comandament del codificador giratori es tornarà a la pantalla principal del temporitzador.

Recomanat: