Inhoudsopgave:

Arduino Dusk / Dawn Clock Timer - Ajarnpa
Arduino Dusk / Dawn Clock Timer - Ajarnpa

Video: Arduino Dusk / Dawn Clock Timer - Ajarnpa

Video: Arduino Dusk / Dawn Clock Timer - Ajarnpa
Video: Arduino Based Home Automation Dusk To Dawn Lighting Timer Based On Vintage Sangamo Suntracker 2024, November
Anonim
Arduino Dusk/dawn Clock Timer
Arduino Dusk/dawn Clock Timer

Samenvatting:

Deze op Arduino gebaseerde timer kan één 220V-licht schakelen in de schemering, zonsopgang of een bepaalde tijd.

Invoering:

Sommige lampen in mijn huis gaan automatisch aan in de schemering, tot een vooraf ingestelde tijd of tot zonsopgang (de hele nacht).

De locatie van de lampen laat het gebruik van een lichtsensor niet toe. De reguliere beschikbare kloktimers gaan op een bepaald tijdstip aan. Om rond de schemering in te schakelen, moet daarom regelmatig de instelling van het timerprogramma worden aangepast.

Als een leuke uitdaging besloot ik in plaats daarvan een aangepaste Arduino-gebaseerde stand-alone timer te bouwen. Het gebruikt een realtime klok en de Dusk2Dawn-bibliotheek om het tijdstip te bepalen waarop de verlichting moet worden in- of uitgeschakeld. De behuizing voor deze timer is 3D geprint en is te vinden op Thingiverse. De Arduino-code voor dit project is te vinden op GitHub.

Bij het maken van deze timer heb ik inspiratie gehaald uit vele ontwerpen en circuits op internet. Mijn dank gaat uit naar alle niet expliciet genoemde bijdragers.

Voor de leesbaarheid worden in de stappen waar nodig deelschema's getoond in plaats van een volledig schakelschema.

Alternatieve oplossingen:

In plaats van een stand-alone timer zijn er veel oplossingen waarbij een slim domoticasysteem de verlichting aanstuurt. Mijn doel was om een onafhankelijke oplossing te hebben, die niet afhankelijk is van WIFI (of andere) connectiviteit.

Beperkingen:

De code die bij dit project werd geleverd, omvatte een implementatie van de zomertijdwijzigingen op basis van het Europese zomertijdsysteem.

Stap 1: Onderdelenlijst en gereedschap

Onderdelenlijst en gereedschap
Onderdelenlijst en gereedschap

Onderdelen:

Totale kosten onderdelen (exclusief 3d print) circa €30,-.

  • Arduino Nano V3 (compatibel) zonder headers
  • Voeding 5V 0,6A (34 x 20 x 15mm)
  • Halfgeleiderrelais 5V - Actief laag - 2A 230VAC
  • Realtime klok DS3231 (klein)
  • 0,96” OLED-scherm SPI 128*64 pixels
  • Roterende encoder - EC11 - 20mm
  • Knop 6mm schacht 15mm * 17mm
  • Breadboard printplaat,
  • 4 * M3x25mm schroeven
  • 3D-geprinte behuizing
  • Krimpkous
  • Draden
  • Schroefklemmenblok (om neutrale draden aan te sluiten)

Benodigde gereedschappen:

  • Soldeerbout
  • Soldeerdraad
  • Desoldeerpomp
  • Draadstrippers
  • Snijders
  • 3D-printer (om behuizing te printen)
  • Diverse kleine gereedschappen

WAARSCHUWING

Deze schakeling werkt op 230v AC en als je niet gewend bent om met netspanning te werken of niet veel ervaring hebt met het werken met 230v AC netspanning, blijf dan weg van dit project

Ik aanvaard geen verantwoordelijkheid voor enig verlies of schade die direct voortvloeit uit of als gevolg van het volgen van dit project

Het wordt altijd geadviseerd om de juiste zorg en voorzorgsmaatregelen te nemen tijdens het werken met AC Mains

Stap 2: OLED-display en realtimeklok voorbereiden

OLED-display en realtimeklok voorbereiden
OLED-display en realtimeklok voorbereiden

De 3D-geprinte behuizing is ontworpen voor minimale afmetingen. Als gevolg hiervan moeten de headers van het OLED-display en de realtime klok worden verwijderd.

Als voorbereiding op de volgende stap, verwijder eventueel overgebleven soldeer uit de gaten met de desoldeerpomp.

Stap 3: bereid roterende encoder voor

Bereid roterende encoder voor
Bereid roterende encoder voor

De roterende encoder heeft dunne connectoren. Monteer om schade te voorkomen een stukje printplaat op de encoder.

Op de foto is de massaverbinding (naar rechtsboven en middenonder) ook al voorbereid.

Let op: Zorg ervoor dat de roterende encoder met printplaat in de behuizing past zonder de Arduino aan te raken. Het kan nodig zijn om de printplaat te slijpen om een goede pasvorm te krijgen.

Stap 4: Behuizing

Behuizing
Behuizing
Behuizing
Behuizing

Print de drie delen van de behuizing met een 3D-printer. Raadpleeg de instructies op Thingiverse.

Stap 5: Arduino Power LED uitschakelen (optioneel)

Schakel Arduino Power LED uit (optioneel)
Schakel Arduino Power LED uit (optioneel)

Om een groene gloed in de timer te voorkomen, kan de power-LED van de Arduino worden uitgeschakeld.

Merk op dat deze wijziging optioneel is.

De aanpassing aan de Arduino Nano bestaat uit het verwijderen van de weerstand naast de power led (zie rode cirkel op de foto).

Stap 6: Voeding + Solid State Relais

Voeding + Solid State Relais
Voeding + Solid State Relais

In deze stap worden de voeding en het solid-state relais gecombineerd en gemonteerd in het onderste deel van de behuizing.

Aan de onderkant van deze componenten worden verbindingen gemaakt tussen de voeding en het relais. Het schroefklemmenblok van het relais wordt gebruikt om verbinding te maken met de Arduino.

Let op: Let er bij het maken van aansluitingen op dat de montagegaten van het solid-state relais vrij blijven.

  • Soldeer een verbindingsdraad tussen solid state relais A1 aan een van de AC-aansluitingen van de voeding
  • Soldeer een draad aan de andere AC-aansluiting van de voeding (deze wordt aangesloten op het neutrale schroefklemmenblok in stap 7)
  • Soldeer een draad tussen voeding -Vo naar relais DC-
  • Soldeer een draad om voeding +Vo aan te sluiten op relais DC+

Opmerking: Het kan nodig zijn om de kabels van de voeding en het relais in te korten om in de behuizing te passen.

Stap 7: Arduino Nano + voeding + solid-state relais

Arduino Nano + voeding + solid-state relais
Arduino Nano + voeding + solid-state relais

In deze stap wordt de Arduino Nano aangesloten op de voeding en het solid-state relais.

  • Knip twee draden van ongeveer 70 mm lengte. Strip 30 mm isolatie aan de ene kant en 4 mm aan de andere kant.
  • Soldeer de zijkant met 30 mm gestripte isolatie aan de Arduino +5V en GND, met de draad erdoorheen
  • Snijd twee krimpkousen van 20 mm lengte en monteer ze over het 25 mm gestripte deel. Hierdoor worden de draden geïsoleerd tot aan de aansluiting met de montageschroefklemmen DC+ en DC- van het solid-state relais.
  • Merk op dat de draden voor GND en +5V elkaar moeten kruisen om correct op het relaisschroefklemmenblok aan te sluiten.
  • Knip een draad van ongeveer 40 mm lang en strip 4 mm isolatie van beide uiteinden. Soldeer de ene kant aan de A2-aansluiting op de ACHTERKANT van de Arduino en sluit de andere kant aan op de CH1-aansluiting van het solid-state schroefklemmenblok.

WAARSCHUWING

De Arduino wordt rechtstreeks gevoed door de stabiele +5V-voeding in plaats van de interne Arduino-stroomregelaar te gebruiken. Daarom is het niet veilig om USB aan te sluiten wanneer de Arduino stroom krijgt van de voeding.

Koppel altijd de 230VAC-netvoeding los voordat u de Arduino USB-aansluiting gebruikt.

Stap 8: Arduino Nano + realtimeklok

Arduino Nano + realtimeklok
Arduino Nano + realtimeklok

In deze stap wordt de realtimeklok aangesloten op de Arduino, mede door gebruik te maken van de kabels die in de vorige stap zijn voorbereid.

  • Soldeer de draad die van Arduino GND komt (ook aangesloten op DC- van het relais) naar '–' van de realtime klok.
  • Soldeer de draad die van Arduino +5V komt (ook aangesloten op DC+ van het relais) aan '+' van de real-time klok.
  • Knip twee draden van ongeveer 40 mm lengte af en strip 4 mm isolatie van beide uiteinden.
  • Soldeer een draad tussen Arduino A4 en real-time klok D (SDA).
  • Soldeer een draad tussen Arduino A5 en realtime klok C (SCL).
  • Vorm de draden van de realtimeklok om ervoor te zorgen dat ze de roterende encoder niet hinderen. Hiervoor moeten de draden aan de onderkant van de behuizing zitten.

Stap 9: OLED-scherm aansluiten

Sluit OLED-scherm aan
Sluit OLED-scherm aan

In deze stap wordt het OLED SPI-display toegevoegd aan de Arduino.

  • Knip 2 draden van 65 mm lengte af en strip 4 mm isolatie van beide uiteinden.
  • Soldeer een draad aan de GND-aansluiting van het OLED-display. Soldeer deze draad aan de geïsoleerde draad van de krimpkous die uit de Arduino GND komt (zie stap 4) en sluit beide draden aan op het DC-gemonteerde schroefklemmenblok van het solid-state relais.
  • Soldeer een draad aan de VCC-aansluiting van het OLED-scherm. Soldeer deze draad aan de geïsoleerde draad van de krimpkous die van de Arduino +5V komt (zie stap 4) en sluit beide draden aan op het DC+-schroefklemmenblok van het solid-state relais.
  • Knip 5 draden van 65 mm lengte en strip 4 mm isolatie van beide uiteinden.
  • Soldeer een draad om D0 (CLK) aan te sluiten op Arduino D10
  • Soldeer een draad om D1 (MOSI / DATA) aan te sluiten op Arduino D9
  • Soldeer een draad om RES (RT) aan te sluiten op Arduino D8
  • Soldeer een draad om DC te verbinden met Arduino D11
  • Soldeer een draad om CS aan te sluiten op Arduino D12

Let op: De volgorde van de displaydraden is niet logisch. Dit is het resultaat van eerst het Adafruit-voorbeeld te gebruiken en vervolgens de verbindingen te wijzigen, omdat het gebruik van D13 altijd resulteert in een rode LED op de Arduino.

Alternatief

Het is mogelijk om een ‘normale’ volgorde te hanteren voor de SPI-verbindingen. Hiervoor moet de Arduino-programma digitale uitgangsdefinitie in oledcontrol.cpp dienovereenkomstig worden aangepast:

// Software gebruiken SPI

// pindefinities

#define CS_PIN 12

#define RST_PIN 8

#define DC_PIN 11

#define MOSI_PIN 9

#define CLK_PIN 10

Stap 10: roterende encoder

Roterende encoder
Roterende encoder

Het diagram toont de verbindingen van de Arduino met de roterende encoder (encoder van bovenaf gezien).

  • Knip 4 draden van 45 mm af en strip aan beide uiteinden 4 mm isolatie.
  • Sluit Arduino GND aan op de connectoren rechtsboven en onderaan in het midden van de encoder
  • Sluit de Arduino D2 aan op de linkerbenedenhoek van de encoder
  • Sluit de Arduino D3 aan op de rechterbenedenhoek van de encoder
  • Sluit de Arduino D4 aan op de linkerbovenhoek van de encoder

Stap 11: Installatie in de behuizing

Installatie in de behuizing
Installatie in de behuizing

Installeer alle elektronica in het onderste deel van de behuizing:

  • Schuif de Arduino op de verticale sleuf
  • Schuif de real-time klok in het onderste compartiment
  • Schuif de voeding en het relais in het bovenste compartiment, zorg ervoor dat het relais op zijn steunen zit.

Stap 12: Aansluiten op het lichtnet/licht dat moet worden geschakeld

Aansluiten op het lichtnet / te schakelen licht
Aansluiten op het lichtnet / te schakelen licht
Aansluiten op het lichtnet / te schakelen licht
Aansluiten op het lichtnet / te schakelen licht

WAARSCHUWING

Zorg voor de juiste zorg en voorzorgsmaatregelen tijdens het werken met AC Mains, zorg ervoor dat de AC Mains is losgekoppeld

Ik aanvaard geen verantwoordelijkheid voor enig verlies of schade die direct voortvloeit uit of als gevolg van het volgen van dit project

  • Sluit de AC Mains-fase aan op het A1 (linker) schroefklemmenblok van het relais.
  • Sluit de fase van het te schakelen licht aan op het B1 (rechts) schroefaansluitblok van het relais.
  • Gebruik een afzonderlijk schroefaansluitblok om de nuldraad van het AC-net, de nuldraad van het licht en de nuldraad van de voeding aan te sluiten.
  • Monteer voor trekontlasting een kabelbinder rond elk van de stroomkabels.

Stap 13: Afwerking van de behuizing

De behuizing afmaken
De behuizing afmaken

In deze stap is de montage in de behuizing voltooid

  • Schuif het OLED-scherm door het montagegat in het midden van de behuizing.
  • Schuif de encoder door het gat in het middengedeelte, zorg ervoor dat de anti-rotatie uitgelijnd is. Monteer de roterende encoder met behulp van de meegeleverde ring en moer.
  • Monteer het bovenste deel van de behuizing en sluit de behuizing door de vier M3x25mm schroeven vanaf de onderkant te monteren.

Stap 14: De Arduino programmeren

WAARSCHUWING

De Arduino wordt rechtstreeks gevoed door de stabiele +5V-voeding in plaats van de interne Arduino-stroomregelaar te gebruiken. Daarom is het niet veilig om USB aan te sluiten wanneer de Arduino stroom krijgt van de voeding.

Koppel altijd de 230VAC-netvoeding los voordat u de Arduino USB-aansluiting gebruikt.

Haal het Arduino-timerprogramma op van GitHub.

Dit programma maakt gebruik van de Arduino IDE, die hier te verkrijgen is.

Het programma gebruikt de volgende extra bibliotheken:

SSD1303Ascii

Arduino Wire-bibliotheek

Merk op dat de dusk2dawn-bibliotheek ook wordt gebruikt, maar als code is opgenomen vanwege een wijziging in de interface.

Om een correcte berekening van de schemering/dageraad te garanderen, moeten de lengte- en breedtegraad en de tijdzone worden ingesteld.

Zoals beschreven in het dusk2dawn-voorbeeld, is een gemakkelijke manier om de lengte- en breedtegraad voor elke locatie te vinden, de plek in Google Maps te zoeken, met de rechtermuisknop op de plaats op de kaart te klikken en "Wat is hier?" te selecteren. Onderaan zie je een kaart met de coördinaten.

Lengte- en breedtegraad zijn hard gecodeerd in het programma, in Dusk2Dawn.cpp regel 19 en 20:

/* Breedte- en lengtegraad van uw locatie moeten hier worden ingesteld.

* * HINT: Een gemakkelijke manier om de lengte- en breedtegraad voor elke locatie te vinden, is * om de plek in Google Maps te vinden, met de rechtermuisknop op de plaats op de kaart te klikken en * "Wat is hier?" te selecteren. Onderaan zie je een kaart met de * coördinaten. */ #define LATITUDE 52.097105; // Utrecht #define LONGTITUDE 5.068294; // Utrecht

De tijdzone is ook hard gecodeerd in Dusk2Dawn.cpp regel 24. Standaard is deze ingesteld op Nederland (GMT + 1):

/* Voer hier uw tijdzone (offset naar GMT) in.

*/ #definieer TIJDZONE 1

Wanneer de Arduino voor de eerste keer wordt geprogrammeerd, moet het EEPROM-geheugen worden geïnitialiseerd. Wijzig hiervoor timer.cpp regel 11 om EEPROM-initialisatie uit te voeren:

// verander naar true voor de eerste keer programmeren

#define INITIALIZE_EEPROM_MEMORY false

Upload het programma naar de Arduino en start de Arduino op.

Schakel de EEPROM-initialisatie uit en upload het programma opnieuw naar de Arduino. De timer onthoudt nu de instellingen van de schakeltijd wanneer hij opnieuw wordt opgestart.

Stap 15: De tijd en schakeltijden instellen

Concepten voor gebruikersinteractie:

  • Kort indrukken wordt gebruikt om selecties te bevestigen. Verder schakelt een korte druk in het hoofdtimerscherm het licht aan of uit.
  • Lang indrukken wordt gebruikt om het menu te openen vanuit het hoofdtimerscherm. Overal in het menu, lang indrukken om terug te keren naar het hoofdtimerscherm.
  • ‘>’ Selectiecursus. Deze cursor geeft de geselecteerde optie in een menu aan.

Hoofdtimerscherm

Het hoofdtimerscherm toont:

Dag van de week Su

Huidige tijd 16:00

Huidige timerstatus en volgende schakeltijd Timer UIT tot 17:12

Dageraad en schemertijd Dageraad 08:05 Schemering 17:10

De juiste tijd instellen

Lang indrukken om het menu te openen. De volgende opties worden getoond:

TerugTijd instellenWeekdagprogrammaWeekendprogrammaOpties

Selecteer tijd instellen om de datum en tijd van de realtimeklok in te stellen. Vul de juiste waarden in voor:

JaarMaandDagTijd

De timer bepaalt automatisch de weekdag. Ook het wisselen van zomertijd gebeurt automatisch. Zomertijd wordt alleen geïmplementeerd voor de Europese tijdzone.

Het timerprogramma instellen

De timer heeft 2 programma's, een voor weekdagen en een voor het weekend. Houd er rekening mee dat vrijdag als een onderdeel van het weekend wordt beschouwd, de lichten kunnen iets langer aanblijven.

Elke timer heeft een in- en uitschakelmoment. Het moment kan zijn:

  • Tijd: Exact opgegeven tijd
  • Dageraad: schakelen op basis van berekende dageraad
  • Schemering: schakelen op basis van berekende schemertijd

Voor schemering en zonsopgang is het mogelijk om een correctiewaarde van 59 minuten ervoor of erna in te voeren.

Voorbeelden:

Om een licht de hele nacht aan te laten, selecteert u inschakelen om (schemering + 10min), uitschakelen om (dageraad - 10min)

Om 's avonds een licht in te schakelen, selecteert u inschakelen bij schemering, uitschakelen om tijd: 22:30.

Opties

In het optiescherm kan een time-out worden ingesteld voor het wisselen van het scherm.

Als het scherm is uitgeschakeld, keert u door op de draaiknop te drukken terug naar het hoofdtimerscherm.

Aanbevolen: