Sadržaj:
- Korak 1: Olakšajte (malo) lakše ustajanje
- Korak 2: Više boja
- Korak 3: Sigmoidna krivulja, treperenje i "razlučivost"
- Korak 4: Elektronika
- Korak 5: Otpornici (za LED)
- Korak 6: Softver
- Korak 7: IKEA (što bismo bez njih)
Video: Svjetlo za buđenje: 7 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:31
Dok pišem ovo uputstvo, sredina je zime na sjevernoj hemisferi, a to znači kratke dane i duge noći. Navikao sam ustajati u 06:00, a ljeti će do tada sunce već zasjati. Zimi, međutim, svijetli u 09:00 ako imamo sreće da imamo dan koji nije oblačan (što … nije često).
Prije nekog vremena čitao sam o "svjetlu za buđenje" koje je napravio Philips i koje se u Norveškoj koristilo za simuliranje sunčanog jutra. Nikada ga nisam kupio, ali sam stalno razmišljao o tome da ga napravim jer je izrada samog sebe zabavnija nego samo kupnja.
Pribor:
Okvir za slike "Ribba" 50 x 40 cm od IKEA -e
perforirana lesonit ploča iz trgovine željezom
Razvojna ploča STM8S103 putem Ebaya ili drugih
DS1307 Sat u stvarnom vremenu (Mouser, Farnell, Conrad itd.)
32768 Hz kristalni sat (Mouser, Farnell, Conrad itd.)
3V litij coincell + držač coincell
BUZ11 ili IRLZ34N N-kanalni MOSFET-ovi (3x)
BC549 (ili bilo koji drugi NPN tranzistor)
koliko god želite bijelih, crvenih, plavih, zelenih itd. LED dioda
neki otpornici i kondenzatori (vidi shemu)
Powerbrick, 12V do 20V, 3A ili više (npr. Napajanje starog prijenosnog računala)
Korak 1: Olakšajte (malo) lakše ustajanje
Ideja je da je teško ustati iz kreveta ujutro dok je još mrak. A ako živite blizu ili čak iznad arktičkog kruga, bit će mračno jako dugo. U mjestima kao što je Tromsö u Norveškoj uopće neće svjetlo jer tamo sunce zalazi pola studenog da bi se ponovno pojavilo na pola puta u januaru.
Philips je simulirao izlazak sunca.
Philips polako povećava svjetlinu svjetiljke, koja je vjerojatno napravljena s nekoliko LED dioda, ali skrivena iza jednog difuzora. Njihovo vrijeme od isključenja do pune svjetline traje 30 minuta.
Philips svjetla za buđenje nisu toliko skupa, ali imaju samo jednu boju i izgledaju pomalo mala. Mislim da mogu bolje.
Korak 2: Više boja
Moje svjetlo za buđenje koristi četiri boje, bijelu, crvenu, plavu i zelenu. Najprije bijele LED diode, zatim dolaze crvene, a zatim nekoliko plavih i zelenih LED dioda. Moja je ideja bila da mogu simulirati ne samo povećanje svjetline, već i promjenu boje jutarnjeg svjetla, počevši od malo bijele boje, dodajući crvenu boju malo kasnije i miješajući plavu i zelenu boju na kraju. Nisam siguran da li zapravo liči na stvarno jutarnje svjetlo, ali sviđa mi se šareni zaslon kakav je sada.
Moj je također brži od Philipsovog svjetla za buđenje, umjesto 30 minuta svjetla Philips, moje svjetlo se mijenja od 0% do 100% u manje od 5 minuta. Tako mi sunce izlazi puno brže.
BILJEŠKA:
JAKO je teško snimiti moje svjetlo za buđenje, pokušao sam s nekoliko kamera i pametnih telefona, ali sve slike koje sam napravio ne čine pravu stvar.
Korak 3: Sigmoidna krivulja, treperenje i "razlučivost"
Naravno da sam htio učiniti posvjetljivanje što je moguće glatkijim. Ljudske su oči logaritamske osjetljivosti, što znači da su u potpunom mraku osjetljivije nego na dnevnom svjetlu. Vrlo mali porast svjetline pri niskim razinama "osjeća se" isto kao i mnogo veći korak kada je svjetlost na primjer 40% svjetline. Da bih to postigao, upotrijebio sam posebnu krivulju koja se zove Sigmoid (ili S-krivulja). Ova krivulja počinje kao eksponencijalna krivulja koja se na pola puta ponovno izravnava. Otkrio sam da je to vrlo lijep način povećanja (i smanjenja) intenziteta.
Taktna frekvencija mikrokontrolera (i mjerača vremena) je 16 MH i koristim maksimalnu rezoluciju TIMER2 (65536) za stvaranje tri signala širine impulsa (PWM). Stoga impulsi dolaze 16000000 /65536 = 244 puta u sekundi. To je daleko iznad granice očiju da vidite bilo kakvo treperenje.
Dakle, LED diode se napajaju s PWM signalom koji je napravljen ovim 16 -bitnim timerom mikrokontrolera STM8S103. Ovaj PWM signal može biti uključen najmanje 1 duljinu impulsa, a preostalih 65535 duljina impulsa isključeno.
Dakle, LED diode povezane s tim PM signalom tada će biti UKLJUČENE 1/65536-to vrijeme: 0,0015%
Maksimalno su ON 65536/65536-to vrijeme: 100%.
Korak 4: Elektronika
Mikrokontroler
Mozak svjetla za buđenje je mikrokontroler STM8S103 tvrtke STMicroelectronics. Volim koristiti dijelove koji imaju dovoljno mogućnosti za posao. Za jednostavan zadatak kao što je ovaj nije potrebno koristiti STM32 mikrokontrolere (moji drugi favoriti), ali Arduino UNO nije bio dovoljan jer sam htio tri PWM signala sa 16 -bitnom razlučivošću i nema mjerača vremena s tri izlazna kanala na UNO -u.
Sat u stvarnom vremenu
Vrijeme se čita s sata DS1307 u stvarnom vremenu koji radi s kristalom od 32768 Hz i ima pomoćnu bateriju od 3V.
Postavljanje trenutnog vremena, dana i vremena buđenja vrši se s dvije tipke i prikazuje se na 16 x 2 LCD zaslonu. Kako bi moja spavaća soba bila mračna noću, pozadinsko osvjetljenje LCD zaslona uključuje se samo kada su LED diode jače od pozadinskog osvjetljenja i kada postavljate vrijeme, dan i vrijeme buđenja.
Vlast
Napajanje dolazi iz starog napajanja za prijenosno računalo, moje proizvodi 12V i može isporučiti 3A. Kad imate drugo napajanje, možda će biti potrebno namjestiti otpornike u nizu s LED žicama. (Pogledaj ispod)
Led
LED diode su spojene na 12V napajanje, ostatak elektronike na 5V izrađen je s linearnim regulatorom 7805. Na shemi piše da koristim regulator TO220, koji nije potreban jer mikrokontroler, zaslon i sat u stvarnom vremenu koriste samo nekoliko miliampera. Moj sat koristi manju TO92 verziju 7805 koja može opskrbiti 150mA.
Prebacivanje LED-nizova vrši se s N-kanalnim MOSFET-ovima. Opet, na shemi prikazuje druge uređaje koje nisam koristio. Slučajno sam imao točno tri vrlo stara BUZ11 MOSFET -a umjesto novijih IRLZ34N MOSFET -ova. Rade dobro
Naravno, možete staviti koliko god želite LED dioda, sve dok MOSFET -i i napajanje mogu podnijeti struju. U shemi sam nacrtao samo jedan niz bilo koje boje, u stvarnosti ih ima nekoliko u svakoj boji paralelno s ostalim nizovima te boje.
Korak 5: Otpornici (za LED)
O otpornicima u LED žicama. Bijele i plave LED diode obično imaju napon od 2,8 V kad su pri punoj svjetlini.
Crvene LED diode imaju samo 1,8 V, moje zelene LED diode imaju 2 V pri punoj svjetlini.
Druga je stvar što njihova puna svjetlina nije ista. Stoga je bilo potrebno malo eksperimentiranja kako bi bili jednako svijetli (za moje oči). Učinivši LED diode jednako svijetlima pri punoj svjetlini, oni će također izgledati jednako svijetli na nižim razinama, signal širine impulsa uvijek ih uključuje pri punoj svjetlini, ali tijekom duljih i kraćih vremena, vaše oči brinu se o prosjeku.
Počnite s ovakvim izračunom. Napajanje daje (u mom slučaju) 12V.
Četiri bijele LED diode u seriji trebaju 4 x 2,8 V = 11,2 V, što ostavlja 0,8 V za otpornik.
Otkrio sam da su dovoljno svijetli na 30 mA pa otpornik mora biti:
0,8 / 0,03 = 26,6 ohma. Na shemi vidite da sam stavio otpornik od 22 ohma, pa su LED diode samo malo svjetlije.
Plave LED diode bile su presvijetle na 30 mA, ali u usporedbi s bijelim LED diodama na 15 mA, imale su i oko 2,8 V preko njih na 15 mA pa je izračun bio 4 x 2,8 V = 11,2 V, a opet je ostalo 0,8 V
0,8 / 0,015 = 53,3 ohma pa sam odabrao otpornik od 47 ohma.
Mojim crvenim LED diodama također treba nekih 15 mA da budu jednako svijetle kao i ostale, ali pri toj struji imaju samo 1,8 V. Tako bih mogao staviti više u seriju i još uvijek imati malo "mjesta" za otpornik.
Šest crvenih LED dioda dalo mi je 6 x 1,8 = 10,8 V, pa je preko otpornika bilo 12 - 10,8 = 1,2 V.
1,2 / 0,015 = 80 ohma, uspio sam u 68 ohma. Baš kao i ostali, malo svjetliji.
Zelene LED diode koje sam koristio svijetle su kao i ostale na oko 20mA. Trebalo mi je samo nekoliko (baš kao i plavih) i odlučio sam staviti četiri u seriju. Na 20mA imaju 2, 1V iznad sebe, dajući 3 x 2,1 = 8,4V
12 - 8,4 = 3,6 V za otpornik. I 3,6 / 0,02 = 180 ohma.
Ako napravite ovo svjetlo za buđenje, malo je vjerojatno da imate isto napajanje, morat ćete prilagoditi broj LED dioda u seriji i potrebne otpornike.
Mali primjer. Recimo da imate napajanje koje daje 20V. Odlučio bih postaviti 6 plavih (i bijelih) LED dioda u seriji, 6 x 3V = 18V, dakle 2V za otpornik. Recimo da vam se sviđa svjetlina na 40mA. Otpornik tada mora biti 2V / 0,04 = 50 ohma, otpornik od 47 ohma će biti u redu.
Savjetujem da ne idete više od 50 mA s običnim (5 mm) LED diodama. Neki mogu podnijeti više, ali ja volim biti na sigurnoj strani.
Korak 6: Softver
Sav kod možete preuzeti sa:
gitlab.com/WilkoL/wakeup_light_stm8s103
neka izvorni kod ostane otvoren, pored ostatka ovog uputstva ako želite slijediti objašnjenje.
Glavni.c
Main.c prvo postavlja sat, odbrojavanje vremena i ostale periferne uređaje. Većina "upravljačkih programa" koje sam napisao koristeći standardnu biblioteku tvrtke STMicroelectronics, a ako imate pitanja o njima, napišite ih u komentaru ispod uputstava.
Eeprom
Ostavio sam kôd "tekst za prikaz" koji sam koristio za stavljanje tekstova u eeprom STM8S103 kao komentare. Nisam bio siguran da li imam dovoljno flash memorije za sav svoj kôd pa sam pokušao staviti što je više moguće u eeprom kako bih imao sav flash za program. Na kraju se to pokazalo nepotrebnim i tekst sam premjestio u flash. No, ostavio sam ga kao komentirani tekst u datoteci main.c. Lijepo je to imati, kad kasnije moram učiniti nešto slično (u drugom projektu)
Eeprom se i dalje koristi, ali samo za spremanje vremena buđenja.
Jednom u sekundi
Nakon postavljanja perifernih uređaja, kôd provjerava je li prošla jedna sekunda (s timerom).
Jelovnik
U tom slučaju provjerava je li pritisnuta tipka, ako je tako, ulazi u izbornik gdje možete postaviti trenutno vrijeme, dan u tjednu i vrijeme buđenja. Imajte na umu da je potrebno oko 5 minuta za isključivanje do pune svjetline, pa postavite vrijeme buđenja malo ranije.
Vrijeme buđenja pohranjeno je u eepromu tako da će i nakon nestanka struje "znati" kada vas treba probuditi. Naravno, trenutno vrijeme je pohranjeno u satu stvarnog vremena.
Usporedba trenutnog vremena i vremena buđenja
Kad nijedan gumb nije pritisnut, provjerava trenutno vrijeme i uspoređuje ga s vremenom buđenja i radnim danom. Ne želim da me probudi za vikend:-)
Većinu vremena ne morate ništa učiniti pa varijablu "leds" postavlja na OFF, a na ON. Ova se varijabla provjerava zajedno sa signalom “change_intensity”, koji također dolazi iz mjerača vremena i aktivan je 244 puta u sekundi. Dakle, kada je varijabla "LED diode" UKLJUČENA, intenzitet se povećava 244 puta u sekundi, a kada je isključena, smanjuje se 244 puta u sekundi. No povećanje ide u pojedinačnim koracima gdje je smanjenje u koracima od 16, što znači da se svjetlo za buđenje, nadamo se, obavilo svoj posao, isključuje 16 puta brže, ali i dalje glatko.
Glatkoća i PAMĆENJE
Glatkoća dolazi iz proračuna Sigmoid krivulje. Izračun je vrlo jednostavan, no potrebno ga je izvesti u varijablama s pomičnim zarezom (udvostručuje) zbog funkcije exp (), pogledajte datoteku sigmoid.c.
U standardnoj situaciji Cosmic prevoditelj / povezivač nema podršku za varijable s pomičnim zarezom. Uključivanje je jednostavno (nakon što ga pronađete), ali dolazi s povećanjem veličine koda. Ovo povećanje bilo je previše da bi se kôd uklopio u flash memoriju u kombinaciji s funkcijom sprintf (). A ta je funkcija potrebna za pretvaranje brojeva u tekst za prikaz.
Itoa ()
Da bih riješio ovaj problem, stvorio sam funkciju itoa (). Ovo je funkcija Integer To Ascii koja je prilično uobičajena, ali nije uključena u standardnu biblioteku STMicroelectronics, niti u kozmičke knjižnice.
Korak 7: IKEA (što bismo bez njih)
Slika je kupljena od IKEA -e. To je okvir Ribba dimenzija 50 x 40 cm. Ovaj je okvir prilično debeo i čini ga izvrsnim za skrivanje elektronike iza njega. Umjesto plakata ili slike stavio sam komad perforirane lesonita. Možete ga kupiti u željezariji gdje se ponekad naziva i "krevetna daska". Ima male rupe u sebi što ga čini idealnim za postavljanje LED dioda. Nažalost, rupe na mojoj ploči bile su nešto veće od 5 mm pa sam morao koristiti vruće ljepilo za "montiranje" LED dioda.
Napravio sam pravokutnu rupu u sredini tvrde ploče za zaslon veličine 16x2 i pritisnuo je. PCB sa svom elektronikom visi na ovom zaslonu, nije montiran ni na što drugo.
Perforirana lesonit ploča obojana je sprejom u crnoj boji, ali sa unutrašnje strane prostirke. Izbušio sam dvije rupe u okviru za gumbe za postavljanje vremena i datuma, budući da je okvir prilično debeo, morao sam proširiti rupe na unutarnjoj strani okvira kako bi gumbi dovoljno stršili.
Preporučeni:
LED svjetlo za buđenje velike snage (+/- 15Watt): 5 koraka
LED svjetlo za buđenje velike snage (+/- 15Watt): *Napomena o uređivanju 2020.: Prije svega, više ne koristim ventilator i čini se da je to u redu. Postaje vruće, ali još ništa nije izgorjelo. S nekim novim spoznajama, a budući da su ove LED diode toliko jeftine, upotrijebio bih više od samo 2 i dodao neke 3W pojedinačne LED diode
Mjehurićasti budilnik čini buđenje zabavnim (ish): 7 koraka (sa slikama)
Mjehurićasti budilnik čini buđenje zabavnim (iš): Buđenje uz zujanje budilice je sranje. Ja sam jedan od onih ljudi koji se ne vole buditi prije izlaska sunca (ili vani već mnogo sati). Dakle, koji je bolji način da buđenje učinite zabavnim od zabave s mjehurićima u krevetu! Korištenje arduina i
Automatski poziv za buđenje snijega: 6 koraka (sa slikama)
Automatski poziv za buđenje tijekom snijega: Izlazak iz kuće ujutro može biti nalet aktivnosti nakon što se nekoliko centimetara bijelog materijala slegne preko noći. Ne bi li bilo lijepo da se tih dana probudite malo ranije kako biste uklonili stres iz jutra? Srna ovog projekta
Animirano svjetlo raspoloženja i noćno svjetlo: 6 koraka (sa slikama)
Animirano svjetlo raspoloženja i noćno svjetlo: Imajući fascinaciju koja graniči s opsjednutošću svjetlošću, odlučio sam stvoriti izbor malih modularnih PCB -a koji bi se mogli koristiti za stvaranje RGB svjetlosnih prikaza bilo koje veličine. Nakon što sam izradio modularnu PCB ploču, došao sam na ideju da ih uredim u
Lako buđenje: pametno svjetlo za buđenje napravljeno s Raspberry Pi: 6 koraka
Lako buđenje: Pametno svjetlo za buđenje napravljeno s Raspberry Pi: Uvod Za projekt Curriculum Project1 morao sam nešto napraviti. Uvijek sam bio fasciniran time kako bi vam svjetlo za buđenje koristilo kad se probudite poput onih iz Philips-a. Pa sam odlučio napraviti svjetlo za buđenje. Napravio sam svjetlo za buđenje pomoću Raspberra