Rgb-LED kontrolisani bežični akcelerometar: 4 koraka
Rgb-LED kontrolisani bežični akcelerometar: 4 koraka
Anonim

MEMS (mikro-elektro-mehanički sistemi) akcelerometri su u širokoj upotrebi kao senzori nagiba u mobilnim telefonima i kamerama. Jednostavni akcelerometri dostupni su i kao ic-chip i kao jeftine razvojne pcb ploče.

Bežični čipovi su također pristupačni i dostupni u sklopljenim krugovima, s odgovarajućom antenskom mrežom i ugrađenim poklopcima za odvajanje. Priključite bežičnu ploču i mjerač ubrzanja na mikrokontroler putem serijskog sučelja i dobit ćete bežični kontroler s funkcijama nintendo-wii. Zatim napravite prijemnik sa istim tipom bežičnog čipa i pwm-kontrolisanim rgb-LED diodama, voila, imate bežičnu sobnu rasvjetu s kontroliranim nagibom. Držite ploču odašiljača u ravnini s matičnom pločom okrenutom prema gore, a LED je hladno plava, aktivna je samo plava LED dioda. Zatim nagnite odašiljač u jednom smjeru i miješate u crvenoj ili zelenoj boji, ovisno o smjeru naginjanja. Nagnite se do 90 stupnjeva i prolazite kroz sve mješavine crvene i plave ili zelene i plave boje sve dok samo crvena ili zelena ne budu aktivne pri nagibu od 90 stupnjeva. Nagnite malo u smjeru x i y i dobit ćete mješavinu svih boja. Na 45 stepeni u svim smjerovima svjetlo je jednaka mješavina crvenog, zelenog i plavog, drugim riječima, bijelog svjetla. Korišteni dijelovi dostupni su u internetskim trgovinama elektroničke hobije. Trebalo bi se prepoznati na nekim slikama.

Korak 1: Odašiljač s akcelerometrom

Predajnik je zasnovan na mikrokontroleru Atmel avr168. Prikladna crvena ploča sa 168 je arduino ploča s regulatorom napona i krugom za resetiranje. Akcelerometar je povezan s avr-om pomoću bit-banged i2c sabirnice, a bežična ploča je povezana sa hardverskim SPI-om (serijsko periferno sučelje).

Matična ploča je potpuno bežična s 4, 8V baterijskim paketom pričvršćenim ispod. Bežična ploča i arduino wee prihvaćaju do 9 V i imaju ugrađeni linearni regulator napona, ali akcelerometru je potrebno 3,3 V iz regulirane šine.

Korak 2: Prijemnik sa RGB-LED

Prijemnik je baziran na atmel avr169 demo ploči pod imenom Butterfly. Ploče imaju mnogo funkcija koje se ne koriste u ovom projektu. Bežični primopredajnik spojen je na PortB, a LED koji kontrolira pwm spojen je na PortD. Napajanje se napaja iz ISP zaglavlja, dovoljno je 4,5V. Bežična ploča može tolerirati 5V na i/o pinovima, ali joj je potrebno napajanje od 3.3V koje napaja ugrađeni regulator.

Modificirani kabel zaglavlja za RF prijemnik je zaista zgodan i povezuje bežičnu ploču sa napajanjem i hardverskim spi kontrolerom na leptiru. Shiftbright je kontroler modulacije širine impulsa predvođen rgb-om koji prihvaća naredbu od 4 bajta koja je zaključana, a zatim zaključana na izlaznim pinovima. Zaista jednostavno povezivanje u seriju. Samo pomaknite mnoge naredbene riječi i prva pomaknuta van će završiti u posljednjoj povezanoj LED diodi u lancu tratinčice.

Korak 3: C-programiranje

Kôd je napisan na C jer me nije zanimalo učenje "lakšeg" jezika za obradu na kojem je baziran arduino. Sam sam napisao sučelje SPI i rf tranceiver za iskustvo učenja, ali sam posudio i2c asemblerski kod sa avrfreaks.net. Shiftbright sučelje je bitovano u C-kodu. Jedan problem na koji sam naišao su male iracionalne varijacije u izlazu akcelerometra, zbog čega je LED svjetlo jako treperilo. To sam riješio softverskim niskopropusnim filterom. Pokretni ponderirani prosjek na vrijednostima akcelerometra. RF-tranceiver podržava hardverski crc i ack s automatskim ponovnim slanjem, ali za ovaj projekt, glatko ažuriranje LED dioda u stvarnom vremenu bilo je važnije. Svaki paket sa vrijednostima akcelerometra ne mora stići netaknut u prijemnik, sve dok se oštećeni paketi odbacuju. Nisam imao problema sa izgubljenim RF paketima u krugu od 20 metara od vidokruga. Ali dalje je veza postala nestabilna, a LED diode se nisu kontinuirano ažurirale. Glavna petlja predajnika u pseudo kodu: initialize (); while (true) {Values = abs (get x, y, z accelerometer values ()); RF_send (vrednosti); delay (20ms);} Glavna petlja prijemnika u pseudo-kodu: initialize (); while (true) {newValues = blocking_receiveRF ()); rgbValues = rgbValues + 0,2*(newValues-rgbValues); upišite rgbValues za shiftbrigth;}

Korak 4: Rezultat

Bio sam zapanjen koliko je kontrola bila glatka i precizna. Zaista imate kontrolu tačnosti boje prstima. Pwm-LED-kontroler ima 10-bitnu rezoluciju za svaku boju, što čini milione mogućih boja. Nažalost, akcelerometar ima samo 8 -bitnu rezoluciju što smanjuje broj teoretskih boja na hiljade. Ali još uvijek nije moguće opaziti bilo kakav korak u promjeni boje. Stavio sam prijemnik u IKEA lampu i dole slikao različite boje. Postoji i video zapis (ipak užasne kvalitete)