Sisukord:

Arduino/rakenduse juhitav laualamp: 6 sammu (piltidega)
Arduino/rakenduse juhitav laualamp: 6 sammu (piltidega)

Video: Arduino/rakenduse juhitav laualamp: 6 sammu (piltidega)

Video: Arduino/rakenduse juhitav laualamp: 6 sammu (piltidega)
Video: #15 HC 05 Bluetooth Modbus Android HMI | Внешний ПЛК Arduino 2024, November
Anonim
Image
Image
Arduino/rakendusega juhitav laualamp
Arduino/rakendusega juhitav laualamp
Arduino/rakendusega juhitav laualamp
Arduino/rakendusega juhitav laualamp

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.

Pilt
Pilt

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.

Pilt
Pilt

2. samm: elektroonika riistvara

Elektroonika riistvara
Elektroonika riistvara
Elektroonika riistvara
Elektroonika riistvara
Elektroonika riistvara
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.

Pilt
Pilt

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 leiutaja
Rakenduse leiutaja
Rakenduse leiutaja
Rakenduse leiutaja
Rakenduse leiutaja
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.

Pilt
Pilt
Pilt
Pilt
Pilt
Pilt

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.

Pilt
Pilt

See plokk saadab stringi (võimsus)? alati, kui toitenuppu vajutatakse.

Pilt
Pilt

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) ?.

Pilt
Pilt

Sarnased plokid nagu eespool, kuid heleduse reguleerimiseks. Kasutades seekord X -koordinaati ja erinevaid kordajaid, et määrata muutuja „Bright” väärtuseks 10–100.

Pilt
Pilt

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.

Pilt
Pilt

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.

Pilt
Pilt
Pilt
Pilt

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

Pilt
Pilt
Pilt
Pilt

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.

Pilt
Pilt

Neopikslid vajavad raamatukogu, nii et see on siin määratletud.

Pilt
Pilt
Pilt
Pilt

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.

Pilt
Pilt

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.

Pilt
Pilt

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 …

Pilt
Pilt

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.

Pilt
Pilt

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.

Pilt
Pilt
Pilt
Pilt

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….

Pilt
Pilt
Pilt
Pilt

Kui liigutate litrit, kutsutakse "MainProgram" värskendama heledust/värvitemperatuuri. Seda on kirjeldatud allpool.

Pilt
Pilt

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..

Pilt
Pilt

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.

Pilt
Pilt
Pilt
Pilt

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.

Pilt
Pilt
Pilt
Pilt

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.

Pilt
Pilt

Värvitemperatuuri reguleerimine on sarnane ülaltoodud protsessiga, kuid väärtus jääb seekord p ja p) vahele …

Pilt
Pilt

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 …

Pilt
Pilt

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).

Pilt
Pilt

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.

Pilt
Pilt
Pilt
Pilt
Pilt
Pilt

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 …

Pilt
Pilt
Pilt
Pilt

Samm: eluase

Eluase
Eluase
Eluase
Eluase
Eluase
Eluase
  1. 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.
  2. 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!
  3. Esialgne valamine pidi täitma vormi põhja. Pärast seda komplekti lisasin papist siseseina, et saaksin külgseinad valada.
  4. Ülemise osa loomiseks, et valgusdioodid sisse istuksid, lõikasin ja liimisin nurga all plasttoru/tassi. Ja jälle valati vaik sisse ja lasti tarduda.
  5. Nüüd oli korpus valmis, mul oli vaja mõned augud välja puurida ja korralikult liiva alla lasta.
  6. Kruntvärv kanti peale ja pihustati seejärel viimase pealmise värvikihiga.

6. etapp: kokkupanek/järeldus

Kokkupanek/järeldus
Kokkupanek/järeldus
Kokkupanek/järeldus
Kokkupanek/järeldus
Kokkupanek/järeldus
Kokkupanek/järeldus
Kokkupanek/järeldus
Kokkupanek/järeldus
  1. Korpusest lõigati välja pesa alalisvoolu pesa jaoks. Seejärel liimitakse tungraud sisse.
  2. Seejärel saab LED -plaadi ülemises osas alla keerata, juhtmed tuleb juhtida alumisse ossa.
  3. Seejärel keerati valgusdioodide ja alalisvoolu pistiku juhtmed õigetesse klemmliistudesse.
  4. Seejärel kruvitakse põhiplaat korpusesse
  5. Seejärel kruvitakse vineeritükk korpuse põhja katmiseks alla.
  6. 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: