Мазмұны:

Arduino интерактивті жарықдиодты кофе үстелі: 6 қадам (суреттермен)
Arduino интерактивті жарықдиодты кофе үстелі: 6 қадам (суреттермен)

Бейне: Arduino интерактивті жарықдиодты кофе үстелі: 6 қадам (суреттермен)

Бейне: Arduino интерактивті жарықдиодты кофе үстелі: 6 қадам (суреттермен)
Бейне: Sensor Light Up Color Changing RGB Music Interactive Led Piano Tile Giant Floor Induction Brick Stag 2024, Қараша
Anonim
Image
Image
Arduino интерактивті жарықдиодты кофе үстелі
Arduino интерактивті жарықдиодты кофе үстелі

Мен интерактивті кофе үстелін жасадым, ол объектінің үстіндегі үстелдің үстіне қойылған кезде шамдарды қосады. Тек сол объектінің астындағы светодиодтар жанады. Ол мұны жақындық сенсорларын тиімді қолдану арқылы жасайды, ал жақындық сенсоры объектінің жеткілікті жақын екенін сезгенде, ол сол объектінің астындағы түйінді жарықтандырады. Ол сондай -ақ жақындық сенсорларын қажет етпейтін анимацияларды қою үшін Arduino -ды қолданады, бірақ маған ұнайтын керемет әсер қосады.

Жақындық сенсорлары фотодиодтар мен инфрақызыл сәуле шығарғыштардан тұрады. Эмитенттер үстелден жарқырау үшін инфрақызыл сәулені (адам көзі көре алмайды) пайдаланады, ал фотодиодтар объектіден шағылған инфрақызыл сәулені алады. Жарық неғұрлым көп шағылса (объект жақындаса), соғұрлым фотодиодтардан кернеу ауытқиды. Бұл индикатор ретінде қандай түйіннің жануы керектігін айтады. Түйіндер - ws2812b жарық диодтарының жинағы және жақындық сенсоры.

Қосылған бейне бүкіл құрастыру процесін қамтиды, ал мен төменде толығырақ мәлімет беремін.

Жабдықтар

  1. ws2812b жарықдиодты шамдар -
  2. 5В қуат көзі -
  3. Мен кез келген Arduino 2560 қолдандым -
  4. Фотодиодтар
  5. IR эмитенттері
  6. 10 Ом резисторы
  7. 1 MOhms резисторлары
  8. 47 пФ конденсаторлар
  9. CD4051B мультиплексорлары
  10. SN74HC595 ауысымдық регистрлері
  11. ULN2803A Дарлингтон массивтері
  12. Ледтерге арналған үлкен тақта ретінде қолдануға болатын кез келген субстрат, мен үй депосынан қағаз композициялық тақтаны қолдандым

1 -қадам: тақтаны жасаңыз және жарықдиодты салыңыз

Тақтаны жасаңыз және светодиодтарды салыңыз
Тақтаны жасаңыз және светодиодтарды салыңыз
Тақтаны жасаңыз және светодиодтарды салыңыз
Тақтаны жасаңыз және светодиодтарды салыңыз
Тақтаны жасаңыз және светодиодтарды салыңыз
Тақтаны жасаңыз және светодиодтарды салыңыз
Тақтаны жасаңыз және светодиодтарды салыңыз
Тақтаны жасаңыз және светодиодтарды салыңыз

Мен жасаған бірінші нәрсе - біз үстелдің ішіне қоятын жарықдиодты қамтитын тақтаны құрдым. Мен үйдің қоймасынан жасалған композициялық тақтаны қолдандым және оны кофе үстеліне сәйкес етіп кесіп алдым. Тақтаны өлшеміне қарай қиып алғаннан кейін, мен светодиод баратын барлық тесіктерді бұрғыладым. Тақтаның өзінде ws2812b светодиодтарының 8 жолдары мен 12 бағаналары болды, олар 3 дюйм қашықтықта бөлінді және олар серпантин үлгісімен бекітілген. Мен оларды бекіту үшін ыстық желім қолдандым.

Маған түйін болатын орталықта тесіктер бұрғылауға тура келді: квадратты құрайтын 4 ws2812b светодиодтар, 2 фото диодтар мен 2 инфрақызыл сәуле шығарғыштар. Түйіннің ортасындағы бұл 4 тесік фотодиодтар мен сәуле шығарғыштар үшін дақтар болады (әрқайсысынан 2). Мен максималды экспозицияны қамтамасыз ету үшін оларды алмастырдым және оларды әр түйіннің ортасына шамамен 1 дюйм қашықтықта қойдым. Маған оларды ыстық желіммен қоюдың қажеті болмады, мен олардың басқа жақтан шықпайтынына көз жеткізу үшін сымдарды екінші жағынан бүктедім. Мен сондай -ақ оң және теріс ұштарды белгілі бір бағытта бүгуге сенімді болдым, осылайша олар тізбекте дұрыс бағытталды. Барлық оң көрсеткіштер тақтаның артқы жағында, ал барлық теріс сандар тақтаның оң жағында болды.

2 -қадам: Схеманы түсіну

Циклды түсіну
Циклды түсіну
Циклды түсіну
Циклды түсіну
Циклды түсіну
Циклды түсіну

Ескерту: Барлық анимациялық сызбалар дәл орындалмайды (кейбір ардуино түйреуіштері әр түрлі, мен бірнеше тізбекті тізбектеймін, бұл туралы кейінірек). Ақырғы нәтиже схеманың күрделілігіне байланысты сәл өзгеше болды, бірақ барлық анимациялық схемалар әр бөліктің прототипін жасауды түсіну үшін тамаша негіз болып табылады. Тұрақты схема мен схема жобада қолданылатын ПХД -дағыдай.

KiCad жобасы мен гербер файлдары бар ПХД кодын мына жерден табуға болады: https://github.com/tmckay1/interactive_coffee_tabl…, егер сіз ПХД -ге тапсырыс берсеңіз және ұқсас жоба жасасаңыз. Мен тақталарды жасау үшін NextPCB қолдандым.

Бұл кестені құрайтын үш түрлі схема бар. Біріншісі - біз егжей -тегжейлі тоқталмаймыз және ws2812b жарықдиодты қуаттандыратын қарапайым схема. PWM деректер сигналы Arduino -дан ws2812b жарықдиодты шамдарға жіберіледі және қай түстердің қай жерде көрсетілетінін басқарады. Біз ws2812b жарықдиодты қолданамыз, себебі олар жеке адрестеледі, сондықтан біз қайсысын қосуды, қайсысын өшіруді басқара аламыз. Ws2812b шамдары 5В сыртқы қуат көзінен қуат алады, өйткені барлық шамдарды қосуға тек arduino күші жеткіліксіз. Қосылған анимациялық диаграммада олар 330 Ом тартылатын резисторды пайдаланады, бірақ мен оны өз құрылымымда қолданбаймын.

Екінші схема инфрақызыл сәулелендіргіштерді қосады. Бұл схема инфрақызыл эмитенттерге қуат жіберетін дарлингтон массивін басқару үшін ауысым регистрін қолданады. Ауысу регистрі - бұл аз ғана түйреуіштен бірнеше түйреуішке HIGH және LOW сигналдарын жіберуге қабілетті интегралды схема. Біздің жағдайда біз SN74HC595 ауысым регистрін қолданамыз, оны 3 кірістен басқаруға болады, бірақ 8 шығысқа дейін басқарады. Мұны arduino -мен қолданудың артықшылығы - сіз қатарынан 8 ауысымдық регистрлерді тізбектей аласыз (arduino тек 8 -ге дейін өңдей алады). Бұл 64 IR сәулелендіргішті қосу және өшіру үшін сізге arduino -дан 3 түйреуіш қажет екенін білдіреді. Дарлингтон массиві егер кіріс сигналы жоғары болса, құрылғыны сыртқы көзден қуаттандыруға немесе кіріс сигналы ТӨМЕН болса, бұл құрылғыны өшіруге мүмкіндік береді. Біздің мысалда біз ULN2803A дарлингтон массивін қолданамыз, ол 5В сыртқы қуат көзіне инфрақызыл эмитенттерінің 8 -ге дейін қосуға және өшіруге мүмкіндік береді. Біз инфрақызыл сәулелендіргіштерден максималды ампер алу үшін ИҚ сәулелендіргіштері бар 10 Ом резисторды қолданамыз.

Үшінші схема фотодиодтардан бірнеше кірісті алу үшін мультиплексорды қолданады және шығуды деректер сигналына жібереді. Мультиплексор - бұл сіз оқығыңыз келетін бірнеше кірісті алу үшін қолданылатын құрылғы және сол кірістен оқу үшін тек бірнеше түйреуіш қажет. Ол керісінше де жасай алады (демультиплекс), бірақ біз оны бұл жерде қолданбаймыз. Біздің жағдайда фотодиодтардан 8 сигналға дейін қабылдау үшін CD4051B мультиплексоры қолданылады, және бізге сол сигналдарды оқу үшін тек 3 кіріс қажет. Сонымен қатар, біз 8 мультиплексорға дейін тізбектей аламыз (arduino тек 8 -ге дейін өңдей алады). Бұл ардуино 64 фотодиод сигналынан тек 3 цифрлық түйреуіштен оқи алады дегенді білдіреді. Фотодиодтар кері бағытта бағытталған, яғни оң кернеудің оң көзіне бекітілген позитивті сыммен қалыпты бағытта емес, теріс кернеуді оң кернеу көзіне тағайындаймыз. Бұл фотодиодтарды фото резисторларға тиімді түрде айналдырады, олар қабылдайтын жарық мөлшеріне байланысты қарсылықты өзгертеді. Содан кейін жерге төзімділігі 1 МОсм резисторды қосу арқылы фотодиодтардың өзгеретін кедергісіне байланысты кернеуді оқу үшін кернеу бөлгіш құрамыз. Бұл фотодиодтардың қаншалықты ИҚ жарығына байланысты ардуиноға жоғары және төмен кернеулер алуға мүмкіндік береді.

Мен бұл дизайнның көп бөлігін осында жасаған басқа адамнан алдым: https://www.instructables.com/Infrared-Proximity-S… Бұл дизайнда олар біз сияқты 1 МОм резистордың арасына 47pF конденсаторды қосты. фотодиодтармен кернеу бөлгішті құру үшін қолданылады. Оның қосылуының себебі, ол PWM сигналымен инфрақызыл сәулелендіргіштерді қосады және өшіреді, бұл ИҚ шығарғыштары дереу қосылған кезде фотодиодтардан шамалы кернеуді түсірді. Бұл фото диодтардың объектінің инфрақызыл сәулесін қабылдамаған кезде де қарсылықты өзгертуге мүмкіндік берді, себебі инфрақызыл сәуле шығарушылар фотодиодтармен бірдей 5В қуат көзін бөлді. Конденсатор инфрақызыл сәулелендіргіштерді қосу және өшіру кезінде кернеудің төмендеуінің болмауын қамтамасыз ету үшін пайдаланылды. Мен бастапқыда дәл осы стратегияны жасауды жоспарладым, бірақ оны сынау үшін уақыт таусылды, мен оның орнына инфрақызыл сәулелендіргіштерді әрқашан қосулы күйінде қалдырдым. Мен мұны болашақта өзгерткім келеді, бірақ мен кодты және схеманы қайта жасамайынша, дәл қазір ПХД инфрақызыл шамдарды қосуға арналған, мен бәрібір конденсаторларды сақтап қалдым. Егер сіз осы ПХД дизайнын қолдансаңыз, сізге конденсатор қажет емес, бірақ мен ИК эмитенттерін модуляциялауға мүмкіндік беретін ауысым регистріне қосымша кірісті қабылдайтын ПХД басқа нұсқасын енгізгім келеді. Бұл электр энергиясын тұтынуды айтарлықтай үнемдеуге мүмкіндік береді.

Сіз arduino -да тестілеудің прототипін орнату үшін берілген анимациялық диаграммаларды тексере аласыз. Сондай -ақ, электронды қондырғылардың орналасуы мен бағытын сипаттайтын әр схеманың нақтырақ түсті схемасы бар. Қосылған ПХД схемасында бізде 4 жиынтық схема, инфрақызыл сәулелендіргіштерді қосуға арналған 2 схема және фотодиодтардан оқу үшін 2 схема бар. Олар ПХД 2 тобында бір -біріне жақын орналасқан, олар 1 ИҚ эмитентінің тізбегінен және 1 фотодиодты тізбектен тұрады, осылайша 8 түйіннің 2 бағанасын бір ПХД -ге салуға болады. Біз сондай -ақ екі тізбекті біріктіреміз, сондықтан arduino -дан үш түйреуіш екі ауысым регистрін басқара алады, ал 3 қосымша түйіспе тақтадағы екі мультиплексорды басқара алады. Қосымша ПХД -ге тізбек қосуға болатын қосымша шығыс тақырыбы бар.

Міне, мен прототиптеу үшін қолданған бірнеше ресурстар:

  • https://lastminuteengineers.com/74hc595-shift-regi…
  • https://techtutorialsx.com/2016/02/08/using-a-uln2…
  • https://tok.hakynda.com/article/detail/144/cd4051be…

3 -қадам: Дәнекерлеу сымдары түйінге

Дәнекерлеу торабы түйінге
Дәнекерлеу торабы түйінге
Дәнекерлеу торабы түйінге
Дәнекерлеу торабы түйінге
Дәнекерлеу торабы түйінге
Дәнекерлеу торабы түйінге
Дәнекерлеу торабы түйінге
Дәнекерлеу торабы түйінге

Схеманың қалай жасалғанын түсінгеннен кейін, әр түйінге сымдарды дәнекерлеңіз. Мен фотодиодтарды параллель дәнекерледім (сары және сұр сымдар), ал сәуле шығарғыштарды сериялық (қызғылт сары сым). Содан кейін мен 5В қуат көзіне қосылатын фотодиодтарға параллель ұзын сары сымды, ал компьютердің фотодиодтық кірісіне бекітілген көк сымды дәнекерледім. Мен 5В қуат көзіне қосылу үшін пайдаланылатын ИҚ -эмитентінің тізбегіне ұзын қызыл сымды және ПХД ИҚ эмитентінің кірісіне қосылатын қара сымды дәнекерледім. Мен сымдарды біршама қысқа уақытқа создым, сондықтан мен әр бағандағы 5 түйінді қосуға болатынмын (7 орнына). Мен мұны кейінірек түзетуді жоспарлап отырмын.

4 -қадам: ПХД компоненттерін дәнекерлеңіз және оны тақтаға бекітіңіз

ПХД компоненттерін дәнекерлеңіз және оны тақтаға бекітіңіз
ПХД компоненттерін дәнекерлеңіз және оны тақтаға бекітіңіз
ПХД компоненттерін дәнекерлеңіз және оны тақтаға бекітіңіз
ПХД компоненттерін дәнекерлеңіз және оны тақтаға бекітіңіз
ПХД компоненттерін дәнекерлеңіз және оны тақтаға бекітіңіз
ПХД компоненттерін дәнекерлеңіз және оны тақтаға бекітіңіз

Ескерту: Тіркелген суреттегі ПХД - бұл мен жасаған бірінші нұсқа, ол кіріс және шығыс жоқ, сонымен қатар әрбір ішкі тізбек үшін ромашка тізбегі. ПХД жаңа дизайны бұл қатені түзетеді.

Бұл жерде компоненттерді ПХД -ге дәнекерлеу үшін ПХД схемасын орындау қажет, содан кейін ол ПХД -ны тақтаға дәнекерлейді. Мен 5В қуат сигналын қосу үшін сыртқы схемаларды қолдандым, мен оны барлық сары және қызыл сымдарға тараттым. Қарап тұрсам, маған мұндай ұзын қызыл және сары сымдар қажет емес еді және түйіндерді бір -бірімен қосуға болар еді (оларды жалпы сыртқы схемаға қосудың орнына). Бұл тақтаның артқы жағындағы тәртіпсіздіктерді азайтуға мүмкіндік береді.

Менде ws2812b 8 жолдар мен 12 баған болғандықтан, мен 7 жол мен 11 түйін бағандарымен аяқталды (барлығы 77 түйін). Идея - түйіндердің бір бағанына ПХД -ның бір жағын, ал екінші жағына - екінші жағын пайдалану. Менде 11 баған болғандықтан, маған 6 ПХД қажет болды (соңғысына тек бір компоненттер тобы қажет). Мен сымдарды тым қысқа етіп жасағандықтан, мен тек 55 түйін, 11 баған мен 5 жолды ғана байланыстыра алдым. Сіз суретте көріп тұрсыз, мен қателік жіберіп, шикі сымдарды тақтаға дәнекерледім, егер сымдар жеткілікті жұқа болса жақсы болар еді, бірақ менің жағдайда олар тым қалың болды. Бұл менде IR сәулелендіргіштер мен фотодиодтардың әр кіруі үшін сымның ұштары бір -біріне өте жақын болғанын білдіреді, сондықтан сымның барлық қысқа тұйықталуынан көптеген жөндеу жүргізілді. Болашақта мен шортты болдырмау және заттарды тазарту үшін ПХД тақтасындағы сымдарға жалғау үшін коннекторларды қолданамын.

Arduino 8 ауысымдық регистрлер мен мультиплексорларға дейін тек қана ромашка тізбегін құра алатындықтан, мен екі бөлек тізбек жасадым, олардың бірі бірінші 8 бағанды, екіншісі қалған 3 бағанды алады. Содан кейін мен әрбір тізбекті тек 2 мультиплексоры бар басқа компьютерге қостым, осылайша мен мультиплексордың екі сигналдық тізбегін ардуиноға оқи аламын. Бұл екі мультиплексор да ромашкаға байланған. Бұл arduino -да барлығы 16 шығыс сигналдары мен 2 аналогты кірістер болғанын білдіреді: ws2812b жарықдиодты басқаруға арналған 1 шығыс сигналы, ауысым регистрлерінің бірінші тізбегі үшін 3 шығыс сигналы, мультиплексорлардың бірінші тізбегі үшін 3 шығыс сигналы, 2 ауысым регистрлерінің екінші тізбегі үшін 3 шығыс сигналы, екінші мультиплексорлар тізбегі үшін 3 шығыс сигналы, әрбір ПХД деректер сигналын жинақтайтын 2 мультиплексор үшін 3 шығыс сигналы, және ақырында 2 жиынтық мультиплексордан әрбір деректер сигналы үшін 2 аналогтық кіріс.

5 -қадам: Кодты қарап шығыңыз

Ескерту: Төмендегі интерактивті кодтан басқа, мен ws2812b leds анимациясын шығару үшін үшінші жақ кітапханасын қолдандым. Сіз оны мына жерден таба аласыз:

Сіз мен қолданған кодты мына жерден таба аласыз:

Жоғарғы жағында ПХД әр бөлігіне қосылатын arduino түйреуіштерін анықтаймын. Орнату әдісінде мен мультиплексорлар үшін шығыс түйреуіштерді қойдым, инфрақызыл сәулелендіргіштерді қосамын, әр фотодиод үшін қоршаған ортаның жарық көрсеткішін бақылайтын және wS2812b светодиодтарына жазатын FastLED инициализациялайтын baseVal массивін орнатамын. Цикл әдісінде біз ws2812b жолағында қосылу үшін тағайындалған шамдардың тізімін қалпына келтіреміз. Содан кейін біз мультиплексорлық тізбектердегі фотодиодтардың мәндерін оқимыз және ws2812b жарық диодтарын қосамыз, егер түйіндегі фотодиодтың көрсеткіші сыртқы жарық көрсеткіштерінің негізгі мәнінен белгілі бір белгіленген шектен асып кетсе. Содан кейін түйінде өзгеріс болуы керек болса, біз жарық диодты шығарамыз. Әйтпесе, ол жылдамдықты арттыру үшін бірдеңе өзгермейінше циклды жалғастырады.

Мүмкін кодты жақсартуға болар еді, мен мұны істеуге тырысамын, бірақ үстелге объект қойылғаннан кейін шамдар жанған сәттен шамамен 1-2 секунд кідіріс бар. Менің ойымша, FastLED негізгі мәселе үстелдегі 96 жарықдиодты көрсету үшін біраз уақытты қажет етеді және код кестеден 77 кірісті айналып өтіп, оқу керек деп ойлаймын. Мен бұл кодты 8 светодиодпен сынап көрдім және ол бірден болатынын білдім, бірақ осы кодпен жұмыс істейтін және бірден болатын, сонымен қатар кодты жақсартатын светодиодтардың тәтті жерін іздеймін.

6 -қадам: Arduino қосыңыз

Arduino қосыңыз!
Arduino қосыңыз!
Arduino қосыңыз!
Arduino қосыңыз!
Arduino қосыңыз!
Arduino қосыңыз!

Енді сізге arduino -ны қосып, үстелдің жұмысын көру жеткілікті! Бұрын айтылған анимациялар кітапханасын қолдана отырып, ws2812b жарық диодты анимацияларын қоюға болады, немесе сіз кофе үстелінің кодын қойып, әр бөлімде жанып тұрғанын көре аласыз. Кез келген сұрақтарға немесе пікірлерге түсініктеме беріңіз, мен сізге уақытында жауап беруге тырысамын. Сәлем!

Ұсынылған: