Inhaltsverzeichnis:

Drahtlose Beschleunigungsmesser-gesteuerte RGB-LEDs - Gunook
Drahtlose Beschleunigungsmesser-gesteuerte RGB-LEDs - Gunook

Video: Drahtlose Beschleunigungsmesser-gesteuerte RGB-LEDs - Gunook

Video: Drahtlose Beschleunigungsmesser-gesteuerte RGB-LEDs - Gunook
Video: Drahtloser Beschleunigungssensor für den Arduino mit MPU6050 und nRF24l01 2024, Juli
Anonim
Kabellose Beschleunigungsmesser-gesteuerte RGB-LEDs
Kabellose Beschleunigungsmesser-gesteuerte RGB-LEDs
Kabellose Beschleunigungsmesser-gesteuerte RGB-LEDs
Kabellose Beschleunigungsmesser-gesteuerte RGB-LEDs

MEMS (Micro-Electro-Mechanical Systems) Beschleunigungsmesser sind als Neigungssensoren in Mobiltelefonen und Kameras weit verbreitet. Einfache Beschleunigungsmesser sind sowohl als IC-Chips als auch als günstige Entwicklungsplatinen erhältlich.

Drahtlose Chips sind auch erschwinglich und in zusammengebauten Schaltungen erhältlich, mit angepasstem Antennennetzwerk und Entkopplungskappen an Bord. Schließen Sie sowohl die drahtlose Platine als auch den Beschleunigungsmesser über eine serielle Schnittstelle an einen Mikrocontroller an und Sie haben einen drahtlosen Controller mit Nintendo-Wii-Funktionen. Dann bauen Sie einen Empfänger mit dem gleichen Funkchip und PWM-gesteuerten RGB-LEDs, voila, Sie haben eine drahtlose, neigungsgesteuerte farbige Raumbeleuchtung. Halten Sie die Senderplatine mit dem Steckbrett nach oben waagerecht und die LED leuchtet kühl blau, nur die blaue LED ist aktiv. Neigen Sie dann den Sender in eine Richtung und mischen Sie Rot oder Grün ein, je nachdem in welche Richtung Sie ihn neigen. Neigen Sie ganz auf 90 Grad, und Sie gehen durch alle Mischungen von Rot und Blau oder Grün und Blau, bis bei einer Neigung von 90 Grad nur Rot oder Grün aktiv ist. Neigen Sie ein wenig in x- und y-Richtung und Sie erhalten eine Mischung aus allen Farben. Bei 45 Grad in alle Richtungen ist das Licht eine gleichmäßige Mischung aus Rot, Grün und Blau, also weißem Licht. Die verwendeten Teile sind in Internet-Hobby-Elektronik-Läden erhältlich. Sollte auf einigen Bildern erkennbar sein.

Schritt 1: Sender mit Beschleunigungsmesser

Sender mit Beschleunigungsmesser
Sender mit Beschleunigungsmesser
Sender mit Beschleunigungsmesser
Sender mit Beschleunigungsmesser
Sender mit Beschleunigungsmesser
Sender mit Beschleunigungsmesser
Sender mit Beschleunigungsmesser
Sender mit Beschleunigungsmesser

Der Sender basiert auf dem Atmel avr168 Mikrocontroller. Das praktische rote Board mit dem 168 ist ein Arduino-Board mit Spannungsregler und Reset-Schaltung. Der Beschleunigungsmesser ist über einen Bit-Banged-i2c-Bus mit dem AVR verbunden, und die drahtlose Platine ist mit Hardware-SPI (Serial Peripheral Interface) verbunden.

Das Steckbrett ist komplett kabellos mit dem 4, 8V Akkupack darunter geschnallt. Die Wireless-Platine und das Arduino-Wee akzeptieren bis zu 9 V und verfügen über einen integrierten linearen Spannungsregler, aber der Beschleunigungsmesser benötigt 3, 3 V von der regulierten Schiene am Wee.

Schritt 2: Empfänger mit RGB-LED

Empfänger mit RGB-LED
Empfänger mit RGB-LED
Empfänger mit RGB-LED
Empfänger mit RGB-LED
Empfänger mit RGB-LED
Empfänger mit RGB-LED

Der Receiver basiert auf dem atmel avr169 Demoboard namens Butterfly. Das Board hat viele Funktionen, die in diesem Projekt nicht verwendet werden. Der drahtlose Transceiver ist mit PortB verbunden und die PWM-gesteuerte LED ist mit PortD verbunden. Die Stromversorgung erfolgt am ISP-Header, 4,5V reichen aus. Die Wireless-Platine kann 5 V an den E/A-Pins tolerieren, benötigt jedoch eine 3,3-V-Versorgung, die vom Onboard-Regler geliefert wird.

Das modifizierte Header-Kabel für den HF-Transceiver ist wirklich praktisch und verbindet die Wireless-Platine mit der Stromversorgung und dem Hardware-SPI-Controller am Butterfly. Der Shiftbright ist ein RGB-LED-Pulsweitenmodulations-Controller, der einen 4-Byte-Befehl akzeptiert, der an den Ausgangspins eingeklinkt und dann wieder ausgeklinkt wird. Ganz einfach in Reihe zu schalten. Verschieben Sie einfach viele Befehlswörter, und das erste, das herausgeschoben wird, landet in der letzten angeschlossenen LED in der Daisy-Chain.

Schritt 3: C-Programmierung

Der Code ist in C geschrieben, da es mir nicht wichtig war, die "einfachere" Verarbeitungssprache zu lernen, auf der Arduino basiert. Ich habe die SPI- und rf-Tranceiver-Schnittstelle selbst für die Lernerfahrung geschrieben, aber den i2c-Assembler-Code von avrfreaks.net ausgeliehen. Die Shiftbright-Schnittstelle ist in C-Code bitbanged. Ein Problem, auf das ich gestoßen bin, waren kleine irradische Variationen in der Beschleunigungsmesser-Ausgabe, die das Flackern der LED stark verursachten. Ich habe das mit einem Software-Tiefpassfilter gelöst. Ein gleitender gewichteter Durchschnitt der Beschleunigungsmesser-Werte. Der HF-Transceiver unterstützt Hardware crc und ack mit Auto-Retransmit, aber für dieses Projekt war die Echtzeit- und reibungslose Aktualisierung der LEDs wichtiger. Jedes Paket mit Beschleunigungsmesserwerten muss nicht unversehrt beim Empfänger ankommen, solange beschädigte Pakete verworfen werden. Ich hatte keine Probleme mit verlorenen RF-Paketen innerhalb von 20 Metern Sichtlinie. Aber weiter weg wurde die Verbindung instabil und die LEDs aktualisierten sich nicht kontinuierlich. Die Hauptschleife des Senders in Pseudo-Code: initialize (); while (true) { Values = abs (get x, y, z accelerometer values ()); RF_send(Werte); delay(20ms);}Die Hauptschleife des Empfängers in Pseudocode:initialize();while(true){ newValues =blocking_receiveRF()); rgbValues = rgbValues + 0.2*(newValues-rgbValues); rgbValues in shiftbrigth schreiben;}

Schritt 4: Das Ergebnis

Das Ergebnis
Das Ergebnis
Das Ergebnis
Das Ergebnis
Das Ergebnis
Das Ergebnis
Das Ergebnis
Das Ergebnis

Ich war erstaunt, wie reibungslos und genau die Steuerung war. Sie haben wirklich eine genaue Kontrolle über die Farbe. Der PWM-LED-Controller hat 10 Bit Auflösung für jede Farbe, was Millionen von möglichen Farben ermöglicht. Leider hat der Beschleunigungsmesser nur eine 8-Bit-Auflösung, was die Anzahl der theoretischen Farben auf Tausende reduziert. Aber es ist noch kein Schritt im Farbwechsel wahrnehmbar. Ich habe den Empfänger in eine IKEA-Lampe gesteckt und unten ein Bild in verschiedenen Farben gemacht. Es gibt auch ein Video (aber schreckliche Qualität)

Empfohlen: