Indholdsfortegnelse:

Trådløst accelerometer-styrede Rgb-LED'er: 4 trin
Trådløst accelerometer-styrede Rgb-LED'er: 4 trin

Video: Trådløst accelerometer-styrede Rgb-LED'er: 4 trin

Video: Trådløst accelerometer-styrede Rgb-LED'er: 4 trin
Video: Эви Рубин: Любое устройство можно взломать 2024, November
Anonim
Trådløst accelerometer-styrede Rgb-LED'er
Trådløst accelerometer-styrede Rgb-LED'er
Trådløst accelerometer-styrede Rgb-LED'er
Trådløst accelerometer-styrede Rgb-LED'er

MEMS (mikroelektro-mekaniske systemer) Accelerometre bruges i vid udstrækning som hældningssensorer i mobiltelefoner og kameraer. Enkle accelerometre fås både som ic-chips og billige udviklings-printkort.

Trådløse chips er også overkommelige og fås i samlede kredsløb med matchende antennetværk og afkoblingshætter ombord. Tilslut både trådløst kort og accelerometer til en mikrokontroller via seriel grænseflade, og du har en trådløs controller med nintendo-wii-funktioner. Byg derefter en modtager med samme type trådløs chip og pwm-kontrollerede rgb-LED'er, voila, du har trådløst, vippekontrolleret farvet rumlyn. Hold transmitterbordet vendt med brødbrættet opad, og LED'en er koldblå, kun blå lysdioder er aktive. Vip derefter senderen i en retning, og du blander rødt eller grønt afhængigt af hvilken retning du vipper den. Vip hele vejen til 90 grader, og du går igennem alle blandinger af rødt og blåt eller grønt og blåt, indtil kun rød eller grøn er aktiv ved 90 graders hældning. Vip lidt i både x og y retning, og du får en blanding af alle farverne. Ved 45 grader i alle retninger er lyset en lige blanding af rødt, grønt og blåt, med andre ord hvidt lys. De anvendte dele fås fra internet-hobby-elektroniske butikker. Bør kunne identificeres ud fra nogle af billederne.

Trin 1: sender med accelerometer

Sender med accelerometer
Sender med accelerometer
Sender med accelerometer
Sender med accelerometer
Sender med accelerometer
Sender med accelerometer
Sender med accelerometer
Sender med accelerometer

Senderen er baseret på Atmel avr168 mikrokontroller. Det praktiske røde bord med 168 er et arduino-kort med spændingsregulator og reset-kredsløb. Accelerometeret er forbundet til avr med bit-banged i2c bus, og det trådløse kort er forbundet med hardware SPI, (Serial Peripheral Interface).

Brødbrættet er helt trådløst med 4, 8V batteripakken fastspændt nedenunder. Det trådløse kort og arduino wee accepterer op til 9 V og har indbygget lineær spændingsregulator, men accelerometeret har brug for 3, 3V fra den regulerede skinne på vejen.

Trin 2: Modtager med RGB-LED

Modtager med RGB-LED
Modtager med RGB-LED
Modtager med RGB-LED
Modtager med RGB-LED
Modtager med RGB-LED
Modtager med RGB-LED

Modtageren er baseret på atmel avr169 demoboard med navnet butterfly. Tavlen har mange funktioner, der ikke bruges i dette projekt. Den trådløse tranceiver er forbundet til PortB, og den pwm-kontrollerede LED er forbundet til PortD. Der leveres strøm til ISP-headeren, 4,5V er nok. Det trådløse kort kan tåle 5V på i/o pins, men har brug for 3,3V forsyning, som leveres af den indbyggede regulator.

Det modificerede header-kabel til rf tranceiver er virkelig praktisk og forbinder trådløst kort med strøm og hardware spi controller på sommerfuglen. Shiftbright er en rgb-ledet pulsbreddemodulationskontroller, der accepterer en 4 byte kommando, som låses ind og derefter låses ud på outputstifterne. Virkelig let at forbinde i serie. Skift bare mange kommandoord ud, og det første skiftede ud ender i den sidst tilsluttede LED i daisy-chain.

Trin 3: C-programmering

Koden er skrevet i C, da jeg var ligeglad med at lære det "lettere" behandlingssprog, som arduino er baseret på. Jeg skrev selv SPI og rf tranceiver interface til lærings-oplevelsen, men lånte i2c assembler-koden fra avrfreaks.net. Shiftbright-grænsefladen er bitbanget i C-kode. Et problem, jeg stødte på, var små irradiske variationer i accelerometer-output, hvilket fik LED'en til at flimre meget. Jeg løste dette med et software lavpasfilter. Et glidende vægtet gennemsnit på accelerometerværdierne. Rf-tranceiver understøtter hardware crc og ack med automatisk genudsendelse, men for dette projekt var realtime, jævn opdatering af lysdioderne vigtigere. Hver pakke med accelerometerværdier behøver ikke at ankomme intakt til modtageren, så længe ødelagte pakker kasseres. Jeg havde ingen problemer med tabte RF -pakker inden for 20 meters sigtelinje. Men længere væk blev forbindelsen ustabil, og lysdioderne blev ikke opdateret løbende. Senderens hovedsløjfe i pseudokode: initialiser (); mens (sand) {Værdier = abs (få x, y, z accelerometerværdier ()); RF_send (værdier); forsinkelse (20ms);} Receiverens hovedsløjfe i pseudokode: initialiser (); mens (true) {newValues = blocking_receiveRF ()); rgbValues = rgbValues + 0,2*(newValues-rgbValues); skriv rgbValues til shiftbrigth;}

Trin 4: Resultatet

Resultatet
Resultatet
Resultatet
Resultatet
Resultatet
Resultatet
Resultatet
Resultatet

Jeg var overrasket over, hvor glat og præcis kontrollen var. Du har virkelig fingerspidsnøjagtighedskontrol af farven. Pwm-LED-controlleren har 10 bit opløsning for hver farve, hvilket giver mulighed for millioner af farver. Desværre har accelerometeret kun 8 bit opløsning, hvilket bringer antallet af teoretiske farver ned til tusindvis. Men det er stadig ikke muligt at opfatte et trin i farveændring. Jeg satte modtageren i en IKEA-lampe og tog et billede af forskellige farver herunder. Der er også en video (dog frygtelig kvalitet)

Anbefalede: