Агуулгын хүснэгт:

Arduino интерактив LED кофены ширээ: 6 алхам (зурагтай)
Arduino интерактив LED кофены ширээ: 6 алхам (зурагтай)

Видео: Arduino интерактив LED кофены ширээ: 6 алхам (зурагтай)

Видео: Arduino интерактив LED кофены ширээ: 6 алхам (зурагтай)
Видео: Кодострим по Arduino 2024, Долдугаар сарын
Anonim
Image
Image
Arduino интерактив LED кофены ширээ
Arduino интерактив LED кофены ширээ

Би интерактив кофены ширээ хийсэн бөгөөд уг зүйлийг ширээн дээр тавихад биетийн доор гэрэл асааж өгдөг. Зөвхөн тэр объектын доор байгаа ледүүд гэрэлтэх болно. Энэ нь ойролцоох мэдрэгчийг үр дүнтэй ашиглах замаар хийдэг бөгөөд ойролцоох мэдрэгч нь объект хангалттай ойрхон байгааг мэдрэх үед тэр объектын доорх зангилаа асах болно. Энэ нь мөн Arduino ашиглан ойролцоо мэдрэгч шаардлагагүй анимацыг тавьдаг боловч надад үнэхээр гайхалтай эффект нэмдэг.

Ойролцоох мэдрэгч нь фотодиод ба IR ялгаруулагчаас бүрдэнэ. Ялгаруулагч нь хэт улаан туяаг (хүний нүд харж чаддаггүй) ашиглан ширээн дээрээс гэрэлтүүлж, фотодиодууд объектоос туссан хэт улаан туяаг хүлээн авдаг. Илүү их гэрэл тусах тусам (объект ойртох тусам) фотодиодуудаас ирэх хүчдэлийн хэлбэлзэл их байх болно. Үүнийг аль зангилааг асаахыг зааж өгөх үзүүлэлт болгон ашигладаг. Зангилаа нь ws2812b LED -ийн цуглуулга ба ойролцоо мэдрэгч юм.

Хавсаргасан видео нь бүтээх явцыг бүхэлд нь хамардаг бөгөөд би доорхи дэлгэрэнгүй мэдээллийг тоймлон харуулав.

Хангамж

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

Алхам 1: Самбарыг үүсгээд LED -ийг оруулна уу

Самбарыг үүсгээд LED -ийг оруулна уу
Самбарыг үүсгээд LED -ийг оруулна уу
Самбарыг үүсгээд LED -ийг оруулна уу
Самбарыг үүсгээд LED -ийг оруулна уу
Самбарыг үүсгээд LED -ийг оруулна уу
Самбарыг үүсгээд LED -ийг оруулна уу
Самбарыг үүсгээд LED -ийг оруулна уу
Самбарыг үүсгээд LED -ийг оруулна уу

Миний хийсэн хамгийн эхний зүйл бол кофены ширээний дотор байрлуулах гэрлийг агуулсан самбарыг бүтээх явдал байв. Би гэрийн агуулахаас авсан цаасан нийлмэл хавтанг ашиглаж, кофены ширээнд тохирсон хэмжээгээр хайчилж авлаа. Самбарыг хэмжээгээр нь хайчилж авсны дараа би лед хаашаа явж байгаа бүх нүхийг өрөмдсөн. Самбар нь өөрөө 3 инчийн зайтай ws2812b leds -ийн 8 мөр, 12 баганаас бүрдсэн бөгөөд тэдгээрийг могойн хэлбэрээр хэвлэв. Тэдгээрийг бэхлэхийн тулд би халуун цавуу хэрэглэсэн.

Би мөн зангилаа болох төвд цооног өрөмдөх шаардлагатай болсон: дөрвөлжин бүрдүүлдэг 4 ws2812b LED, 2 фото диод, 2 IR ялгаруулагчийн төв хэсэгт байрлах жижиг талбайд. Зангилааны төвд байрлах эдгээр 4 нүх нь фотодиод ба цацраг туяа ялгаруулах цэгүүд байх болно (тус бүр 2 ширхэг). Би хамгийн их өртөхийн тулд тэдгээрийг ээлжлэн сольж, зангилаа бүрийн төвд ойролцоогоор 1 инчийн зайтай байрлуулсан. Надад эдгээрийг халуун цавуугаар байрлуулах шаардлагагүй байсан, нөгөө талаас нь гарахгүй байхын тулд нөгөө талаас нь тугалган нугалав. Би эерэг ба сөрөг үзүүрийг тодорхой чиглэлд нугалж, ингэснээр хэлхээнд зөв чиглүүлж өгсөн. Бүх эерэг хөтчүүд самбарын арын зүүн талд байсан бол бүх сөрөг удирдамж самбарын баруун талд байв.

Алхам 2: Цахилгаан хэлхээг ойлгох

Цахилгаан хэлхээг ойлгох
Цахилгаан хэлхээг ойлгох
Цахилгаан хэлхээг ойлгох
Цахилгаан хэлхээг ойлгох
Цахилгаан хэлхээг ойлгох
Цахилгаан хэлхээг ойлгох

Анхаарна уу: Бүх хөдөлгөөнт зургууд нь гүйцэтгэлд яг тохирдоггүй (зарим arduino тээглүүрүүд нь өөр өөр байдаг, би цөөн хэдэн зүйлийг гинжээр хийдэг, дараа нь энэ талаар дэлгэрэнгүй ярих болно). Эцсийн үр дүн нь хэлхээний нарийн төвөгтэй байдлаас шалтгаалан арай өөр байсан боловч бүх хөдөлгөөнт хэлхээ нь хэсэг бүрийг хэрхэн яаж загварчлах талаар ойлгоход маш сайн үндэс суурь болдог. Энгийн схем ба хэлхээний диаграм нь төсөлд ашигласан ПХБ дээр байгаа шиг байна.

KiCad төсөл болон гербер файлуудыг агуулсан ПХБ -ийн кодыг эндээс олж болно: https://github.com/tmckay1/interactive_coffee_tabl…, хэрэв та ПХБ -ийг өөрөө захиалж, үүнтэй төстэй төсөл үүсгэхийг хүсч байвал. Би самбар үүсгэхийн тулд NextPCB -ийг ашигласан.

Энэ хүснэгтийг бүрдүүлдэг үндсэндээ гурван өөр хэлхээ байдаг. Эхнийх нь бид нарийвчлан авч үзэхгүй бөгөөд ws2812b LED -ийг ажиллуулдаг энгийн хэлхээ юм. PWM мэдээллийн дохиог Arduino -аас ws2812b гэрлийн чийдэн рүү илгээдэг бөгөөд хаана ямар өнгө харуулсныг хянадаг. Бид ws2812b LED -ийг тус тусад нь шийдвэрлэх боломжтой тул аль ледийг асаах, алийг нь унтрааж болохыг хянах боломжтой болно. Ws2812b leds нь 5V гадаад тэжээлийн эх үүсвэрээр тэжээгддэг, учир нь зөвхөн arduino бүх гэрлийг асаах хангалттай хүч чадалгүй байдаг. Хавсаргасан хөдөлгөөнт диаграммд тэд 330 Ом эсэргүүцэх эсэргүүцлийг ашигладаг боловч би үүнийг бүтээхдээ ашигладаггүй.

Хоёрдахь хэлхээ нь IR ялгаруулагчийг асаана. Энэ хэлхээ нь IR ялгаруулагч руу хүч илгээдэг дарлингтоны массивыг хянахын тулд ээлжийн бүртгэлийг ашигладаг. Ээлжийн бүртгэл гэдэг нь бага бадагнаас олон зүү рүү HIGH ба LOW дохио илгээх чадвартай нэгдсэн хэлхээ юм. Манай тохиолдолд бид SN74HC595 ээлжийн бүртгэлийг ашигладаг бөгөөд үүнийг 3 оролтоос хянах боломжтой боловч 8 хүртэлх гаралтыг хянадаг. Үүнийг arduino -той ашиглахын давуу тал нь та 8 ээлжийн бүртгэлийг дараалан дараалан гинжлэх боломжтой (arduino зөвхөн 8 хүртэл ширхэгийг зохицуулж чаддаг). Энэ нь танд 64 IR ялгаруулагчийг асаах, унтраахад arduino -аас ердөө 3 зүү хэрэгтэй гэсэн үг юм. Дарлингтоны массив нь оролтын дохио ӨНДӨР бол гадны эх үүсвэрээс төхөөрөмжийг тэжээх эсвэл оролтын дохио ХААГАА бол тухайн төхөөрөмжийг унтраах боломжийг олгодог. Тиймээс бидний жишээн дээр бид ULN2803A darlington массивыг ашигладаг бөгөөд энэ нь 5V гадаад тэжээлийн эх үүсвэрийг 8 ширхэг IR цацагчийг асаах, унтраах боломжийг олгодог. IR цацрагчаас хамгийн их гүйдэл авахын тулд бид IR ялгаруулагчтай 10 Ом эсэргүүцэл ашигладаг.

Гурав дахь хэлхээ нь мультиплексор ашиглан фотодиодуудаас олон оролтыг хүлээн авдаг бөгөөд гаралтыг өгөгдлийн дохиогоор илгээдэг. Мультиплексор бол уншихыг хүссэн олон оролтыг авахад ашигладаг төхөөрөмж бөгөөд эдгээр оролтоос уншихын тулд хэдхэн зүү хэрэгтэй болно. Энэ нь мөн эсрэгээр хийх боломжтой (demultiplex), гэхдээ бид үүнийг энд энэ програмд ашигладаггүй. Тиймээс манай тохиолдолд бид CD4051B мультиплексор ашиглан фотодиодоос 8 хүртэлх дохиог авдаг бөгөөд эдгээр дохионоос уншихын тулд бидэнд зөвхөн 3 оролт хэрэгтэй. Дээрээс нь бид 8 мультиплекс хүртэл гинж хийх боломжтой (arduino нь зөвхөн 8 хүртэл ширхэгийг зохицуулж чаддаг). Энэ нь arduino нь ердөө 3 дижитал тээглүүрээс авсан фотодиодын 64 дохиог унших боломжтой гэсэн үг юм. Фотодиодууд нь урвуу чиг баримжаатай байдаг бөгөөд энэ нь эерэг хүчдэлийн эх үүсвэрт бэхлэгдсэн эерэг хар тугалга бүхий хэвийн чиглэлд чиглүүлэхийн оронд бид сөрөг хүчдэлийг эерэг хүчдэлийн эх үүсвэрт хуваарилдаг гэсэн үг юм. Энэ нь фотодиодуудыг фото резистор болгон үр дүнтэй болгодог бөгөөд энэ нь хүлээн авсан гэрлийн хэмжээнээс хамаарч эсэргүүцэл өөрчлөгддөг. Фотодиодын янз бүрийн эсэргүүцлээс хамаарах хүчдэлийг уншихын тулд хүчдэлийн хуваагдлыг бий болгож, өндөр эсэргүүцэлтэй 1 MOhms резисторыг газардуулав. Энэ нь фотодиодууд хичнээн IR туяа хүлээн авахаас хамаарч arduino -д өндөр ба бага хүчдэл авах боломжийг бидэнд олгодог.

Би энэ дизайны ихэнхийг энд хийсэн өөр хүний хийсэн загварыг дагаж мөрдсөн: https://www.instructables.com/Infrared-Proximity-S… Энэ загварт тэд бас 1 МОм эсэргүүцлийн эсрэг талд 47pF конденсатор нэмсэн. Фотодиодоор хүчдэл хуваагч үүсгэхэд ашигладаг. Түүний нэмж хэлсний шалтгаан нь тэрээр ХБХ -ийн дохиогоор IR ялгаруулагчийг асаах, унтраах, ингэснээр IR ялгаруулагчийг нэн даруй асаахад фотодиодуудаас бага зэргийн хүчдэлийн уналтыг авчирсантай холбоотой юм. Энэ нь гэрэл ялгаруулагч нь фотодиодтой ижил 5V тэжээлийн эх үүсвэртэй байсан тул объектоос илүү их IR гэрэл аваагүй байсан ч гэрэл диодыг эсэргүүцлийг өөрчилсөн юм. IR ялгаруулагчийг асаах, унтраах үед хүчдэлийн уналт байхгүй эсэхийг шалгахын тулд конденсаторыг ашигласан. Би анх ийм стратеги хийхээр төлөвлөж байсан боловч үүнийг туршиж үзэх цаг дууссан тул IR цацагчийг үргэлж асаалттай орхисон. Би үүнийг ирээдүйд өөрчлөхийг хүсч байна, гэхдээ код, хэлхээг дахин төлөвлөх хүртэл яг одоо ПХБ нь үргэлж IR гэрэлтэй байхаар хийгдсэн бөгөөд би конденсаторыг ямар ч байсан хадгалсан. Хэрэв та энэхүү ПХБ -ийн загварыг ашиглаж байгаа бол танд конденсатор хэрэггүй болно, гэхдээ би IR ялгаруулагчийг асаах, унтраах боломжийг олгодог ээлжийн бүртгэлд нэмэлт оролтыг хүлээн авдаг ПХБ -ийн өөр хувилбарыг танилцуулах гэж байна. Энэ нь эрчим хүчний хэрэглээг ихээхэн хэмнэх болно.

Та өөрийн arduino дээр турших прототипийн тохиргоог хавсаргасан хөдөлгөөнт диаграмыг шалгаж болно. Цахим төхөөрөмжүүдийн тохиргоо, чиглэлийг харуулсан хэлхээ бүрийн хувьд илүү нарийвчилсан өнгөт схем байдаг. ПХБ -ийн схемд бид нийт 4 хэлхээ, IR ялгаруулагчийг асаахад ашигладаг 2 хэлхээ, фотодиодоос унших 2 хэлхээтэй байна. Тэдгээр нь ПХБ -ийн 2 бүлэгт 1 IR ялгаруулагч хэлхээ, 1 фотодиодын хэлхээнээс бүрдэх бүлэгтэй бөгөөд ингэснээр 8 зангилааны 2 баганыг нэг ПХБ -д оруулах боломжтой болно. Бид мөн хоёр хэлхээг Daisy гинжээр холбодог тул 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В тэжээлийн эх үүсвэрт холбох ПХБ -ийн IR ялгаруулагч оролттой холбох хар утсыг IR ялгаруулагч хэлхээнд гагнав. Би утаснуудаа бага багаар богиносгосон тул би багана бүрийн 5 зангилааг л холбож чадсан (7 -ийн оронд). Үүнийг дараа нь засахаар төлөвлөж байна.

Алхам 4: ПХБ -ийн бүрэлдэхүүн хэсгүүдийг гагнах ба самбар дээр хавсаргана

ПХБ -ийн бүрэлдэхүүн хэсгүүдийг гагнаж, самбар дээр хавсаргана уу
ПХБ -ийн бүрэлдэхүүн хэсгүүдийг гагнаж, самбар дээр хавсаргана уу
ПХБ -ийн бүрэлдэхүүн хэсгүүдийг гагнаж, самбар дээр хавсаргана уу
ПХБ -ийн бүрэлдэхүүн хэсгүүдийг гагнаж, самбар дээр хавсаргана уу
ПХБ -ийн бүрэлдэхүүн хэсгүүдийг гагнаж, самбар дээр хавсаргана уу
ПХБ -ийн бүрэлдэхүүн хэсгүүдийг гагнаж, самбар дээр хавсаргана уу

Тэмдэглэл: Хавсаргасан зураг дээрх ПХБ бол миний хийсэн анхны хувилбар бөгөөд цахилгаан оролт, гаралтгүй, мөн дотоод хэлхээ бүрийн хувьд Daisy гинж гаргадаг. ПХБ -ийн шинэ загвар нь энэ алдааг зассан болно.

Энд та ПХБ -ийн схемийг дагаж, бүрэлдэхүүн хэсгүүдийг ПХБ -д гагнах хэрэгтэй бөгөөд дараа нь үүнийг хийсний дараа ПХБ -ийг самбар дээр гагнах хэрэгтэй. Би гадаад хэлхээний самбар ашиглан 5V цахилгаан дохиог залгаж, бүх шар, улаан утсанд тараасан. Эргээд харахад надад ийм урт улаан, шар утас хэрэггүй байсан бөгөөд зангилааг хооронд нь холбож болох байсан (ердийн гадаад хэлхээний самбартай холбохын оронд). Энэ нь самбарын ард байрлах эмх замбараагүй байдлыг үнэхээр бууруулах болно.

Надад 8 мөр ws2812b leds, 12 багана байсан тул би 7 мөр, 11 зангилааны зангилаатай (нийт 77 зангилаа) дууссан. ПБХ -ийн нэг талыг зангилааны нэг багананд, нөгөө талыг нөгөө багананд ашиглах явдал юм. Тиймээс надад 11 багана байсан тул надад 6 ПХБ хэрэгтэй байсан (сүүлчийнх нь зөвхөн нэг бүлгийн бүрэлдэхүүн хэсэг хэрэгтэй байсан). Би утсыг хэт богино болгосон тул 55 зангилаа, 11 багана, 5 мөрийг л холбож чадсан. Та зураг дээр харж байна, би алдаа гаргаж, түүхий утсыг самбар дээр гагнасан бөгөөд хэрэв утас нь хангалттай нимгэн байвал сайн, гэхдээ миний хувьд хэт зузаан байсан. Энэ нь би IR ялгаруулагч оролт, фотодиодын оролт бүрт утсан үзүүрүүд хоорондоо маш ойрхон байсан гэсэн үг юм. Ирээдүйд би богино холболтоос зайлсхийхийн тулд самбар дээрх утаснуудтай ПХБ -ийг холбохын тулд холбогчийг ашиглах болно.

Arduino нь зөвхөн 8 ээлжийн бүртгэл, мультиплекс хүртэл гинжин хэлхээ хийж чаддаг тул би хоёр тусдаа гинж үүсгэсэн бөгөөд нэг нь эхний 8 баганыг, нөгөө нь үлдсэн 3 баганыг авдаг. Дараа нь би хэлхээ бүрийг ердөө 2 мултиплексортой өөр компьютерт хавсаргасан бөгөөд ингэснээр би эдгээр хоёр мультиплексороос өгөгдөл дамжуулах дохио бүрийг arduino руу унших боломжтой болсон. Эдгээр хоёр мультиплексорыг мөн Daisy гинжлэв. Энэ нь arduino -д нийт 16 гаралтын дохио, 2 аналог оролтыг ашигласан гэсэн үг юм: ws2812b LED -ийг удирдах 1 гаралтын дохио, ээлжийн бүртгэлийн эхний хэлхээний 3 гаралтын дохио, мултиплексорын эхний хэлхээний 3 гаралтын дохио, Хоёрдахь ээлжийн бүртгэлийн гаралтын 3 гаралт, хоёр дахь мултиплексорын гинжин хэлхээний 3 гаралтын дохио, ПХБ -ийн мэдээллийн дохио тус бүрийг нэгтгэдэг 2 мултиплексорын 3 гаралтын дохио, эцэст нь 2 агрегат мультиплексороос авсан өгөгдөл бүрийн 2 аналог оролт.

Алхам 5: Кодоо шалгана уу

Тэмдэглэл: Доорх интерактив кодоос гадна би 3 -р талын номын санг ашиглан ws2812b leds -ийн анимацийг гаргав. Та эндээс олж болно:

Та миний ашигласан кодыг эндээс олж болно:

Дээд талд би ПХБ -ийн хэсэг бүрт холбогдох arduino тээглүүрүүдийг тодорхойлно. Тохируулах аргын хувьд би мультиплексоруудын гаралтын тээглүүрийг тохируулж, IR ялгаруулагчийг асааж, фотодиод бүрийн орчны гэрлийн уншилтыг хянадаг baseVal массивыг тохируулж, ws2812b leds руу бичих FastLED -ийг эхлүүлсэн. Давталтын аргаар бид ws2812b зурвас дээр асаалттай байгаа LED -ийн жагсаалтыг дахин тохируулдаг. Дараа нь бид мультиплексор гинжин хэлхээний фотодиодуудын утгыг уншиж, хэрэв зангилаан дахь фотодиодын уншилт нь орчны гэрлийн уншилтын үндсэн утгаас тодорхой тогтоосон босгыг давсан бол асаах ёстой ws2812b гэрлийг тохируулна. Дараа нь зангилаа асаалттай байх шаардлагатай бол бид LED -ийг гаргадаг. Үгүй бол аливаа зүйлийг хурдасгахын тулд ямар нэгэн зүйл өөрчлөгдөх хүртэл энэ нь үргэлжлэн эргэлддэг.

Кодыг сайжруулж магадгүй юм, би үүнийг хийхийг хүсч байна, гэхдээ ширээн дээр объект тавьсны дараа гэрэл асахаас 1-2 секундын саатал гардаг. FastLED нь ширээн дээрх 96 гэрлийг гаргахад хэсэг хугацаа шаардагддаг бөгөөд код нь хүснэгтээс 77 оролтыг эргүүлж унших ёстой гэж би бодож байна. Би 8 кодыг ашиглан энэ кодыг туршиж үзсэн бөгөөд энэ нь бараг тэр даруй олдсон боловч энэ кодтой ажиллах, бараг л шуурхай ажиллах, мөн кодыг сайжруулах LED -ийн сайхан цэгийг хайж байна.

Алхам 6: Arduino -г асаана уу

Arduino -г асаана уу!
Arduino -г асаана уу!
Arduino -г асаана уу!
Arduino -г асаана уу!
Arduino -г асаана уу!
Arduino -г асаана уу!

Одоо танд хэрэгтэй зүйл бол arduino -г асааж, хүснэгтийн функцийг харах явдал юм! Өмнө дурдсан хүүхэлдэйн киноны номын санг ашиглан та ws2812b хөтөчтэй анимэйшнүүдийг хийж болно, эсвэл кофены ширээний кодыг оруулаад хэсэг тус бүр дээр асаж байгааг харах боломжтой. Асуулт, санал сэтгэгдлээ чөлөөтэй бичээрэй, би тантай цаг тухайд нь холбоо барихыг хичээх болно. Баяртай!

Зөвлөмж болгож буй: