Spisu treści:

Bezprzewodowe diody LED RGB sterowane akcelerometrem: 4 kroki
Bezprzewodowe diody LED RGB sterowane akcelerometrem: 4 kroki

Wideo: Bezprzewodowe diody LED RGB sterowane akcelerometrem: 4 kroki

Wideo: Bezprzewodowe diody LED RGB sterowane akcelerometrem: 4 kroki
Wideo: Motion Sensor packshot - inteligentny czujnik ruchu 2024, Lipiec
Anonim
Bezprzewodowe diody LED RGB sterowane akcelerometrem
Bezprzewodowe diody LED RGB sterowane akcelerometrem
Bezprzewodowe diody LED RGB sterowane akcelerometrem
Bezprzewodowe diody LED RGB sterowane akcelerometrem

MEMS (systemy mikroelektromechaniczne) Akcelerometry są szeroko stosowane jako czujniki przechyłu w telefonach komórkowych i aparatach fotograficznych. Proste akcelerometry są dostępne zarówno jako płytki ic-chip, jak i tanie płytki rozwojowe.

Bezprzewodowe chipy są również niedrogie i dostępne w zmontowanych obwodach, z dopasowaną siecią antenową i nakładkami odsprzęgającymi na pokładzie. Podłącz bezprzewodową płytkę i akcelerometr do mikrokontrolera przez interfejs szeregowy i masz bezprzewodowy kontroler z funkcjami nintendo-wii. Następnie zbuduj odbiornik z tym samym rodzajem bezprzewodowego układu scalonego i diodami LED rgb sterowanymi pwm, voila, masz bezprzewodowe, sterowane pochyleniem kolorowe oświetlenie w pomieszczeniu. Utrzymuj płytkę nadajnika poziomo płytką stykową skierowaną do góry, a dioda LED świeci na niebiesko, tylko niebieska dioda jest aktywna. Następnie przechyl nadajnik w jednym kierunku i miksuj na czerwono lub zielono w zależności od tego, w którą stronę go przechylisz. Przechyl do końca do 90 stopni i przejdziesz przez wszystkie mieszanki czerwonego i niebieskiego lub zielonego i niebieskiego, aż tylko czerwony lub zielony będzie aktywny przy pochyleniu 90 stopni. Przechyl trochę w obu kierunkach, a otrzymasz mieszankę wszystkich kolorów. Przy 45 stopniach we wszystkich kierunkach światło jest równą mieszanką czerwonego, zielonego i niebieskiego, innymi słowy, światła białego. Używane części są dostępne w internetowych sklepach hobbystycznych. Powinien być rozpoznawalny na niektórych zdjęciach.

Krok 1: Nadajnik z akcelerometrem

Nadajnik z akcelerometrem
Nadajnik z akcelerometrem
Nadajnik z akcelerometrem
Nadajnik z akcelerometrem
Nadajnik z akcelerometrem
Nadajnik z akcelerometrem
Nadajnik z akcelerometrem
Nadajnik z akcelerometrem

Nadajnik oparty jest na mikrokontrolerze Atmel avr168. Wygodna czerwona płytka z 168 to płytka arduino z regulatorem napięcia i obwodem resetowania. Akcelerometr jest połączony z avr za pomocą magistrali bit-banged i2c, a płyta bezprzewodowa jest połączona ze sprzętowym SPI (Serial Peripheral Interface).

Płytka stykowa jest całkowicie bezprzewodowa z przypiętym pod spodem akumulatorem 4,8 V. Płytka bezprzewodowa i arduino wee akceptują do 9 V i mają wbudowany liniowy regulator napięcia, ale akcelerometr potrzebuje 3, 3 V z regulowanej szyny na wee.

Krok 2: Odbiornik z diodą LED RGB

Odbiornik z diodą LED RGB
Odbiornik z diodą LED RGB
Odbiornik z diodą LED RGB
Odbiornik z diodą LED RGB
Odbiornik z diodą LED RGB
Odbiornik z diodą LED RGB

Odbiornik oparty jest na płycie demonstracyjnej atmel avr169 o nazwie butterfly. Płytka posiada wiele funkcji niewykorzystywanych w tym projekcie. Transceiver bezprzewodowy jest podłączony do portu B, a dioda sterowana pwm jest podłączona do portu D. Zasilanie dostarczane jest na nagłówku ISP, wystarczy 4,5V. Płyta bezprzewodowa może tolerować napięcie 5 V na pinach we/wy, ale wymaga zasilania 3,3 V, które jest dostarczane przez wbudowany regulator.

Zmodyfikowany kabel nagłówkowy dla nadajnika rf jest naprawdę wygodny i łączy bezprzewodową płytę z zasilaniem i sprzętowym kontrolerem spi na motylu. Shiftbright to kontroler modulacji szerokości impulsu z diodami RGB, który akceptuje 4-bajtowe polecenie, które jest zatrzaskiwane, a następnie zatrzaskiwane na pinach wyjściowych. Naprawdę łatwe do łączenia szeregowego. Wystarczy przesunąć wiele słów poleceń, a pierwsze przesunięte znajdzie się w ostatniej podłączonej diodzie LED w łańcuchu.

Krok 3: programowanie C

Kod jest napisany w C, ponieważ nie zależało mi na nauce "łatwiejszego" języka przetwarzania, na którym opiera się arduino. Sam napisałem interfejs SPI i rf tranceiver do nauki, ale zapożyczyłem kod asemblera i2c z avrfreaks.net. Interfejs shiftbright jest bitbangowany w kodzie C. Jednym z problemów, z którymi się spotkałem, były małe irradyczne wahania wyjścia akcelerometru, co powodowało duże migotanie diody LED. Rozwiązałem to za pomocą programowego filtra dolnoprzepustowego. Ruchoma średnia ważona wartości akcelerometru. Transceiver rf obsługuje sprzętowe crc i ack z automatyczną retransmisją, ale w tym projekcie ważniejsza była płynna aktualizacja diod LED w czasie rzeczywistym. Każdy pakiet z wartościami akcelerometru nie musi docierać do odbiorcy w stanie nienaruszonym, o ile uszkodzone pakiety są odrzucane. Nie miałem problemów z zagubionymi pakietami RF w promieniu 20 metrów w zasięgu wzroku. Ale dalej łącze stało się niestabilne, a diody nie aktualizowały się w sposób ciągły. Główna pętla nadajnika w pseudo-code:initialize();while(true){ Values = abs(get x, y, z wartości akcelerometru()); RF_send(wartości); delay(20ms);}Główna pętla odbiornika w pseudo-kodzie:initialize();while(true){ newValues = blocking_receiveRF()); rgbWartości = rgbWartości + 0,2*(noweWartości-rgbWartości); zapisz rgbValues do shiftbrigth;}

Krok 4: Wynik

Wynik
Wynik
Wynik
Wynik
Wynik
Wynik
Wynik
Wynik

Byłem zdumiony, jak płynna i dokładna była kontrola. Naprawdę masz kontrolę nad kolorem opuszkami palców. Kontroler pwm-LED ma rozdzielczość 10 bitów dla każdego koloru, co daje miliony możliwych kolorów. Niestety akcelerometr ma tylko 8-bitową rozdzielczość, co sprowadza liczbę teoretycznych kolorów do tysięcy. Ale nadal nie można dostrzec żadnego kroku w zmianie koloru. Umieściłem odbiornik w lampie IKEA i zrobiłem zdjęcie w różnych kolorach poniżej. Jest też wideo (choć okropna jakość)

Zalecana: