Mainos

Ihmiset on luonnollisesti ohjelmoitu heräämään auringonnousun seurauksena; valitettavasti nykyaikaista elämää sanelee mielivaltainen kello, joka pakottaa meidät usein heräämään, kun luonnollista valoa ei ole. Tänään valmistamme auringonnousun herätyskellon, joka herättää hellästi ja hitaasti turvautumatta loukkaavaan melua tuottavaan koneeseen.

Jos auringonnousun herätyskellon tekeminen on sinulle liian paljon, tutustu näihin iPhoneihin ja Android-sovellukset Näiden sovellusten avulla voit nukkua paremmin [Android & iOS]Kiireisen päivän jälkeen parasta mitä voit tehdä on saada hyödyllinen määrä unta. Aina ilmestyy uusia tutkimuksia, jotka todistavat, kuinka tärkeä uni on ihmiselle ja parantaa ... Lue lisää jotka havaitsevat milloin on paras herättää sinua kehon liikkeillä Voiko sovellus todella auttaa sinua nukkumaan paremmin?Olen aina ollut vähän nukkumiskokeilija, pitäen suurimman osan elämästäni huolellisen unelmapäiväkirjan ja opiskellut niin paljon kuin pystyin nukkumaan prosessissa. Siellä on... Lue lisää

instagram viewer
, varmista, että et ole vetäytynyt pois siitä mahtavasta unesta, vaan herätät sen sijaan valoisana ja virkistyneenä - he todella toimivat.

Projektin ääriviivat

Projektin pääosa on noin viiden metrin LED-valovalaisin, joka on asetettu sängyn ympärille. Tehoamme näitä ulkoisella 12 voltin syötöllä, joka kytketään joillakin MOSFET N-transistoreilla. Tämän osan asetukset ovat samat kuin dynaaminen valaistusjärjestelmä Luo oma dynaaminen ympäristövalaistus mediakeskukseenJos katsot paljon elokuvia tietokoneellasi tai mediakeskuksessa, olen varma, että olet kohdannut valaistusongelman; sammutatko kaikki valot kokonaan? Pidätkö heitä täydellä räjähdyksellä? Tai... Lue lisää Rakensin ennen.

Ajoitus on ongelma - koska tämä on prototyyppi, aion asettaa Arduinon laskemaan aina, kun se nollataan. Teoriassa meidän pitäisi menettää vain toinen tai kaksi joka päivä, mutta mieluiten sisällyttäisimme ”reaaliaikakellon” sirun tehdäksesi tämän luotettavammin. Auringonnousun hälytys alkaa 30 minuuttia ennen herätysaikaa ja nostaa lähtötasoa hitaasti, kunnes se on 100% kirkas - tämän pitäisi riittää herättämään meidät, vaikka on hyvä idea jatkaa tavallisen herätyskellon käyttämistä, kunnes vartalo on tottunut se.

Aion sisällyttää myös yövalon tähän projektiin, joka havaitsee liikkeen ja aktivoi diskreetin matalan tason Valo sängyn alla 3 minuutin aikakatkaisulla, erillään LED-valoista, koska ne aiheuttaisivat vaimolleni ja minäkin heräämisen up. Sängyn alla oleva valaistus on kaupallinen verkkoyksikkö, joten hakkeroin rele pistorasian sisäpuolelle sen kytkemiseksi päälle ja pois päältä. Jos et halua työskennellä 110–240 V: n verkkovirralla missään olosuhteissa (ja yleensä näin on hyvä sääntö)), kytke sitten langaton 433 MHz: n lähetin kytkentäpistokkeilla, kuten Vadelma Pi Arduino -automaatiohanke Kotiautomaatio-opas Raspberry Pi: n ja Arduinon kanssaKodin automaatiomarkkinat ovat täynnä kalliita kuluttajajärjestelmiä, jotka eivät ole keskenään yhteensopivia ja kalliita asentaa. Jos sinulla on Vadelma Pi ja Arduino, voit periaatteessa saavuttaa saman asian ... Lue lisää .

Osaluettelo ja kaavio

  • Työläs
  • Sarja RGB-LED-kaistalevaloja
  • 12 voltin virtalähde
  • 3 x MOSFET N-transistoria (käytän tyyppiä STP16NF06FP)
  • Rele- ja pistorasia tai langattomasti ohjattavat pistorasiat ja sopiva lähetin
  • Yövalon valinta (säännöllinen verkkovirta pistorasiassa on hieno)
  • PIR-liiketunnistin (HC-SR501) tai SC-04-luotain (ei yhtä tehokas)
  • Valoanturi
  • Projektin koodi - mutta lukekaa edelleen varmistaaksesi, että ymmärrät kuinka mukauttaa kaikkea.

Tässä on täydellinen kaavio.

auringonnousulta hälytys-piiri

Releen kytkentä

Merkintä: Ohita tämä osa, jos haluat käyttää RGB-valoja myös yövalona - tämä on tarkoitettu erityisesti erillisen verkkovirtavalon kytkemiseen.

Verkkovirran kytkemiseksi releen on oltava nimellisjännitteinen - 110V tai 240 V AC asumistasi riippuen - ja enemmän kuin koko vaihtovirtamäärä. Sitä, jota olen käyttänyt tästä anturipaketista (vastuuvapauslauseke: se on minun myymäläni) On 250 VAC / 10A, joten meidän pitäisi olla turvassa. Releillä on a com portti, yleensä keskellä, joka tulisi olla kytkettynä pistokkeeseen tulevaan jännitteiseen johtoon; kytke sitten liitäntä pistorasiaan EI (yleensä auki). Minun ei tarvitsisi sanoa, ettet tee tätä tapaa, kun se on kytketty pistorasiaan, tai muuten kuolet. Jos pelkät sekoittaa verkkovirtaa, käytä sen sijaan langattomia kytkettyjä pistorasioita.

rele-johdotus

Maadoitusjohtojen ja nollakaapeleiden tulee mennä suoraan pistorasiaan eivätkä kosketa relettä. Sinulla ei ehkä ole maajohtoa Yhdysvalloissa. Sinun vastuullasi on tietää paikallisesi johtimien värikoodaus - Jos et muuten voinut kytkeä tavallista pistorasiaa kotiisi tai johdottaa pistoketta uudelleen, älä yritä upottaa relettä yhdeksi!

Testaa testi kytkemällä releen signaalitappi 12: een, suorita sitten yksinkertainen vilkkumisohjelma, joka on muokattu toimimaan tapilla 12, ei 13, kuten oletuksena. Pistorasian tulisi kytkeä päälle ja pois päältä muutaman sekunnin välein. Syy, miksi en käytä nastaa 13, on se, että latausprosessin aikana sisäänrakennettu LED-valo välähtää nopeasti peräkkäin osoittamaan sarjan toimintaa, mikä myös releen aktivoituu.

Ajoituksen saaminen oikein

Ajoitus- ja kellotoiminnot ovat vaikeita ilman verkkoyhteyttä tai erillistä verkkoyhteyttä Reaaliaikainen kello (Näihin sisältyy omat paristot, jotta kellon voi jatkua, vaikka pää Arduinolla ei olisi virtaa). Pitämään kustannukset alhaisina, aion huijata. Aion koodata alkamisajan Arduinolle sen laskemisen aloittamiseksi; ajoitukset ovat siis suhteessa tähän aloitusaikaan. Kellonaika nollataan joka 24. tunti. Alla oleva kellotoiminnon koodi varmistaa, että globaalit muuttujat currentMillis ja currentMinutes ovat oikeita joka päivä. Arduinon ei pitäisi menettää enemmän kuin muutama sekunti 45 päivän välein; tämä kovaan koodattu ajoitustyyli on kuitenkin melko rajallinen siinä mielessä, että virrankatkaisu tai vahingossa tapahtuva nollaus rikkoo kaiken, joten tämä on varmasti yksi alue, jota voitaisiin parantaa. Jos ajoitus ei enää synkronoidu, nollaa Arduino asetetulla aloitusaikalla.

Koodin tulisi olla helppo ymmärtää.

tyhjä kello () {jos (millis ()> = edellinenMillis + 86400000) {// koko päivä on kulunut, nollaa kello; edellinenMillis + = 86400000; } currentMillis = millis () - edellinenMillis; // tämä pitää currentMillis-arvon samana joka päivä currentMinutes = (currentMillis / 1000) / 60; }

Yövalotoiminto

Olen jakanut pääsilmukat erillisiin toimintoihin, jotta se on helpompi lukea ja poistaa tai säätää. yövalo() -toiminto toimii vain niiden tuntien välillä, jolloin Arduino nollataan (oletan, että teet sen todennäköisesti nukkumaanmenoaikana tai sen ympäristössä, pimeänä) ja kunnes auringonnousun hälytys alkaa. Aluksi olin yrittänyt käyttää valosta riippuvaa vastusta, mutta ne eivät ole kovin herkkiä siniselle valolle (joka sattuu olemaan väri, jota käytän yövaloon), ja vaikeasti kalibroitavissa oikein. Kellon käyttäminen on kuitenkin järkevämpää. Käytämme globaalia currentMinutes muuttuja, joka nollataan joka päivä.

PIR-anturi voi olla hieman omituinen, jos et ole koskaan käyttänyt sitä aiemmin, vaikka sen kytkeminen ei ole vaikeaa - löydät VCC, GNDja OUT selvästi merkitty selälle. Sinulla on myös kaksi muuttuvaa vastusta; yksi merkitty RX määrittää alueen (enintään noin 7 m), ja toinen merkitty TX määrittää viiveen. Viive on 5 sekuntia sen alimmassa asetuksessa (täysin vastapäivään), ja tarkoittaa, että hetkellinen liike laukaisee anturista vähintään 5 sekunnin päällä-tilan. Se määrittelee kuitenkin myös aktiivisten tilojen välisen viiveen - joten jos 5 sekuntia kuluu eikä liikettä ole Kun anturi havaitaan, anturi lähettää alhaisen signaalin vähintään 5 sekunniksi, vaikka sen aikana tapahtuisi liikettä aikana. Jos viive on asetettu todella korkealle noin 30 sekuntiin, voi tuntua, että anturi on rikki.

pir-anturi

Jos nukut yksin etkä halua käyttää samoja RGB-kaistalevaloja sekä auringonnousun hälytyksessä että yövalossa, sinun pitäisi voida säätää koodi riittävän helposti.

tyhjä yövalo () {// Työskentele vain nollautumistuntien välillä -> auringonnousu. if (currentMinutes 

Auringonnousun hälytys

Yksinkertaisuuden vuoksi käytän RGB-väriarvoa 255 255,0 syvän keltaisessa auringonnousussa - tällä tavalla molemmissa värikanavissa kasvu on sama. Jos huomaat, että se herättää sinut liian aikaisin, harkitse aloittamista syväpunaisesta ja häipyvää kohti keltaista tai valkoista. Olen käyttänyt ylösajoa vain lineaarisena - haluat ehkä tutkia luonnollisemman käyrän vaaleusarvoja.

Toiminto on yksinkertainen - se selvittää, kuinka paljon valoa pitäisi lisätä joka sekunti siten, että se on täydessä kirkkaudessa 30 minuutin kuluttua; kertoo sitten, että kuinka monella sekunnilla se on tällä hetkellä auringonnousussa. Jos se on jo täydessä kirkkaudessa, se pysyy päällä vielä 10 minuutin ajan varmistaaksesi, että olet ylhäällä (ja jos et vieläkään ole, sinun pitäisi todennäköisesti olla varahälytys paikallaan).

void sunrisealarm () {// jokaisen sekunnin ajan 30 minuutin ajanjakson tulisi lisätä väriarvoa seuraavalla tavalla: kelluva lisäys = (kellua) 255 / (30 * 60); // punainen 255, vihreä 255 antaa meille täyden kirkkauden keltaisena, jos (currentMinutes> = minutesUntilSunrise) {// auringonnousu alkaa! float currentVal = (kellua) ((currentMillis / 1000) - (minutesUntilSunrise * 60)) * lisäys; Serial.print ("Auringonnousun nykyarvo:"); Serial.println (currentVal); // kirjoita nousun aikana nykyisen arvon minuutteina X kirkkauden lisäys, jos (currentVal <255) {analogWrite (RED, currentVal); analogWrite (VIHREÄ, currentVal); } muuten, jos (currentMinutes - minutesUntilSunrise <40) {// kun olemme täydessä kirkkaudessa, pidä valot päällä 10 minuuttia kauemmin analogWrite (RED, 255); analogWrite (VIHREÄ, 255); } muuta {// sen jälkeen nukkamme heidät takaisin analogWrite-tilaan (RED, 0); analogWrite (VIHREÄ, 0); } } }

Sudenkuopat ja tulevat päivitykset

Olen käyttänyt tätä viime viikkoina ja se todella auttaa heräämään ollessani virkistyneempiä ja kohtuulliseen aikaan; myös yövalo toimii todella hyvin. Se ei kuitenkaan ole täydellinen, joten tässä on muutamia asioita, jotka vaativat työtä ja opit rakennuksen aikana.

Sunrise-hälytys

Projektia tehdessäni kohtasin paljon ongelmia käsitellä suuria määriä, joten muista tämä, jos aiot muuttaa koodia. C-kielellä muuttujien kirjoittaminen on erittäin tärkeää - luku ei ole aina vain numero. Esimerkiksi, allekirjoittamaton pitkä muuttujia tulisi käyttää erittäin suurten lukujen tallentamiseen, kuten käsittelemme puhuttaessa millisekunnista, mutta jopa 60 000 pieniä lukuja ei voida tallentaa normaalina kokonaislukuna (allekirjoittamaton int olisi ollut hyväksyttävissä jopa 68 000). Pointti on, lue muuttujatyypeistäsi kun käytät suuria numeroita ja jos löydät parittomia virheitä, se johtuu todennäköisesti siitä, että jollain muuttujistasi ei ole tarpeeksi bittejä!

Olen myös löytänyt ongelman erittäin alhaisilla kirkkausjännitevuodoilla - mikä johtaa pienimmän määrän valon säteilyyn, vaikka digitalWrite (PUNAINEN, 0) signaali lähetetään - En usko, että liuskoihin liittyy laitteisto-ongelmia, koska ne toimivat hyvin virallisten ohjaimien kanssa. Jos joku voi ratkaista tämän ongelman, joka on esitetty alla, olisin kiitollinen. Olen yrittänyt vetää vastuksia alas ja rajoittaa Arduino-nastojen lähtöjännitettä. Minun on ehkä lisättävä yksinkertainen virtakytkentäpiiri vain syöttöjännitteelle LED-nauhaan, kun sitä todella tarvitaan; tai se voi olla viallinen MOSFET.

valoa vuoto

Tulevaa työtä varten toivon lisääväni IR-vastaanottimen ja kopioimaan joitain alkuperäisen ohjaimen ominaisuuksista - osoitteessa vähiten kyky vaihtaa värejä yleiskäyttöisenä valaisimena, koska tällä hetkellä tämä projekti muuttaa nauhaksi omistetun yön valo. Voin jopa lisätä automaattisen 30 minuutin aikakatkaisutoiminnon.

Oletko kokeillut tätä, tehnyt parannuksia tai saanut muita ideoita? Kerro siitä kommentissa!

Jamesilla on teknisen älykunnan kandidaatin tutkinto ja hän on CompTIA A + ja Network + -sertifioitu. Hän on MakeUseOfin johtava kehittäjä ja viettää vapaa-aikansa pelaamalla VR-paintballia ja lautapelejä. Hän on rakennettu tietokoneita lapsuudestaan ​​asti.