Indholdsfortegnelse:

Timer for Arduino Dusk/dawn Clock: 15 trin
Timer for Arduino Dusk/dawn Clock: 15 trin

Video: Timer for Arduino Dusk/dawn Clock: 15 trin

Video: Timer for Arduino Dusk/dawn Clock: 15 trin
Video: Arduino Based Home Automation Dusk To Dawn Lighting Timer Based On Vintage Sangamo Suntracker 2024, Juli
Anonim
Arduino Dusk/dawn Clock Timer
Arduino Dusk/dawn Clock Timer

Resumé:

Denne Arduino -baserede timer kan skifte et 220V lys i skumringen, daggry eller angivet tidspunkt.

Introduktion:

Nogle af lysene i mit hus tændes automatisk i skumringen, indtil enten en forudindstillet tid eller indtil daggry (hele natten).

Placeringen af lysene tillader ikke brug af en lyssensor. De almindelige tilgængelige ur -timere tændes på et bestemt tidspunkt. For at tænde omkring skumringen kræver det derfor regelmæssigt at justere timerprogramindstillingen.

Som en god udfordring besluttede jeg mig for at bygge en brugerdefineret Arduino -baseret stand alone timer i stedet. Det bruger et real -time ur og Dusk2Dawn -biblioteket til at bestemme det tidspunkt, hvor lysene skal tændes eller slukkes. Kabinettet til denne timer er 3D -printet og kan findes på Thingiverse. Arduino -koden til dette projekt findes på GitHub.

I oprettelsen af denne timer fik jeg inspiration fra mange designs og kredsløb på internettet. Jeg takker alle de bidragydere, der ikke eksplicit nævnes.

For læsbarhed er delvise diagrammer vist i trinene, hvor det er nødvendigt, i stedet for et komplet kredsløbsdiagram.

Alternative løsninger:

I stedet for en selvstændig timer er der mange løsninger, hvor et smart hjemmeautomatiseringssystem styrer lyset. Mit mål var at have en uafhængig løsning, der ikke afhænger af WIFI (eller anden) forbindelse.

Begrænsninger:

Koden, der fulgte med dette projekt, omfattede en implementering af sommertid ændringer baseret på europæisk sommertid system.

Trin 1: Deleliste og værktøjer

Deleliste og værktøjer
Deleliste og værktøjer

Dele:

Samlede deleomkostninger (eksklusive 3d print) cirka € 30, -.

  • Arduino Nano V3 (kompatibel) uden headers
  • Strømforsyning 5V 0.6A (34 x 20 x 15mm)
  • Solid -state relæ 5V - Aktiv lav - 2A 230VAC
  • Realtidsur DS3231 (lille)
  • 0,96”OLED -display SPI 128*64 pixels
  • Roterende encoder - EC11 - 20mm
  • Knop 6mm aksel 15mm * 17mm
  • Breadboard printkort,
  • 4* M3x25mm skruer
  • 3D -trykt kabinet
  • Krympeslange
  • Ledninger
  • Skrueklemme (til tilslutning af neutrale ledninger)

Nødvendige værktøjer:

  • Loddekolbe
  • Loddetråd
  • Aflodningspumpe
  • Wire Strippers
  • Fræsere
  • 3D -printer (til udskrivning af kabinet)
  • Diverse små værktøjer

ADVARSEL

Dette kredsløb fungerer på 230v AC, og hvis du ikke er vant til at arbejde med netspænding eller ikke har rigelig erfaring med at arbejde med 230v AC netspænding, skal du holde dig væk fra dette projekt

Jeg påtager mig intet ansvar for tab eller skader, der opstår direkte som følge af eller som følge af at følge dette projekt

Det tilrådes altid at passe på og passe på, når du arbejder med AC -net

Trin 2: Forbered OLED -skærm og ur i realtid

Forbered OLED -skærm og realtidsur
Forbered OLED -skærm og realtidsur

3D -printet kabinet er designet til minimal størrelse. Som følge heraf skal overskrifterne på OLED -skærmen og uret i realtid fjernes.

Som forberedelse til det næste trin fjernes eventuelt resterende loddemetal fra hullerne med aflodningspumpen.

Trin 3: Forbered Rotary Encoder

Forbered Rotary Encoder
Forbered Rotary Encoder

Den roterende encoder har spinkle stik. For at forhindre beskadigelse skal du montere et stykke printkort på encoderen.

På billedet er jordforbindelsen (til øverste højre og midterste bund) også allerede forberedt.

Bemærk: Sørg for, at den roterende encoder med printkort passer ind i kabinettet uden at røre Arduino. Det kan være nødvendigt at slibe printkortet for at få en god pasform.

Trin 4: Kapsling

Kabinet
Kabinet
Kabinet
Kabinet

Udskriv de tre dele af kabinettet med en 3d -printer. Se vejledningen om Thingiverse.

Trin 5: Deaktiver Arduino Power LED (valgfrit)

Deaktiver Arduino Power LED (valgfrit)
Deaktiver Arduino Power LED (valgfrit)

For at forhindre, at der er et grønt lys i timeren, kan strømindikatoren på Arduino deaktiveres.

Bemærk, at denne ændring er valgfri.

Modifikationen af Arduino Nano består i at fjerne modstanden ved siden af strømledningen (se rød cirkel på billedet).

Trin 6: Strømforsyning + Solid State -relæ

Strømforsyning + Solid State -relæ
Strømforsyning + Solid State -relæ

I dette trin kombineres strømforsyningen og solid-state-relæet i den nederste del af kabinettet.

Forbindelser mellem strømforsyningen og relæet foretages i bunden af disse komponenter. Skrueklemmen på relæet bruges til at forbinde til Arduino.

Bemærk: Når du foretager tilslutninger, skal du sørge for, at monteringshullerne på solid-state-relæet holdes frie.

  • Lod en forbindelseskabel mellem solid state relæ A1 til en af strømforsyningens vekselstrømstilslutninger
  • Lod en ledning til den anden vekselstrømstilslutning på strømforsyningen (denne forbindes til den neutrale skrueklemme i trin 7)
  • Lod en ledning mellem strømforsyning -Vo til relæ DC-
  • Lod en ledning til tilslutning af strømforsyning +Vo til relæ DC +

Bemærk: Det kan være nødvendigt at forkorte ledningerne på strømforsyningen og relæet for at kunne passe ind i kabinettet.

Trin 7: Arduino Nano + strømforsyning + Solid-state relæ

Arduino Nano + strømforsyning + Solid-state relæ
Arduino Nano + strømforsyning + Solid-state relæ

I dette trin er Arduino Nano forbundet til strømforsyningen og solid-state relæet.

  • Klip to tråde af cirka 70 mm længde. Fjern 30 mm isolering på den ene side og 4 mm på den anden side.
  • Loddet siden med 30 mm strippet isolering til Arduino +5V og GND, med tråden stikker igennem
  • Skær to varmekrympende rør med en længde på 20 mm, og monter dem over den 25 mm afskårne del. Dette isolerer ledningerne op til forbindelsen med monteringsskruens terminalblok DC+ og DC- på solid-state-relæet.
  • Bemærk, at ledningerne til GND og +5V skal krydse for at tilslutte korrekt til relæskruens klemrække.
  • Skær en ledning på cirka 40 mm længde og stræk 4 mm isolering af begge ender. Lod den ene side til A2-forbindelsen på bagsiden af Arduinoen, og tilslut den anden side til CH1-forbindelsen på solid-state-monteret skrueklemme.

ADVARSEL

Arduino får strøm direkte fra den stabile +5V strømforsyning i stedet for at bruge Arduino interne effektregulator. Derfor er det ikke sikkert at tilslutte USB, når Arduino modtager strøm fra strømforsyningen.

Afbryd altid 230VAC -net, før du bruger Arduino USB -forbindelsen.

Trin 8: Arduino Nano + ur i realtid

Arduino Nano + ur i realtid
Arduino Nano + ur i realtid

I dette trin er uret i realtid forbundet til Arduino, dels ved hjælp af kablerne, der blev forberedt i det foregående trin.

  • Lod den ledning, der kommer fra Arduino GND (også forbundet til relæets DC-) til '-' i realtidsklokken.
  • Lod den ledning, der kommer fra Arduino+5V (også forbundet til relæets DC+) til '+' i realtidsklokken.
  • Klip to ledninger med en længde på cirka 40 mm, og fjern 4 mm isolering af begge ender.
  • Lod en ledning mellem Arduino A4 og real -time ur D (SDA).
  • Lod en ledning mellem Arduino A5 og realtidsur C (SCL).
  • Form ledningerne til realtidsuret for at sikre, at de ikke forstyrrer den roterende encoder. Til dette skal ledningerne være i bunden af kabinettet.

Trin 9: Tilslut OLED -skærm

Tilslut OLED -skærm
Tilslut OLED -skærm

I dette trin tilføjes OLED SPI -displayet til Arduino.

  • Klip 2 ledninger af 65 mm længde og stræk 4 mm isolering af begge ender.
  • Lod en ledning til GND -forbindelsen på OLED -skærmen. Lod denne ledning til den isolerede ledning med krympeslange, der kommer fra Arduino GND (se trin 4), og tilslut begge ledninger til DC-monteret skrueklemme på solid-state-relæet.
  • Lod en ledning til VCC -forbindelsen på OLED -skærmen. Lod denne ledning til den isolerede ledning med krympeslange, der kommer fra Arduino + 5V (se trin 4), og tilslut begge ledninger til DC + -monteret skrueklemme på solid-state-relæet.
  • Klip 5 ledninger af 65 mm længde og strimler 4 mm isolering af begge ender.
  • Lod en ledning for at forbinde D0 (CLK) til Arduino D10
  • Lod en ledning for at forbinde D1 (MOSI / DATA) til Arduino D9
  • Lod en ledning for at forbinde RES (RT) til Arduino D8
  • Lod en ledning til at forbinde DC til Arduino D11
  • Lod en ledning for at forbinde CS til Arduino D12

Bemærk: rækkefølgen af displaytrådene er ikke logisk. Dette er resultatet af først at bruge Adafruit -eksemplet og derefter ændre forbindelserne, fordi brug af D13 resulterer i en rød LED på Arduino hele tiden.

Alternativ

Det er muligt at bruge en 'normal' ordre til SPI -forbindelserne. Til dette skal Arduino -programmets digitale outputdefinition i oledcontrol.cpp justeres i overensstemmelse hermed:

// Brug af software SPI

// pin definitioner

#define CS_PIN 12

#define RST_PIN 8

#define DC_PIN 11

#define MOSI_PIN 9

#define CLK_PIN 10

Trin 10: Rotary Encoder

Rotary Encoder
Rotary Encoder

Diagrammet viser forbindelserne mellem Arduino og den roterende encoder (encoder set ovenfra).

  • Klip 4 ledninger på 45 mm og strimler 4 mm isolering af begge ender.
  • Tilslut Arduino GND til øverste højre og nederste midterstik på encoderen
  • Tilslut Arduino D2 nederst til venstre på encoderen
  • Tilslut Arduino D3 nederst til højre på encoderen
  • Tilslut Arduino D4 øverst til venstre på encoderen

Trin 11: Installation i kabinettet

Installation i kabinettet
Installation i kabinettet

Installer al elektronikken i den nederste del af kabinettet:

  • Skub Arduino på den lodrette slot
  • Skub realtidsuret i det nederste rum
  • Skub strømforsyningen og relæet i det øverste rum, og sørg for, at relæet sidder på dets beslag.

Trin 12: Tilslutning til lysnet / lys, der skal skiftes

Tilslutning til lysnet / lys, der skal skiftes
Tilslutning til lysnet / lys, der skal skiftes
Tilslutning til lysnet / lys, der skal skiftes
Tilslutning til lysnet / lys, der skal skiftes

ADVARSEL

Sørg for at passe på og passe på, når du arbejder med vekselstrøm, og sørg for, at vekselstrømforsyningen er afbrudt

Jeg påtager mig intet ansvar for tab eller skader, der opstår direkte som følge af eller som følge af at følge dette projekt

  • Tilslut AC -netfasen til relæets A1 (venstre) skrueklemme.
  • Tilslut lysets fase til relæets B1 (højre) skrueklemme.
  • Brug en separat skrueklemme til at forbinde vekselstrømnettet, den neutrale ledning og strømkablets neutrale ledning.
  • For aflastning skal du montere en slips om hver af strømkablerne.

Trin 13: Afslutning af kabinettet

Afslutning af kabinettet
Afslutning af kabinettet

I dette trin er monteringen i kabinettet afsluttet

  • Skub OLED -skærmen gennem skærmens monteringshul i den midterste del af kabinettet.
  • Skub den roterende encoder gennem hullet i den midterste del, og sørg for, at antirotationen er på linje. Monter drejekoder ved hjælp af den medfølgende skive og møtrik.
  • Monter den øverste del af kabinettet, og luk kabinettet ved at montere de fire M3x25mm skruer fra bunden.

Trin 14: Programmering af Arduino

ADVARSEL

Arduinoen drives direkte fra den stabile +5V strømforsyning i stedet for at bruge Arduino interne effektregulator. Derfor er det ikke sikkert at tilslutte USB, når Arduino modtager strøm fra strømforsyningen.

Afbryd altid 230VAC -net, før du bruger Arduino USB -forbindelsen.

Hent Arduino -timerprogrammet fra GitHub.

Dette program bruger Arduino IDE, som kan fås her.

Programmet bruger følgende ekstra biblioteker:

SSD1303Ascii

Arduino Wire bibliotek

Bemærk, at dusk2dawn -biblioteket også bruges, men inkluderes som kode på grund af en ændring i dets grænseflade.

For at sikre korrekt skumring / daggry beregning skal længdegrad og breddegrad og tidszone indstilles.

Som beskrevet i dusk2dawn -eksemplet er en let måde at finde længde- og breddegrader for et hvilket som helst sted at finde stedet i Google Maps, højreklikke på stedet på kortet og vælge "Hvad er her?". Nederst ser du et kort med koordinaterne.

Længdegrad og breddegrad er hårdt kodet i programmet i Dusk2Dawn.cpp linje 19 og 20:

/* Breddegrad og længdegrad for din placering skal angives her.

* * TIP: En let måde at finde længde- og breddegraden for enhver placering er * at finde stedet i Google Maps, højreklikke på stedet på kortet og * vælge "Hvad er her?". Nederst ser du et kort med * koordinaterne. */ #define LATITUDE 52.097105; // Utrecht #define LONGTITUDE 5.068294; // Utrecht

Tidszonen er også hårdkodet i Dusk2Dawn.cpp linje 24. Som standard er den indstillet til Holland (GMT + 1):

/* Indtast din tidszone (offset til GMT) her.

*/ #define TIMEZONE 1

Når du programmerer Arduino for første gang, skal EEPROM -hukommelsen initialiseres. Til dette skal du ændre timer.cpp linje 11 for at foretage EEPROM -initialisering:

// skift til sand for første gangs programmering

#define INITIALIZE_EEPROM_MEMORY false

Upload programmet til Arduino, og start Arduino.

Deaktiver EEPROM -initialisering, og upload programmet til Arduino igen. Timeren husker nu skiftetidsindstillingerne, når den genstartes.

Trin 15: Opsætning af klokkeslæt og skiftetider

Brugerinteraktionskoncepter:

  • Kort tryk bruges til at bekræfte valg. Desuden tænder eller slukker lyset i hovedtimerskærmen ved et kort tryk.
  • Langt tryk bruges til at gå ind i menuen fra hovedtimerskærmen. Overalt i menuen vender et langt tryk tilbage til hovedtimerskærmen.
  • '>' Markeringskurve. Denne markør angiver den valgte indstilling i en menu.

Hoved timer skærm

Hovedtimerskærmen viser:

Ugedag Su

Aktuel tid 16:00

Aktuel timer -tilstand og næste skiftetid Timer OFF til 17:12

Daggry og skumringstid Dawn 08:05 Skumring 17:10

Indstilling af det korrekte tidspunkt

Langt tryk for at gå ind i menuen. Følgende muligheder vises:

Tilbage Indstil tid Ugedagsprogram Weekendprogram Valgmuligheder

Vælg indstillet tid for at indstille dato og klokkeslæt for uret i realtid. Indtast de korrekte værdier for:

ÅrMånedDagTid

Timeren bestemmer automatisk ugedagen. Skift af sommertid udføres også automatisk. Sommertid er kun implementeret i europæisk tidszone.

Indstilling af timerprogrammet

Timeren har 2 programmer, et til hverdage, et til weekend. Bemærk, at fredag betragtes som en del af weekenden, lys kan forblive lidt længere.

Hver timer har en tænd- og slukkemoment. Øjeblikket kan enten være:

  • Tid: Nøjagtigt angivet tidspunkt
  • Daggry: Skift baseret på beregnet daggry
  • Skumring: Skift baseret på beregnet skumringstid

Ved skumring og daggry er det muligt at indtaste en korrektion på 59 minutter før eller efter.

Eksempler:

For at tænde et lys hele natten skal du vælge tænd ved (skumring + 10min), slukke ved (daggry - 10min)

For at tænde et lys om aftenen skal du vælge at tænde i skumringen, slukke for tiden: 22:30.

Muligheder

På valgskærmen kan der indstilles en timeout til skift af skærmen.

Når skærmen er slukket, vender man tilbage til hovedtimerskærmen ved at trykke på drejeknappen.

Anbefalede: