Mundarija:

Arduino interaktiv LED kofe stoli: 6 qadam (rasmlar bilan)
Arduino interaktiv LED kofe stoli: 6 qadam (rasmlar bilan)

Video: Arduino interaktiv LED kofe stoli: 6 qadam (rasmlar bilan)

Video: Arduino interaktiv LED kofe stoli: 6 qadam (rasmlar bilan)
Video: V Ray for Revit Новый мир визуализации для архитекторов 2024, Iyul
Anonim
Image
Image
Arduino interaktiv LED kofe stol
Arduino interaktiv LED kofe stol

Men interaktiv kofe stolini yasadim, u stol ostiga qo'yilganda ob'ekt ostidagi chiroqlarni yoqadi. Faqat shu ob'ekt ostidagi LEDlar yonadi. U buni yaqinlik sensorlaridan samarali foydalangan holda amalga oshiradi va yaqinlik sensori ob'ekt etarlicha yaqin ekanligini sezganda, u ob'ekt ostidagi tugunni yoritadi. Bundan tashqari, u yaqinlik sensori kerak bo'lmagan animatsiyalarni qo'yish uchun Arduino -dan foydalanadi, lekin men yoqtirgan ajoyib effektni qo'shadi.

Yaqinlik datchiklari fotodiod va infraqizil nur chiqaruvchilardan iborat. Emitentlar infraqizil nurni (inson ko'zlari ko'ra olmaydigan) stoldan yoritish uchun ishlatadilar va fotodiodlar ob'ektdan aks ettirilgan infraqizil nurni oladi. Yorug'lik qanchalik ko'p aks etsa (ob'ekt qanchalik yaqin bo'lsa), fotodiodlardan keladigan kuchlanish shunchalik o'zgarib turadi. Bu indikator sifatida qaysi tugun yonishini bildiradi. Tugunlar ws2812b LEDlar va yaqinlik sensori to'plamidir.

Qo'shilgan video butun qurilish jarayonini o'z ichiga oladi, men quyida batafsilroq ma'lumot beraman.

Ta'minotlar

  1. ws2812b LED lampalar -
  2. 5V quvvat manbai -
  3. Men xohlagan Arduino 2560 -
  4. Fotodiodlar
  5. IR emitentlari
  6. 10 ohmli rezistorlar
  7. 1 MOhms rezistorlar
  8. 47 pF kondansatörler
  9. CD4051B multipleksorlari
  10. SN74HC595 Shift registrlari
  11. ULN2803A Darlington massivlari
  12. Ledlar uchun katta taxta sifatida ishlatilishi mumkin bo'lgan har qanday substrat, men uy deposidan qog'ozli kompozit taxtadan foydalanardim

1 -qadam: Kengashni yarating va LEDlarni joylashtiring

Kengashni yarating va LEDlarni joylashtiring
Kengashni yarating va LEDlarni joylashtiring
Kengashni yarating va LEDlarni joylashtiring
Kengashni yarating va LEDlarni joylashtiring
Kengashni yarating va LEDlarni joylashtiring
Kengashni yarating va LEDlarni joylashtiring
Kengashni yarating va LEDlarni joylashtiring
Kengashni yarating va LEDlarni joylashtiring

Men qilgan birinchi narsa, biz stolni stolga qo'yadigan chiroqlarni o'z ichiga olgan taxtani yaratish edi. Men uydagi depodan tayyorlangan qog'ozli kompozit taxtadan foydalandim va uni sehpa uchun kerakli o'lchamlarga kesib oldim. Kengashni o'lchamiga qarab kesib tashlaganimdan so'ng, men ledlar ketadigan hamma teshiklarni ochdim. Kengashning o'zida 8 qator va 12 ustunli ws2812b LEDlari bor edi, ular bir -biridan 3 dyuym masofada ajratilgan edi va ular ilon shaklida biriktirilgan edi. Men ularni joyiga mahkamlash uchun issiq elim ishlatardim.

Men ham tugun bo'ladigan markazda teshiklarni burg'ilashim kerak edi: kvadratni tashkil etuvchi 4 ta ws2812b diodli lampalar, 2 diodli diod va 2 ta infraqizil nur chiqaruvchi. Tugun markazidagi bu 4 teshik fotodiodlar va nur chiqargichlar uchun joy bo'ladi (har biridan 2 tadan). Men maksimal ta'sir qilish uchun ularni almashtirdim va har bir tugunning markaziga taxminan 1 dyuym masofada joylashtirdim. Menga bu joylarni issiq yopishtirishning hojati yo'q edi, ular boshqa tomondan chiqmasligiga ishonch hosil qilish uchun boshqa tarafdagi simlarni egdim. Men, shuningdek, ijobiy va salbiy uchlarini ma'lum bir yo'nalishda egishga ishonch hosil qildim, shunda ular sxemada to'g'ri yo'naltirilgan edi. Barcha ijobiy chiziqlar taxtaning orqa tomonining chap tomonida, barcha salbiy chiziqlar esa taxtaning o'ng tomonida edi.

2 -qadam: O'chirish sxemasini tushunish

O'chirish davrini tushunish
O'chirish davrini tushunish
O'chirish davrini tushunish
O'chirish davrini tushunish
O'chirish davrini tushunish
O'chirish davrini tushunish

Eslatma: Barcha jonlantirilgan chizmalar aniq bajarilmaydi (ba'zi arduino pinlari boshqacha, men esa bir nechtasini zanjirlayman, bu haqda keyinroq). Yakuniy natija sxemaning murakkabligi tufayli biroz boshqacha edi, lekin hamma jonlantirilgan sxemalar har bir qismni qanday prototip qilishni tushunish uchun ajoyib asos bo'lib xizmat qiladi. Muntazam sxemalar va sxemalar loyihada ishlatilgan PCBda bo'lgani kabi.

KiCad loyihasi va gerber fayllarini o'z ichiga olgan PCB kodini bu erda topishingiz mumkin: https://github.com/tmckay1/interactive_coffee_tabl…, agar siz o'zingiz tenglikni buyurtma qilishni xohlasangiz va shunga o'xshash loyihani yaratmoqchi bo'lsangiz. Men taxtalarni yaratish uchun NextPCB -dan foydalandim.

Bu jadvalni tashkil etuvchi asosan uch xil sxemalar mavjud. Birinchisi, biz batafsil to'xtalmaymiz va ws2812b LEDlarini quvvatlaydigan oddiy sxema. PWM ma'lumot signali Arduino -dan ws2812b lampochkalarga yuboriladi va qaysi ranglar qaerda ko'rsatilishini boshqaradi. Biz ws2812b LED -laridan foydalanamiz, chunki ular alohida -alohida hal qilinadi, shuning uchun biz qaysi LEDni yoqish va qaysi birini o'chirish kerakligini nazorat qila olamiz. Ws2812b chiroqlar 5V tashqi quvvat manbai bilan quvvatlanadi, chunki faqat arduino barcha chiroqlarni yoqish uchun etarli kuchga ega emas. Qo'shilgan animatsion diagrammada ular 330 Ohmli tortishish rezistoridan foydalanadilar, lekin men buni o'z qurilishimda ishlatmayman.

Ikkinchi sxema IQ emitentlarini yoqadi. Bu sxema IQ emitentlariga quvvat yuboradigan darlington massivini boshqarish uchun smenali registrdan foydalanadi. Shift registri - bu kichik pimlardan bir nechta pimlarga YUQORI va LOW signallarini yuborish imkoniyatiga ega bo'lgan integrallashgan elektron. Bizning holatlarimizda biz SN74HC595 smenali registrdan foydalanamiz, u 3 kirishdan boshqarilishi mumkin, lekin 8 tagacha chiqishni boshqaradi. Arduino -dan foydalanishning afzalligi shundaki, siz ketma -ket 8 smenali registrlarni zanjirlay olasiz (arduino ulardan 8 tasigacha ishlaydi). Bu shuni anglatadiki, sizga 64 ta IR emitrini yoqish va o'chirish uchun arduino -dan faqat 3 ta pin kerak bo'ladi. Darlington massivi sizga kirish signali YUQORI bo'lsa, qurilmani tashqi manbadan quvvatlantirishga yoki kirish signali past bo'lsa, uni o'chirishga imkon beradi. Bizning misolimizda biz ULN2803A darlington massividan foydalanamiz, bu 5V tashqi quvvat manbaiga 8 ta IQ emitrini yoqish va o'chirishga imkon beradi. IQ emitentlaridan maksimal amper olish uchun biz ketma -ket IQ chiqaruvchi 10 Ohmli rezistordan foydalanamiz.

Uchinchi sxema fotodiodlardan bir nechta kirishni qabul qilish uchun multipleksorni ishlatadi va chiqishni ma'lumot signalida yuboradi. Multiplexer - bu siz o'qishni xohlagan bir nechta kirishni olish uchun ishlatiladigan qurilma va bu kirishni o'qish uchun faqat bir nechta pin kerak. Bundan tashqari, buning aksini qilish mumkin (demultiplex), lekin biz uni bu dastur uchun ishlatmaymiz. Bizning holatda, biz fotodiodlardan 8 tagacha signalni qabul qilish uchun CD4051B multipleksoridan foydalanamiz va bu signallarni o'qish uchun bizga faqat 3 ta kirish kerak. Bundan tashqari, biz 8 tagacha multipleksorni romashka bilan bog'lay olamiz (arduino ulardan 8tagacha ishlaydi). Bu shuni anglatadiki, arduino 64 ta fotodiod signalidan faqat 3 ta raqamli pimdan o'qishi mumkin. Fotodiodlar teskari yo'nalishga yo'naltirilgan, ya'ni musbat kuchlanish manbaiga ulangan musbat qo'rg'oshin bilan normal yo'nalish o'rniga, manfiy musbat kuchlanish manbaiga yuklaymiz. Bu fotodiodlarni samarali ravishda nur qarshiligiga qarab o'zgaradi, ular qabul qilayotgan yorug'lik miqdoriga bog'liq. Keyin biz yuqori tezlikda 1 MOhms qarshilikni erga qo'shib, fotodiodlarning o'zgaruvchan qarshiligiga bog'liq bo'lgan kuchlanishni o'qish uchun kuchlanish bo'luvchi yaratamiz. Bu bizga fotodiodlar qancha IQ nurini olishiga qarab, arduino uchun yuqori va past kuchlanishlarni olish imkonini beradi.

Men bu dizaynning ko'p qismini bu erda qilgan boshqa birovdan kuzatdim: https://www.instructables.com/Infrared-Proximity-S… Bu dizaynda ular biz kabi 1mohmli rezistorga 47pF kondansatör qo'shdilar. fotodiodlar bilan kuchlanish bo'luvchi yaratish uchun ishlatiladi. U qo'shgan sababi shundaki, u PWM signali bilan IQ -emitentlarini yoqib -o'chirib turardi va IQ chiqaruvchilari darhol yoqilganda, bu fotodiodlardan kichik kuchlanish pasayishiga olib keldi. Bu fotodiodlar ob'ektdan ko'proq IQ nurini olmaganda ham qarshilikni o'zgartiradi, chunki IQ emitentlari fotodiodlar bilan bir xil 5V quvvat manbaiga ega. Kondensator IQ emitentlarini yoqish va o'chirishda kuchlanish pasayishiga yo'l qo'ymaslik uchun ishlatilgan. Men dastlab xuddi shu strategiyani amalga oshirishni rejalashtirgandim, lekin uni sinab ko'rish uchun vaqt tugab qoldi, shuning uchun men har doim IQ chiqargichlarini yoqib qo'ydim. Kelgusida men buni o'zgartirmoqchiman, lekin men kod va sxemani qayta loyihalashtirgunimcha, hozirda PCB har doim IQ chirog'ini yoqish uchun mo'ljallangan va men baribir kondansatkichlarni saqladim. Agar siz ushbu PCB dizaynidan foydalanayotgan bo'lsangiz, sizga kondansatkich kerak emas, lekin men PCB -ning boshqa versiyasini joriy qilmoqchiman, bu sizga smenali registrga qo'shimcha kirishni qabul qiladi, bu sizga IQ emitrlarini modulyatsiyalash va yoqish imkonini beradi. Bu energiya sarfini ancha tejaydi.

Arduino -da sinov uchun prototipni o'rnatish uchun biriktirilgan animatsion diagrammalarni tekshirishingiz mumkin. Bundan tashqari, har bir elektron uchun batafsilroq rangli sxemalar mavjud, ular elektron qurilmalarni sozlash va yo'nalishini ko'rsatadi. Taqdim etilgan PCB sxemasida bizda 4 ta jami sxemalar, 2 ta IQ yoritgichlarini yoqish uchun ishlatiladigan va 2 ta sxemalar fotodiodlardan o'qish. Ular tenglikni 2 ta guruhga yo'naltirilgan bo'lib, ular bir -birining yonida 1 ta IQ emitori va 1 ta fotodiod sxemasidan iborat bo'lib, 8 ta tugunning 2 ta ustunini bitta PCBga qo'yish mumkin. Shuningdek, biz ikkita davrani bir -biriga bog'laymiz, shuning uchun arduino -dan uchta pin ikkita smenali registrni boshqarishi mumkin va 3 ta qo'shimcha pin bortdagi ikkita multipleksorni boshqarishi mumkin. Qo'shimcha tenglikni zanjirga ulash uchun qo'shimcha chiqish sarlavhasi mavjud.

Mana men prototip yaratish uchun ta'qib qilgan bir nechta manbalar:

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

3 -qadam: Lehim simlari tugunga ulanadi

Lehim simlari tugunga
Lehim simlari tugunga
Lehimlash tugunlari
Lehimlash tugunlari
Lehim simlari tugunga
Lehim simlari tugunga
Lehim simlari tugunga
Lehim simlari tugunga

Endi siz kontaktlarning zanglashiga olib kelishini tushunganingizdan so'ng, simlarni har bir tugunga lehimlang. Men fotodiodlarni parallel ravishda (sariq va kulrang simlar) va ir chiqargichlarni ketma -ket (to'q sariq sim) lehimladim. Keyin men 5V quvvat manbaiga ulanadigan fotodiodlarga parallel ravishda uzunroq sariq simni va pcb fotodiodli kirishiga ulangan ko'k simni lehimladim. Men 5V quvvat manbaiga ulanish uchun ishlatiladigan IQ -emitent sxemasiga uzun qizil simni lehimladim va u PCBning IQ emitentli kirishiga ulanadi. Men simlarni biroz qisqartirdim, shuning uchun har bir ustunda faqat 5 ta tugunni ulashim mumkin edi (7 o'rniga). Buni keyinroq tuzatishni rejalashtiryapman.

4 -qadam: PCB komponentlarini lehimlang va taxtaga ulang

PCB komponentlarini lehimlang va taxtaga ulang
PCB komponentlarini lehimlang va taxtaga ulang
PCB komponentlarini lehimlang va taxtaga ulang
PCB komponentlarini lehimlang va taxtaga ulang
PCB komponentlarini lehimlang va taxtaga ulang
PCB komponentlarini lehimlang va taxtaga ulang

Eslatma: ilova qilingan rasmdagi tenglikni - bu men kiritgan birinchi versiya, uning kirish va chiqishlari, shuningdek har bir ichki zanjir uchun romashka zanjiri yo'q edi. Yangi PCB dizayni bu xatoni tuzatadi.

Bu erda siz komponentlarni PCBga lehimlash uchun PCB sxemasiga amal qilishingiz kerak, so'ngra bu tenglikni kartaga lehimlang. Men 5V kuchlanish signalini ulash uchun tashqi elektron platalardan foydalandim, uni barcha sariq va qizil simlarga tarqatdim. O'tmishda menga bunday uzun qizil va sariq simlar kerak emas edi va tugunlarni bir -biriga ulashlari mumkin edi (ularni umumiy tashqi elektron plataga ulash o'rniga). Bu, albatta, taxtaning orqa qismidagi tartibsizliklarni kamaytiradi.

Menda 8 qator ws2812b led va 12 ta ustun bo'lganligi sababli, men 7 ta satr va 11 ta tugunli ustunlar bilan tugadim (jami 77 tugun). Fikr PCBning bir tomonini tugunlarning bitta ustuni uchun, boshqa tomonini esa boshqa ustun uchun ishlatishdir. Menda 11 ta ustun bo'lganligi uchun menga 6 ta tenglikni kerak edi (oxirgi qismga faqat bitta komponentli guruh kerak). Men simlarni juda qisqa qilib qo'yganim uchun, men faqat 55 tugunni, 11 ustunni va 5 qatorni ulashim mumkin edi. Rasmda ko'rishingiz mumkinki, men xato qildim va xom simlarni taxtaga lehimladim, agar simlar etarlicha ingichka bo'lsa yaxshi bo'lardi, lekin mening holimda ular juda qalin edi. Bu shuni anglatadiki, men har bir IQ emitent va fotodiod kirishlari uchun simlarning uchlari bir -biriga juda yaqin bo'lganman, shuning uchun barcha simlarning qisqa tutashishida ko'plab nosozliklarni tuzatish yuz berdi. Kelgusida men qisqa tutashuvni oldini olish va narsalarni tozalash uchun PCBni bortdagi simlarga ulash uchun ulagichlardan foydalanmoqchiman.

Arduino faqat 8 ta smenali registrlar va multipleksorlargacha romashka zanjiriga ega bo'lishi mumkinligi sababli, men ikkita alohida zanjir yaratdim, ulardan biri birinchi 8 ta ustunni, ikkinchisi qolgan 3 ta ustunni oladi. Keyin men har bir zanjirni faqat ikkita multipleksorga ega bo'lgan boshqa kompyuterga uladim, shunda men har ikki multiplekserdan signal signallarining har bir zanjirini arduinoga o'qishim mumkin edi. Bu ikkita multipleksor ham romashka bilan bog'langan. Bu shuni anglatadiki, arduino -da jami 16 ta chiqish signallari va 2 ta analog kirish ishlatilgan: ws2812b LEDlarini boshqarish uchun 1 ta chiqish signali, birinchi smenali registrlar zanjiri uchun 3 ta chiqish signali, birinchi multipleksor zanjiri uchun 3 ta chiqish signali, Shift registrlarining ikkinchi zanjiri uchun 3 ta chiqish signallari, multipleksorlarning ikkinchi zanjiri uchun 3 ta chiqish signallari, har bir PCB ma'lumot signalini birlashtirgan 2 multipleksor uchun 3 ta chiqish signallari va nihoyat 2 ta agregat multipleksoridan har bir ma'lumot uzatish uchun 2 ta analog kirish.

5 -qadam: Kodni qayta ko'rib chiqing

Eslatma: Quyidagi interaktiv kodga qo'shimcha ravishda, men ws2812b ledlari uchun animatsiyalarni ishlab chiqarish uchun uchinchi tomon kutubxonasidan foydalandim. Buni bu erda topishingiz mumkin:

Men ishlatgan kodni bu erda topishingiz mumkin:

Yuqorida men tenglikni har bir qismiga ulanadigan arduino pinlarini aniqlayman. O'rnatish usulida men multipleksorlar uchun chiqish pimlarini o'rnatdim, infraqizil emitentlarni yoqdim, har bir fotodiod uchun atrofdagi yorug'lik o'qilishini kuzatadigan va wS2812b ledlariga yozadigan FastLED ni ishga tushiradigan baseVal qatorini o'rnatdim. Loop usulida biz ws2812b chizig'ida yoqilgan LEDlar ro'yxatini tiklaymiz. Keyin biz multipoder zanjirlaridagi fotodiodlarning qiymatlarini o'qiymiz va agar tugundagi fotodioddan o'qish atrofdagi yorug'lik ko'rsatkichlarining bazaviy qiymatidan ma'lum chegaradan oshsa, ws2812b chiroqlarini o'rnatamiz. Agar tugunni o'zgartirish kerak bo'lsa, biz LEDlarni ko'rsatamiz. Aks holda, ishni tezlashtirish uchun biror narsa o'zgarmaguncha, u aylanishni davom ettiradi.

Ehtimol, kodni yaxshilash mumkin edi va men buni qilishni o'ylayapman, lekin stolga biror narsa qo'yilgandan keyin chiroqlar yonishidan taxminan 1-2 soniya kechikish bor. Menimcha, FastLED -ning asosiy muammosi stolda 96 ta LEDni ko'rsatish uchun biroz vaqt talab etadi va kod jadvaldan 77 ta kirishni aylanib o'tishi kerak. Men bu kodni 8 ta LED bilan sinab ko'rdim va uni deyarli bir zumda topdim, lekin men bu kod bilan ishlaydigan va deyarli bir zumda ishlaydigan, shuningdek kodni takomillashtiradigan LEDlarning shirin joyiga qarayman.

6 -qadam: Arduino -ni yoqing

Arduino -ni yoqing!
Arduino -ni yoqing!
Arduino -ni yoqing!
Arduino -ni yoqing!
Arduino -ni yoqing!
Arduino -ni yoqing!

Endi arduino -ni yoqish va stol funktsiyasini ko'rish kifoya! Yuqorida aytib o'tilgan animatsion kutubxonadan foydalanib, siz ws2812b -ga ajoyib animatsiyalarni qo'yishingiz mumkin, yoki siz kofe stolining kodini qo'yib, uning har bir bo'limida yonib turganini ko'rishingiz mumkin. Har qanday savol yoki fikringizni sharhlarda bemalol qoldiring va men sizga o'z vaqtida qaytishga harakat qilaman. Salom!

Tavsiya: