Innholdsfortegnelse:

Trådløst akselerometer kontrollerte Rgb-LED-er: 4 trinn
Trådløst akselerometer kontrollerte Rgb-LED-er: 4 trinn

Video: Trådløst akselerometer kontrollerte Rgb-LED-er: 4 trinn

Video: Trådløst akselerometer kontrollerte Rgb-LED-er: 4 trinn
Video: Ospel Sonata - łączniki do sterowania bezprzewodowego 2024, November
Anonim
Trådløst akselerometer kontrollert Rgb-LED
Trådløst akselerometer kontrollert Rgb-LED
Trådløst akselerometer kontrollert Rgb-LED
Trådløst akselerometer kontrollert Rgb-LED

MEMS (Micro-Electro-Mechanical Systems) Akselerometre er i utbredt bruk som tilt-sensorer i mobiltelefoner og kameraer. Enkle akselerometre er tilgjengelige både som IC-chips og billige utviklingskort.

Trådløse sjetonger er også rimelige og tilgjengelige i monterte kretser, med matchende antennenettverk og frakoblingskapsler ombord. Koble både trådløst kort og akselerometer til en mikrokontroller via serielt grensesnitt, og du har en trådløs kontroller med nintendo-wii-funksjoner. Bygg deretter en mottaker med samme type trådløs brikke og pwm-kontrollerte rgb-lysdioder, voila, du har trådløst, vippekontrollert farget rom lyn. Hold senderbordet i vater med brødbrettet vendt opp og LED-en er kaldblå, bare blå lysdioder er aktive. Vipp deretter senderen i en retning, og du blander i rødt eller grønt avhengig av hvilken retning du vipper den. Tilt helt til 90 grader, og du går gjennom alle blandinger av rødt og blått eller grønt og blått til bare rødt eller grønt er aktivt ved 90 graders tilt. Vipp litt i både x og y retning, så får du en blanding av alle fargene. Ved 45 grader i alle retninger er lyset en lik blanding av rødt, grønt og blått, med andre ord hvitt lys. Delene som brukes er tilgjengelige fra internett-hobby-elektroniske butikker. Bør identifiseres fra noen av bildene.

Trinn 1: Sender med akselerometer

Sender med akselerometer
Sender med akselerometer
Sender med akselerometer
Sender med akselerometer
Sender med akselerometer
Sender med akselerometer
Sender med akselerometer
Sender med akselerometer

Senderen er basert på Atmel avr168 mikrokontroller. Det praktiske røde kortet med 168 er et arduino-kort med spenningsregulator og tilbakestillingskrets. Akselerometeret er koblet til avr med bit-banged i2c-buss, og det trådløse kortet er koblet til hardware SPI, (Serial Peripheral Interface).

Brettbrettet er helt trådløst med 4, 8V batteripakke festet under. Det trådløse kortet og arduino wee godtar opptil 9 V og har innebygd lineær spenningsregulator, men akselerometeret trenger 3, 3V fra den regulerte skinnen på wee.

Trinn 2: Mottaker med RGB-LED

Mottaker med RGB-LED
Mottaker med RGB-LED
Mottaker med RGB-LED
Mottaker med RGB-LED
Mottaker med RGB-LED
Mottaker med RGB-LED

Mottakeren er basert på atmel avr169 demoboard som heter butterfly. Styret har mange funksjoner som ikke brukes i dette prosjektet. Den trådløse transiveren er koblet til PortB og den pwm-kontrollerte lysdioden er koblet til PortD. Strøm leveres fra ISP-hodet, 4,5V er nok. Det trådløse kortet kan tåle 5V på i/o -pinner, men trenger 3,3V -forsyning som leveres av den innebygde regulatoren.

Den modifiserte toppkabelen til rf tranceiver er veldig praktisk, og kobler til et trådløst kort med strøm og hardware spi-kontroller på sommerfuglen. Shiftbright er en rgb-ledet pulsbreddemodulasjonskontroller som godtar en 4 byte kommando som låses inn og deretter låses ut på utgangspinnene. Virkelig lett å koble til i serie. Bare skift ut mange kommandoord, og det første skiftet ut vil ende opp i den siste tilkoblede LED-en i tusenfrydkjeden.

Trinn 3: C-programmering

Koden er skrevet i C ettersom jeg ikke brydde meg om å lære det "enklere" behandlingsspråket som arduino er basert på. Jeg skrev selv SPI og rf tranceiver-grensesnittet for læringsopplevelsen, men lånte i2c assembler-koden fra avrfreaks.net. Shiftbright-grensesnittet er bitbanget i C-kode. Et problem jeg støtte på var små irradiske variasjoner i akselerometerutgang, dette gjorde at LED-flimringen ble mye. Jeg løste dette med et program for lavpassfilter. Et beveget vektet gjennomsnitt på akselerometer-verdiene. Rf-tranceiver støtter maskinvare crc og ack med automatisk gjenoverføring, men for dette prosjektet var sanntid, jevn oppdatering av lysdiodene viktigere. Hver pakke med akselerometerverdier trenger ikke å komme intakt til mottakeren, så lenge ødelagte pakker kastes. Jeg hadde ingen problemer med tapte RF -pakker innen 20 meters siktlinje. Men lenger unna ble koblingen ustabil, og lysdiodene oppdaterte seg ikke kontinuerlig. Hovedløyfen til senderen i pseudokode: initialiser (); mens (sant) {Verdier = abs (få x, y, z akselerometerverdier ()); RF_send (Verdier); forsinkelse (20ms);} Mottakerens hovedløkke i pseudokode: initialiser (); mens (true) {newValues = blocking_receiveRF ()); rgbValues = rgbValues + 0,2*(newValues-rgbValues); skriv rgbValues til shiftbrigth;}

Trinn 4: Resultatet

Resultatet
Resultatet
Resultatet
Resultatet
Resultatet
Resultatet
Resultatet
Resultatet

Jeg ble overrasket over hvor jevn og nøyaktig kontrollen var. Du har virkelig fingertupps nøyaktighetskontroll av fargen. Pwm-LED-kontrolleren har 10 biters oppløsning for hver farge, noe som gir millioner av farger. Dessverre har akselerometeret bare 8 bits oppløsning som bringer antallet teoretiske farger ned til tusenvis. Men det er fortsatt ikke mulig å oppfatte noen trinn i fargeendring. Jeg satte mottakeren i en IKEA-lampe og tok et bilde av forskjellige farger nedenfor. Det er også en video, (fryktelig kvalitet skjønt)

Anbefalt: