Съдържание:

Rgb-LED контролирани безжични акселерометри: 4 стъпки
Rgb-LED контролирани безжични акселерометри: 4 стъпки

Видео: Rgb-LED контролирани безжични акселерометри: 4 стъпки

Видео: Rgb-LED контролирани безжични акселерометри: 4 стъпки
Видео: Най-очакваната мишка - Logitech G Pro X Superlight 2 ревю 2024, Юли
Anonim
Rgb-LED контролирани безжични акселерометри
Rgb-LED контролирани безжични акселерометри
Rgb-LED контролирани безжични акселерометри
Rgb-LED контролирани безжични акселерометри

Акселерометрите MEMS (микро-електро-механични системи) са широко използвани като сензори за накланяне в мобилни телефони и камери. Простите акселерометри се предлагат както като ic-чип, така и като евтини печатни платки за разработка.

Безжичните чипове също са достъпни и се предлагат в сглобени схеми, с подходяща антенна мрежа и разединяващи се капачки на борда. Свържете безжичната платка и акселерометъра до микроконтролер чрез сериен интерфейс и имате безжичен контролер с функции nintendo-wii. След това изградете приемник със същия тип безжичен чип и pwm-контролирани rgb-светодиоди, ето, имате безжична, контролирана с накланяне цветна мълния. Дръжте платката на предавателя на ниво с дъска нагоре и светодиодът е хладно син, само синият светодиод е активен. След това наклонете предавателя в една посока и смесвате в червено или зелено в зависимост от посоката, в която го накланяте. Наклонете се до 90 градуса и преминете през всички смеси от червено и синьо или зелено и синьо, докато само червено или зелено не стане активно при наклон от 90 градуса. Наклонете се малко в посока x и y и получавате смес от всички цветове. При 45 градуса във всички посоки светлината е еднаква смес от червена, зелена и синя, с други думи, бяла светлина. Използваните части се предлагат от интернет магазини за електронни хобита. Трябва да се разпознава от някои от снимките.

Стъпка 1: Предавател с акселерометър

Предавател с акселерометър
Предавател с акселерометър
Предавател с акселерометър
Предавател с акселерометър
Предавател с акселерометър
Предавател с акселерометър
Предавател с акселерометър
Предавател с акселерометър

Предавателят е базиран на микроконтролера Atmel avr168. Удобната червена дъска с 168 е ардуино платка с регулатор на напрежението и верига за нулиране. Акселерометърът е свързан към avr с i2c шина, а безжичната платка е свързана с хардуерен SPI (сериен периферен интерфейс).

Планът е напълно безжичен с 4, 8V пакет батерии, закачен отдолу. Безжичната платка и arduino wee приемат до 9 V и имат вграден линеен регулатор на напрежението, но акселерометърът се нуждае от 3, 3V от регулираната шина на уикенда.

Стъпка 2: Приемник с RGB-LED

Приемник с RGB-LED
Приемник с RGB-LED
Приемник с RGB-LED
Приемник с RGB-LED
Приемник с RGB-LED
Приемник с RGB-LED

Приемникът е базиран на демоборда atmel avr169, наречен пеперуда. Дъската има много функции, които не се използват в този проект. Безжичният трансивер е свързан към PortB, а светодиодът, управляван от pwm, е свързан към PortD. Захранването се подава от ISP-заглавката, 4.5V е достатъчно. Безжичната платка може да понася 5V на входно/изходни щифтове, но се нуждае от захранване от 3.3V, което се доставя от вградения регулатор.

Модифицираният хедър-кабел за радиочестотния трансивер е наистина удобен и свързва безжичната платка с захранващ и хардуерен spi контролер на пеперудата. Shiftbright е контролер за модулация на импулсна ширина, ръководен от rgb, който приема 4-байтова команда, която се захваща и след това се фиксира на изходните щифтове. Наистина лесно се свързва последователно. Просто преместете много командни думи и първото изместено ще завърши в последния свързан светодиод във веригата маргаритка.

Стъпка 3: C-програмиране

Кодът е написан на C, тъй като не ми пукаше да науча "по -лесния" език за обработка, на който се основава arduino. Аз самият написах интерфейса за SPI и rf tranceiver за обучението, но заимствах асемблерния код i2c от avrfreaks.net. Интерфейсът shiftbright е битован в C-код. Един проблем, който срещнах, бяха малки ирадични вариации в изхода на акселерометъра, което направи трептенето на светодиода много. Реших това със софтуерен нискочестотен филтър. Плъзгаща се претеглена средна стойност на стойностите на акселерометъра. RF-трансивърът поддържа хардуерен crc и ack с автоматично повторно предаване, но за този проект гладкото актуализиране на светодиодите в реално време беше по-важно. Не е необходимо всеки пакет със стойности на акселерометъра да пристига непокътнат в приемника, стига повредените пакети да се изхвърлят. Нямах проблеми със загубени радиочестотни пакети в рамките на 20 метра видимост. Но по-далеч връзката стана нестабилна и светодиодите не се актуализираха непрекъснато. Основният цикъл на предавателя в псевдокод: initialize (); while (true) {Values = abs (get x, y, z accelerometer values ()); RF_send (Стойности); забавяне (20ms);} Основният цикъл на приемника в псевдокод: initialize (); while (true) {newValues = blocking_receiveRF ()); rgbValues = rgbValues + 0.2*(newValues-rgbValues); напишете rgbValues за shiftbrigth;}

Стъпка 4: Резултатът

Резултатът
Резултатът
Резултатът
Резултатът
Резултатът
Резултатът
Резултатът
Резултатът

Бях изумен колко гладък и точен беше контролът. Наистина имате контрол на точността на цвета на върха на пръста. Pwm-LED-контролерът има 10-битова резолюция за всеки цвят, което прави милиони възможни цветове. За съжаление акселерометърът има само 8 -битова резолюция, което намалява броя на теоретичните цветове до хиляди. Но все още не е възможно да се усети промяна в цвета. Сложих приемника в IKEA-лампа и направих снимка с различни цветове по-долу. Има и видео, (все пак ужасно качество)

Препоръчано: