Sisukord:
- Samm: saali efekti andurid
- 2. samm: elektroonika riistvara
- 3. samm: rakenduse leiutaja
- Samm: Arduino kood
- Samm: eluase
- 6. etapp: kokkupanek/järeldus
Video: Arduino/rakenduse juhitav laualamp: 6 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
Selle projekti jaoks tahtsin midagi, mis võimaldaks mul end rohkem elektroonika/tarkvara kohta õpetada, millesse ma pole veel päris jõudnud. Otsustasin, et selleks oleks hea platvorm.
Kujundus, mille ma välja pakkusin, oli mõeldud valgustamiseks, millel on värvi ja heleduse reguleerimine. Toote puhul reguleeritakse sooja kuni jaheda valge värvuse temperatuuri ja heledust nupu abil, mille asukoht ja suund muudavad neid iseseisvalt - üsna ainulaadne/lõbus suhtlus.
Lõpetasin ka rakenduse loomise (võin ka endale väljakutse esitada) nende reguleerimiseks, samuti lisasin lisafunktsioone mõne RGB LED -i juhtimiseks ja päikesetõusu äratuse seadmiseks. Päikesetõusu alarm suurendab järk -järgult heledust 30 minuti jooksul, et aidata teil ärgata.
Kuna see on minu esimene Arduino/rakenduse projekt, eeldan, et koodi tegemiseks on kindlasti paremaid viise, nii et minuga rahulikult! See töötab, nii et ma olen õnnelik. Kui teil on parandusettepanekuid jne, oleks hea kuulda..
Kõik selle projekti failid (arduino/rakenduse leiutaja kood, rakenduse graafika jne) ja rakenduse apk. leiate sellelt lingilt.
Olen selle osalenud Raspberry Pi ja FULL SPECTRUM LASER võistlustel, nii et kui arvate, et selle väärt hääl oleks tohutult teretulnud !!
Mida sa vajad….
Elec. Komponendid:
- Arduino Micro
- 12 lineaarse radiomeetrilise saali efekti andurit
- DC Jack
- 12V toide
- 2x 1W jahe valge LED (6000K)
- 2x 1W sooja valged LED -id (2800K)
- 4x Adafruit RGB neopiksleid
- Sparkfun Picobuck 350mA konstantse voolu draiver
- HC06 Bluetooth -moodul
- Plaadi prototüüp
- Klemmliistud
- Juhtmed
Materjalid:
- Vormide valmistamise materjalid (papp või silikoon jne)
- Polüuretaanvaluvaik
- Vineer
Kulumaterjalid:
- Jootma
- Pihustusvärv
- Liivapaber
- Segamistopsid/segistid
Tööriistad:
- Jootekolb
- Liimipüstol
- Tangid/kruvikeerajad/noad jne.
- Laserlõikur
Tarkvara:
- Arduino
- MIT App Inventor (tasuta veebipõhine)
- Photoshop või midagi rakenduse graafika loomiseks
Samm: saali efekti andurid
Tootekontrolli/interaktsiooni jaoks tahtsin välja mõelda midagi natuke teistsugust, mitte ainult valijat või midagi.
Pärast natuke uurimistööd erinevat tüüpi elektroonikakomponentide kohta leidsin lineaarsed radiomeetrilised saaliefekti andurid. Põhimõtteliselt on need andurid, mille väljundit mõjutavad magnetväljad. Tavaliselt on andurite väljund pool sisendpingest. Kuid kui magnet selle lähedale tuua, tõuseb väljund sisendpingele või langeb 0 V -ni (küllastuspiirid) sõltuvalt sellest, kas see on magneti põhja- või lõunapoolus.
Mõistsin, et saan seda kasutada, et saaksin ühe saali anduri abil juhtida kahte erinevat seadet - sündis „ketta” idee. Laserlõigatud ketta sisse on peidetud magnet ja see reguleeriks heledust või värvitemperatuuri sõltuvalt sellest, kumb ots anduritele oli suunatud. Ma lähen hiljem Arduino koodi sisse, kuid sisuliselt loen neid andureid ja otsin, kas väljund on tõusnud kõrgest päästikust kõrgemale või langenud alla madalale päästikule. Kasutan mitut saaliefekti andurit, et saaksin igaühele kaardistada konkreetse värvitemperatuuri ja heleduse väärtuse, mis käivituvad, kui libistate ketta ümber kaare.
2. samm: elektroonika riistvara
Selle projekti esimene samm oli elektroonika riistvara ühendamine. Valisin Arduino Micro kasutamise, kuna sellel on palju analooglugemisnõelu - see võimaldab mul kasutada mitut saaliefekti andurit, et anda seadete reguleerimiseks piisavalt eraldusvõimet. 12 V alalisvoolu toiteallikas on jagatud Arduino ja LED -draiveri toiteks.
Juhtkaar kasutab 11 saali andurit, veel 1 kasutatakse valguse väljalülitamiseks. Need ühendati tihvtidesse A0-> A5 ja 4, 6, 8, 9, 10, 12. Neil on ühine 5v ja maandusrööp/tihvt.
Kasutatud LED -id on 1W ja vajavad pidevat voolu. Kasutati Sparkfun PicoBucki, kuna see annab pideva 350 mA kuni 3 väljundkanalit. 12V toide on ühendatud draiverite Vin -tihvtidega. Juhil on väljundite PWM -i juhtimiseks sisendpoldid, need olid ühendatud Arduino tihvtidega 3 ja 5.
Seejärel ühendati Bluetooth -moodul. Bluetooth Rx-> Arduino Tx, Tx-> Rx ja 5v.round.
LED -id paigaldati eraldi plaadile. Kaks jahedat valget LED -i on ühendatud järjestikku, nagu ka soojad. Need ühendatakse draiveri väljundisse 1 ja 2. RGB LED -id on Adafruit Neopixels; need on aheldatavad moodulid, mille abil saate ühelt Arduino tihvtilt eraldi värvi ja heledust juhtida. Need ühendatakse tihvtiga 11 ja 5V/maanduspistikutega.
3. samm: rakenduse leiutaja
Rakenduse loomiseks kasutasin MIT App Inventorit, see on tasuta ja üsna lihtne õppida/kasutada. Esmalt pidin looma rakenduste ekraanid/graafika - seda saab teha Photoshopis jne. See muudab rakenduse App Inventor lihtsamaks, kui teil on kõik komponendid, mis moodustavad ekraanid eraldi piltidena/failidena.
App Inventoril on kaks vaadet: esiosa visuaalsete asjade jaoks on vahekaart "Kujundaja" ja koodi jaoks vahekaart "Blokid".
Vahekaardi „Disainer” abil ehitasin üles rakenduste ekraanid. Üks probleem, mille leidsin, on see, et bluetooth -komponent ei tööta mitmel ekraanil, nii et pärast tervitusekraani luuakse kõik teised (ühendus, RGB, värvitemperatuur, alarm) kõik samal ekraanil - kihid, mille ma sisse lülitan /väljas.
Peamised tööriistad, mida kasutasin, on paigutuse/joondamise ja lõuendi jaoks. Lõuend on puutetundlik ala, mida saate pildina näidata.
Kui visuaalid on seadistatud, on aeg lülituda vahekaardile „Blokid” ja kirjutada kood. Kirjeldan seda lühidalt, kuid see on ilmselt lihtsam, kui impordite minu faili App Inventorisse ja mängite enda ümber …
Need esimesed plokid on mõeldud ühenduse ekraanide jaoks. Selleks, et rakendus saaks proovida automaatselt ühendust luua Arduinose Bluetooth -mooduliga, loon ja seadistan muutuja oma HC06 aadressile. Ma kasutan taimerit taustapildi muutmiseks ühenduse loomise ajal. Kui ühendus on edukas, laadib see värvitemperatuuri ekraani üles. Kui bluetooth ei saa automaatselt ühendust, peate vajutama nuppu "ühenda seadmega". See avab loendi kõigist Bluetooth -seadmetest, mida teie telefon näeb. Käsk 'bluetoothclient1.connect' kasutab ühenduse loomiseks seadme aadressi, mille valite loendist.
Need plokid juhivad seda, mis juhtub iga menüünupu puudutamisel - vahetage RGB, värvitemperatuuri ja alarmi vahel. Puudutamisel lülitatakse rakendatavad visuaalsed kihid sisse ja välja. St, kui puudutate RGB menüünuppu, lülitab see nuppude lõuendi taustpildi tumedale ikoonile, lülitab sisse RGB ekraani ja teise välja.
Toite ja heleduse juhtimine on jagatud RGB ja värvitemperatuuri ekraanide vahel. Selleks, et Arduino teaks, milliseid LED -e juhtida, pean ma ütlema, milline ekraan on laaditud. Tekstistring vormingus (ekraanil)? saadetakse teie telefonide Bluetoothi kaudu käsuga BluetoothClient1. SendText.
See plokk saadab stringi (võimsus)? alati, kui toitenuppu vajutatakse.
Need plokid juhivad värvitemperatuuri reguleerimist. Lõuendit puudutades kasutatakse muutuja „cool” määramiseks teie puutepunkti Y -koordinaati. Y väärtust juhib lõuendi pikslite suurus, seega minu puhul väärtus vahemikus 0 kuni 450. Ma kasutan kordajat selle teisendamiseks kasutatavaks PWM väärtuseks (0–255). Seejärel saadan selle väärtusega stringi ja identifikaatori kujul (Tempvalue) ?.
Sarnased plokid nagu eespool, kuid heleduse reguleerimiseks. Kasutades seekord X -koordinaati ja erinevaid kordajaid, et määrata muutuja „Bright” väärtuseks 10–100.
Need plokid on mõeldud RGB juhtimiseks. Seal on käsk GetPixelColor, mida saab kasutada sõrme puudutatava piksli RGB väärtuse saamiseks. See väljastab väärtuse millegipärast 255 lisaga lõpus, nii et ma teen natuke tööd, et väärtus vormingusse saada (RGBredvalue.greenvalue.bluevalue.)? Seejärel saadetakse see uuesti Arduinole, kuid stringis on identifikaatorina RGB.
Järgmine plokkide jaotis on alarmi seadete jaoks. Esimene plokk juhib seda, mis juhtub, kui puudutate/lohistate päikest üles ja alla. Jällegi kasutatakse käske „hangi praegused X ja Y”, et saada väärtus, kus teie sõrm asub, ja muuta taustapilti sõltuvalt päikese kõrgusest. Päikeseasend juhib ka seda, kas äratus on lubatud või keelatud, see saadetakse Bluetoothi kaudu.
Kui puudutate või lõpetate päikese liigutamise, kuvab see ajavalija, mis võimaldab teil määrata äratusaja. Selle järgmise ploki põhiosa kasutab praegust aega, et välja selgitada, mitu millisekundit on kuni häire seadistuseni. Seejärel saadetakse see väärtus Arduinole
Järgmises etapis käsitlen, kuidas Arduino stringe loeb ja kasutab …
Samm: Arduino kood
Nagu rakenduse koodi puhul, katan selle lühidalt….
Esiteks seadistan kõik oma muutujad, määrates andurid ja LED -id õigetele tihvtidele. Halli efekti andurite väljundit loetakse funktsiooni analogRead abil, andes väärtuseks 0 kuni 1023. Nagu eelnevalt kirjeldatud, väljastab see poole, kui magneteid pole, seega umbes 500. Kasutan madala ja kõrge päästiku muutujaid, et saaksin hõlpsalt reguleerige, kui teab, et litter on anduri kohal.
Neopikslid vajavad raamatukogu, nii et see on siin määratletud.
Tühjuseadistus käivitab seeriad, Micro jaoks kasutavad Rx/Tx -nööpnõelad (bluetooth) Serial1 -d. Seejärel seadistatakse tihvtid sisenditeks või väljunditeks ja LED -id kustuvad.
Nüüd on see peamine silmus…
See esimene jaotis kontrollib, kas rakendusest võetakse vastu andmeid. Serial1.available () loeb seeriat ja saab stringi baitide arvu. Kui see on> 0, tean, et andmed on saabuvad.
Kui mäletate, lõpevad kõik rakendusest saadetud stringid küsimärgiga…. st (Bright100)?
Kasutan funktsiooni.readStringUntil, et lugeda seeriaandmeid kuni küsimärgini (Bright100) ja seada sellele muutuja BTstring. Ma kontrollin, kas BTstring lõpeb tähega ), et veenduda, et kõik käsud on vastu võetud. Kui on, siis kutsutakse BluetoothProgrammi silmust … seda on kirjeldatud allpool.
See järgmine bitt juhib päikesetõusu häiret. Põhimõtteliselt, kui alarm on sisse lülitatud ja kellaaeg on õige, hakkab see LED -e tuhmuma. Tänu inimsilmale, kes tajub valgust logaritmiliselt, on parem teha mis tahes LED -tuhmumist üles/alla eksponentsiaalse kõveraga, mitte lineaarselt. Seega juhib võrrand PWM väärtusi …
Selleks, et litter ei segaks rakenduse juhtimist, deaktiveeritakse see rakenduse kasutamisel. Ketta taasaktiveerimiseks peate selle tootest 5 sekundiks eemaldama. See koodibitt kontrollib kõigepealt, kas kõik andurid väljastavad püsiseisundi väärtust (ilma magnetita), ja käivitab seejärel taimeri. Kui 5 sekundit on möödas, määratakse BTinControli muutuja väärtuseks vale.
Poodi kood praegu.. Kõigepealt tuleb andurid lugeda.
Kui tuli on praegu välja lülitatud, kontrollib see, kas mõni andur on päästikupunktide kohal või all, st litter on kaarele asetatud. Kui see nii on, kustutab see valged LED -id teie viimase seadistuseni, olenemata sellest, kuhu te selle asetate.
Et hoida LED -id viimastel seadistustel, selle asemel, et värskendada väärtusi, mis on seotud mis tahes andurite käivitamisega, on muutuja MovedSinceStandby väärtuseks määratud vale. See järgmine koodibitt kontrollib põhimõtteliselt, kas olete nihutanud litri algsest asendist määratud summa võrra….
Kui liigutate litrit, kutsutakse "MainProgram" värskendama heledust/värvitemperatuuri. Seda on kirjeldatud allpool.
Selle põhiahela viimane bitt kontrollib, kas litter on ooterežiimi dokki tagasi asetatud - kas andur 12 loeb käivituspunktist kõrgemat/madalamat väärtust. Kui jah, siis kustub LED tagasi..
Bluetoothi silmus:
Nagu eespool kirjeldatud, kui andmeid Bluetoothi kaudu vastu võetakse, loetakse string välja. Nüüd peame kontrollima, mida see string ütleb …
Kõigi stringidega peale heleduse, värvitemperatuuri ja RGB on üsna lihtne toime tulla. Kontrollite, kas BTstring on võrdne rakendusest saadetud tekstiga.
Kui mäletate, saadab see rakenduses ekraanide vahetamisel bluetooth -käsu. Siin esitame küsimuse ja seadistame mõned muutujad tõeseks või valeks, et saaksime teada, millisel ekraanil olete.
Märkus iga jaotise lõpus määrasin BTinControli muutuja tõeseks ja tühjendasin BTstring väärtuse.
Kui puudutate rakenduses toitenuppu, kaovad LED -id üles või alla. Ülaltoodud muutujaid, mille ekraanil olete, kasutatakse selleks, et otsustada, kas juhtida RGB või valgeid LED -e.
Heleduse, värvitemperatuuri ja RGB jaoks pean stringe lugema veidi teistmoodi. Kuna stringi numbriosa muutub, küsin, kas string algab ühe identifikaatoriga, mitte täisstringiga, nii et lihtsalt (Bright here..
Pean nüüd stringist eraldama tegeliku heleduse väärtuse. Rakendusest saadetud stringi vorming on (Brightvalue), seega tean ma, et heleduse väärtus jääb „t” ja „)” vahele. "T" positsioon jääb konstantseks, see on alati stringi seitsmes märk. Kuid kuna heleduse väärtus võib olla vahemikus 10 kuni 100, muutub ')' asukoht. Kasutan käsku.indexOf, et välja selgitada, kus on „)”, mis tähemärk see on ja seejärel saan käsu.substring abil lugeda 7. märgi ja märgi „)” vahelise stringi. See jätab mulle ainult heleduse väärtuse, mida saan kasutada RGB või valge LED -i reguleerimiseks sõltuvalt ekraanist.
Värvitemperatuuri reguleerimine on sarnane ülaltoodud protsessiga, kuid väärtus jääb seekord p ja p) vahele …
RGB reguleerimiseks on meil stringist välja võtta kolm väärtust, kuid see on sarnane protsess. Rakendusest saame stringid kujul (RGBvalue.value.value)
Nii et ma tean, et punane väärtus jääb „B” ja esimese punkti vahele. Roheline väärtus jääb esimese ja teise punkti vahele ning sinine väärtus teise punkti ja ')' vahele.
Kui meil on väärtused, seatakse neopikslid uuele värvile …
Siin kontrollime, kas alarm on lubatud või keelatud. Kui äratuse aega muudetakse, saadetakse meile string kuni millisekundite arvuga nüüdsest kuni häireni. Jällegi ekstraheeritakse see väärtus stringist ja selleks, et saaksime kontrollida, kas on päikesetõusu algusaeg, peame muutujaks määrama praeguse aja (millis).
Litri juhtimine:
Nagu eespool kirjeldatud, kui ketas (magnet) on ühes suunas ülespoole, juhib see halli anduri väljundi madalale päästikule ja teisel viisil kõrge päästiku kohale.
See võimaldab samal kaarel reguleerida nii heledust kui ka värvitemperatuuri.
Andurite väärtused loetakse. Kui mõni neist on madalam kui käivitusväärtus, reguleerime värvitemperatuuri. Kaareala all on 11 andurit, mis väljuvad omakorda kui päästikupunkt allapoole, kui ketas neist üle liigub. Igal anduril on PWM väärtus jahedate ja soojade LED -ide vastu, alustades andurist 1 100% soojas, 0% jahedas ja töötades kuni 11 -ni 0% sooja, 100% jaheda temperatuurini.
Heleduse juhtimine toimub samamoodi.. kontrollides, kas andurite väljundid on seekord kõrgest päästikust kõrgemal ja andes igale andurile heleduse kaaluväärtuse.
See heleduse kaalumine korrutatakse seejärel värvitemperatuuri väärtusega, et saada üldine väljundväärtus. Võimaldab teil seada mis tahes värvitemperatuuri mis tahes heledusele …
Samm: eluase
- Alustasin sellest, et tegin papist vormi korpuse alumise osa jaoks. Juhtimisala süvendite loomiseks lasin kaarekujuliselt lõigata vineerist laseritüki ja kasutasin ooterežiimi doki jaoks 5p münti. Need liimiti pappvormi külge, pöörates tähelepanu sellele, et need oleksid õiges asendis, mis vastaks saali efekti anduritele.
- Järgmine oli polüuretaanvaigu segamine. Minu kasutusel oleval kraamil on lihtne 1: 1 suhe ja see kõveneb umbes 20 minuti jooksul.. nii et peate töötama üsna kiiresti!
- Esialgne valamine pidi täitma vormi põhja. Pärast seda komplekti lisasin papist siseseina, et saaksin külgseinad valada.
- Ülemise osa loomiseks, et valgusdioodid sisse istuksid, lõikasin ja liimisin nurga all plasttoru/tassi. Ja jälle valati vaik sisse ja lasti tarduda.
- Nüüd oli korpus valmis, mul oli vaja mõned augud välja puurida ja korralikult liiva alla lasta.
- Kruntvärv kanti peale ja pihustati seejärel viimase pealmise värvikihiga.
6. etapp: kokkupanek/järeldus
- Korpusest lõigati välja pesa alalisvoolu pesa jaoks. Seejärel liimitakse tungraud sisse.
- Seejärel saab LED -plaadi ülemises osas alla keerata, juhtmed tuleb juhtida alumisse ossa.
- Seejärel keerati valgusdioodide ja alalisvoolu pistiku juhtmed õigetesse klemmliistudesse.
- Seejärel kruvitakse põhiplaat korpusesse
- Seejärel kruvitakse vineeritükk korpuse põhja katmiseks alla.
- Viimane asi on liimida "puck" kokku, veendudes, et magneti poolused on orienteeritud õigele heleduse või värvi temperatuuri otsakorgile.
Üldiselt töötab valgus päris hästi! Tarkvaras on mõned vead, mida siluda ja RGB LED -id võivad olla heledamad. Võin lisada ka ümbritseva valguse anduri, et automaatselt muuta värvitemperatuuri, alustades päeval „jahedaks“ja öösel soojaks.
Tervist lugemiseks!
Soovitan:
Rakenduse juhitav värvipilv: 7 sammu (piltidega)
Rakenduse juhitav värvipilv: Tere, selles juhendis näitan teile, kuidas ehitada ruumi valgustus kruusateede võrgust. Kogu asja saab juhtida WLAN -i kaudu rakendusega. Http://youtu.be/NQPSnQKSuo Kuid lõpuks saate selle targaks teha
ANDROIDI RAKENDUSE KONTROLLITUD LIHTNE RGB LED -LAUALAMP: 5 sammu
ANDROIDI RAKENDUSE KONTROLLITUD LIHTNE RGB LED -LAUALAMP: nii et selles õpetuses näitan teile, kuidas juhtida rgb led -i android -nutitelefoniga. RGB -ledid töötavad välja mis tahes tooni põhivärvide, st punase, rohelise ja sinise kombinatsiooni põhikontseptsiooni kallal. Kõigil värvidel on elementaarsed värvid
Walking Strandbeest, Java/Python ja rakenduse juhitav: 4 sammu (koos piltidega)
Walking Strandbeest, Java/Python ja rakenduse kontroll: see Strandbeesti komplekt on isetegemistöö, mis põhineb Theo Janseni leiutatud Strandbeestil. Geniaalsest mehaanilisest disainist hämmastunud, soovin varustada selle täieliku manööverdusvõimega ja järgmisena arvutiluurega. Selles juhendis töötame esimese pa
LED -pikslite kunstiraam Retro Arcade Artiga, rakenduse juhitav: 7 sammu (piltidega)
LED -pikslite kunstiraam koos retro -arkaadikunstiga, rakenduse juhitud: MAKE RAKENDUSEGA JUHTITAV LED -KUJU RAAM 1024 LED -iga, mis kuvavad RETRO 80 -ndate arkaadmängude kunstiosad PIXEL -i tegijate komplekt - 59 dollarit tolli paks - läbipaistev kerge suits kraanplastist
RC Car Hack - Bluetoothi abil juhitav Androidi rakenduse kaudu: 3 sammu (koos piltidega)
RC Car Hack - Bluetoothi kaudu juhitav Android -rakenduse kaudu: olen kindel, et igaüks teist leiab kodus kasutamata RC -auto. See juhend aitab teil oma vana RC auto originaalkingituseks muuta :) Kuna minu käes olnud RC auto oli väikese suurusega, olen valinud Arduino Pro Mini peamiseks kontrolleriks. Teine