Kazalo:

Arduino/namizna luč z nadzorom aplikacije: 6 korakov (s slikami)
Arduino/namizna luč z nadzorom aplikacije: 6 korakov (s slikami)

Video: Arduino/namizna luč z nadzorom aplikacije: 6 korakov (s slikami)

Video: Arduino/namizna luč z nadzorom aplikacije: 6 korakov (s slikami)
Video: Home Automation: 12V Relay with LED Display Delay 0.1 seconds to 999 seconds Timer module P1 to P4 2024, November
Anonim
Image
Image
Arduino/namizna luč z nadzorom aplikacije
Arduino/namizna luč z nadzorom aplikacije
Arduino/namizna luč z nadzorom aplikacije
Arduino/namizna luč z nadzorom aplikacije

Za ta projekt sem si želel nekaj, kar bi mi omogočilo, da se naučim več o elektroniki/programski opremi, nekaj, česar se v resnici še nisem spustil. Odločil sem se, da bi bila luč dobra platforma za to.

Zasnova, ki sem jo pripravila, je bila za uplighter, ki ima prilagoditev barve in svetlosti. Na izdelku toplo in hladno belo barvno temperaturo in svetlost nadzirata s pomočjo "ploščice", njen položaj in usmeritev pa se spreminjata neodvisno - precej edinstvena/zabavna interakcija.

Slika
Slika

Na koncu sem ustvaril tudi aplikacijo (lahko se tudi izzovem), da jih prilagodim, in dodal dodatno funkcijo za nadzor nekaterih LED RGB in nastavil alarm ob sončnem vzhodu. Alarm ob sončnem vzhodu postopoma poveča svetlost za 30 minut, da se zbudite.

Ker je to moj prvi projekt Arduino/App, predvidevam, da bodo zagotovo obstajali boljši načini za izdelavo kode, zato mi olajšajte! Deluje, zato sem zadovoljen. Če imate predloge o izboljšavah itd. Bi bilo dobro slišati..

Vse datoteke tega projekta (koda arduino/izumitelj aplikacije, grafika aplikacije itd.) In apk aplikacije. najdete na tej povezavi.

To sem vpisal v natečaje Raspberry Pi in FULL SPECTRUM LASER, zato mislite, da je vreden glasu, bi bil zelo cenjen !!

Kaj rabiš….

Elec. Sestavine:

  • Arduino Micro
  • 12 linearnih radiometričnih senzorjev Hall učinka
  • DC Jack
  • 12V napajalnik
  • 2x 1W hladne bele LED diode (6000K)
  • 2x 1W topla bela LED dioda (2800K)
  • 4x Adapruit RGB neopikslov
  • Sparkfun Picobuck 350mA gonilnik konstantnega toka
  • Modul Bluetooth HC06
  • Prototipna plošča
  • Terminalni bloki
  • Žice

Materiali:

  • Materiali za izdelavo kalupov (karton ali silikon itd.)
  • Poliuretanska smola za litje
  • Vezan les

Potrošni material:

  • Spajkanje
  • Barva v spreju
  • Brusni papir
  • Skodelice za mešanje/mešalniki

Orodja:

  • Spajkalnik
  • Pištola za lepilo
  • Klešče/izvijači/noži itd.
  • Laserski rezalnik

Programska oprema:

  • Arduino
  • MIT App Inventor (brezplačno na spletu)
  • Photoshop ali kaj podobnega za ustvarjanje grafike aplikacije

1. korak: Senzorji Hallovih učinkov

Za nadzor/interakcijo izdelka sem želel priti do nečesa drugačnega, ne le klicanja ali česa podobnega.

Po kratkem raziskovanju različnih vrst elektronskih komponent sem odkril linearne radiometrične senzorje za efekt Hall. To so v bistvu senzorji, na izhod vplivajo magnetna polja. Običajno je izhod senzorjev polovica vhodne napetosti. Ko pa magnet približamo, se bo izhod dvignil na vhodno napetost ali pa padel na 0V (meje nasičenosti), odvisno od tega, ali gre za severni ali južni pol magneta.

Spoznal sem, da bi to lahko uporabil, da bi lahko nadzoroval dve različni nastavitvi na enem samem senzorju hale - rodila se je ideja o "ploščku". V lasersko izrezanem ključu je skrit magnet, ki bo nadzoroval svetlost ali barvno temperaturo, odvisno od tega, kateri konec je obrnjen proti senzorjem. Kasneje grem v kodo Arduino, vendar v bistvu preberem te senzorje in iščem, ali se je izhod dvignil nad "visok sprožilec" ali padel pod "nizek sprožilec". Uporabljam več senzorjev Hallovih efektov, ki mi omogočajo, da na vsako preslikam določeno barvno temperaturo in vrednost svetlosti, ki se sprožita, ko drsite ploščico po loku.

Slika
Slika

2. korak: Strojna oprema za elektroniko

Strojna oprema za elektroniko
Strojna oprema za elektroniko
Strojna oprema za elektroniko
Strojna oprema za elektroniko
Strojna oprema za elektroniko
Strojna oprema za elektroniko

Prvi korak tega projekta je bil povezati elektronsko strojno opremo. Odločil sem se, da bom uporabil Arduino Micro, saj ima veliko število analognih zatičev za branje - kar mi omogoča uporabo več senzorjev za efekte dvorane, da dobim dovolj ločljivosti za prilagoditev nastavitev. Napajanje 12V DC je razdeljeno med napajanje gonilnika Arduino in LED.

Krmilni lok uporablja 11 halnih senzorjev, drugi 1 pa za izklop luči. Ti so bili povezani v zatiče A0-> A5 in 4, 6, 8, 9, 10, 12. Imajo skupno 5v in ozemljitev/zatič.

LED diode, ki sem jih uporabil, so 1 W in potrebujejo gonilnik konstantnega toka. Uporabljen je bil Sparkfun PicoBuck, ki oddaja konstantnih 350 mA do 3 izhodnim kanalom. Napajanje 12V je priključeno na gonilnike Vin pin. Gonilnik ima vhodne zatiče za krmiljenje PWM izhodov, ti so bili priključeni na nožice 3 in 5 Arduina.

Modul bluetooth je bil nato priključen. Bluetooth Rx-> Arduino Tx, Tx-> Rx in 5v.ground.

Slika
Slika

LED diode so bile nameščene na ločeni plošči. Dve hladni beli LED diodi sta povezani zaporedoma, prav tako topli. Ti se povežejo v izhod 1 in 2 gonilnika. LED diode RGB so Adapruit Neopixel; to so verižni moduli, s katerimi lahko posamezno upravljate barvo in svetlost z enega zatiča Arduino. Ti se povežejo na pin 11 in 5V/ozemljitvene nožice.

3. korak: App Inventor

App Inventor
App Inventor
App Inventor
App Inventor
App Inventor
App Inventor

Za ustvarjanje aplikacije sem uporabil aplikacijo MIT App Inventor, ki je brezplačna in precej enostavna za učenje/uporabo. Najprej sem moral ustvariti zaslone/grafike aplikacij - to je mogoče storiti v Photoshopu itd. V App Inventorju je lažje, če imate vse komponente, ki sestavljajo zaslone kot ločene slike/datoteke.

App Inventor ima dva pogleda, tu sta zavihek »Oblikovalec« za vizualne vsebine sprednjega dela in zavihek »Bloki« za kodo.

Z zavihkom »Oblikovalec« sem ustvaril zaslone aplikacij. Eno od težav, ki sem jih odkril, je, da komponenta bluetooth ne deluje na več zaslonih, zato se po pozdravnem zaslonu vse ostale (povezava, RGB, barvna temperatura, alarm) ustvarijo na istem zaslonu - učinkovito plasti, ki jih vklopim /izklopljeno.

Glavna orodja, ki sem jih uporabil, so za postavitev/poravnavo in platno. Platno je območje, občutljivo na dotik, ki ga lahko prikažete kot sliko.

Ko so vizualni elementi nastavljeni, je čas, da preklopite na zavihek »Bloki« in napišete kodo. Na kratko bom opisal, vendar je verjetno lažje, če uvozite mojo datoteko v App Inventor in se igrate okoli sebe …

Ti prvi bloki so za povezovalne zaslone. Če želite, da se aplikacija poskuša samodejno povezati z modulom Bluetooth Arduinos, ustvarim in spremenljivko nastavim na naslov svojega HC06. Med povezovanjem spreminjam sliko ozadja s časovnikom. Če je povezava uspešna, se naloži zaslon z barvno temperaturo. Če se bluetooth ne uspe samodejno povezati, morate pritisniti gumb »poveži se z napravo«. To bo prikazalo seznam vseh naprav Bluetooth, ki jih lahko vidi vaš telefon. Ukaz 'bluetoothclient1.connect' za povezavo uporablja naslov naprave, ki ga izberete s tega seznama.

Slika
Slika
Slika
Slika
Slika
Slika

Ti bloki nadzorujejo, kaj se zgodi, ko se dotaknete vsake od tipk menija - preklopite med RGB, barvno temperaturo in alarmom. Ko se dotaknete, se ustrezni vizualni sloji vklopijo in izklopijo. Ko pritisnete gumb menija RGB, preklopi sliko ozadja gumbov na temno ikono, vklopi zaslon RGB, drugo pa izklopi.

Nadzor moči in svetlosti je razdeljen med zaslone RGB in barvno temperaturo. Da bi Arduino vedel, katere LED diode nadzoruje, mu moram povedati, kateri zaslon je naložen. Besedilni niz v obliki (zaslon)? pošlje vaš telefon bluetooth z ukazom BluetoothClient1. SendText.

Slika
Slika

Ta blok pošilja niz (Power)? vsakič, ko pritisnete gumb za vklop.

Slika
Slika

Ti bloki nadzorujejo nastavitev barvne temperature. Ko se dotaknete platna, se koordinata Y vaše dotične točke uporabi za nastavitev spremenljivke 'kul'. Vrednost Y poganja velikost slikovnih pik platna, zato je v mojem primeru vrednost med 0 in 450. Uporabljam množitelj, da to pretvorim v uporabno vrednost PWM (0-255). Nato pošljem niz s to vrednostjo in identifikatorjem v obliki (Tempvalue) ?.

Slika
Slika

Podobni bloki kot zgoraj, vendar za nadzor svetlosti. Tokrat z uporabo koordinate X in različnih množiteljev nastavite spremenljivko 'Bright' na vrednost med 10 in 100.

Slika
Slika

Ti bloki so za nadzor RGB. Obstaja ukaz, imenovan "GetPixelColor", ki ga lahko uporabite za pridobivanje vrednosti RGB pikslov, s katerimi se dotika vaš prst. Iz nekega razloga prikaže vrednost z dodatnimi 255 na koncu, zato se malo potrudim, da vrednost dobim v formatu (RGBredvalue.greenvalue.bluevalue.)? To se nato ponovno pošlje v Arduino, vendar z RGB kot identifikatorjem v nizu.

Slika
Slika

Naslednji del blokov je namenjen nastavitvam alarma. Prvi blok nadzoruje, kaj se zgodi, ko se dotaknete/povlečete sonce gor in dol. Ponovno se z ukazi 'get current X and Y' dobi vrednost, kje je vaš prst, in spremeni sliko ozadja glede na višino sonca. Položaj sonca vodi tudi, ali je alarm vklopljen ali onemogočen, to se pošlje prek bluetootha.

Slika
Slika
Slika
Slika

Ko tapnete ali končate premikanje sonca, se prikaže izbirnik časa, ki vam omogoča nastavitev časa alarma. Glavni del naslednjega bloka je uporaba trenutnega časa za določitev, koliko milisekund je do nastavitve alarma. Ta vrednost se nato pošlje v Arduino

Slika
Slika
Slika
Slika

V naslednjem koraku obravnavam, kako Arduino bere in uporablja nize …

4. korak: Arduino koda

Tako kot pri kodi aplikacije bom to na kratko opisal….

Najprej nastavim vse svoje spremenljivke, senzorje in LED dodelim ustreznim zatičem. Izhod iz senzorjev Hallovega učinka bo odčitan s funkcijo analogRead, kar daje vrednost med 0 in 1023. Kot je že opisano, izloči polovico, ko ni magnetov, torej okoli 500. Uporabljam nizke in visoke sprožilne spremenljivke, ki mi omogočajo enostavno prilagodite, ko ve, da je ploščica nad senzorjem.

Slika
Slika

Za neopiksele je potrebna knjižnica, ki je tukaj definirana.

Slika
Slika
Slika
Slika

Nastavitev void zažene serijske publikacije, za Micro Rx/Tx nožice (bluetooth) uporabite Serial1.. Zatiči so nato nastavljeni na vhode ali izhode, LED -diode pa so izklopljene.

Slika
Slika

Zdaj je to glavna zanka …

Ta prvi razdelek preverja, ali so iz aplikacije prejeti kakršni koli podatki. Serial1.available () bere serijsko številko in dobi število bajtov v nizu. Če je to> 0, poznam vhodne podatke.

Če se spomnite, se vsi nizi, ki jih pošljem iz aplikacije, končajo z vprašajem … t.j. (Bright100)?

Funkcijo.readStringUntil uporabljam za branje serijskih podatkov do vprašaja (Bright100) in na to nastavim spremenljivko BTstring. Preverim, ali se BTstring konča z ')', da se prepričam, ali so prejeti popolni ukazi. Če so, se pokliče zanka programa Bluetooth… to je opisano spodaj.

Slika
Slika

Ta naslednji bit nadzoruje alarm ob sončnem vzhodu. V bistvu, če je alarm vklopljen in je pravi čas, bo začel utripati LED. Zaradi človeškega očesa, ki logaritmično zaznava svetlobo, je bolje narediti kakršno koli LED bledenje navzgor/navzdol z eksponentno krivuljo in ne linearno. Zato enačba poganja vrednosti PWM …

Slika
Slika

Da bi preprečili, da bi plošček motil nadzor aplikacije, se pri uporabi aplikacije deaktivira. Če želite ploščico znova aktivirati, jo morate za 5 sekund premakniti z izdelka. Ta del kode najprej preveri, ali vsi senzorji oddajajo vrednost v stanju dinamičnega ravnovesja (brez magneta), nato pa zažene časovnik. Po 5 sekundah je spremenljivka BTinControl nastavljena na false.

Slika
Slika

Koda za ploščico. Najprej je treba prebrati senzorje.

Če je lučka trenutno izklopljena, bo preverila, ali je kateri od senzorjev nad ali pod sprožilnimi točkami, torej je ploščica postavljena na lok. Če je tako, bodo bele LED diode zbledele do zadnje nastavitve, ne glede na to, kje jih postavite.

Slika
Slika
Slika
Slika

Če želite, da so LED -lučke nastavljene na zadnjo nastavitev, namesto da se posodabljajo na vrednosti, povezane s senzorji, ki jih sprožijo, je spremenljivka MovedSinceStandby nastavljena na false. Ta naslednji del kode v bistvu preveri, ali ste plošček premaknili iz začetnega položaja za nastavljeno količino …

Slika
Slika
Slika
Slika

Če premikate ploščico, se pokliče 'MainProgram', ki posodobi svetlost/barvno temperaturo. To je opisano spodaj.

Slika
Slika

Zadnji bit v tej glavni zanki preveri, ali je plošček ponovno postavljen na priklopno postajo - senzor 12 bere vrednost nad/pod sprožilno točko. Če je tako, LED spet ugasne.

Slika
Slika

Bluetooth zanka:

Kot je opisano zgoraj, ko se podatki prejemajo prek bluetootha, se niz prebere. Zdaj moramo preveriti, kaj pravi ta niz …

Z vsemi nizami, razen svetlosti, barvne temperature in RGB, je precej enostavno ravnati. Preverite, ali je BTstring enak besedilu, poslanemu iz aplikacije.

Če se spomnite, bo vsakič, ko spremenite zaslone v aplikaciji, poslal ukaz bluetooth. Tu sprašujemo o tem in nekatere spremenljivke nastavimo na true ali false, da vemo, na katerem zaslonu ste.

Opomba Na koncu vsakega razdelka spremenljivko BTinControl nastavim na true in počistim vrednost BTstring.

Slika
Slika
Slika
Slika

Ko se v aplikaciji dotaknete gumba za vklop, bodo svetleče diode gor ali dol zbledele. Zgornje spremenljivke, na katerih zaslonu se nahajate, se uporabljajo za odločanje, ali naj nadzoruje RGB ali bela LED dioda.

Slika
Slika
Slika
Slika

Za svetlost, barvno temperaturo in RGB moram brati strune na nekoliko drugačen način. Ker se bo številčni del niza spreminjal, se sprašujem, ali se niz začne z enim od identifikatorjev in ne s celotnim nizom, zato samo (Svetlo tukaj..

Zdaj moram ločiti dejansko vrednost svetlosti od niza. Oblika niza, poslanega iz aplikacije, je (Brightvalue), zato vem, da bo vrednost svetlosti med "t" in ")". Položaj 't' bo ostal stalen, vedno bo sedmi znak v nizu. Ker pa je vrednost svetlosti lahko med 10 in 100, se bo položaj ')' spremenil. Z ukazom.indexOf določim, kje je ')', kateri znak je, nato pa lahko z ukazom.substring preberem niz med 7. znakom in položajem znaka ')'. To mi daje samo vrednost svetlosti, s katero lahko prilagodim RGB ali bele LED glede na zaslon.

Slika
Slika

Prilagajanje barvne temperature je podoben zgornjemu, vendar bo tokrat vrednost med 'p' in ')' …

Slika
Slika

Za prilagoditev RGB moramo iz niza izvleči tri vrednosti, vendar je spet podoben postopek. Iz aplikacije prejemamo nize v obliki (RGBvalue.value.value)

Zato vem, da bo rdeča vrednost med "B" in prvo točko. Zelena vrednost je med 1./2. točko, modra pa med 2. točko in ')'.

Ko imamo vrednosti, so neopixli nastavljeni na novo barvo …

Slika
Slika

Tu preverimo, ali je alarm vklopljen ali onemogočen. Če spremenite čas alarma, bomo poslali niz s številom milisekund od zdaj do alarma. Ta vrednost se spet izvleče iz niza in da lahko preverimo, ali je čas za začetek sončnega vzhoda, moramo spremenljivko nastaviti na trenutni čas (milis).

Slika
Slika

Kontrolniki za ploščad:

Kot je opisano že prej, če je ploščica (magnet) v eni smeri navzgor, bo izhod halovega senzorja potisnil pod spodnji sprožilec, v drugo smer pa navzgor nad visokim sprožilcem.

To omogoča nadzor svetlosti in barvne temperature na istem loku.

Vrednosti senzorjev se odčitajo. Če je katera od njih manjša od nizke sprožilne vrednosti, prilagajamo barvno temperaturo. Pod oblokom je 11 senzorjev, katerih izhodi bodo med premikanjem ploščice padli pod sprožilno točko. Vsak senzor ima vrednost PWM za hladne in tople LED diode, začenši s senzorjem 1 pri 100% toplem, 0% hladnem in delujočim do 11. pri 0% toplem, 100% hladnem.

Slika
Slika
Slika
Slika
Slika
Slika

Nadzor svetlosti se izvede na enak način.. preverjanje, ali so izhodi senzorjev tokrat nad visokim sprožilcem, in vsakemu senzorju dajte vrednost tehtanja svetlosti.

To ponderiranje svetlosti se nato pomnoži z vrednostjo barvne temp, da se dobi celotna izhodna vrednost. Omogoča vam, da poljubno barvno temperaturo nastavite na poljubno svetlost …

Slika
Slika
Slika
Slika

5. korak: Stanovanje

Nastanitev
Nastanitev
Nastanitev
Nastanitev
Nastanitev
Nastanitev
  1. Začel sem z izdelavo kalupa iz kartona za spodnji del ohišja. Za izdelavo vdolbin za kontrolno območje sem kos vezanega vezanega laserja izrezal v obliko loka in uporabil kovanec za 5p za priklopno postajo. Ti so bili zlepljeni na kartonski kalup, pri čemer smo bili pozorni, da so v pravilnem položaju, ki bi bil poravnan s senzorji Hallovega učinka.
  2. Sledilo je mešanje poliuretanske smole. Stvari, ki jih uporabljam, imajo preprosto razmerje 1: 1 in se pozdravijo v približno 20 minutah … zato je treba delati dokaj hitro!
  3. Začetno vlivanje je bilo zapolniti dno kalupa. Po tem kompletu sem dodal notranjo steno iz kartona, da sem lahko prelil stranske stene.
  4. Da bi ustvarili zgornji del, v katerega bi sedele LED diode, sem pod kotom izrezala in prilepila plastično cev/skodelico. In spet smo vlili smolo in pustili, da se strdi.
  5. Zdaj je bilo ohišje vse pripravljeno. Izkopati sem moral nekaj lukenj in mu dati dober pesek.
  6. Nanesen je bil temeljni premaz in nato poškropljen s končnim premazom barve.

6. korak: Montaža/zaključek

Sestava/zaključek
Sestava/zaključek
Sestava/zaključek
Sestava/zaključek
Sestava/zaključek
Sestava/zaključek
Sestava/zaključek
Sestava/zaključek
  1. Iz ohišja je bila izrezana reža za enosmerni priključek. Nato je vtič pritrjen.
  2. LED ploščo lahko nato privijete v zgornjem delu, žice pa napeljete do spodnjega dela.
  3. Žice iz vtičnic LED in enosmernega toka so bile nato privijačene v ustrezne priključne bloke.
  4. Glavna plošča se nato privije v ohišje
  5. Kos vezanega lesa se nato privije, da pokrije dno ohišja.
  6. Zadnja stvar je, da zlepite "ploščico" skupaj, pri čemer pazite, da ste položili magnet z ustrezno konico "svetlost" ali "barvna temperatura".

Na splošno svetloba deluje zelo dobro! V programski opremi je nekaj hroščev, ki jih je treba odpraviti, LED diode RGB pa so lahko svetlejše. Lahko dodam tudi senzor zunanje svetlobe za samodejno spreminjanje barvne temperature, tako da se podnevi začne "hladen" in ponoči spremeni v "topel".

Na zdravje za branje!

Priporočena: