Turinys:

„Arduino Dusk/Dawn“laikrodžio laikmatis: 15 žingsnių
„Arduino Dusk/Dawn“laikrodžio laikmatis: 15 žingsnių

Video: „Arduino Dusk/Dawn“laikrodžio laikmatis: 15 žingsnių

Video: „Arduino Dusk/Dawn“laikrodžio laikmatis: 15 žingsnių
Video: I made an alarm clock that's also a drinking glass | #shorts 2024, Lapkritis
Anonim
„Arduino Dusk“/aušros laikrodžio laikmatis
„Arduino Dusk“/aušros laikrodžio laikmatis

Santrauka:

Šis „Arduino“laikmatis gali įjungti vieną 220 V šviesą prieblandoje, auštant ar nurodytu laiku.

Įvadas:

Kai kurie mano namų žibintai automatiškai įjungiami sutemus, iki iš anksto nustatyto laiko arba iki paryčių (visą naktį).

Žibintų vieta neleidžia naudoti šviesos jutiklio. Įprasti laikrodžio laikmačiai įsijungia tam tikru laiku. Todėl norint įjungti temstant, reikia reguliariai koreguoti laikmačio programos nustatymus.

Kaip gražus iššūkis nusprendžiau sukurti pasirinktinį „Arduino“pagrįstą atskirą laikmatį. Jis naudoja realaus laiko laikrodį ir „Dusk2Dawn“biblioteką, kad nustatytų laiką, kuriuo šviesos turi būti įjungtos arba išjungtos. Šio laikmačio korpusas yra atspausdintas 3D ir jį galima rasti „Thingiverse“. Šio projekto „Arduino“kodą galite rasti „GitHub“.

Kuriant šį laikmatį įkvėpimo sėmiausi iš daugybės dizaino ir schemų internete. Dėkoju visiems bendraautoriams, kurie nėra aiškiai paminėti.

Kad būtų lengviau skaityti, vietoj visos grandinės schemos, kai reikia, pateikiamos dalinės diagramos.

Alternatyvūs sprendimai:

Vietoj atskiro laikmačio yra daug sprendimų, kai išmaniųjų namų automatikos sistema valdo šviesas. Mano tikslas buvo turėti nepriklausomą sprendimą, kuris nepriklausytų nuo WIFI (ar kito) ryšio.

Apribojimai:

Į šį projektą įtrauktas kodas apima vasaros laiko pakeitimų įgyvendinimą, pagrįstą Europos vasaros laiku.

1 žingsnis: dalių sąrašas ir įrankiai

Dalių sąrašas ir įrankiai
Dalių sąrašas ir įrankiai

Dalys:

Bendra dalių kaina (išskyrus 3D spausdinimą) yra apie 30 EUR.

  • „Arduino Nano V3“(suderinamas) be antraščių
  • Maitinimo šaltinis 5V 0.6A (34 x 20 x 15 mm)
  • Kietojo kūno relė 5V - aktyvus žemas - 2A 230VAC
  • Realaus laiko laikrodis DS3231 (mažas)
  • 0,96 colių OLED ekranas SPI 128*64 pikselių
  • Sukamasis kodavimo įrenginys - EC11 - 20 mm
  • Rankenėlė 6mm velenas 15mm * 17mm
  • Duonos plokštės spausdintinė plokštė,
  • 4* M3x25mm varžtai
  • 3D spausdintas korpusas
  • Termiškai susitraukiantis vamzdis
  • Laidai
  • Sraigtinis gnybtų blokas (neutraliems laidams prijungti)

Reikalingi įrankiai:

  • Lituoklis
  • Lituoklis
  • Lydymosi siurblys
  • Vielos nuėmikliai
  • Pjaustytuvai
  • 3D spausdintuvas (norint spausdinti korpusą)
  • Įvairūs smulkūs įrankiai

ĮSPĖJIMAS

Ši grandinė veikia su 230 V kintamosios srovės srove ir jei nesate įpratę dirbti su tinklo įtampa arba neturite pakankamai patirties dirbdami su 230 V kintamosios srovės tinklo įtampa, prašome likti nuošalyje nuo šio projekto

Aš neprisiimu jokios atsakomybės už bet kokius nuostolius ar žalą, atsiradusius tiesiogiai dėl šio projekto ar jo pasekmių

Dirbant su kintamosios srovės tinklu, visada patariama būti atsargiems ir atsargiems

2 žingsnis: Paruoškite OLED ekraną ir realaus laiko laikrodį

Paruoškite OLED ekraną ir realaus laiko laikrodį
Paruoškite OLED ekraną ir realaus laiko laikrodį

3D spausdintas korpusas skirtas minimaliam dydžiui. Dėl to reikia pašalinti OLED ekrano ir realaus laiko laikrodžio antraštes.

Ruošdamiesi kitam žingsniui, iš litavimo siurblio išvalykite likusį lydmetalį iš skylių.

3 žingsnis: Paruoškite sukamąjį kodavimo įrenginį

Paruoškite sukamąjį kodavimo įrenginį
Paruoškite sukamąjį kodavimo įrenginį

Sukamasis kodavimo įrenginys turi silpnas jungtis. Kad nesugadintumėte, prie kodavimo įrenginio pritvirtinkite spausdintinės plokštės gabalėlį.

Nuotraukoje taip pat jau paruoštas įžeminimas (viršuje dešinėje ir vidurinėje apačioje).

Pastaba: Įsitikinkite, kad rotacinis kodavimo įrenginys su spausdintine plokšte telpa korpuse, neliečiant „Arduino“. Gali prireikti šlifuoti spausdintinę plokštę, kad ji gerai priglustų.

4 žingsnis: gaubtas

Korpusas
Korpusas
Korpusas
Korpusas

Atspausdinkite tris korpuso dalis 3D spausdintuvu. Žiūrėkite „Thingiverse“instrukcijas.

5 veiksmas: išjunkite „Arduino Power LED“(neprivaloma)

Išjungti „Arduino Power“šviesos diodą (neprivaloma)
Išjungti „Arduino Power“šviesos diodą (neprivaloma)

Kad laikmatyje nebūtų šviečia žalia spalva, „Arduino“maitinimo šviesos diodą galima išjungti.

Atminkite, kad šis pakeitimas yra neprivalomas.

„Arduino Nano“modifikacija apima rezistoriaus pašalinimą šalia maitinimo šaltinio (žr. Raudoną apskritimą paveikslėlyje).

6 žingsnis: maitinimo šaltinis + kietojo kūno relė

Maitinimo šaltinis + kietojo kūno relė
Maitinimo šaltinis + kietojo kūno relė

Šiame etape maitinimo šaltinis ir kietojo kūno relė sujungiami ir sumontuojami apatinėje korpuso dalyje.

Sujungimai tarp maitinimo šaltinio ir relės yra šių komponentų apačioje. Relės varžto gnybtų blokas bus naudojamas prisijungti prie „Arduino“.

Pastaba: jungdami įsitikinkite, kad kietojo kūno relės tvirtinimo angos yra laisvos.

  • Lituokite jungiamąjį laidą tarp kietojo kūno relės A1 į vieną iš maitinimo šaltinio kintamosios srovės jungčių
  • Lituokite laidą prie kitos maitinimo šaltinio kintamosios srovės jungties (ji bus prijungta prie neutralaus varžto gnybtų 7 žingsnyje)
  • Lituokite laidą tarp maitinimo šaltinio -Vo iki relės DC-
  • Lituokite laidą, kad prijungtumėte maitinimo šaltinį +Vo prie relės DC +

Pastaba: gali prireikti sutrumpinti maitinimo šaltinio ir relės laidus, kad jie tilptų į korpusą.

7 žingsnis: „Arduino Nano“+ maitinimo šaltinis + kietojo kūno relė

„Arduino Nano“+ maitinimo šaltinis + kietojo kūno relė
„Arduino Nano“+ maitinimo šaltinis + kietojo kūno relė

Šiame etape „Arduino Nano“yra prijungtas prie maitinimo šaltinio ir kietojo kūno relės.

  • Nupjaukite du maždaug 70 mm ilgio laidus. Vienoje pusėje nuimkite 30 mm izoliaciją, o kitoje - 4 mm.
  • Lituokite šoną 30 mm izoliuota izoliacija prie „Arduino +5V“ir „GND“, vielai prilipdami
  • Iškirpkite du 20 mm ilgio termiškai susitraukiančius vamzdelius ir pritvirtinkite juos ant 25 mm nuimtos dalies. Tai izoliuoja laidus iki jungties su tvirtinimo varžto gnybtų bloku DC+ ir DC- kietojo kūno relėje.
  • Atkreipkite dėmesį, kad GND ir +5 V laidai turi kirsti, kad būtų tinkamai prijungti prie relės varžto gnybtų bloko.
  • Nupjaukite maždaug 40 mm ilgio vielą ir nuimkite 4 mm abiejų galų izoliaciją. Lituokite vieną pusę prie A2 jungties, esančios „Arduino“BACKSIDE, o kitą-prie kietojo kūno tvirtinimo varžto gnybtų bloko CH1 jungties.

ĮSPĖJIMAS

„Arduino“maitinamas tiesiai iš stabilaus +5 V maitinimo šaltinio, o ne naudojant vidinį „Arduino“maitinimo reguliatorių. Todėl nėra saugu prijungti USB, kai „Arduino“gauna maitinimą iš maitinimo šaltinio.

Prieš naudodami „Arduino“USB jungtį, visada atjunkite 230VAC maitinimo tinklą.

8 žingsnis: „Arduino Nano“+ laikrodis realiuoju laiku

„Arduino Nano“+ laikrodis realiuoju laiku
„Arduino Nano“+ laikrodis realiuoju laiku

Šiame etape realiojo laiko laikrodis prijungiamas prie „Arduino“, iš dalies naudojant ankstesniame žingsnyje paruoštus kabelius.

  • Lituokite laidą iš „Arduino GND“(taip pat prijungtą prie relės DC) prie realaus laiko laikrodžio „-“.
  • Lituokite laidą iš „Arduino+5V“(taip pat prijungtą prie relės DC+) prie realaus laiko laikrodžio „+“.
  • Nupjaukite du maždaug 40 mm ilgio laidus ir nuimkite 4 mm abiejų galų izoliaciją.
  • Lituokite laidą tarp „Arduino A4“ir realaus laiko laikrodžio D (SDA).
  • Lituokite laidą tarp „Arduino A5“ir realaus laiko laikrodžio C (SCL).
  • Formuokite realaus laiko laikrodžio laidus, kad įsitikintumėte, jog jie netrukdo sukamajam koduotuvui. Tam laidai turi būti korpuso apačioje.

9 veiksmas: prijunkite OLED ekraną

Prijunkite OLED ekraną
Prijunkite OLED ekraną

Šiame etape OLED SPI ekranas pridedamas prie „Arduino“.

  • Nupjaukite 2 65 mm ilgio laidus ir nuimkite 4 mm abiejų galų izoliaciją.
  • Lituokite laidą prie OLED ekrano GND jungties. Lituokite šį laidą prie termiškai susitraukiančių vamzdžių izoliuotos vielos, gaunamos iš „Arduino GND“(žr. 4 veiksmą), ir prijunkite abu laidus prie kietojo kūno relės nuolatinės srovės varžto gnybtų bloko.
  • Lituokite laidą prie OLED ekrano VCC jungties. Lituokite šį laidą prie termiškai susitraukiančių vamzdžių izoliuoto laido, einančio iš „Arduino + 5V“(žr. 4 veiksmą), ir prijunkite abu laidus prie kietojo kūno relės DC + tvirtinimo varžto gnybtų bloko.
  • Nupjaukite 5 65 mm ilgio laidus ir nuimkite 4 mm abiejų galų izoliaciją.
  • Lituokite laidą, kad prijungtumėte D0 (CLK) prie „Arduino D10“
  • Lituokite laidą, kad prijungtumėte D1 (MOSI / DATA) prie „Arduino D9“
  • Lituokite laidą, kad prijungtumėte RES (RT) prie „Arduino D8“
  • Lituokite laidą, kad prijungtumėte nuolatinę srovę prie „Arduino D11“
  • Lituokite laidą, kad prijungtumėte CS prie „Arduino D12“

Pastaba: ekrano laidų tvarka nėra logiška. Tai yra rezultatas, pirmiausia naudojant „Adafruit“pavyzdį, o tada pakeitus jungtis, nes naudojant D13 „Arduino“nuolat šviečia raudonas šviesos diodas.

Alternatyva

SPI jungtims galima naudoti „įprastą“tvarką. Tam reikia atitinkamai pakoreguoti „Arduino“programos skaitmeninės išvesties apibrėžimą, esantį „oledcontrol.cpp“:

// Naudojant programinės įrangos SPI

// kaiščių apibrėžimai

#define CS_PIN 12

#define RST_PIN 8

#define DC_PIN 11

#define MOSI_PIN 9

#define CLK_PIN 10

10 veiksmas: sukamasis kodavimo įrenginys

Rotacinis kodavimo įrenginys
Rotacinis kodavimo įrenginys

Diagramoje parodytos „Arduino“jungtys su sukamuoju kodavimo įrenginiu (koduotuvas matomas iš viršaus).

  • Nupjaukite 4 laidus po 45 mm ir nuimkite 4 mm abiejų galų izoliaciją.
  • Prijunkite „Arduino GND“prie viršutinio dešiniojo ir apatinio kodavimo įrenginio jungčių
  • Prijunkite „Arduino D2“prie kodavimo apačios kairėje
  • Prijunkite „Arduino D3“prie kodavimo apačios dešinėje
  • Prijunkite „Arduino D4“prie kodavimo įrenginio viršaus kairėje

11 veiksmas: montavimas korpuse

Montavimas gaubte
Montavimas gaubte

Sumontuokite visą elektroniką apatinėje korpuso dalyje:

  • Pastumkite „Arduino“ant vertikalaus lizdo
  • Stumkite realaus laiko laikrodį apatiniame skyriuje
  • Stumkite maitinimo šaltinį ir relę viršutiniame skyriuje, įsitikinkite, kad relė yra ant laikiklių.

12 veiksmas: prijungimas prie elektros tinklo / šviesos, kad būtų perjungtas

Jungimas prie elektros tinklo / šviesos, kad būtų galima perjungti
Jungimas prie elektros tinklo / šviesos, kad būtų galima perjungti
Jungimas prie elektros tinklo / šviesos, kad būtų galima perjungti
Jungimas prie elektros tinklo / šviesos, kad būtų galima perjungti

ĮSPĖJIMAS

Dirbdami su kintamosios srovės tinklu, būtinai laikykitės atsargumo ir atsargumo priemonių, įsitikinkite, kad kintamosios srovės tinklas yra atjungtas

Aš neprisiimu jokios atsakomybės už bet kokius nuostolius ar žalą, atsiradusius tiesiogiai dėl šio projekto ar jo pasekmių

  • Prijunkite kintamosios srovės tinklo fazę prie relės A1 (kairėje) varžto gnybtų bloko.
  • Prijunkite perjungiamos šviesos fazę prie relės B1 (dešiniojo) varžto gnybtų bloko.
  • Naudokite atskirą varžto gnybtų bloką, kad prijungtumėte kintamosios srovės tinklo neutralų laidą, šviesos neutralų laidą ir maitinimo šaltinio nulinį laidą.
  • Norėdami sumažinti įtampą, aplink kiekvieną maitinimo kabelį pritvirtinkite kaklaraištį.

13 žingsnis: gaubto apdaila

Dangtelio apdaila
Dangtelio apdaila

Šiame etape baigiamas montavimas gaubte

  • Pastumkite OLED ekraną per ekrano tvirtinimo angą vidinėje korpuso dalyje.
  • Pasukite sukamąjį kodavimo įrenginį per skylę vidurinėje dalyje ir įsitikinkite, kad anti-sukimosi linijos yra aukštyn. Sumontuokite rotacinį kodavimo įrenginį naudodami pridedamą poveržlę ir veržlę.
  • Sumontuokite viršutinę korpuso dalį ir uždarykite korpusą, pritvirtindami keturis M3x25 mm varžtus iš apačios.

14 žingsnis: „Arduino“programavimas

ĮSPĖJIMAS

„Arduino“maitinamas tiesiai iš stabilaus +5 V maitinimo šaltinio, o ne naudojant vidinį „Arduino“maitinimo reguliatorių. Todėl nėra saugu prijungti USB, kai „Arduino“gauna maitinimą iš maitinimo šaltinio.

Prieš naudodami „Arduino“USB jungtį, visada atjunkite 230VAC maitinimo tinklą.

Gaukite „Arduino“laikmačio programą iš „GitHub“.

Ši programa naudoja „Arduino IDE“, kurią galite gauti čia.

Programa naudoja šias papildomas bibliotekas:

SSD1303Ascii

„Arduino Wire“biblioteka

Atminkite, kad taip pat naudojama biblioteka „dusk2dawn“, tačiau ji įtraukta kaip kodas, nes pasikeitė jos sąsaja.

Norint užtikrinti teisingą sutemų / aušrų skaičiavimą, reikia nustatyti ilgumą ir platumą bei laiko juostą.

Kaip aprašyta „dusk2dawn“pavyzdyje, paprastas būdas rasti bet kurios vietos ilgumą ir platumą yra rasti vietą „Google“žemėlapiuose, dešiniuoju pelės mygtuku spustelėkite vietą žemėlapyje ir pasirinkite „Kas čia?“. Apačioje pamatysite kortelę su koordinatėmis.

Ilguma ir platuma programoje yra užkoduoti Dusk2Dawn.cpp 19 ir 20 eilutėse:

/* Čia turi būti nustatyta jūsų vietos platuma ir ilguma.

* * PATARIMAS: Lengvas būdas rasti bet kurios vietos ilgumą ir platumą yra * rasti vietą „Google“žemėlapiuose, dešiniuoju pelės mygtuku spustelėkite vietą žemėlapyje ir * pasirinkite „Kas čia?“. Apačioje pamatysite kortelę su * koordinatėmis. */ #define LATITUDE 52.097105; // Utrechtas #define LONGTITUDE 5.068294; // Utrechtas

Laiko juosta taip pat yra užkoduota Dusk2Dawn.cpp 24 eilutėje. Pagal numatytuosius nustatymus ji nustatyta į Nyderlandus (GMT + 1):

/* Čia įveskite savo laiko juostą (poslinkis į GMT).

*/ #define TIMEZONE 1

Pirmą kartą programuojant „Arduino“, reikia inicijuoti EEPROM atmintį. Norėdami tai padaryti, pakeiskite timer.cpp 11 eilutę, kad inicijuotumėte EEPROM:

// pakeisti į teisingą pirmą kartą programuojant

#define INITIALIZE_EEPROM_MEMORY klaidinga

Įkelkite programą į „Arduino“ir paleiskite „Arduino“.

Išjunkite EEPROM inicijavimą ir vėl įkelkite programą į „Arduino“. Laikmatis dabar prisimins perjungimo laiko nustatymus, kai bus paleistas iš naujo.

15 veiksmas: nustatykite laiką ir perjungimo laiką

Naudotojo sąveikos sąvokos:

  • Trumpas paspaudimas naudojamas pasirinkimams patvirtinti. Be to, pagrindiniame laikmačio ekrane trumpas paspaudimas įjungia arba išjungia šviesą.
  • Ilgas paspaudimas naudojamas norint patekti į meniu iš pagrindinio laikmačio ekrano. Bet kurioje meniu vietoje ilgas paspaudimas grįš į pagrindinį laikmačio ekraną.
  • „>“Pasirinkimo kursas. Šis žymeklis nurodo pasirinktą meniu parinktį.

Pagrindinis laikmačio ekranas

Pagrindiniame laikmačio ekrane rodoma:

Savaitės diena Su

Dabartinis laikas 16:00

Dabartinė laikmačio būsena ir kitas perjungimo laikas Laikmatis IŠJUNGTAS iki 17:12

Aušros ir sutemų laikas Aušra 08:05 Sutemos 17:10

Tinkamo laiko nustatymas

Ilgai paspauskite, kad patektumėte į meniu. Rodomos šios parinktys:

Atgal Nustatyti laikąSavaitės dienos programaSavaitės pabaigos programaPasirinktys

Pasirinkite nustatyti laiką, kad nustatytumėte realaus laiko laikrodžio datą ir laiką. Įveskite teisingas reikšmes:

YearMonthDayTime

Laikmatis automatiškai nustato savaitės dieną. Vasaros laiko perjungimas taip pat atliekamas automatiškai. Vasaros laikas taikomas tik Europos laiko juostoje.

Laikmačio programos nustatymas

Laikmatis turi 2 programas: vieną savaitės dienoms, kitą - savaitgaliui. Atminkite, kad penktadienis laikomas savaitgalio dalimi, šviesa gali likti šiek tiek ilgiau.

Kiekvienas laikmatis turi įjungimo ir išjungimo momentą. Akimirka gali būti:

  • Laikas: tiksliai nurodytas laikas
  • Aušra: perjunkite pagal apskaičiuotą aušros laiką
  • Prieblanda: perjunkite pagal apskaičiuotą sutemų laiką

Sutemus ir auštant galima įvesti 59 minučių korekcijos vertę prieš arba po.

Pavyzdžiai:

Jei norite įjungti šviesą visą naktį, pasirinkite įjungti (sutemus + 10 min.), Išjunkite (auštant - 10 min.)

Norėdami įjungti šviesą vakare, pasirinkite įjungti prieblandoje, išjunkite laiku: 22:30.

Galimybės

Parinkčių ekrane galima nustatyti ekrano perjungimo skirtąjį laiką.

Kai ekranas yra išjungtas, paspaudus sukamojo kodavimo rankenėlę, grįšite į pagrindinį laikmačio ekraną.

Rekomenduojamas: