BedLight projektas

29 05 2014

BedLight tai naktinis apšvietimas po lova. Privalumų duoda toks apšvietimas tikrai nemažai. Pirmiausiai nereikia savęs žaloti ieškant šviesos jungiklio, nereikia žaloti dar miegančių akių, o ir šeimos nariai nenukenčia per kaltininko norą pasisioti ar paniamnioti vidurį nakties.

Idėja pasigaminti automatinį palovio apšvietimą kilo labai senai, berods prieš gerus du metus. Kaip mėgstu sakyti, kai gyvenome dar sename bute 😀 Dar tada pasigaminau tiek PCB, tiek programą mikrovaldikliui parašiau, bet dėl kažkokių priežasčių reikalas sustojo.  Dabar, kuomet turime gimusi vaikelį, grįžo ir poreikis sugrąžinti projektuką į dienos šviesą, t.y. yra nakties tamsą.

Dar prieš rodydamas schemas ir plokštes paminėsiu mano mini sistemos ypatybes:

  • Attiny25 mikroprocsorius – suteiks mums lankstumą;
  • PIR sensorius – judesiui stebėti;
  • Šviesos daviklis – sekti ar naktis po lova, ar diena. Greta jo derinama varža, su kuria galime nustatyti norimą apšvietimo kiekį, kuomet jau reikia uždegti palovio šviesos šaltinį;
  • 12V maitinimo šaltinis – elektronikos ir apšvietimo šaltinio maitinimui;
  • MOSFET – apšvietimo šaltiniui maitinti. Palaipsninis užsidegimas bei užgesinimas naudojant LED tipo šviesos šaltinį. Galimybė pasijungti rėlę jei norima pajungti 220v lempą;
  • Galimybė rankiniu būdu valdyti sistema (trys rėžimai: visada išjungta, automatinis, visada įjungta);

Schema ir PCB

Kuomet jau aiškios sudedamosios dalys nesunku pasidėlioti ir schemą. Tuo metu, t.y. prieš du metus, dar nebuvau toks patyręs elektronikos projektuotojas, tad net ir tokią schemą suprojektuoti buvo ką veikti. Dabar aišku juokinga.

Taigi pati schema atrodo taip:

03

Kaip matote ji minimali. Mikrovaldiklis naudos vidinį dažnį tad kvarco nedėjau, maitinimas jam reguliuojamas su paprastu 7805. Rinkausi Attiny25, nes jo resursų pilnai pakaks, o jis priedo turi ir galybę ADC bei PWM kanalų. Du ADC kanalus panaudosime apšvietimo stebėjimui ir jo intensyvumui nustatyti, o vieną skaitmeninį išėjimą panaudosime judesio davikliui. Išėjimą valdysime su gana silpnu MOSFET’u. Dabar gamindamas schemą dar pridėčiau diodą prie MOSET’o apsaugai ir 0.1uF kondensatorių mikrovaldiklio maitinimui triukšmams sumažinti. Abu šie elementai dabar yra papildomai sumontuoti ant senai pagamintos PCB.

PCB gavosi tikrai tikrai nedidelė:

02

Dabar galima techninę įrangą realizuoti.

Įrenginys

Štai taip atrodė sulituota schema pačioje pradžioje:

IMG_6551

Pirminė idėja buvo montuoti PIR ir šviesos daviklį įrenginio šone, bet dabar grįžęs prie įrenginio kiek persigalvojau. Šiuos du komponentus perkelsiu į korpusą. Korpuso viduje dabar štai tokia makalynė:

IMG_8602

O išoriškai dėžė atrodo taip:

IMG_8609

Kadangi niekas įrenginio nematys, tai grožis buvo paskutinėje vietoje.

Tikriausiai pastebėjote, kad maitinimas bei apšvietimo išėjimas gana keistai sujungtas kaladėlę? Jungiau viska taip, kad atskirčiau dvi maitinimo linijas: maitinimą elektronikai bei tiesioginį maitinimą apšvietimui. Taip įvykdžiau trijų rėžimų reikalavimą. Kadangi MOSFEt perjunginėją apšvietimo GND, tai trijų padėčių mygtukas perjunginės maitinimo nulį arba elektronikai arba tiesiai apšvietimui. Pats jungtukas jau mėtėsi stalčiuje nuo kažkokio kito išardyto įrenginio ir atrodo taip:

IMG_8605

IMG_8610

HI padėtis įjungs pastovų apšvietimą, OFF atjungs viską, o esant LO padėčiai įrenginys veiks automatiniu rėžimu.

Kadangi LED lemputės bus negalingos tai nusprendžiau maitinimo blokui neinvestuoti ir panaudoti tai kas liko iš senai išardyto Canon rašalinio spausdintuvo:

IMG_8606

Patikrinus išėjimo lizdą radau kontaktus kurie duoda 11.06v, ko man tikrai pakaks.

Programa

Kadangi Attiny25 programavimui naudosiu Arduino kaip programatorių, tai kodėl nenaudoti ir Arduino kodo tam? Parsiunčiau arduino-tiny papildymą kurį sumečiau į Arduino IDE ir galiu pilnai programuoti šį mažylį kaip paprasta Arduino. Žinoma daug kas pasakys kad tai neefektyvų, didelis kodas ir lalala, bet man patogumas daug reiškia. Mano atveju tik pajungiau švaru Attiny prie Arduino, o IDE pati surašė reikiamus saugiklius. Klaidų taip darome taip minimaliai ir susikoncentruoti galime kitose srityse.

Išnaudojau 66proc. iš 2kB atminties ir likau štai su tokia programa:

#define pirSensorPin 1
#define ledPin 0
#define lightSetupPin A1
#define lightSensorPin A3
#define TIMEOUT 60
byte ledState = 0;
byte pirState = LOW;
boolean dark = false;
unsigned long timer = 0;
void setup()
{
pinMode(pirSensorPin, INPUT);
digitalWrite(pirSensorPin, LOW);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
pinMode(lightSetupPin, INPUT);
pinMode(lightSensorPin, INPUT);
}
void loop()
{
if (ledState==0)
{
int light = analogRead(lightSensorPin);
int lightSetup = analogRead(lightSetupPin);
if (light<lightSetup)
dark = true;
else
dark = false;
}
pirCheck();
if (timer < millis())
ledOff();
else
{
if (dark)
ledOn();
}
}
void ledOn()
{
for (ledState; ledState<255; ledState++)
{
analogWrite(ledPin, ledState);
delay(30);
if (pirCheck()) return;
}
analogWrite(ledPin, ledState);
}
void ledOff()
{
for (ledState; ledState>0; ledState--)
{
analogWrite(ledPin, ledState);
delay(100);
if (pirCheck()) return;
}
analogWrite(ledPin, ledState);
}
boolean pirCheck()
{
byte pir = digitalRead(pirSensorPin);
boolean result = false;
if (pir==HIGH && pirState==LOW)
{
timer = millis() + (unsigned long)1000 * (unsigned long)TIMEOUT;
result = true;
}
pirState=pir;
return result;
};

Paprastais žodžiais tariant programa fiksuoja paskutinio PIR signalo pradžios laiką ir jei patalpoje tamsu pakankamai tam tikra laiką degina LED. Programuodamas atsižvelgiau į tai kad žmogui vaikštant LED degimo laikas vis prasitęstu, o net ir vykstant apšvietimo gesinimo procesui butu galimybė jį vėl esant reikalui įžiebti pakartotinai.

Montavimas

Viska lyg ir pradebuginus bei sukonfigūravus metas įrangą montuoti po lovą. Pagrindinis modulis su sensorisis buvo primontuotas ties vidurine koja ir atsuktas taip kad “matytu“ daugiau vieną lovos pusę ir toje pačioje pusėje esančias miegamojo duris:

IMG_8683

Maitinimo bloką taip pat primontavau netoliese, bet kiek atokiau. Dabar naudoju tiek viena LED lempą bet artimoje ateityje primontuosiu ir pajungsiu antrą tokį.

Dabar liko tik įtaisyti valdymo jungikli. Jį tiesiog perkišau per lovos rėmą tarp čiužinio. Jungiklis bus lovos viduryje, kad abu jos naudotojai galėtu valdyti situacija:

IMG_8687

Vėliau, kuomet pastovaus apšvietimo poreikis dings, jungtuką paslėpsiu.

Veikimas

Radau video kuris filmuotas senai, kuomet gaminau plokšte ir programavau pirmą programa:

Matote PIR ir šviesos sensoriai dar ant PCB. Dabar, kuomet viskas sumontuota savo vietoje, veikimas kiek analogiškas tik pilnai užbaigtas. Priminsiu, kad programa buvo pilnai perrašyta ir dabar LED užsidega gana greitai, bet užgęsta labai lėtai:

Degimo trukmė dabar nureguliuota 2 minutės. Filmuke ties 1,30 matysite jau pradedanti užgesti apšvietimą kai kažkas sujuda. Tuomet apšvietimas dideliu greičiu vėl įžiebiamas ir laikas pratęsiamas dar porai minučių.

Apibendrinimas

Kaip matėte beveik visas projektas sudėtas ir panaudotos įrangos. LED lempos nuo senų DRL, maitinimas nuo seno spausdintuvo, jungiklis taip pat rastas ir nuardytas nuo kažkur. Naujas tik valdymo blokelis, bet ir jis toks menkas savo funkcionalumu. Programa taip pat ne pati gudriausia, bet daro tai ko reikia.

Ateityje planuoju dar grįžti prie projekto – noriu pridėti dar viena PIR sensorių, kad būtų aprėpiamas visas kambarys ir sumontuoti normalias LED juostas vietoje LED lempų. Dabar galima gyventi ir be to.

Resursai

Schema ir PCB Eagle formate: http://www.files.com/shared/5386eb87bd776/v3.zip

Arduino programa: http://www.files.com/shared/5386ebfd9e5bf/BadLight.zip

 


Veiksmai

Information

15 responses

29 05 2014
Darau, Blė

Najs. Nors aš naktinį apšvietimą daryčiau raudoną, kad naktinio regėjimo visai negadintų 🙂

29 05 2014
mindogas

Teisngai mastote kolega. Neatmetu galimybės kokias šviesiai raudonos ar gelsvos spalvos 12V LED juostas po lova sumesti ir taip gaučiau tolygų ir mielą akiai apšvietimą. Tik va tokiu atveju tektu investuoti, o dabar viskas nuo senų laikų..

29 05 2014
29 05 2014
mindogas

Tiesa pasakius iš kiniečiu nenoriu pirkti LED juostu. Kiek perku LED’us tiek būna bėdų. Dažniausia arba dalis tiesiog nedega, arba ryškumai skiriasi LED’u.. Žinoma galima rinktis geresni gamintoja, bet tada ir kaina blogesnė..

29 05 2014
Darau, Blė

Nu tai ten reikia pasižiūrėti, kas per atsiliepimai pas pardavėją ir panašiai… kiek padarydavau tyrimukų ir ką nors įsigydavau, tiek nė karto nesigailėjau… daugiau būdavo „human error“, kai tiesiog nepagalvoji, ką perki 😀

Norint labai kokybiškų juostų galima iš čia imt:
http://www.leds.de/en/LED-strips-modules-oxid-oxid-oxid-oxid-oxid/Deco-SMD-LED-strips/SMD-LED-strip-red-36x150mcd-120-12V.html

29 05 2014
mindogas

Na ateityje bus matyti. Dabar leisiu apsigulėti dalykams, Gal gerai ir su LED lempomis bus 🙂

29 05 2014
jarik

As is Satisled.com esu nusipikres kokiu 20metru led juostu (beje, emiau ir per ju parduotuve ir per ebay, kur jie tas pacias prekes parduoda pigiau) ir visai nebloga kokybe. Is tu 20metru gal kokie 3-5 gabaliukai po tris ledus siek tiek skiriasi savo spalva nuo kitu.
Beje, montuodamas tas juostas priejau isvados, kad jie tokia gera kaina isgauna tiesiog sulituodami kazkokius normaliu (skaityk brangesniu) juostu likucius, nes 5m ritejes juosta yra sulituota is 0.5-1.5m ilgio atkarpu. Na bet kai kaina kokius 5-10 kartu mazesne negu pas mus parduotuvese, tai man viskas tinka 🙂

30 05 2014
mindogas

Super. Aciu uz pasidalinta patirti 🙂 siaip planuose ateityje butu kokie 5m ne vandeniui atsparios juostos isigyti, tai matau kad tokia is viso piguva 🙂

1 06 2014
Evaldas

o kai smarkiai siūbuoja lova, nesuveikinėja? :)))

2 06 2014
mindogas

Turiu grazia zmona, tegu tik sviecia 🙂

6 06 2014
Ričardas

Ačiū už puikų projektą. Ką tik baigiau. Viskas jau po lova. Panaudojau baltų ledų juostą – tai nežinau ar nebus per daug šviesos naktį. Beliko padaryti mechanizmą, kad vaikui čiulptuką į burna iškritus įkištų 🙂

6 06 2014
mindogas

Jei ka sugalvosi su tuo ciulptuku tai pasidalink informacija 🙂

10 06 2014
Vaidas

Mikrovaldiklis iš esmės tokiam daiGtui nereikalingas – pats PIR jutiklis geba formuoti norimos trukmės signalą. Tiesa, nežinia ar konkrečiam modeliui galima pridėti fotorezistorių. Jei negalima – pirkti PIR sensorių su fotorezistoriumi. Pats su tokiu esu padaręs. Tiesa, norėjau ilgesnių laikų, tai kelis kondikus pakeisti teko.

O šiaip patiko idėja daryti pašvietimą po lova beigi naudoti raudoną lempą.

10 06 2014
mindogas

Nesąmonė, mikrokontroleris yra būtinas! Pabandyk dabar padaryti savo sistemai LED’ų palaipsninį uždegimą ir vėliau palaipsninį užgesinimą. Dar pagalvok kaip padaryti kad užgesinimas būtų pratemptas ilgesniam laikui. Dar padaryk kad galėtum reguliuoti uždegimo ir užgesinimo laikus, o jei to nesugalvosi ekprementu/matematikos butu keisk komponentus kol viska suregiliuosi kaip nori. Kol tu galvosi ir ekspermentuosi daug greičiau ir net pigiau gali padaryti tokia sistema kaip mano be jokiu žaidimų su kondensatoriais ir t.t. Vien tas faktas, kad prieš 2 metus pagamintas įrenginys be jokių elektronikos pakeitimų veikia dabar kaip aš noriu yra labai gerai, nes keisti tereikia programą.

25 06 2014
BedLight apšvietimo atnaujinimas | Mindaugas Markauskas

[…] čia atnaujinimas, labiau pabaigimas. Kadangi aprašius BedLight įrenginį susilaukiau krūvos patarimų LED juostų tema, taigi neatsispyriau kinų kainoms ir […]

Parašykite komentarą

Įveskite savo duomenis žemiau arba prisijunkite per socialinį tinklą:

WordPress.com Logo

Jūs komentuojate naudodamiesi savo WordPress.com paskyra. Atsijungti / Keisti )

Twitter picture

Jūs komentuojate naudodamiesi savo Twitter paskyra. Atsijungti / Keisti )

Facebook photo

Jūs komentuojate naudodamiesi savo Facebook paskyra. Atsijungti / Keisti )

Google+ photo

Jūs komentuojate naudodamiesi savo Google+ paskyra. Atsijungti / Keisti )

Connecting to %s




%d bloggers like this: