Реклама

Људи су природно програмирани да се пробуде уз излазак сунца; нажалост модеран живот диктира произвољни сат, који нас често присиљава да се пробудимо кад нема природне светлости. Данас ћемо правити будилицу за излазак сунца, која ће вас лагано и полако пробудити без употребе увредљиве машине за буку.

Ако вам прављење будилника за излазак сунца представља мало превише за вас, погледајте ове иПхоне и Андроид апликације Користите ове апликације да бисте вам помогли да боље спавате [Андроид и иОС]Након напорног дана, најбоље што можете учинити је да добијете благотворну количину сна. Увек се појављују нове студије које доказују колико је сан заиста важан за човека, побољшавајући ... Опширније који откривају када је најбоље да вас пробуди покретима тела Да ли вам апликација заиста може помоћи да боље спавате?Одувек сам био помало експериментатор сна, који сам већи део свог живота водио детаљан дневник снова и проучавао колико сам могао у вези спавања. Постоје... Опширније , осигуравајући да се нисте одвукли од тог страшног сна, већ се пробудите осећајући се ведро и освежено - они заиста раде.

instagram viewer

Преглед пројекта

Главни део пројекта биће око 5 метара ЛЕД трака постављена око кревета. Напајаћемо их спољним напајањем од 12 волти, пребаченим помоћу неких МОСФЕТ Н транзистора. Подешавање овог дела ће бити идентично динамички систем осветљења Изградите сопствену динамичку амбијенталну расвету за медијски центарАко гледате пуно филмова на рачунару или медијском центру, сигуран сам да сте се суочили са дилемом осветљења; да ли потпуно искључите сва светла? Да ли их држите у пуној експлозији? Или ... Опширније Градила сам пре.

Тајминг ће бити проблем - пошто је ово прототип, постављаћу Ардуино-у да одбројава од када се ресетује. У теорији, требали бисмо губити само секунду или две сваки дан, али идеално би било да укључимо чип „реал тиме тиме“ да бисмо то учинили поузданије. Аларм за излазак сунца ће се покренути 30 минута пре времена буђења и полако повећавати ниво излаза све док не буде 100% осветљења - ово би требало бити довољно да нас пробуди, иако је добра идеја да наставите са коришћењем редовног будилице док ваше тело није навикло то.

Такође ћу у овај пројекат уградити ноћно светло, које детектује кретање и активира дискретан низак ниво светло под креветом с временом од 3 минуте, одвојено од ЛЕД лампица јер би се ти и моја супруга пробудили горе. Осветљење испод кревета биће комерцијална мрежна мрежа, тако да ћу хаковати релеј унутар утичнице да бих га укључио и искључио. Ако вам није угодно радити са напајањем од 110 до 240 В наизменичном струјом ни под којим условима (и то је генерално добро правило), а затим повежите бежични предајник 433 МХз са преклопним утичницама, како је наведено на Распберри Пи Ардуино пројекат кућне аутоматизације Водич за кућну аутоматизацију са малином Пи и АрдуиноТржиште кућне аутоматизације преплављено је скупим потрошачким системима, некомпатибилним једни са другима и скупим за инсталацију. Ако имате Распберри Пи и Ардуино, у основи можете постићи исто на ... Опширније .

Листа делова и шема

  • Ардуино
  • Комплет РГБ ЛЕД светлосних трака
  • Напајање од 12 волти
  • 3 к МОСФЕТ Н транзистори (користим тип СТП16НФ06ФП)
  • Прикључак за релеј и напајање, или бежичне утичнице и одговарајући предајник
  • Ваш избор ноћног светла (редовно напајање напајањем утикачем је у реду)
  • ПИР сензор кретања (ХЦ-СР501) или СЦ-04 сонар (није тако ефикасан)
  • Светлосни сензор
  • Пројектни код - али читајте даље да бисте били сигурни да разумете како све прилагодити.

Ево потпуне шеме.

круг изласка-аларма

Повезивање релеја

Белешка: Прескочите овај одељак ако желите да користите и РГБ светла као ноћно светло - ово је намењено укључивању засебног светла са напајањем.

За пребацивање мрежног напајања, ваш релеј ће морати да има назив напона - 110В или 240В АЦ у зависности од места где живите - и више од укупне ампераже коју ћете пребацити. Оног који сам користио из овог пакета сензора (одрицање од одговорности: то је моја радња) је 250ВАЦ / 10А, па би требали бити сигурни. Релеји имају цом прикључак, обично у средини, који би требао бити повезан са жичаном жицом која улази у утикач; затим прикључите жичани терминал утичнице на НЕ (нормално отворено). Не бих требао да вам кажем да не чините ову превару, прикључен је у утичницу или ћете умрети. Ако се плашите да се не бринете са напајањем, уместо тога користите бежичне преклопљене утичнице.

релејно ожичење

Уземљење и неутрални каблови треба да иду право у утичницу и неће додирнути релеј. У САД-у можда немате земаљску линију. Ваша је одговорност да знате кодирање жица у боји у вашем локалном подручју - ако на неки други начин не бисте могли да спојите обичну утичницу у кући или поново повежете утикач, не покушавајте да уградите релеј у један!

Да бисте тестирали, повежите контактни релејни сигнал на 12, а затим покрените једноставан програм трептања модификован да ради на пин 12, а не 13 као што је подразумевано. Ваша утичница треба да се укључи и искључи сваких неколико секунди. Разлог зашто не користим пин 13 је тај што се у току процеса пребацивања, вањска плоча ЛЕД брзо пали да укаже на серијску активност, што би могло довести и до тога да се релеј активира.

Добијање тачног времена

Функције времена и сата су тешке без приступа мрежној вези или наменској Реалтиме Цлоцк (укључују и своје батерије за одржавање сата чак и када главни Ардуино нема струју). Да би трошкови били ниски, варам. Ја ћу тврдо кодирати вријеме почетка да Ардуино започне одбројавање; времена ће, према томе, бити у односу на ово време почетка. Сваких 24 сата сат ће се ресетовати. Код функције сата испод осигурава глобалне варијабле цуррентМиллис и цуррентМинутес су тачни сваки дан. Ардуино не би требало да губи више од неколико секунди сваких 45 дана; међутим, овај тврдо кодиран начин временског ограничавања је прилично ограничен јер ће искључење струје или случајно ресетирање прекинути све, тако да је ово сигурно једна област која би се могла побољшати. Ако време не успе, једноставно ресетујте Ардуино на ваше постављено време почетка.

Код треба да буде лако разумљив.

воид цлоцк () {иф (миллис ()> = превиоусМиллис + 86400000) {// протекао је читав дан, ресетујте сат; превиоусМиллис + = 86400000; } цуррентМиллис = миллис () - претходниМиллис; // ово одржава наш тренутниМиллис исти сваки дан цуррентМинутес = (тренутниМиллис / 1000) / 60; }

Функција ноћног светла

Главне петље одвојим у различите функције тако да је лакше читати, уклањати или прилагођавати. Тхе ноћно светло() функција функционише само у времену када је Ардуино ресетован (претпостављам да ћете то вероватно урадити током или око спавања, кад је мрак), и све док не почне да се активира излазак сунца. У почетку сам покушао да користим отпорник који зависи од светлости, али они нису баш осетљиви на плаву светлост (што се дешава као боју коју користим за ноћно светло) и тешко је исправно да калибрирам. Употреба сата има ионако више смисла. Користићемо глобално цуррентМинутес променљива која се ресетује сваки дан.

ПИР сензор може бити помало чудан ако га никада раније нисте користили, иако повезивање није тешко - сазнаћете ВЦЦ, ГНД, и ОУТ јасно означено на задњој страни. Постоје и два променљива отпорника; један са ознаком РКС одређује домет (до око 7 м), а други са ТКС одређује кашњење. Одгађање је при најнижем подешавању (у смеру супротном од казаљке на сату) 5 секунди, и значи да ће сваки тренутни покрет покренути најмање 5 секунди „укључено“ стање од сензора. Међутим, он такође одређује кашњење између активних стања - па ако прође 5 секунди и нема померања откривен, сензор ће послати ниски сигнал током најмање 5 секунди, чак и ако током тога постоји покрет раздобље. Ако вам је одлагање постављено стварно високо на око 30 секунди, може се чинити као да је сензор сломљен.

пир сензор

Ако спавате сами и немате ништа против да користите исте РГБ траке за аларм и за излазак сунца и за ноћно светло, требали бисте бити у могућности да лако подесите код.

воид нигхтлигхт () {// Радите само између сати ресетовања -> изласка сунца. иф (цуррентМинутес 

Сунрисе Аларм

Ради једноставности, користићу вредност боје РГБ 255,255,0 за дубоко жути излазак сунца - на тај начин прираштај на оба канала у боји ће бити исти. Ако установите да вас прерано буди, размислите о почетку дубоке црвене боје и бледе ка жутој или белој боји. Плоча горе коју сам користио је само линеарна - можда ћете желети да истражите користећи природнију криву за вредности осветљења.

Функција је једноставна - делује колико светлости треба да се повећава сваке секунде, тако да је она на пуном светлу после 30 минута; затим множи да је за колико год секунди тренутно излазак сунца. Ако је већ на пуном сјају, остаје још 10 минута како би се уверили (а ако још увек нисте у току, вероватно бисте требали поставити резервни аларм).

воид сунрисеаларм () {// сваке секунде током периода од 30 мин треба да повећа вредност боје за: плутајући прираст = (плутајући) 255 / (30 * 60); // црвена 255, зелена 255 даје нам пуну светлост жуту ако (тренутниМинути> = минутеУнтилСунрисе) {// сунрисе започне! флоат цуррентВал = (флоат) ((цуррентМиллис / 1000) - (минутесУнтилСунрисе * 60)) * прираст; Сериал.принт ("Тренутна вредност за излазак:"); Сериал.принтлн (цуррентВал); // током рампе упишите тренутну вредност повећања светлине у минутима Кс ако (цуррентВал <255) {аналогВрите (РЕД, цуррентВал); аналогВрите (ЗЕЛЕНО, цуррентВал); } елсе иф (тренутна минута - минутеУнтилСунрисе <40) {// једном када смо при пуној светлости, држите светла 10 минута дуже аналогно писање (ЦРВЕНО, 255); аналогВрите (ЗЕЛЕНО, 255); } елсе {// након тога враћамо их назад у аналогно стање стања (РЕД, 0); аналогВрите (ЗЕЛЕНО, 0); } } }

Замке и надоградње будућности

Користим ово последњих неколико недеља и заиста помаже да се пробудим осећај освеженог и у пристојно време; ноћна светлост такође делује добро. То ипак није савршено, па ево неколико ствари на којима је потребан рад и научене лекције током изградње.

сунрисе-аларм

Приликом израде овог пројекта наишао сам на мноштво проблема са великим бројем, па ако планирате модификацију кода, имајте то на уму. На језику Ц, тхе куцање ваших променљивих је веома важно - број није увек само број. На пример, дуго потписан променљиве би требало да се користе за складиштење супер великог броја као што је случај са милисекундама, али чак ни број од 60.000 не може да се сачува као обичан цео број (непотписани инт био би прихватљив до 68.000). Поента је, прочитајте на својим променљивим типовима када користите велике бројеве и ако пронађете необичне грешке, вероватно зато што једна од ваших променљивих нема довољно бита!

Такође сам пронашао проблем са врло малим цурењем напона светлине - што доводи до најситније количине светлости која се емитује чак и када дигиталВрите (РЕД, 0) сигнал се емитује - мислим да није проблем у хардверу са тракама, јер они одлично функционишу са званичним контролерима. Ако неко може да реши овај проблем, на слици доле, био бих вам захвалан. Покушао сам да повучем отпорнике и да ограничим излазни напон из Ардуино игле. Можда ћу требати додати једноставан круг за пребацивање напајања да бих напајао напон у ЛЕД траку само када је стварно потребан; или могу бити неисправни МОСФЕТ-ови.

пропуштање светлости

За будући рад, надам се да ћу додати ИР пријемник и дуплирати неке функције оригиналног контролера - ат најмање могућност промене боја као светла за општу употребу, јер управо овај пројекат сад траку претвара у посвећену ноћ светлост. Могу чак да додам аутоматску 30-минутну тајм-аут функцију.

Јесте ли то пробали, побољшали или имате неку другу идеју? Јавите ми у коментарима!

Јамес има диплому о вештачкој интелигенцији и сертификат је ЦомпТИА А + и Нетворк +. Он је водећи програмер МакеУсеОф-а и своје слободно време проводи играјући ВР паинтбалл и таблегамес. Градио је рачунаре још од детета.