Obsah:
- Krok 1: Vstávanie bude (trochu) jednoduchšie
- Krok 2: Viac farieb
- Krok 3: Sigmoidová krivka, blikanie a „rozlíšenie“
- Krok 4: Elektronika
- Krok 5: Rezistory (pre LED diódy)
- Krok 6: Softvér
- Krok 7: IKEA (čo by sme bez nich urobili)
Video: Wakeup Light: 7 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:55
Keď píšem tento návod, je polovica zimy na severnej pologuli, čo znamená krátke dni a dlhé noci. Som zvyknutý vstávať o 06:00 a v lete už bude svietiť slnko. V zime však svieti o 09:00, ak máme šťastie, že deň nie je zamračené (čo … nie je často).
Pred nejakým časom som čítal o „budiacom svetle“vyrobenom spoločnosťou Philips, ktoré sa používalo v Nórsku na simuláciu slnečného rána. Nikdy som si nič nekúpil, ale stále som premýšľal o tom, ako si ho vyrobiť, pretože vyrobiť si ho sám je zábavnejšie, ako si ho len kúpiť.
Zásoby:
Rám obrazu "Ribba" 50 x 40 cm od IKEA
perforovaný sololit z železiarstva
Vývojová doska STM8S103 prostredníctvom Ebay alebo iných
Hodiny v reálnom čase DS1307 (Mouser, Farnell, Conrad atď.)
Kryštál hodiniek 32768 Hz (Mouser, Farnell, Conrad atď.)
3V lítiový coincell + držiak coincell
BUZ11 alebo IRLZ34N N-kanálové MOSFETY (3x)
BC549 (alebo akýkoľvek iný NPN tranzistor)
toľko bielych, červených, modrých, zelených atď. LED diód, koľko chcete
niektoré odpory a kondenzátory (pozri schému)
Powerbrick, 12V až 20V, 3A alebo viac (napr. Napájanie starého notebooku)
Krok 1: Vstávanie bude (trochu) jednoduchšie
Ide o to, že je ťažké vstať z postele ráno, keď je ešte tma. A ak žijete blízko alebo dokonca nad polárnym kruhom, bude veľmi dlho tma. Na miestach, ako je Tromsö v Nórsku, sa vôbec nedostane svetla, pretože tam slnko zapadá do polovice novembra, aby sa znova objavilo v polovici Januari.
Philips teda simuloval východ slnka.
Spoločnosť Philips pomaly zvyšuje jas žiarovky, ktorá je pravdepodobne vyrobená pomocou niekoľkých LED diód, ale je skrytá za jedným difúzorom. Ich čas od vypnutia do plného jasu trvá 30 minút.
Budiace svetlá Philips nie sú také drahé, ale majú iba jednu farbu a vyzerajú trochu malé. Myslím si, že to môžem urobiť lepšie.
Krok 2: Viac farieb
Moje budiace svetlo používa štyri farby, bielu, červenú, modrú a zelenú. Najprv nájdite biele LED diódy, potom červené a vydržte niekoľko modrých a zelených LED diód. Moja predstava bola, že môžem simulovať nielen zvýšenie jasu, ale aj posunutie farby ranného svetla, a to tak, že začnem trochou bielej, o niečo neskôr pridám červenú a na záver zmiešam modrú a zelenú. Nie som si istý, či skutočne pripomína skutočné ranné svetlo, ale páči sa mi farebný displej tak, ako je teraz.
Ten môj je tiež rýchlejší ako svetlo prebúdzania Philips, namiesto 30 minút svetla Philips, moje prejde z 0% na 100% jasu za menej ako 5 minút. Moje slnko teda vychádza oveľa rýchlejšie.
POZNÁMKA:
Je veľmi VEĽMI ťažké odfotiť svetlo prebudenia. Skúsil som to s niekoľkými fotoaparátmi a smartfónmi, ale všetky obrázky, ktoré som urobil, nie sú skutočnou spravodlivosťou.
Krok 3: Sigmoidová krivka, blikanie a „rozlíšenie“
Samozrejme som chcel, aby bolo rozjasnenie čo najhladšie. Ľudské oči sú logaritmicky citlivé, čo znamená, že v úplnej tme sú citlivejšie než za denného svetla. Veľmi malý nárast jasu pri nízkych úrovniach „pociťuje“to isté ako oveľa väčší krok, keď má svetlo povedzme 40% jas. Aby som to dosiahol, použil som špeciálnu krivku nazývanú Sigmoid (alebo S-krivka), ktorá začína ako exponenciálna krivka, ktorá sa do polovice opäť vyrovná. Zistil som, že je to veľmi pekný spôsob zvýšenia (a zníženia) intenzity.
Taktovacia frekvencia mikrokontroléra (a časovačov) je 16 MHz a na vytvorenie troch signálov šírky impulzu (PWM) používam maximálne rozlíšenie TIMER2 (65536). Pulzy preto prichádzajú 16000000 /65536 = 244 krát za sekundu. To je ďaleko nad hranicou očí, aby ste videli akékoľvek blikanie.
LED diódy sú napájané signálom PWM, ktorý je vyrobený týmto 16 bittimerom mikrokontroléra STM8S103. Minimálne tento signál PWM môže byť ZAPNUTÝ a má dĺžku 1 impulz a zvyšných 65535 dĺžok impulzov je vypnutý.
LED diódy pripojené k tomuto signálu PM budú potom ZAPNUTÉ 1/65536-tý čas: 0,0015%
Maximálne sú ON 65536/65536-tý čas: 100%.
Krok 4: Elektronika
Mikrokontrolér
Mozog budiaceho svetla je mikrokontrolér STM8S103 od spoločnosti STMicroelectronics. Rád používam diely, ktoré majú na prácu dostatok schopností. Na jednoduchú úlohu, ako je táto, nie je potrebné používať mikrokontroléry STM32 (moje ďalšie obľúbené), ale Arduino UNO nestačilo, pretože som chcel tri signály PWM so 16 -bitovým rozlíšením a na UNO nie je časovač s tromi výstupnými kanálmi.
Hodiny v reálnom čase
Čas sa odčítava z hodín reálneho času DS1307, ktoré pracujú s kryštálom 32768 Hz a majú 3V záložnú batériu.
Aktuálny čas, deň a čas prebudenia sa nastavujú pomocou dvoch tlačidiel a zobrazujú sa na 16 -palcovom LCD displeji. Aby bola moja spálňa v noci skutočne tmavá, podsvietenie LCD displeja sa zapne iba vtedy, keď sú diódy LED jasnejšie ako podsvietenie a keď nastavujete čas, deň a čas prebudenia.
Moc
Napájanie pochádza zo starého prenosného zdroja, môj produkuje 12 V a môže dodávať 3 A. Keď máte iný zdroj napájania, môže byť potrebné nastaviť odpory v sérii s LED reťazcami. (Pozri nižšie)
LED diódy
LED diódy sú pripojené k napájaniu 12 V, zvyšok elektroniky je napájaný 5 V pomocou lineárneho regulátora 7805. V schéme je uvedené, že používam regulátor TO220, ktorý nie je potrebný, pretože mikrokontrolér, displej a hodiny v reálnom čase používajú iba niekoľko miliampérov. Moje hodiny používajú menšiu verziu TO80 modelu 7805 schopnú dodávať 150 mA.
Prepínanie LED reťazcov sa vykonáva pomocou N-kanálových MOSFETov. Opäť v schéme ukazuje iné zariadenia, ako som použil. Náhodou som mal namiesto novších MOSFETov IRLZ34N presne tri veľmi staré BUZ11 MOSFETy. Fungujú dobre
Samozrejme môžete vložiť toľko diód, koľko chcete, pokiaľ MOSFETy a napájanie zvládne prúd. V schéme som nakreslil iba jeden reťazec ľubovoľnej farby, v skutočnosti ich je niekoľko paralelných k iným reťazcom tejto farby.
Krok 5: Rezistory (pre LED diódy)
O odpore v led strunách. Biele a modré LED diódy majú zvyčajne pri plnom jase napätie 2,8 V.
Červené LED diódy majú iba 1,8 V, moje zelené LED diódy majú nad sebou 2 V pri plnom jase.
Ďalšou vecou je, že ich plný jas nie je rovnaký. Trvalo teda niekoľko experimentov, aby boli rovnako jasné (pre moje oči). Tým, že budú diódy LED rovnako jasné pri plnom jase, budú vyzerať rovnako jasne aj pri nižších úrovniach, signál šírky impulzu ich vždy zapne pri plnej jasu, ale počas dlhších a kratších časov sa vaše oči starajú o priemerovanie.
Začnite s týmto výpočtom. Napájací zdroj dodáva (v mojom prípade) 12V.
Štyri biele LED diódy v sérii potrebujú 4 x 2,8 V = 11,2 V, čo ponechá 0,8 V pre odpor.
Zistil som, že sú dostatočne jasné na 30 mA, takže odpor musí byť:
0,8 / 0,03 = 26,6 ohmov. Na schéme vidíte, že som vložil odpor 22 ohmov, čím sa diódy LED stali o niečo jasnejšie.
Modré LED diódy boli pri 30 mA príliš jasné, ale v porovnaní s peknými bielymi LED pri 15 mA mali pri 15 mA tiež asi 2,8 V, takže výpočet bol 4 x 2,8 V = 11,2 V a opäť zostalo 0,8 V
0,8 / 0,015 = 53,3 ohmov, preto som zvolil odpor 47 ohmov.
Moje červené LED diódy tiež vyžadujú, aby približne 15 mA bolo rovnako jasných ako ostatné, ale v tomto prúde majú iba 1,8 V. Takže by som mohol dať viac do série a stále mať nejaký „priestor“pre odpor.
Šesť červených diód mi poskytlo 6 x 1,8 = 10,8 V, takže cez odpor bolo 12 - 10,8 = 1,2 V.
1,2 / 0,015 = 80 ohmov, dotiahol som to na 68 ohmov. Rovnako ako ostatné, o niečo svetlejšie.
Zelené LED diódy, ktoré som použil, sú pri približne 20 mA také jasné ako ostatné. Potreboval som len niekoľko (rovnako ako modrých) a rozhodol som sa dať štyri do série. Pri 20mA majú nad sebou 2, 1V, čo dáva 3 x 2,1 = 8,4V
12 - 8,4 = 3,6 V pre odpor. A 3,6 / 0,02 = 180 ohmov.
Ak postavíte toto budiace svetlo, je nepravdepodobné, že budete mať rovnaké napájanie, budete musieť nastaviť počet LED v sérii a potrebné odpory.
Malý príklad. Povedzme, že máte napájací zdroj, ktorý dáva 20V. Rozhodol by som sa nastaviť 6 modrých (a bielych) LED v sérii, 6 x 3V = 18V, takže 2V pre odpor. Povedzme, že sa vám páči jas pri 40mA. Odpor potom musí byť 2V / 0,04 = 50 ohmov, odpor 47 ohmov bude v poriadku.
Odporúčam, aby ste bežnými (5 mm) LED diódami neprechádzali nad 50 mA. Niektorí toho zvládnu viac, ale rád som na bezpečnej strane.
Krok 6: Softvér
Celý kód je možné stiahnuť z:
gitlab.com/WilkoL/wakeup_light_stm8s103
Ak chcete postupovať podľa vysvetlenia, nechajte zdrojový kód otvorený vedľa zvyšku tohto návodu.
Main.c
Main.c najskôr nastaví hodiny, časovače a ďalšie periférie. Väčšinu „ovládačov“som napísal pomocou štandardnej knižnice od STMicroelectronics a ak máte k nim otázky, napíšte ich do komentára pod pokynom.
Eeprom
Kód „textu na zobrazenie“som nechal ako komentáre na vloženie textov do eepromu STM8S103. Nebol som si istý, či mám dostatok pamäte Flash pre celý svoj kód, a tak som sa pokúsil vložiť do eeprom čo najviac, aby mal program všetok flash. Nakoniec sa to ukázalo ako nepotrebné a text som presunul na blesk. Ale nechal som to ako komentovaný text v súbore main.c. Je pekné to mať, keď potrebujem urobiť niečo podobné neskôr (v inom projekte)
Eeprom sa stále používa, ale iba na uloženie času prebudenia.
Raz za sekundu
Po nastavení periférií kód skontroluje, či uplynula jedna sekunda (vykonané pomocou časovača).
Ponuka
Ak je to tak, skontroluje, či bolo tlačidlo stlačené, ak áno, vstúpi do ponuky, kde môžete nastaviť aktuálny čas, deň v týždni a čas prebudenia. Nezabudnite, že prepnutie z vypnutého stavu do plného jasu trvá asi 5 minút, preto nastavte čas prebudenia o niečo skôr.
Čas prebudenia je uložený v eeprom, aby aj po výpadku napájania „vedel“, kedy vás má zobudiť. Aktuálny čas je samozrejme uložený v hodinách reálneho času.
Porovnanie prúdu a času prebudenia
Keď nebolo stlačené žiadne tlačidlo, skontroluje aktuálny čas a porovná ho s časom prebudenia a dňom v týždni. Nechcem, aby ma to zobudilo cez víkend:-)
Väčšinu času nie je potrebné nič robiť, takže nastaví premennú „led“na VYPNUTÉ, inak na ZAPNUTÉ. Táto premenná sa kontroluje spolu so signálom „change_intensity“, ktorý tiež pochádza z časovača a je aktívny 244 -krát za sekundu. Keď je teda premenná „LED“zapnutá, intenzita sa zvýši 244 -krát za sekundu a keď je vypnutá, zníži sa 244 -krát za sekundu. Nárast však prebieha v jednotlivých krokoch, kde pokles je v krokoch po 16, čo znamená, že keď svetlo prebúdzania snáď urobí svoju prácu, vypne sa 16 -krát rýchlejšie, ale stále hladko.
Hladkosť a MIMO PAMÄTI
Hladkosť pochádza z výpočtu krivky Sigmoid. Výpočet je pomerne jednoduchý, ale je ho potrebné vykonať v premenných s pohyblivou rádovou čiarkou (štvorhra) kvôli funkcii exp (), pozri súbor sigmoid.c.
V štandardnej situácii kozmický kompilátor / linker nemá podporu pre premenné s pohyblivou rádovou čiarkou. Zapnutie je jednoduché (keď ho nájdete), ale prichádza s nárastom veľkosti kódu. Tento nárast bol príliš veľký na to, aby sa kód v kombinácii s funkciou sprintf () zmestil do pamäte Flash. A táto funkcia je potrebná na prevádzanie čísel na text na displeji.
Itoa ()
Na vyriešenie tohto problému som vytvoril funkciu itoa (). Toto je funkcia Integer To Ascii, ktorá je pomerne bežná, ale nie je zahrnutá v štandardnej knižnici STMicroelectronics ani v kozmických knižniciach.
Krok 7: IKEA (čo by sme bez nich urobili)
Obraz z bol kúpený v IKEA. Jedná sa o rám Ribba s rozmermi 50 x 40 cm. Tento rám je dosť hrubý, a preto je ideálny na skrytie elektroniky za ním. Namiesto plagátu alebo obrázku som vložil kus perforovanej sololitovej dosky. Môžete si ho kúpiť v železiarstve, kde sa mu niekedy hovorí „posteľná doska“. Má v sebe malé otvory, vďaka ktorým je ideálny pre osadenie LED diód. Otvory v mojej doske boli bohužiaľ o niečo väčšie ako 5 mm, takže som na „namontovanie“LED diód musel použiť horúce lepidlo.
V strede tvrdej dosky som vytvoril obdĺžnikový otvor pre displej 16x2 a zatlačil ho dovnútra. Na tomto displeji visí doska plošných spojov so všetkou elektronikou a nie je namontovaná na nič iné.
Dierovaná tvrdá doska bola nastriekaná čiernou farbou, ale za rohožku. Do rámu som vyvŕtal dva otvory pre tlačidlá na nastavenie času a dátumu, pretože rám je dosť hrubý, musel som otvory na vnútornej strane rámu rozšíriť, aby gombíky dostatočne trčali.
Odporúča:
LED LIGHT DIY pre webovú kameru (C920): 10 krokov (s obrázkami)
LED LIGHT DIY pre webovú kameru (C920): Osvetlenie je pre webovú kameru nevyhnutné. Tento malý LED krúžok pomáha vašej tvári-kamere, aby vás veľmi dobre brala. Video môžete nasnímať bez akéhokoľvek svetla, okrem tejto diódy LED. Použil som 3D tlačiareň a LED modul WS2812b (kompatibilný s Neopixelom)
Šetrič batérie Fairy Light: 8 krokov (s obrázkami)
Šetrič batérie Fairy Light: Batérie CR2032 sú skvelé, ale nevydržia tak dlho, ako by sme chceli pri jazde s LED " Fairy Light " struny. Počas prázdninového obdobia som sa rozhodol upraviť niekoľko 20 svetelných reťazcov, aby vybehli z powerbanky USB. Hľadal som online a
Svietidlo Jack-O-Wearable Light Up: 5 krokov (s obrázkami)
Nositeľné svetlo Jack-O-Lantern: Tu je skvelý 3D tlačený projekt, ktorý si môžete vziať tesne pred Halloweenom. Postupujte podľa nižšie uvedených krokov a urobte zo seba nositeľnú lampu Jack-O-Lantern s 3D tlačou, ktorú môžete nosiť na krku alebo položiť na pracovný stôl a dostať sa tak do Relikvie
Arduino & Neopixel Coke Bottle Rainbow Party Light: 7 krokov (s obrázkami)
Arduino & Neopixel Coke Bottle Rainbow Party Light: Takže môj syn Doon si všimol veľmi chladné svetlo na párty vyrobené zo starých koksových fliaš a mazľavých vnútorností Glow Sticks a pýta sa, či by sme ho mohli vyrobiť aj pre jeho nadchádzajúce školské skúšky. ! Hovorím určite, ale nedali by ste si radšej niečo z toho
Steampunked Dream Guardian Night Light: 9 krokov (s obrázkami)
Steampunked Dream Guardian Night Light: Ahoj všetci Môj blízky priateľ ma pred niekoľkými týždňami požiadal, aby som pre svoju priateľku vytvoril zásnubný darček (samozrejme okrem prsteňa!). Obaja sú ako ja, dobrovoľní hasiči a milujú Steampunk Objects. Môj priateľ myslel na