INHOUDSOPGAWE:

Arduino -skemer/dagbreekkloktimer: 15 stappe
Arduino -skemer/dagbreekkloktimer: 15 stappe

Video: Arduino -skemer/dagbreekkloktimer: 15 stappe

Video: Arduino -skemer/dagbreekkloktimer: 15 stappe
Video: Драм-секвенсор Arduino: 8 дорожек, 16 шагов на такт, 8 тактов на паттерн 2024, November
Anonim
Arduino skemer/dagbreek klok timer
Arduino skemer/dagbreek klok timer

Opsomming:

Hierdie op Arduino gebaseerde timer kan een teen 220V lig skemer, dagbreek of gespesifiseerde tyd skakel.

Inleiding:

Sommige van die ligte in my huis word outomaties aangeskakel tydens skemer, tot 'n vooraf ingestelde tyd of tot dagbreek (die hele nag).

Die ligging van die ligte laat die gebruik van 'n ligsensor nie toe nie. Die gewone horlosietellers word op 'n spesifieke tyd aangeskakel. Om teen skemer in te skakel, moet u dus die tydprograminstelling gereeld aanpas.

As 'n aangename uitdaging het ek besluit om eerder 'n persoonlike, selfstandige timer op Arduino te bou. Dit gebruik 'n intydse klok en die Dusk2Dawn -biblioteek om te bepaal op watter tydstip die ligte moet aan- of uitgeskakel word. Die omhulsel vir hierdie timer is 3D -gedruk en kan op Thingiverse gevind word. Die Arduino -kode vir hierdie projek kan op GitHub gevind word.

By die skepping van hierdie timer het ek inspirasie gekry uit baie ontwerpe en stroombane op die internet. My dank aan al die bydraers wat nie eksplisiet genoem word nie.

Vir leesbaarheid word gedeeltelike diagramme waar nodig in die stappe getoon, in plaas van 'n volledige stroombaan -diagram.

Alternatiewe oplossings:

In plaas van 'n selfstandige timer, is daar baie oplossings waar 'n slim outomatiseringstelsel die ligte stuur. My doel was om 'n onafhanklike oplossing te hê wat nie afhang van WIFI (of ander) verbinding nie.

Beperkings:

Die kode wat by hierdie projek voorsien is, bevat 'n implementering van dagligbesparings wat gebaseer is op die Europese dagligbesparingstelsel.

Stap 1: Onderdele lys en gereedskap

Onderdele lys en gereedskap
Onderdele lys en gereedskap

Dele:

Totale onderdeelkoste (uitgesluit 3D -druk) ongeveer € 30, -.

  • Arduino Nano V3 (versoenbaar) sonder kopstukke
  • Kragtoevoer 5V 0.6A (34 x 20 x 15mm)
  • Solid -state relais 5V - aktief laag - 2A 230VAC
  • Real time klok DS3231 (klein)
  • 0,96”OLED -skerm SPI 128*64 pixels
  • Roterende encoder - EC11 - 20 mm
  • Knop 6mm as 15mm * 17mm
  • Broodbord gedrukte kringbord,
  • 4* M3x25mm skroewe
  • 3D -gedrukte omhulsel
  • Krimpbuis
  • Drade
  • Skroefklemmenblok (om neutrale drade aan te sluit)

Gereedskap benodig:

  • Soldeerbout
  • Soldeerdraad
  • Desoldeerpomp
  • Draadstroppers
  • Snyers
  • 3D -drukker (om die omhulsel te druk)
  • Verskeie klein gereedskap

WAARSKUWING

Hierdie stroombaan werk op 230v wisselstroom, en as u nie gewoond is om met netspanning te werk nie, of nie genoeg ervaring het om met 230v wisselspanning te werk nie, moet u wegbly van hierdie projek

Ek aanvaar geen verantwoordelikheid vir enige verlies of skade wat direk voortspruit uit of as gevolg van die gevolg van hierdie projek nie

Dit word altyd aangeraai om behoorlik versigtig te wees terwyl u met AC Mains werk

Stap 2: Berei OLED -skerm en real -time klok voor

Berei OLED -skerm en real -time klok voor
Berei OLED -skerm en real -time klok voor

Die 3D -gedrukte omhulsel is ontwerp vir 'n minimale grootte. As gevolg hiervan moet die opskrifte van die OLED -skerm en die real -time klok verwyder word.

Ter voorbereiding vir die volgende stap, verwyder die oorblywende soldeersel uit die gate met die ontsoldeerpomp.

Stap 3: Berei die roterende enkodeerder voor

Berei Rotary Encoder voor
Berei Rotary Encoder voor

Die roterende encoder het dun verbindings. Om skade te voorkom, monteer 'n stuk printplaat op die encoder.

Op die foto is die grondaansluiting (regs bo en middel onder) ook reeds voorberei.

Let wel: Maak seker dat die draaikodeerder met drukplaat in die omhulsel pas sonder om aan die Arduino te raak. Dit kan nodig wees om die printplaat te maal om 'n goeie pasmaat te kry.

Stap 4: Omhulsel

Omhulsel
Omhulsel
Omhulsel
Omhulsel

Druk die drie dele van die omhulsel af met 'n 3D -drukker. Raadpleeg die instruksies op Thingiverse.

Stap 5: Skakel Arduino Power LED uit (opsioneel)

Skakel Arduino Power LED uit (opsioneel)
Skakel Arduino Power LED uit (opsioneel)

Om te voorkom dat die timer 'n groen gloed het, kan die krag -LED van die Arduino gedeaktiveer word.

Let daarop dat hierdie wysiging opsioneel is.

Die verandering van die Arduino Nano bestaan uit die verwydering van die weerstand langs die kragleiding (sien rooi sirkel in die prentjie).

Stap 6: Kragtoevoer + Solid State Relay

Kragtoevoer + Solid State Relay
Kragtoevoer + Solid State Relay

In hierdie stap word die kragtoevoer en solid-state relais gekombineer en gemonteer in die onderste deel van die omhulsel.

Verbindings tussen die kragtoevoer en die relais word onderaan hierdie komponente gemaak. Die skroefaansluitblok van die relais word gebruik om aan te sluit op die Arduino.

Opmerking: as u verbindings maak, moet u verseker dat die bevestigingsgate van die solid-state relais vry gehou word.

  • Soldeer 'n verbindingsdraad tussen vaste toestand -relais A1 aan een van die wisselstroomaansluitings van die kragtoevoer
  • Soldeer 'n draad aan die ander wisselstroomaansluiting van die kragtoevoer (dit word in stap 7 aan die neutrale skroefklemmenblok gekoppel)
  • Soldeer 'n draad tussen kragtoevoer -Vo na relais DC-
  • Soldeer 'n draad om die kragtoevoer +Vo aan relais DC +aan te sluit

Opmerking: dit kan nodig wees om die leidings op die kragtoevoer en relais te verkort om in die omhulsel te kan pas.

Stap 7: Arduino Nano + kragtoevoer + vaste-relais

Arduino Nano + Kragtoevoer + Solid-state relais
Arduino Nano + Kragtoevoer + Solid-state relais

In hierdie stap is die Arduino Nano gekoppel aan die kragtoevoer en solid-state relais.

  • Sny twee drade van ongeveer 70 mm lank. Stroop 30 mm isolasie aan die een kant en 4 mm aan die ander kant.
  • Soldeer die sy met 'n 30 mm gestripte isolasie aan die Arduino +5V en GND, terwyl die draad daardeur steek
  • Sny twee krimpbuise van 20 mm lank en monteer dit oor die 25 mm gestroopte deel. Dit isoleer die drade tot by die aansluiting met die skroefklemblok DC+ en DC- van die vaste-toestand-relais.
  • Let daarop dat die drade vir GND en +5V moet kruis om korrek aan te sluit op die relaisskroefklem.
  • Sny 'n draad van ongeveer 40 mm lank en strook 4 mm isolasie van albei kante. Soldeer die een kant aan die A2-verbinding aan die agterkant van die Arduino, en verbind die ander kant met die CH1-aansluiting van die soliede skroefklemblok.

WAARSKUWING

Die Arduino word direk van die stabiele +5V -kragtoevoer aangedryf in plaas van die Arduino -interne kragreguleerder te gebruik. Daarom is dit nie veilig om USB aan te sluit as die Arduino krag van die kragtoevoer ontvang nie.

Ontkoppel altyd die 230VAC -net voordat u die Arduino USB -verbinding gebruik.

Stap 8: Arduino Nano + Real Time Clock

Arduino Nano + intydse klok
Arduino Nano + intydse klok

In hierdie stap word die real -time klok aan die Arduino gekoppel, deels deur gebruik te maak van die kabels wat in die vorige stap voorberei is.

  • Soldeer die draad van Arduino GND (ook gekoppel aan DC- van die relais) aan '-' van die real-time klok.
  • Soldeer die draad van Arduino+5V (ook gekoppel aan DC+van die relais) aan '+' van die real -time klok.
  • Sny twee drade van ongeveer 40 mm lank en verwyder 4 mm isolasie van albei kante.
  • Soldeer 'n draad tussen Arduino A4 en real -time klok D (SDA).
  • Soldeer 'n draad tussen Arduino A5 en real -time klok C (SCL).
  • Vorm die drade van die real -time horlosie om te verseker dat dit nie die roterende enkodeerder belemmer nie. Hiervoor moet die drade onderaan die omhulsel wees.

Stap 9: Koppel OLED -skerm

Koppel OLED -skerm
Koppel OLED -skerm

In hierdie stap word die OLED SPI -skerm by die Arduino gevoeg.

  • Sny 2 drade van 65 mm lank en strook 4 mm isolasie van albei kante.
  • Soldeer 'n draad aan die GND -verbinding van die OLED -skerm. Soldeer hierdie draad aan die geïsoleerde draad van die hitte-krimpslang wat van die Arduino GND afkomstig is (verwys na stap 4) en verbind albei drade met die DC-gemonteerde skroefklemmenblok van die solid-state relais.
  • Soldeer 'n draad aan die VCC -verbinding van die OLED -skerm. Soldeer hierdie draad aan die geïsoleerde draad van die hitte-krimpbuis wat van die Arduino + 5V kom (verwys na stap 4) en verbind albei drade met die DC + -skroefklemblok van die solid-state relais.
  • Sny 5 drade van 65 mm lank en strook 4 mm isolasie van albei kante.
  • Soldeer 'n draad om D0 (CLK) aan Arduino D10 te koppel
  • Soldeer 'n draad om D1 (MOSI / DATA) aan Arduino D9 te koppel
  • Soldeer 'n draad om RES (RT) aan Arduino D8 te koppel
  • Soldeer 'n draad om DC aan Arduino D11 te koppel
  • Soldeer 'n draad om CS aan Arduino D12 te koppel

Let wel: die volgorde van die vertoondrade is nie logies nie. Dit is die gevolg daarvan dat u eers die voorbeeld van Adafruit gebruik het en dan die verbindings verander het, omdat die gebruik van D13 altyd 'n rooi LED op die Arduino tot gevolg het.

Alternatief

Dit is moontlik om 'n 'normale' bestelling vir die SPI -verbindings te gebruik. Hiervoor moet die definisie van die digitale uitvoer van Arduino -program in oledcontrol.cpp dienooreenkomstig aangepas word:

// Gebruik sagteware SPI

// pen definisies

#definieer CS_PIN 12

#definieer RST_PIN 8

#definieer DC_PIN 11

#definieer MOSI_PIN 9

#definieer CLK_PIN 10

Stap 10: Rotary Encoder

Rotary Encoder
Rotary Encoder

Die diagram toon die verbindings van die Arduino met die roterende encoder (encoder van bo gesien).

  • Sny 4 drade van 45 mm en strook 4 mm isolasie van albei kante.
  • Koppel Arduino GND aan die regter- en onderkant van die middelste verbindings van die encoder
  • Koppel Arduino D2 links onder in die encoder
  • Koppel Arduino D3 regs onder op die encoder
  • Verbind Arduino D4 links bo in die encoder

Stap 11: Installasie in die omhulsel

Installasie in die omhulsel
Installasie in die omhulsel

Installeer al die elektronika in die onderste deel van die omhulsel:

  • Skuif die Arduino op die vertikale gleuf
  • Skuif die intydse horlosie in die onderste kompartement
  • Skuif die kragtoevoer en die relais in die boonste kompartement en maak seker dat die relais op sy houers sit.

Stap 12: Koppel aan die net / lig wat oorgeskakel moet word

Koppel aan die net / lig wat oorgeskakel moet word
Koppel aan die net / lig wat oorgeskakel moet word
Koppel aan die net / lig wat oorgeskakel moet word
Koppel aan die net / lig wat oorgeskakel moet word

WAARSKUWING

Sorg dat u die nodige sorg en voorsorg tref terwyl u met AC -netwerke werk

Ek aanvaar geen verantwoordelikheid vir enige verlies of skade wat direk voortspruit uit of as gevolg van die gevolg van hierdie projek nie

  • Koppel die wisselstroomfase aan die A1 (links) skroefklemmenblok van die aflos.
  • Koppel die fase van die lig wat oorgeskakel moet word aan die B1 (regs) skroefklemmenblok van die aflos.
  • Gebruik 'n aparte skroefklemmenblok om die neutrale draad van die netstroom, die ligte neutrale draad en die neutrale draad van die kragtoevoer aan te sluit.
  • Om spanning te verlig, moet u 'n band om elke kragkabel monteer.

Stap 13: Voltooi die omhulsel

Die omhulsel voltooi
Die omhulsel voltooi

In hierdie stap is die montering in die omhulsel voltooi

  • Skuif die OLED -skerm deur die montagegat in die middelste deel van die omhulsel.
  • Skuif die draaikodeerder deur die gat in die middelste deel, en sorg dat die anti-rotasie in lyn is. Monteer die draaikodeerder met die meegeleverde ring en moer.
  • Monteer die boonste gedeelte van die omhulsel en maak die omhulsel toe deur die vier M3x25mm -skroewe aan die onderkant te monteer.

Stap 14: Programmering van die Arduino

WAARSKUWING

Die Arduino word direk van die stabiele +5V -kragtoevoer aangedryf in plaas van die Arduino -interne kragreguleerder te gebruik. Daarom is dit nie veilig om USB aan te sluit as die Arduino krag van die kragtoevoer ontvang nie.

Ontkoppel altyd die 230VAC -net voordat u die Arduino USB -verbinding gebruik.

Haal die Arduino -timerprogram van GitHub op.

Hierdie program gebruik die Arduino IDE, wat u hier kan kry.

Die program gebruik die volgende bykomende biblioteke:

SSD1303Ascii

Arduino Wire -biblioteek

Let daarop dat die dusk2dawn -biblioteek ook gebruik word, maar as kode ingesluit word as gevolg van 'n verandering in die koppelvlak.

Om die korrekte skemer- / dagbreekberekening te verseker, moet lengte- en breedtegraad en tydsone gestel word.

Soos beskryf in die dusk2dawn -voorbeeld, is die plek in Google Maps 'n maklike manier om die lengte- en breedtegraad vir enige plek te vind, met die rechtermuisknop op die plek op die kaart en kies "Wat is hier?". Onderaan sien u 'n kaart met die koördinate.

Lengtegraad en breedtegraad is hardkodeer in die program, in Dusk2Dawn.cpp reël 19 en 20:

/* Breedtegraad en lengtegraad van u ligging moet hier gestel word.

* * WENK: 'n Maklike manier om die lengte- en breedtegraad vir enige plek te vind, is * om die plek in Google Maps te vind, met die rechtermuisknop op die plek op die kaart en * kies "Wat is hier?". Onderaan sien u 'n kaart met die * koördinate. */ #define LATITUDE 52.097105; // Utrecht #define LONGTITUDE 5.068294; // Utrecht

Die tydsone is ook hardcoded in Dusk2Dawn.cpp reël 24. Standaard is dit ingestel op Nederland (GMT + 1):

/* Voer hier u tydsone in (teen GMT verreken).

*/ #definieer TYDSONE 1

As u die Arduino vir die eerste keer programmeer, moet die EEPROM -geheue geïnisialiseer word. Hiervoor verander timer.cpp reël 11 om EEPROM -inisialisering te doen:

// verander na waar vir die eerste keer programmeer

#define INITIALIZE_EEPROM_MEMORY vals

Laai die program op na die Arduino en laai die Arduino op.

Skakel die inisialisering van EEPROM uit en laai die program weer op na die Arduino. Die timer sal nou die instellings van die skakelertyd onthou wanneer dit herlaai word.

Stap 15: Stel die tyd in en verander die tye

Gebruikersinteraksie konsepte:

  • Kort druk word gebruik om keuses te bevestig. Boonop skakel die lig in of uit op die hoof -tydskerm.
  • Lang druk word gebruik om die spyskaart in te gaan vanaf die hoofskerm. Oral in die spyskaart keer 'n lang druk terug na die hoofskerm.
  • '>' Seleksie -cursus. Hierdie wyser dui die gekose opsie in 'n spyskaart aan.

Hoof timer skerm

Die hoof timer skerm toon:

Dag van die week Su

Huidige tyd 16:00

Huidige timerstatus en volgende skakelertyd Timer UIT tot 17:12

Dagbreek en skemer tyd Dawn 08:05 Skemer 17:10

Stel die regte tyd in

Druk lank om die spyskaart te betree. Die volgende opsies word gewys:

Terug Stel tyd in Weekdagprogram Weekendprogram Opsies

Kies die ingestelde tyd om die datum en tyd van die reële tydklok in te stel. Voer die korrekte waardes in vir:

YearMonthDayTime

Die timer bepaal outomaties die weekdag. Dit word ook outomaties oorgeskakel om die somertyd te verander. Somer besparing word slegs vir die Europese tydsone geïmplementeer.

Stel die timerprogram in

Die timer het 2 programme, een vir weeksdae, een vir naweke. Let daarop dat Vrydag as 'n deel van die naweek beskou word; die ligte kan nog 'n bietjie brand.

Elke timer het 'n aan- en afskakel -oomblik. Die oomblik kan óf wees:

  • Tyd: Presiese tyd
  • Dagbreek: Skakel gebaseer op berekende dagbreek
  • Skemer: Skakel gebaseer op berekende skemertyd

Vir skemer en dagbreek is dit moontlik om 'n regstellingswaarde van 59 minute voor of na in te voer.

Voorbeelde:

Om die hele nag 'n lig aan te skakel, kies skakel aan (skemer + 10min), skakel af (dagbreek - 10min)

Om in die aand 'n lig aan te skakel, kies die aanskakel teen skemer, skakel af: 22:30.

Opsies

In die opsieskerm kan 'n tydsduur ingestel word vir die omskakeling van die skerm.

As die skerm afgeskakel is, sal die druk op die draaiknopknop terugkeer na die hoofskerm.

Aanbeveel: