Innehållsförteckning:

Arduino Dusk/dawn Clock Timer: 15 steg
Arduino Dusk/dawn Clock Timer: 15 steg

Video: Arduino Dusk/dawn Clock Timer: 15 steg

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

Sammanfattning:

Denna Arduino -baserade timer kan växla ett 220V ljus i skymningen, gryningen eller angiven tid.

Introduktion:

Några av lamporna i mitt hus tänds automatiskt i skymningen, tills antingen en förinställd tid eller till gryningen (hela natten).

Placeringen av lamporna tillåter inte användning av en ljussensor. De vanliga klockurstimern slås på vid en viss tidpunkt. För att slå på i skymningen krävs därför att regelbundet justera timerprograminställningen.

Som en trevlig utmaning bestämde jag mig för att bygga en anpassad Arduino -baserad fristående timer istället. Den använder en realtidsklocka och Dusk2Dawn -biblioteket för att bestämma när lamporna måste slås på eller av. Höljet för den här timern är 3D -tryckt och finns på Thingiverse. Arduino -koden för detta projekt finns på GitHub.

I skapandet av denna timer fick jag inspiration från många mönster och kretsar på internet. Jag tackar alla bidragsgivare som inte uttryckligen nämns.

För läsbarhet visas deldiagram i stegen där det behövs, istället för ett komplett kretsschema.

Alternativa lösningar:

Istället för en fristående timer finns det många lösningar där ett smart hemautomatiseringssystem styr lamporna. Mitt mål var att ha en oberoende lösning, som inte beror på WIFI (eller annan) anslutning.

Begränsningar:

Koden som medföljde detta projekt inkluderade en implementering av sommartidsförändringar baserat på det europeiska sommartidssystemet.

Steg 1: Dellista och verktyg

Reservdelar och verktyg
Reservdelar och verktyg

Delar:

Totalkostnader för delar (exklusive 3D -tryck) cirka € 30, -.

  • Arduino Nano V3 (kompatibel) utan rubriker
  • Strömförsörjning 5V 0.6A (34 x 20 x 15mm)
  • Halvledarrelä 5V - Aktiv låg - 2A 230VAC
  • Realtidsklocka DS3231 (liten)
  • 0,96”OLED -skärm SPI 128*64 pixlar
  • Roterande pulsgivare - EC11 - 20 mm
  • Knopp 6mm axel 15mm * 17mm
  • Brödbräda kretskort,
  • 4* M3x25mm skruvar
  • 3D -tryckt hölje
  • Krympslang
  • Trådar
  • Skruvplint (för anslutning av neutrala ledningar)

Nödvändiga verktyg:

  • Lödkolv
  • Lödtråd
  • Avlödningspump
  • Wire Strippers
  • Fräsar
  • 3D -skrivare (för att skriva ut hölje)
  • Blandade små verktyg

VARNING

Denna krets fungerar på 230v AC och om du inte är van vid att arbeta med nätspänning eller inte har god erfarenhet av att arbeta med 230v AC nätspänning, håll dig borta från detta projekt

Jag tar inget ansvar för förlust eller skada som uppstår direkt eller som en följd av att följa detta projekt

Det rekommenderas alltid att vara noggrann och försiktig när du arbetar med AC -nät

Steg 2: Förbered OLED -skärm och realtidsklocka

Förbered OLED -skärm och realtidsklocka
Förbered OLED -skärm och realtidsklocka

Det 3D -tryckta höljet är utformat för minimal storlek. Som ett resultat måste rubrikerna på OLED -skärmen och realtidsklockan tas bort.

Förbered för nästa steg, rensa eventuellt kvarvarande löd från hålen med avlödningspumpen.

Steg 3: Förbered Rotary Encoder

Förbered Rotary Encoder
Förbered Rotary Encoder

Den roterande givaren har tunna kontakter. För att förhindra skador, montera en bit kretskort på pulsgivaren.

På bilden är jordanslutningen (upptill till höger och mitten nedtill) redan förberedd.

Obs: Se till att den roterande givaren med kretskort passar in i höljet utan att röra Arduino. Det kan krävas att slipa kretskortet för att få en passform.

Steg 4: Kapsling

Inhägnad
Inhägnad
Inhägnad
Inhägnad

Skriv ut de tre delarna av höljet med en 3d -skrivare. Se instruktionerna om Thingiverse.

Steg 5: Inaktivera Arduino Power LED (tillval)

Inaktivera Arduino Power LED (tillval)
Inaktivera Arduino Power LED (tillval)

För att förhindra att du får ett grönt sken i timern kan strömlampan på Arduino inaktiveras.

Observera att denna ändring är valfri.

Modifieringen av Arduino Nano består i att ta bort motståndet bredvid strömledningen (se röd cirkel på bilden).

Steg 6: Strömförsörjning + halvledarrelä

Strömförsörjning + halvledarrelä
Strömförsörjning + halvledarrelä

I detta steg kombineras strömförsörjningen och halvledarreläet och monteras i den nedre delen av höljet.

Anslutningar mellan strömförsörjningen och reläet görs längst ner på dessa komponenter. Reläets skruvplint kommer att användas för att ansluta till Arduino.

Obs: Se till att anslutningshålen på solid-state-reläet hålls fria vid anslutningar.

  • Löd en anslutningskabel mellan halvledarrelä A1 till en av nätaggregatets AC -anslutningar
  • Löd en kabel till strömförsörjningens andra AC -anslutning (denna kommer att anslutas till den neutrala skruvplinten i steg 7)
  • Löd en kabel mellan strömförsörjningen -Vo till relä DC-
  • Löd en kabel för att ansluta strömförsörjning +Vo till relä DC +

Obs! Det kan vara nödvändigt att korta av ledningarna på strömförsörjningen och reläet för att kunna passa in i höljet.

Steg 7: Arduino Nano + strömförsörjning + halvledarrelä

Arduino Nano + nätaggregat + halvledarrelä
Arduino Nano + nätaggregat + halvledarrelä

I detta steg är Arduino Nano ansluten till strömförsörjning och solid-state relä.

  • Klipp två trådar med ungefär 70 mm längd. Ta bort 30 mm isolering på ena sidan och 4 mm på andra sidan.
  • Löd sidan med 30 mm avisolerad isolering till Arduino +5V och GND, med tråden som sticker ut
  • Skär två värmekrymprör med en längd på 20 mm och montera dem över den 25 mm avskalade delen. Detta isolerar ledningarna upp till anslutningen med monteringsskruvplinten DC+ och DC- för halvledarreläet.
  • Observera att ledningarna för GND och +5V måste korsas för att anslutas korrekt till reläskruvplinten.
  • Klipp en tråd på cirka 40 mm längd och ta bort 4 mm isolering av båda ändarna. Löd ena sidan till A2-anslutningen på BAKSIDAN av Arduino, och anslut den andra sidan till CH1-anslutningen på skruvplinten för solid state-montering.

VARNING

Arduino drivs direkt från den stabila +5V strömförsörjningen istället för att använda Arduino interna effektregulator. Därför är det inte säkert att ansluta USB när Arduino tar emot ström från strömförsörjningen.

Koppla alltid från 230VAC -nätet innan du använder Arduino USB -anslutning.

Steg 8: Arduino Nano + Realtidsklocka

Arduino Nano + Realtidsklocka
Arduino Nano + Realtidsklocka

I detta steg är realtidsklockan ansluten till Arduino, delvis med hjälp av kablarna som förberetts i föregående steg.

  • Löd ledningen från Arduino GND (även ansluten till reläets DC-) till "-" för realtidsklockan.
  • Löd ledningen från Arduino+5V (även ansluten till reläets DC+) till "+" på realtidsklockan.
  • Klipp två trådar med ungefär 40 mm längd och ta bort 4 mm isolering av båda ändarna.
  • Löd en tråd mellan Arduino A4 och realtidsklocka D (SDA).
  • Löd en tråd mellan Arduino A5 och realtidsklocka C (SCL).
  • Forma trådarna till realtidsklockan så att de inte stör den roterande givaren. För detta måste ledningarna vara i botten av höljet.

Steg 9: Anslut OLED -skärm

Anslut OLED -skärm
Anslut OLED -skärm

I detta steg läggs OLED SPI -skärmen till Arduino.

  • Klipp 2 trådar med en längd på 65 mm och ta bort 4 mm isolering av båda ändarna.
  • Löd en kabel till GND -anslutningen på OLED -skärmen. Löd denna tråd till den isolerade värmekrympslangen som kommer från Arduino GND (se steg 4) och anslut båda ledningarna till DC-monterad skruvplint på solid-state-reläet.
  • Löd en kabel till VCC -anslutningen på OLED -skärmen. Löd denna tråd till den värmekrympande slangisolerade tråden som kommer från Arduino + 5V (se steg 4) och anslut båda ledningarna till DC + -monterad skruvplint på solid-state-reläet.
  • Klipp 5 trådar med 65 mm längd och ta bort 4 mm isolering av båda ändarna.
  • Löd en tråd för att ansluta D0 (CLK) till Arduino D10
  • Löd en tråd för att ansluta D1 (MOSI / DATA) till Arduino D9
  • Löd en tråd för att ansluta RES (RT) till Arduino D8
  • Löd en tråd för att ansluta DC till Arduino D11
  • Löd en tråd för att ansluta CS till Arduino D12

Obs! Ordningen på displaytrådarna är inte logisk. Detta är resultatet av att först använda Adafruit -exemplet och sedan ändra anslutningarna eftersom användning av D13 resulterar i en röd lysdiod på Arduino hela tiden.

Alternativ

Det är möjligt att använda en "normal" ordning för SPI -anslutningarna. För detta måste Arduino -programmets digitala utgångsdefinition i oledcontrol.cpp justeras i enlighet med detta:

// Med programvara SPI

// stiftdefinitioner

#define CS_PIN 12

#define RST_PIN 8

#define DC_PIN 11

#define MOSI_PIN 9

#define CLK_PIN 10

Steg 10: Rotary Encoder

Rotary Encoder
Rotary Encoder

Diagrammet visar anslutningarna mellan Arduino och den roterande givaren (kodaren sett uppifrån).

  • Klipp 4 trådar på 45 mm och ta bort 4 mm isolering av båda ändarna.
  • Anslut Arduino GND till översta högra och nedre mittkontakterna på pulsgivaren
  • Anslut Arduino D2 till nedre vänstra delen av pulsgivaren
  • Anslut Arduino D3 till nedre högra delen av pulsgivaren
  • Anslut Arduino D4 uppe till vänster på pulsgivaren

Steg 11: Installation i höljet

Installation i kapslingen
Installation i kapslingen

Installera all elektronik i nedre delen av höljet:

  • Skjut Arduino på den vertikala luckan
  • Skjut realtidsklockan i det nedre facket
  • Skjut in strömförsörjningen och reläet i det övre facket, se till att reläet sitter på sina fästen.

Steg 12: Anslutning till elnät / ljus som ska bytas

Anslutning till elnät / ljus som ska bytas
Anslutning till elnät / ljus som ska bytas
Anslutning till elnät / ljus som ska bytas
Anslutning till elnät / ljus som ska bytas

VARNING

Se till att du är noggrann och försiktig när du arbetar med AC -nät, se till att AC -nätet är frånkopplat

Jag tar inget ansvar för förlust eller skada som uppstår direkt eller som en följd av att följa detta projekt

  • Anslut AC -nätfasen till reläets A1 (vänster) skruvplint.
  • Anslut lampans fas till reläets B1 (höger) skruvplint.
  • Använd en separat skruvplint för att ansluta AC -nätets neutralkabel, den ljusa neutrala tråden och strömkabelns neutrala kabel.
  • För dragavlastning, montera ett band runt varje strömkabel.

Steg 13: Avsluta kapslingen

Avsluta kapslingen
Avsluta kapslingen

I detta steg är monteringen i skåpet klar

  • Skjut OLED -skärmen genom bildskärmens monteringshål i mitten av höljet.
  • Skjut den roterande givaren genom hålet i mitten, se till att antirotationen ligger i linje. Montera rotationsgivaren med den medföljande brickan och muttern.
  • Montera den övre delen av höljet och stäng höljet genom att montera de fyra M3x25mm skruvarna från botten.

Steg 14: Programmering av Arduino

VARNING

Arduino drivs direkt från den stabila +5V strömförsörjningen istället för att använda Arduino interna effektregulator. Därför är det inte säkert att ansluta USB när Arduino tar emot ström från strömförsörjningen.

Koppla alltid från 230VAC -nätet innan du använder Arduino USB -anslutning.

Hämta Arduino -timerprogrammet från GitHub.

Detta program använder Arduino IDE, som kan erhållas här.

Programmet använder följande ytterligare bibliotek:

SSD1303Ascii

Arduino Wire -bibliotek

Observera att dusk2dawn -biblioteket också används, men ingår som kod på grund av en ändring av gränssnittet.

För att säkerställa korrekt skymning / gryningsberäkning måste longitud och latitud och tidszon ställas in.

Som beskrivs i dusk2dawn -exemplet är ett enkelt sätt att hitta longitud och latitud för valfri plats att hitta platsen i Google Maps, högerklicka på platsen på kartan och välj "Vad är här?". Längst ner ser du ett kort med koordinaterna.

Longitud och latitud är hårdkodade i programmet, i Dusk2Dawn.cpp rad 19 och 20:

/* Latitud och longitud för din plats måste anges här.

* * TIPS: Ett enkelt sätt att hitta longitud och latitud för valfri plats är * att hitta platsen i Google Maps, högerklicka på platsen på kartan och * välj "Vad är här?". Längst ner ser du ett kort med * koordinaterna. */ #define LATITUDE 52.097105; // Utrecht #define LONGTITUDE 5.068294; // Utrecht

Tidszonen är också hårdkodad på Dusk2Dawn.cpp rad 24. Som standard är den inställd på Nederländerna (GMT + 1):

/* Ange din tidszon (offset till GMT) här.

*/ #define TIMEZONE 1

När du programmerar Arduino för första gången måste EEPROM -minnet initialiseras. För detta ändrar du timer.cpp rad 11 för att göra EEPROM -initialisering:

// ändra till true för första gången programmering

#define INITIALIZE_EEPROM_MEMORY false

Ladda upp programmet till Arduino och starta Arduino.

Inaktivera EEPROM -initialisering och ladda upp programmet till Arduino igen. Timern kommer nu att komma ihåg inställningarna för omkopplingstid vid omstart.

Steg 15: Ställa in tiden och växla tider

Användarinteraktionskoncept:

  • Kort tryckning används för att bekräfta val. På huvudtimerskärmen tänds eller stängs ljuset av med en kort tryckning.
  • Långt tryck används för att öppna menyn från huvudtimerskärmen. Var som helst i menyn kommer ett långt tryck tillbaka till huvudtimerskärmen.
  • ‘>’ Urvalsmarkör. Denna markör indikerar det valda alternativet i en meny.

Huvudtimerskärm

Huvudtimerskärmen visar:

Veckans dag Su

Nuvarande tid 16:00

Aktuellt timerläge och nästa omkopplingstid Timer AV till 17:12

Gryning och skymningstid Gryning 08:05 Skymning 17:10

Ställ in rätt tid

Tryck länge för att komma till menyn. Följande alternativ visas:

Tillbaka Ställ in tid Veckodagsprogram Weekendprogram Val

Välj inställd tid för att ställa in datum och tid för realtidsklockan. Ange rätt värden för:

YearMonthDayTime

Timern bestämmer automatiskt veckodagen. Att byta sommartid görs också automatiskt. Sommartid implementeras endast för europeisk tidszon.

Ställa in timerprogrammet

Timern har 2 program, ett för veckodagar, ett för helg. Observera att fredagen anses vara en del av helgen, lamporna kan lysa lite längre.

Varje timer har en på- och avstängningsmoment. Momentet kan antingen vara:

  • Tid: Exakt angiven tid
  • Gryning: Växla baserat på beräknad gryningstid
  • Dusk: Switch baserat på beräknad skymningstid

För skymning och gryning är det möjligt att ange ett korrigeringsvärde på 59 minuter före eller efter.

Exempel:

För att tända ett ljus hela natten, välj slå på vid (skymning + 10min), stäng av vid (gryning - 10min)

För att tända ett ljus på kvällen, välj slå på i skymningen, stäng av vid tidpunkten: 22:30.

alternativ

På alternativskärmen kan en timeout ställas in för att byta skärm.

När skärmen är avstängd kommer du tillbaka till huvudtimerskärmen genom att trycka på vridknappen.

Rekommenderad: