Inhoudsopgave:

Draadloze accelerometer gestuurde RGB-LED's - Ajarnpa
Draadloze accelerometer gestuurde RGB-LED's - Ajarnpa

Video: Draadloze accelerometer gestuurde RGB-LED's - Ajarnpa

Video: Draadloze accelerometer gestuurde RGB-LED's - Ajarnpa
Video: WordCast #4: Build Update, Noctua Fans, AX1500i, and more 2024, Juli-
Anonim
Draadloze Accelerometer Gecontroleerde RGB-LED's
Draadloze Accelerometer Gecontroleerde RGB-LED's
Draadloze Accelerometer Gecontroleerde RGB-LED's
Draadloze Accelerometer Gecontroleerde RGB-LED's

MEMS (Micro-Electro-Mechanical Systems) versnellingsmeters worden veel gebruikt als kantelsensoren in mobiele telefoons en camera's. Eenvoudige accelerometers zijn verkrijgbaar als ic-chip's en goedkope ontwikkelingsprintplaten.

Draadloze chips zijn ook betaalbaar en beschikbaar in geassembleerde circuits, met een aangepast antennenetwerk en ontkoppelingskappen aan boord. Sluit zowel draadloos bord als accelerometer aan op een microcontroller via seriële interface en je hebt een draadloze controller met nintendo-wii-functies. Bouw dan een ontvanger met hetzelfde type draadloze chip en pwm-gestuurde rgb-leds, voila, je hebt draadloze, kantelgestuurde gekleurde kamerverlichting. Houd het zenderbord waterpas met het breadboard naar boven gericht en de led is koelblauw, alleen de blauwe led is actief. Kantel vervolgens de zender in één richting en je mixt in rood of groen afhankelijk van in welke richting je hem kantelt. Kantel helemaal tot 90 graden, en je gaat door alle mixen van rood en blauw of groen en blauw totdat alleen rood of groen actief is bij 90 graden kanteling. Kantel een beetje in zowel x- als y-richting en je krijgt een mix van alle kleuren. Bij 45 graden in alle richtingen is het licht een gelijke mix van rood, groen en blauw, oftewel wit licht. De gebruikte onderdelen zijn verkrijgbaar bij internet hobby-elektronica winkels. Zou op sommige foto's herkenbaar moeten zijn.

Stap 1: zender met versnellingsmeter

Zender met versnellingsmeter
Zender met versnellingsmeter
Zender met versnellingsmeter
Zender met versnellingsmeter
Zender met versnellingsmeter
Zender met versnellingsmeter
Zender met versnellingsmeter
Zender met versnellingsmeter

De zender is gebaseerd op de Atmel avr168 microcontroller. Het handige rode bord met de 168 is een arduino-bord met spanningsregelaar en reset-circuit. De accelerometer is verbonden met de avr met een bit-banged i2c-bus, en het draadloze bord is verbonden met hardware-SPI (Serial Peripheral Interface).

Het breadboard is volledig draadloos met de 4, 8V-batterij aan de onderkant vastgebonden. Het draadloze bord en de arduino wee accepteren tot 9 V en hebben een lineaire spanningsregelaar aan boord, maar de accelerometer heeft 3, 3V nodig van de gereguleerde rail op de wee.

Stap 2: Ontvanger met RGB-LED

Ontvanger met RGB-LED
Ontvanger met RGB-LED
Ontvanger met RGB-LED
Ontvanger met RGB-LED
Ontvanger met RGB-LED
Ontvanger met RGB-LED

De ontvanger is gebaseerd op het atmel avr169 demoboard genaamd vlinder. Het bord heeft veel functies die in dit project niet worden gebruikt. De draadloze tranceiver is aangesloten op PortB en de pwm-gestuurde led is aangesloten op PortD. Stroom wordt geleverd via de ISP-header, 4,5V is voldoende. Het draadloze bord kan 5V op i/o-pinnen verdragen, maar heeft 3,3V-voeding nodig die wordt geleverd door de ingebouwde regelaar.

De aangepaste header-kabel voor de rf-tranceiver is erg handig en verbindt het draadloze bord met de stroom- en hardware-spi-controller op de vlinder. De shiftbright is een RGB-led-pulsbreedtemodulatiecontroller die een 4-byte-opdracht accepteert die wordt vastgezet en vervolgens wordt vergrendeld op de uitgangspinnen. Heel eenvoudig in serie aan te sluiten. Schuif gewoon veel commandowoorden naar buiten en de eerste die naar buiten wordt verschoven, komt terecht in de laatst aangesloten LED in de serieschakeling.

Stap 3: C-programmeren

De code is geschreven in C omdat ik niet geïnteresseerd was in het leren van de "gemakkelijkere" verwerkingstaal waarop arduino is gebaseerd. Ik heb de SPI en rf tranceiver interface zelf geschreven voor de leerervaring, maar de i2c assembler-code geleend van avrfreaks.net. De shiftbright-interface is bitbanged in C-code. Een probleem dat ik tegenkwam waren kleine irradische variaties in de output van de accelerometer, waardoor de led's veel flikkerden. Ik heb dit opgelost met een softwarematig laagdoorlaatfilter. Een voortschrijdend gewogen gemiddelde op de accelerometer-waarden. De rf-tranceiver ondersteunt hardware crc en ack met auto-retransmit, maar voor dit project was de realtime, vlotte update van de leds belangrijker. Elk pakket met accelerometerwaarden hoeft niet intact bij de ontvanger aan te komen, zolang beschadigde pakketten worden weggegooid. Ik had geen problemen met verloren RF-pakketten binnen een zichtlijn van 20 meter. Maar verder weg werd de link onstabiel en werden de leds niet continu bijgewerkt. De hoofdlus van de zender in pseudo-code:initialize();while(true){ Values = abs(get x, y, z accelerometer values()); RF_send (Waarden); delay (20ms);}De hoofdlus van de ontvanger in pseudo-code:initialize();while(true){ newValues = blocking_receiveRF()); rgbValues = rgbValues + 0.2*(newValues-rgbValues); schrijf rgbValues naar shiftbrigth;}

Stap 4: Het resultaat

Het resultaat
Het resultaat
Het resultaat
Het resultaat
Het resultaat
Het resultaat
Het resultaat
Het resultaat

Ik was verbaasd over hoe soepel en nauwkeurig de besturing was. Je hebt echt vingertopnauwkeurigheid van de kleur. De pwm-LED-controller heeft een resolutie van 10 bit per kleur, wat zorgt voor miljoenen mogelijke kleuren. Helaas heeft de versnellingsmeter slechts een resolutie van 8 bits, waardoor het aantal theoretische kleuren op de duizenden komt. Maar het is nog steeds niet mogelijk om een stap in kleurverandering waar te nemen. Ik stopte de ontvanger in een IKEA-lamp en maakte hieronder een foto van verschillende kleuren. Er is ook een video, (wel vreselijke kwaliteit)

Aanbevolen: