Mündəricat:
- Addım 1: Ayağa qalxmağı (bir az) asanlaşdırmaq
- Addım 2: Daha çox rəng
- Addım 3: Sigmoid Curve, Titrəmə və "qətnamə"
- Addım 4: Elektronika
- Addım 5: Rezistorlar (Ledlər üçün)
- Addım 6: Proqram təminatı
- Addım 7: IKEA (onlar olmadan nə edərdik)
Video: Oyanış işığı: 7 addım (şəkillərlə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:42
Bu təlimatı yazdığımda Şimali yarımkürədə qışın ortasıdır və bu qısa günlər və uzun gecələr deməkdir. Saat 06: 00 -da qalxmağa öyrəşmişəm və yayda günəş o vaxta qədər parlayacaq. Qışda, buludlu olmayan bir günün olması şanslıyıqsa, saat 09: 00 -da işıq saçır (bu da … tez -tez deyil).
Bir müddət əvvəl Philips tərəfindən Norveçdə günəşli bir səhər simulyasiyası üçün istifadə edilən "oyanış işığı" haqqında oxudum. Mən heç vaxt almamışam, amma onu düzəltmək barədə düşünməyə davam etmişəm, çünki onu özünüz etmək sadəcə satın almaqdan daha əyləncəlidir.
Təchizat:
Şəkil çərçivəsi "Ribba" IKEA -dan 50 x 40 sm
hardware mağazasından perforasiya edilmiş lövhə
Ebay və ya digərləri vasitəsi ilə STM8S103 inkişaf lövhəsi
DS1307 Real Zaman Saatı (Mouser, Farnell, Conrad və s.)
32768 Hz saat kristal (Mouser, Farnell, Conrad və s.)
3V lityum təsadüf + təsadüf sahibi
BUZ11 ya da IRLZ34N N-kanallı MOSFET'ler (3x)
BC549 (və ya hər hansı digər NPN tranzistoru)
istədiyiniz qədər ağ, qırmızı, mavi, yaşıl və s. ledlər
bəzi rezistorlar və kondansatörler (sxematik bax)
Powerbrick, 12V - 20V, 3A və ya daha çox (məsələn, köhnə noutbukun güc təchizatı)
Addım 1: Ayağa qalxmağı (bir az) asanlaşdırmaq
Fikir budur ki, hələ qaranlıq olarkən səhər yataqdan qalxmaq çətindir. Arktik dairənin yaxınlığında və ya hətta üstündə yaşasanız çox uzun qaranlıq olacaq. Norveçdəki Tromsö kimi yerlərdə ümumiyyətlə işıq olmayacaq, çünki orada günəş noyabrın yarısında batır, yalnız Januari yarısında yenidən görünür.
Philipsin etdiyi şey günəşin doğuşunu simulyasiya etmək idi.
Philips, ehtimal ki, bir neçə leddən hazırlanmış, lakin tək bir diffuzorun arxasında gizlənmiş lampanın parlaqlığını yavaş -yavaş artırır. Onların tam parlaqlığa qədər olan vaxtı 30 dəqiqə çəkir.
Philips oyanma işıqları o qədər də bahalı deyil, ancaq bir rəngə malikdir və bir az kiçik görünür. Düşünürəm ki, daha yaxşı edə bilərəm.
Addım 2: Daha çox rəng
Mənim oyanış işığım ağ, qırmızı, mavi və yaşıl olmaqla dörd rəngdən istifadə edir. Əvvəlcə ağ ledlərə, sonra qırmızılara və bir neçə mavi və yaşıl ledə gəlin. Fikrim, bir az ağdan başlayaraq, bir qədər sonra qırmızıya əlavə edərək, sonunda mavi və yaşıl rənglərlə qarışdıraraq təkcə parlaqlığın artmasını deyil, həm də səhər işığının rənginin dəyişməsini simulyasiya edə biləcəyim idi. Əslində səhər işığına bənzədiyinə əmin deyiləm, amma rəngli ekranı indiki kimi bəyənirəm.
Mənimki də Philips oyanma işığından daha sürətlidir, Philips işığının 30 dəqiqəsi əvəzinə 5 dəqiqədən az müddətdə 0% -dən 100% parlaqlığa gedir. Beləliklə, günəşim daha sürətli doğur.
QEYD:
Birdən çox kamera və ağıllı telefonla sınadım, oyanma işığımın şəkillərini çəkmək çox çətindir, amma hazırladığım bütün şəkillər ədalətə uyğun gəlmir.
Addım 3: Sigmoid Curve, Titrəmə və "qətnamə"
Əlbəttə ki, parlaqlığı mümkün qədər hamar etmək istədim. İnsan gözləri həssaslıq baxımından logaritmikdir, yəni tam qaranlıqda gün işığında olduğundan daha həssasdır. Səviyyə aşağı olduqda parlaqlığın çox kiçik bir artımı, işığın demək olar ki, 40% parlaqlığı olduqda daha böyük bir addım kimi "hiss edir". Buna nail olmaq üçün Sigmoid (və ya S əyrisi) adlanan xüsusi bir əyri istifadə etdim, bu əyri yenidən yarı səviyyəyə çıxan eksponensial əyri olaraq başlayır. Şiddəti artırmağın (və azaltmağın) çox gözəl bir yolu olduğunu gördüm.
Mikrodenetleyicinin (və taymerlərin) saat tezliyi 16 MHzdir və üç nəbz eni siqnalı (PWM) yaratmaq üçün TIMER2 (65536) maksimum qətnaməsindən istifadə edirəm. Buna görə pulslar saniyədə 16000000 /65536 = 244 dəfə gəlir. Bu, hər hansı bir titrəməni görmək üçün göz həddindən çox yüksəkdir.
Ledlər, STM8S103 mikrokontrolörünün bu 16 bittimer ilə hazırlanan bir PWM siqnalı ilə qidalanır. Ən azı bu PWM siqnalı 1 nəbz uzunluğunda, qalan 65535 nəbz uzunluğunda isə ON ola bilər.
Belə ki, həmin PM siqnalına qoşulan ledlər vaxtın 1/65536-cı ilində olacaq: 0.0015%
Maksimumda onlar 65536/65536-cıdır: 100%.
Addım 4: Elektronika
Mikro nəzarətçi
Uyanma işığının beyni STMicroelectronics -dən bir STM8S103 mikro nəzarətçisidir. Bir iş üçün kifayət qədər imkanları olan hissələrdən istifadə etməyi sevirəm. Sadə bir iş üçün STM32 mikro nəzarətçilərindən (digər sevimlilərim) istifadə etmək lazım deyil, ancaq Arduino UNO kifayət etmədi, çünki 16 bit qətnamə ilə üç PWM siqnalı istədim və UNO -da üç çıxış kanalı olan heç bir taymer yoxdur..
Real vaxt saatı
Saat, 32768 Hz kristal ilə işləyən və 3V ehtiyat batareyası olan DS1307 real vaxt saatından oxunur.
Cari vaxtın, günün və oyanma vaxtının təyin edilməsi iki düymə ilə aparılır və 16 x 2 LCD xarakterli bir ekranda göstərilir. Yataq otağımı gecə həqiqətən qaranlıq tutmaq üçün LCD ekranın arxa işığı yalnız LEDlər arxa işıqdan daha parlaq olduqda və vaxtı, günü və oyanma vaxtını təyin edərkən açılır.
Güc
Güc köhnə bir dizüstü kompüterdən gəlir, mənimki 12V istehsal edir və 3A verə bilər. Başqa bir enerji təchizatı olduqda, rezistorları led telləri ilə ardıcıl olaraq tənzimləmək lazım ola bilər. (Aşağıya baxın)
Ledlər
Ledlər 12V -luq elektrik enerjisinə, qalanları isə 5V -də 7805 xətti tənzimləyici ilə hazırlanmışdır. Sxemada, mikrokontrolör, ekran və real vaxt saatı yalnız bir neçə milliamp istifadə etdiyi üçün lazım olmayan bir TO220 tənzimləyicisini istifadə etdiyim deyilir. Saatım 150mA təchiz edə bilən 7805 -in daha kiçik bir TO92 versiyasından istifadə edir.
Led tellərinin dəyişdirilməsi N-kanallı MOSFET-lərlə aparılır. Yenə də sxematik olaraq istifadə etdiyimdən başqa cihazları göstərir. Daha yeni IRLZ34N MOSFET -lərin əvəzinə üç köhnə BUZ11 MOSFET -ə sahib oldum. Yaxşı işləyirlər
Əlbəttə ki, MOSFET -lər və güc təchizatı cərəyanı idarə edə bildiyi müddətcə istədiyiniz qədər çox LED yerləşdirə bilərsiniz. Şematik olaraq hər hansı bir rəngin yalnız bir simini çəkdim, əslində o rəngin digər simlərinə paralel olaraq hər bir rəng var.
Addım 5: Rezistorlar (Ledlər üçün)
Led tellərindəki rezistorlar haqqında. Ağ və mavi LED -lər, ümumiyyətlə tam parlaqlıqda olduqda, 2,8V gərginliyə malikdirlər.
Qırmızı LED -lərdə yalnız 1.8V, yaşıl LED -lərimdə tam parlaqlıqda 2V var.
Başqa bir şey, onların tam parlaqlığının eyni olmamasıdır. Onları eyni dərəcədə parlaq etmək üçün bir az təcrübə aparmaq lazım idi (gözlərimə). Ledləri tam parlaqlıqda eyni dərəcədə parlaq etməklə, aşağı səviyyələrdə də eyni dərəcədə parlaq görünəcəklər, nəbz genişliyi siqnalı həmişə onları tam parlaqlıqda yandırır, ancaq daha uzun və daha qısa müddətdə gözləriniz ortalamaya diqqət yetirir.
Belə bir hesablama ilə başlayın. Enerji təchizatı (mənim vəziyyətimdə) 12V verir.
Seriyadakı dörd ağ led 4 x 2.8V = 11.2V lazımdır, bu rezistor üçün 0.8V buraxır.
30 mA -da kifayət qədər parlaq olduqlarını gördüm, buna görə rezistor olmalıdır:
0.8 / 0.03 = 26.6 ohm. Şematik olaraq 22 ohm rezistor qoyduğumu görürsən ki, ledləri bir az daha parlaq edir.
Mavi LED -lər 30mA -da çox parlaq idi, lakin 15 mA -dakı ağ LED -lərlə müqayisədə 15mA -da təxminən 2,8V -ə bərabər idi, buna görə hesablama 4 x 2,8V = 11,2V -dir, yenə də 0,8V -dən çıxır.
0.8 / 0.015 = 53.3 ohm, buna görə 47 ohm rezistor seçdim.
Qırmızı ledlərim də digərləri kimi eyni dərəcədə parlaq 15 mA -a ehtiyacı var, ancaq bu cərəyanda yalnız 1.8V -ə sahibdirlər. Buna görə də daha çoxunu sıraya qoya bilərəm və hələ də rezistor üçün bir az "otaq" saxlaya bilərəm.
Altı qırmızı led mənə 6 x 1.8 = 10.8V verdi, buna görə də rezistor 12 - 10.8 = 1.2V idi
1.2 / 0.015 = 80 ohm, 68 ohm halına gətirdim. Digərləri kimi, bir az daha parlaq.
İstifadə etdiyim yaşıl ledlər təxminən 20mA -da digərləri kimi parlaqdır. Bir neçəsinə ehtiyacım var (mavi olanlar kimi) və dördünü ardıcıl olaraq qoymağı seçdim. 20mA -da onların üstündə 2, 1V var, 3 x 2.1 = 8.4V verir
Rezistor üçün 12 - 8.4 = 3.6V. Və 3.6 / 0.02 = 180 ohm.
Bu oyandırma işığını qurarsanız, eyni enerji təchizatı ehtimalınız azdır, ardıcıl olaraq LED sayını və lazım olan rezistorları tənzimləməli olacaqsınız.
Kiçik bir nümunə. 20V verən bir güc qaynağınız olduğunu söyləyin. Rezistor üçün 6 x 3V = 18V olmaqla 2 mavi 6 ardıcıl mavi (və ağ) LED qurmağı seçərdim. Və deyək ki, 40mA -dakı parlaqlığı bəyənirsiniz. Rezistorun 2V / 0.04 = 50 ohm olması lazımdır, 47 ohm rezistor yaxşı olacaq.
Adi (5 mm) LED ilə 50mA -dan yuxarı getməməyi məsləhət görürəm. Bəziləri daha çox iş görə bilər, amma mən təhlükəsiz tərəfdə olmağı xoşlayıram.
Addım 6: Proqram təminatı
Bütün kodu aşağıdakı ünvandan yükləyə bilərsiniz:
gitlab.com/WilkoL/wakeup_light_stm8s103
Mənbə kodunu açıq saxlayın, izahatı izləmək istəyirsinizsə bu təlimatın qalan hissəsinin yanında saxlayın.
Əsas c
Main.c əvvəlcə saatı, taymerləri və digər ətraf cihazları qurur. STMicroelectronics -dən Standart Kitabxanadan istifadə edərək yazdığım "sürücülərin" əksəriyyəti və bunlarla bağlı hər hansı bir sualınız varsa, təlimatın altındakı bir şərhdə yazın.
Eeprom
Mətnləri STM8S103 eepromuna şərh olaraq qoymaq üçün istifadə etdiyim "göstərmək üçün mətn" kodunu tərk etdim. Bütün kodlarım üçün kifayət qədər flash yaddaşa malik olduğuma əmin deyildim, buna görə də proqram üçün bütün flaşların olması üçün eeprom -a mümkün qədər çox yer qoymağa çalışdım. Sonda bunun lazım olmadığını sübut etdim və mətni yanıb söndürdüm. Ancaq onu main.c faylında şərh edilmiş mətn olaraq qoydum. Daha sonra oxşar bir şey etməli olduğum zaman bunu etmək xoşdur (başqa bir layihədə)
Eeprom hələ də istifadə olunur, ancaq oyanma vaxtını saxlamaq üçün.
Saniyədə bir dəfə
Ətraf qurğuları qurduqdan sonra kod bir saniyənin keçib -keçmədiyini yoxlayır (taymerlə aparılır).
Menyu
Bu vəziyyətdə bir düyməyə basıldığını yoxlayır, əgər varsa, cari saatı, həftənin gününü və oyanma vaxtını təyin edə biləcəyiniz menyuya daxil olur. Unutmayın ki, tam parlaqlığa keçmək üçün təxminən 5 dəqiqə çəkir, buna görə oyanma vaxtını bir qədər əvvəl təyin edin.
Oyanma vaxtı eepromda saxlanılır ki, elektrik kəsildikdən sonra da sizi nə vaxt oyandıracağını "bilsin". Əlbəttə ki, cari vaxt real vaxtda saxlanılır.
Cari və oyanma vaxtını müqayisə edin
Heç bir düyməyə basılmadıqda, cari vaxtı yoxlayır və oyanma vaxtı və iş günü ilə müqayisə edir. Həftə sonu məni oyatmaq istəmirəm:-)
Çox vaxt heç bir şey edilməməlidir, buna görə dəyişən "led" ləri OFF olaraq digərinə ON olaraq təyin edir. Bu dəyişən, eyni zamanda bir taymerdən gələn və saniyədə 244 dəfə aktiv olan "change_intensity" siqnalı ilə birlikdə yoxlanılır. Belə ki, "ledlər" dəyişəni AÇIK olduqda intensivlik saniyədə 244 dəfə artırılır və OFF olduqda saniyədə 244 dəfə azalır. Ancaq azalma 16 addımda olduğu tək addımlarla gedir, yəni oyanış işığı inşallah öz işini görəndə 16 dəfə daha sürətli, lakin yenə də hamar bir şəkildə sönür.
Hamarlıq və yaddaşdan kənar
Hamarlıq Sigmoid əyrisi hesablamasından gəlir. Hesablama olduqca sadədir, lakin exp () funksiyasına görə üzən nöqtə dəyişənlərində (ikiqat) edilməlidir, sigmoid.c faylına baxın.
Standart vəziyyətdə, Cosmic tərtibçisi / bağlayıcısının üzən nöqtə dəyişənləri üçün dəstəyi yoxdur. Yandırmaq asandır (tapdıqdan sonra), ancaq kod ölçüsündə bir artım var. Bu artım, sprintf () funksiyası ilə birləşdirildikdə kodu flash yaddaşa uyğunlaşdırmaq üçün çox idi. Və bu funksiya rəqəmləri ekran üçün mətnə çevirmək üçün lazımdır.
Itoa ()
Bu problemi həll etmək üçün itoa () funksiyasını yaratdım. Bu, çox yayılmış, lakin STMicroelectronics standart kitabxanasına və ya Kozmik kitabxanalarına daxil edilməyən Integer To Ascii funksiyasıdır.
Addım 7: IKEA (onlar olmadan nə edərdik)
Şəkil IKEA -dan alınıb. 50 x 40 sm ölçüdə bir Ribba çərçivəsidir. Bu çərçivə olduqca qalındır və elektronikanı arxasında gizlətmək üçün əla hala gətirir. Afişa və ya şəkil əvəzinə bir dəlikli taxta taxtaya qoydum. Bəzən "yataq taxtası" adlandığı bir hardware mağazasında satın ala bilərsiniz. İçərisində kiçik deşiklər var ki, bu da LEDləri yerləşdirmək üçün idealdır. Təəssüf ki, lövhəmdəki deliklər 5 mm-dən bir qədər böyük idi, buna görə də ledləri "bağlamaq" üçün isti yapışqan istifadə etməli oldum.
Sərt lövhənin mərkəzində 16x2 ekran üçün düzbucaqlı bir çuxur düzəltdim və içəriyə basdım. Bütün elektronikası olan PCB bu ekranda asılıb, başqa heç bir yerə yapışdırılmayıb.
Delikli sərt lövhə qara rəngə boyanmışdı, ancaq matın arxasında. Düymələrin vaxtı və tarixi təyin etməsi üçün çərçivədə iki delik açdım, çünki çərçivə olduqca qalın olduğundan düymələrin kifayət qədər yapışması üçün çərçivənin içindəki delikləri genişləndirməli oldum.
Tövsiyə:
Gecə İşığı Hərəkəti və Qaranlıq Algılama - Mikro: 7 addım (şəkillərlə)
Gecə İşığı Hərəkəti və Qaranlıq Algılama - Mikro Yoxdur: Bu təlimat qaranlıq bir otaqda gəzərkən barmağınızı sancmağınızın qarşısını almaq üçündür. Gecələr ayağa qalxıb təhlükəsiz şəkildə qapıya çatmağa çalışsanız bunun öz təhlükəsizliyiniz üçün olduğunu söyləyə bilərsiniz. Əlbəttə ki, bir yataq lampası və ya əsas lampadan istifadə edə bilərsiniz
Gecənin ortası hamam işığı: 5 addım (şəkillərlə)
Gecənin Ortası Hamam İşığı: Bəzilərimiz gecənin ortasında hamamdan istifadə etmə ehtiyacını yaşayırıq. Bir işığı yandırsanız, gecə görmə qabiliyyətinizi itirə bilərsiniz. Ağ və ya mavi işıq, yuxu hormonu olan Melatonini itirməyinizə səbəb olaraq yenidən yuxuya getməyi çətinləşdirir. Belə ki
Batareyasız Günəş İşığı və ya Günəş İşığı Niyə olmasın ?: 3 addım
Batareyasız Günəş İşığı və ya Günəş İşığı … Niyə olmasın ?: Xoş gəldiniz. İngilis gün işığı üçün üzr istəyirəm? Günəş? Niyə? Gündüz bir az qaranlıq bir otağım var və istifadə edərkən işıqları yandırmalıyam. Günəş işığını gecə-gündüz quraşdırın (1 otaq): (Çilidə)-Günəş paneli 20w: 42 ABŞ dolları -Batareya: 15 ABŞ dolları-Günəş ödəniş əks
Asan Uyanma: Raspberry Pi ilə hazırlanmış Ağıllı Oyanış İşığı: 6 addım
Asan Uyanma: Raspberry Pi ilə Ağıllı Uyanma İşıq: Tədris proqramı Layihəsi üçün Giriş1 Bir şey etmək məcburiyyətində qaldım. Philips-dən gələnlər kimi yuxudan oyanmağın sizə necə fayda verəcəyi məni həmişə heyran edirdi. Raspberr ilə oyandırma işığını yandırdım
Səmimi Video İşığı/ Əl Fotoşəkili İşığı: 7 Addım (Şəkillərlə)
Səmimi Video İşığı/ Əl Fotoşəkili İşığı: Nə düşündüyünü bilirəm. By " intim " Çətin işıq vəziyyətlərində yaxınlaşan işıqlandırmanı nəzərdə tuturdum-mütləq " intim vəziyyətlər " üçün deyil. (Bununla birlikdə, bunun üçün də istifadə edilə bilər …) New York City videoqrafı olaraq-və ya