Съдържание:
- Стъпка 1: Проучване на идеята
- Стъпка 2: Хардуер
- Стъпка 3: Монтаж
- Стъпка 4: Контрол?
- Стъпка 5: Улеснявайте
- Стъпка 6: Първи експерименти
- Стъпка 7: Контрол в реално време
- Стъпка 8: Заключения
Видео: Интерактивна околна светлина: 8 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:55
Това е първата ми инструкция! Моля, изтърпете ме, докато се боря да напиша подходящ английски. Чувствайте се свободни да ме поправите! Започнах този проект веднага след като стартира конкурсът „Нека свети“. Иска ми се да бях направил много повече и да съм завършил това, което исках да направя. Но между училище и работа не ми остана толкова време, колкото ми се искаше. Въпреки това оставям тук доклад за моите експерименти като инструкция, така че всеки може да опита да направи това, което направих. Тази инструкция не е предназначена да служи като ръководство и да научи как да се направи тази измислица. Това не е ръководство за начинаещи в електрониката. Това е по -скоро като споделяне на една идея и цел, които искам да преследвам. Ако сте начинаещ/напълно невеж в електрониката и искате да направите нещо подобно, съжалявам! Но ние можем да се опитаме винаги да ви помогнем. Вижте последната стъпка. Вече видяхме много проекти за околна светлина. Повечето от тях използват RGB светодиоди: - за осветяване на стая с един цвят, настройване на атмосфера, която да отговаря на настроението ви - за създаване на светлинни ефекти от цвят на телевизор/монитор или от аудио. Има дори няколко в instructables.com Свързани: Системи за околна светлина „Направи си сам“Светлинна лента Околна светлина Винаги съм искал да направя нещо подобно на тези околни светлини и да напълня стените в стаята си с RGB светодиоди. Но като направим още една крачка напред, като направим всички и всеки един от тях контролируеми. Надяваме се, че този проект ще доведе до електронен комплект с отворен код за любители и електронни калайджии, позволяващ хакване на хардуер/софтуер и сензорна интеграция. Ето малка визуализация на това, което направих:
Стъпка 1: Проучване на идеята
Искам да мога да запълня стените в моята стая с RGB светодиоди, контролиращи цвета и яркостта на всеки светодиод. Ще използвам микроконтролер за лесна употреба и предоставена гъвкавост. За съжаление не мога да контролирам стотици светодиоди с няколкото пина, налични на микроконтролерите. Дори би било трудно да се кодира управлението на толкова много светодиоди. Затова реших, че трябва да разделя всички светодиоди на няколко по -малки ленти и за всяка лента мога да използвам микроконтролер. Тогава бих използвал комуникационните възможности на микроконтролерите, за да споделям информация между тях. Тази информация може да бъде цветът и яркостта на светодиодите, шарки/последователности от цветове и сензорна информация. За всяка лента реших да използвам 16 RGB светодиода. Това води до нито твърде голям, нито малък бар. По този начин използвам приемлив брой ресурси за всеки светодиод, като намалявам разходите за всеки бар. най -евтиният микроконтролер, който мога да използвам. Това означава, че микроконтролерът ще има само до 20 I/O пина, недостатъчни за 48 светодиода. Не искам да използвам charlieplexing или някакъв вид устройство за разделяне на времето, тъй като целта на проекта е осветяване на стая. алтернатива, за която бих могъл да се сетя, е да използвам някакъв регистър на задвижване! Възобновяване:- Направете и интерактивна околна светлина- Направете стандартна лента от контролируеми светодиоди- Възможност за свързване на няколко ленти за запълване на стая- Позволете на потребителя адаптация/конфигурация и сензорна интеграция
Стъпка 2: Хардуер
Както беше казано в предишната стъпка, искам да направя няколко бара, за да осветявам една стая. Това поставя въпроса за разходите в ума. Ще се опитам да направя всеки бар най-рентабилния възможен начин. Микроконтролерът, който използвах, беше AVR ATtiny2313. Те са доста евтини и имах няколко лежащи наоколо. ATtiny2313 също има един универсален сериен интерфейс и един USART интерфейс, които ще се използват добре в следващите стъпки. Имах и три MCP23016 - I2C 16bit I/O порт разширител, лежащ наоколо, само правилното броене! Използвах всеки разширител на портове, за да контролирам един цвят от 16 -те светодиода. Светодиодите … За съжаление бяха най -евтините, които можах да намеря. Те са 48 червени, зелени и сини ~ 10000mcd 5 мм с ъгъл 20 градуса. Това засега няма значение, тъй като това е само един прототип. Въпреки този факт, резултатът е доста приятен! Работя на микроконтролера на 8 MHz. I2C шината е с тактова честота на 400 kHz. Честотата на превключване на LED е около 400 Hz. По този начин, ако съм в състояние да управлявам 48 светодиода, без да го натискам до краен предел, по -късно ще направя място за още!
Стъпка 3: Монтаж
След като проектирах веригата, я вградих в няколко платки за прототипи. След няколко часа нарязване на проводници и сглобяване на веригата, получих този резултат: Една гигантска макет с 48 светодиода и тонове тел!
Стъпка 4: Контрол?
Това е най -предизвикателната част от проекта. Исках да направя един алгоритъм за управление достатъчно общ за обработка на модели/последователности, а също и за контрол на яркостта и цвета на всеки светодиод. За да управлявам светодиодите, трябва да изпратя до MCP23016 един кадър от 4 байта (1 байт = 8 бита). Един байт с адреса на кореспондента на IC към цвета, 1 байт с командата "запис" и 2 байта със стойността на 16 бита (светодиоди). IC е свързан към светодиодите като "поглъщане", което означава, че една логическа стойност 0 на щифта ще светне светодиода. И сега предизвикателната част, как да направите PWM управление за 48 светодиода? Нека да проучим PWM за един светодиод! PWM обяснено @ Wikipedia, Ако искам яркостта на светодиода да е 50%, стойността ми на PWM е 50%. Това означава, че светодиодът в един период от време трябва да свети в същото време като изключен. Да вземем период от 1 секунда. PWM от 50% означава, че за тази 1 секунда времето за включване е 0,5 секунди, а времето за изключване е 0,5 секунди. ШИМ от 80%? 0,2 секунди изключено, 0,8 секунди включено! Лесно, нали? В цифровия свят: При период от 10 тактови цикъла, 50% означава, че за 5 цикъла светодиодът свети, а за още 5 цикъла светодиодът е изключен. 20%? 2 цикъла включени, 8 цикъла изключени. 45%? Е, всъщност не можем да получим 45%… Тъй като периодът е в цикли и имаме само 10 цикъла, можем да разделим ШИМ само на стъпки от 10%. Това означава, че еволюцията на щифта трябва да бъде за 50%: 1, 1, 1, 1, 1, 0, 0, 0, 0, 0; Или дори 1, 0, 1, 0, 1, 0, 1, 0, 1, 0; В програмирането можем да направим тази последователност от включване и изключване на масив. За всеки цикъл извеждаме към пина стойността на индекса е цикълът. Имам ли смисъл досега? Ако искаме да направим LED0 50%, а LED1 20%, можем да добавим и двата масива.: 1, 1, 1, 1, 1, 0, 0, 0, 0, 0; За задвижване на LED пина 1: 2, 2, 0, 0, 0, 0, 0, 0, 0, 0; В резултат на LED0 +LED0: 3, 3, 1, 1, 1, 0, 0, 0, 0, 0; Извеждайки тази последователност от числа в разширителя на порта IC, ще получим LED0 с 50% яркост и LED1 с 20% !! Просто за 2 светодиода, нали? Сега трябва да направим това за 16 светодиода, за всеки цвят! За всеки един от тези масиви имаме комбинация от яркост за всеки цвят (16 светодиода) Всеки път, когато искаме друга комбинация от цветове, трябва да променим този масив.
Стъпка 5: Улеснявайте
Предишната стъпка е твърде много работа за направата на проста последователност … Затова реших да направя програма, в която казваме цветовете на всеки светодиод в една стъпка от последователността и получаваме трите масива от стъпката. Направих тази програма в LabView поради ограничения във времето.
Стъпка 6: Първи експерименти
Зареждаме няколко стъпки в микроконтролера и получаваме нещо подобно: Извинете за лошото качество на видеоклиповете! Определих максималния брой стъпки от последователност до 8 и ограничих PWM до 20% скокове. Това решение се основава на вида на контрола, който използвам и колко EEPROM има ATtiny2313. В тези експерименти се опитах да видя какви ефекти мога да направя. Трябва да кажа, че съм доволен от резултата!
Стъпка 7: Контрол в реално време
Както бе споменато в предишните стъпки, искам да комуникирам с всички микроконтролери, управляващи светодиодите в моята стая. Затова използвах наличния интерфейс USART в ATtiny2313 и го свързах с компютъра си. Също така направих програма в LabView за управление на LED лентата, В която мога да кажа на микроконтролера колко е дълга последователността, цвета на всеки светодиод и времето между стъпките на последователността. В следващото видео ще демонстрирам как мога да променя цвета на светодиодите и да определя последователности.
Стъпка 8: Заключения
Мисля, че успях в първия подход на моя проект. Мога да контролирам 16 RGB светодиода с малко ресурси и ограничения. Възможно е да се управлява всеки светодиод поотделно, създавайки всяка желана последователност.
Бъдеща работа:
Ако получа положителна обратна връзка от хората, мога да доразвия тази идея и да направя пълен комплект за електроника „Направи си сам“, с печатни платки и инструкции за сглобяване.
За следващата си версия аз ще: -Смяна микроконтролера на такъв с ADC -Сменете MCP23016 за някакъв друг вид сериен паралелен изход, който може да поглъща повече ток от светодиодите -Направете софтуер с отворен код за комуникация с микроконтролера и управление на светодиодите -Разработете комуникацията между няколко микроконтролера.
Имате ли предложение или въпрос? Или оставете коментар!
Финалист в Let It Glow!
Препоръчано:
Arduino Nano - TSL45315 Урок за сензор за околна светлина: 4 стъпки
Arduino Nano - TSL45315 Урок за сензор за околна светлина: TSL45315 е цифров сензор за околна светлина. Той приближава реакцията на човешкото око при различни условия на осветление. Устройствата имат три избираеми времена на интеграция и осигуряват директен 16-битов лукс изход чрез интерфейс на I2C шина. Устройството съвместно
Raspberry Pi - TSL45315 Сензор за околна светлина Java Урок: 4 стъпки
Raspberry Pi - TSL45315 Сензор за околна светлина Java Урок: TSL45315 е цифров сензор за околна светлина. Той приближава реакцията на човешкото око при различни условия на осветление. Устройствата имат три избираеми времена на интеграция и осигуряват директен 16-битов лукс изход чрез интерфейс на I2C шина. Устройството съвместно
Програмируема околна светлина за външен дисплей: 4 стъпки
Програмируема околна светлина за външен дисплей: Този проект ви помага да настроите околната светлина за вашия външен монитор или телевизор ви позволява да контролирате следното от комфорта на ВСЯКО устройство, което има уеб браузър и е свързано към вашия рутер. LED Цвят Честота на мигане, даваща DJ ефект Задайте различни
Raspberry Pi - BH1715 Цифров сензор за околна светлина Python Урок: 4 стъпки
Raspberry Pi - BH1715 Цифров сензор за околна светлина Python Урок: BH1715 е цифров сензор за околна светлина с интерфейс I²C шина. BH1715 обикновено се използва за получаване на данни за околната светлина за регулиране на мощността на подсветката на LCD и клавиатурата за мобилни устройства. Това устройство предлага 16-битова резолюция и настройва
Raspberry Pi - TSL45315 Сензор за околна светлина Python Урок: 4 стъпки
Raspberry Pi - TSL45315 Сензор за околна светлина Python Урок: TSL45315 е цифров сензор за околна светлина. Той приближава реакцията на човешкото око при различни условия на осветление. Устройствата имат три избираеми времена на интеграция и осигуряват директен 16-битов лукс изход чрез интерфейс на I2C шина. Устройството съвместно