Mundarija:
- 1 -qadam: ehtiyot qismlar va asboblar
- 2 -qadam: galstukni o'qish
- 3 -qadam: NeoPiksellarni ulash
- 4 -qadam: O'yin maydonchasi ekspressini ulash
- 5 -qadam: CPX -ni yoqish
- 6 -qadam: O'yin maydonchasi ekspressini o'rnatish
- 7 -qadam: O'yin maydonchasi tezligini kodlash
- 8 -qadam: galstuk tugmachasini bosish
Video: Xoli-galstuk: 8 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Muallif: gwfongMonkey PatchingFollow More by:
Haqida: Qiziqarli narsalar qilishni istagan yigit gwfong haqida ko'proq »
Bu Holi-Tie bayram kunlari taqish uchun mo'ljallangan bayramona galstuk. Florki taxtasidan foydalanadigan Bekki Sternning Ampli-Tie-ga asoslanib, Holi-Tie NeoPixel animatsiyalari va musiqasini boshqarish uchun Circuit Python Express (CPX) mikrokontroleridan foydalanadi. Bir tugma 2 xil NeoPixel animatsiyasi o'rtasida o'zgaradi. Sig'imli sensorli prokladkalar NeoPixel ranglarini va animatsiya tezligini o'zgartiradi. Boshqa tugma LED animatsiyasi va musiqa o'rtasida o'zgaradi. Bort mikrofoni VU o'lchagich animatsiyasi uchun atrofdagi shovqinlarni o'lchash uchun ishlatiladi. Va CPX dinamikasi bayram chiplarini kuylaydi.
Hammasi CircuitPython tizimida ishlaydigan Python dasturlash tili yordamida kodlangan. U 3.7V, 500mAH LiPo batareyasi bilan jihozlangan, uni yoqish/o'chirish tugmasi o'zgartirilgan.
Holi-Tie-ni ko'rsatadigan ikkita videoklip bor:
- Xoli-galstuk tugadi
- Holi-galstuk ichida
1 -qadam: ehtiyot qismlar va asboblar
Qismlar
- O'yin maydonchasi ekspressi
- 15x Flora neopiksellari
- Magnit sim
- Yopishqoq kanca va pastadir tasmasi
- JST ulagichli 500 mA / soat lipo batareyasi
- Candy qamish taqish
- Mini slaydni almashtirish, SPDT
- Issiqlikka chidamli quvurlar
Qismlarni sotib olayotganda, qo'shimcha sotib olish oqilona bo'ladi. Menda jami 20 ta NeoPixel bor edi, ulardan biri boshidan sindirilgan, ikkinchisi esa men vayron qilganman. Candy qamishining galstuklari shunchalik arzon ediki, men ikkinchisini sotib oldim.
Asboblar
- Issiq yopishtiruvchi qurol
- Lehimlash stantsiyasi
- Tel kesgichlar
- Kichik pichoq
- Multimetr
- Kompyuter
- Yengilroq yoki issiq qurol
- Ip va igna
2 -qadam: galstukni o'qish
Asosiy maqsad - ichki galstuk yadrosiga kirish va LEDlarni qaerda joylashtirish kerakligini ko'rsatuvchi chiziqlarni ajratish.
1 -qadam: galstukni joyiga bog'lang
Elektron buyumlar joyida bo'lsa, galstuk taqish qiyin bo'ladi. Shunday qilib, galstukni yaxshi ko'rinadigan qilib bog'lang va tugun etarlicha mustahkam va ochilmasin. Keyin galstukni boshidan uzib olish uchun teshikni ochish uchun galstukning kichik uchini ehtiyotkorlik bilan torting. Bu galstuk ishlanadigan pozitsiya.
Har xil taqish tugunlari mavjud. Men faqat bolaligimda o'rgangan, Vindzorni bilaman. Qaysi tugun ishlatilganligi muhim emas.
2 -qadam: galstukning orqa qismini oching
Tarmoqli halqa va logotipning bir tomonidagi tikuvlarni oching, so'ngra galstukning o'rtasidan pastga tushiring. Ehtiyot bo'ling, chunki uni oxirigacha tikib qo'yish kerak.
3 -qadam: LEDlarni joylashtirish kerak bo'lgan chiziqlarni chizish
LEDlarning galstukning oq chiziqli qismlarida paydo bo'lishi uchun galstuk yadrosining orqa qismidagi har bir oq chiziqli bo'lakning markaziy chizig'ini topish osonroq bo'ladi, so'ngra uni galstuk yadrosining old tomoniga joylashtiring. Markaziy chiziq 1) o'rtada va 2) chiziq bilan parallel ekanligini tekshiring va ikki marta tekshiring. LED pozitsiyalarini aniq sozlash, agar ular biroz uzilgan bo'lsa, mumkin bo'ladi. Ammo buni keyinroq emas, hozir aniqroq qilish yaxshiroqdir.
Chiziqlarga LEDlarni qo'yish va chiziqli matoni ustiga qo'yish orqali chiziqlarning markazlashtirilganligini tekshiring. Kerakli joyni sozlang.
3 -qadam: NeoPiksellarni ulash
Asosan, biz o'zimiz LED tasmasini ishlab chiqaramiz. Biz shunchaki LEDlarni galstuk yadrosiga o'rnatamiz va keyin ularni bir -biriga ulaymiz.
1 -qadam: NeoPixel -ni galstuk yadrosiga mahkamlang
NeoPixel -ning orqa tomoniga issiq elim surting va uni o'rta chiziqlarga qo'ying. 3 ta NeoPixelli bo'limlar uchun NeoPixel markazini vertikal ravishda tekislang va avval ularni pastga yopishtiring. Bu chap va o'ng NeoPixelni markazga nisbatan joylashtirishni osonlashtiradi, ayniqsa galstuk kengligi yuqoridan pastgacha oshgan bo'lsa.
Barcha NeoPixellarni pastdan o'ngdan o'ngga bir yo'nalishda yo'naltirishga ishonch hosil qiling. Agar bu noto'g'ri bo'lsa, chiziq ishlamaydi.
Issiq elim haqida eslatma. Loyihani yakunlash uchun etarli bo'ladi. Bu ko'p yillar davom etadimi -yo'qmi, faqat ko'rish kerak.
3 -qadam: NeoPixellarni bir -biriga lehimlang
NeoPixelni o'tkazgichli ipni ishlatmasdan, lehimlashga qaror qilganim uchun, NeoPixel yostiqchasidagi teshik biroz bizga qarshi ishlaydi. Simni lehimlash uchun yostiqdan yaxshi joy toping. Teshikni lehim bilan to'ldirishga urinmang, lekin agar shunday bo'lsa, yaxshi bo'ladi.
Magnit sim mis yadro atrofida yupqa izolyatsiyali qatlamga ega. Pichoq bilan, izolyatsiyani faqat lehimlanadigan joydan olib tashlang. Telning butun atrofini qirib tashlash yaxshidir.
4 -qadam: ulanishni tekshiring
Ulanishini tekshirish uchun multimetrdan foydalaning:
- Ijobiy aloqalar. Uchdan quyruqgacha ulanish bo'lishi kerak. Sinovning simga emas, balki prokladkalarga ulanishiga ishonch hosil qiling.
- Erga ulanishlar. Xuddi shu sinovni, lekin er yostiqchalari bilan bajaring.
- Har bir ma'lumot liniyasi. Ma'lumotlar panelidan keyingisiga ulanish mavjudligini tekshiring.
4 -qadam: O'yin maydonchasi ekspressini ulash
O'chirish maydonchasi Express (CPX) - bu tizimning yuragi. Adafruit -da ushbu nazoratchi uchun ko'plab qo'llanmalar mavjud. Keyinchalik, bu ko'rsatmali, men MCU -ning bir nechta xususiyatlarini ajratib ko'rsataman.
1 -qadam: CPX ni NeoPixelning pastki uchiga lehimlang
Quvvat, topraklama va ma'lumot uchun magnit simning mos uzunligini kesib oling. Ularni NeoPixel quvvatiga, erga va ma'lumotlar yostiqchalariga tegib turishi uchun ularni galstukli matodan o'tkazing. Ularni lehimlang, prokladkalardagi mavjud simlar hali ham yaxshi aloqa o'rnatayotganiga ishonch hosil qiling.
Keyin galstuk yadrosini ag'daring va CPXni xohlagan joyga qo'ying. Quvvat simini VOUT yostig'iga, topraklama simini har qanday topraklama yostig'iga va ma'lumot simini A0 dan boshqa har qanday kirish -chiqish padiga ulang. Men yozgan kod A3 dan foydalanadi.
Ulanishni tekshiring.
2 -qadam: CPX -ni ulang
Ip va ignadan foydalanib, bir xil masofada joylashgan to'rtta prokladkani tanlang va ularni bog'ich yadrosiga tikib qo'ying.
5 -qadam: CPX -ni yoqish
CPX -da yoqish/o'chirish tugmasi yo'q. Bu shuni anglatadiki, batareya ulangan payt galstuk yoqiladi. Bu shuni anglatadiki, uni o'chirishning yagona yo'li batareyani tarmoqdan uzishdir, bu katta qiyinchilik. Batareyani o'chirish/o'chirish tugmachasini qo'yish oddiy echimdir.
1 -qadam: Kalitning 3 -pinini kesib oling
Markaziy bo'lmagan pinlardan biri kerak emas. Kalit korpusi bilan bir tekisda kesib oling.
2-qadam: Kalitni batareyaga ulang
Batareya simini o'rtasidan bir joyga kesib oling. Topraklama simlarining har biriga issiqlik qisqaruvchi quvur bo'lagini siljiting. Bir topraklama simini pimlardan biriga, ikkinchisini esa boshqa pinga lehimlang. Ularning bir -biriga tegmasligiga yoki lehim metall korpusga tegishiga ishonch hosil qiling.
Multimetr yordamida ulanmaganligini tekshiring. Quvurni lehimli ulanishlar ustiga siljiting va uni qisqartiring. Bükme charchoqlari tufayli muvaffaqiyatsiz bo'lishi mumkin bo'lgan har qanday qismga bir oz elektr tasmasini qo'shing.
3 -qadam: Batareyaning ishlashini tekshiring
Bu vaqtda batareyani CPX ga ulash mumkin. Agar hamma narsa yaxshi bo'lsa, kalit CPX -ni yoqishi va o'chirishi kerak.
4 -qadam: Batareyani joylashtiring
Batareyaning orqa tomoniga va galstuk yadrosiga ozgina yopishtiruvchi kancak va halqa lenta qo'ying. Agar galstuk juda ko'p ishlov berilmasa, bu o'z o'rnida qoladi.
6 -qadam: O'yin maydonchasi ekspressini o'rnatish
Men CPX -ni qanday sozlash haqida batafsil ma'lumot bermayman. Adafruit buni qiladi, keyin esa ba'zi. Men tez -tez duch keladigan muammolar uchun bir nechta maslahatlar beraman.
CPX muzlaydi
Ehtimol, ish vaqti xotira muammolari tufayli, CPX tez -tez muzlab qoladi. Tez tuzatish-o'chirish va qayta yoqish. Ushbu ko'rsatmalarda "Eski yo'l" ni qidiring. Asosan, bu bir nechta tugmachalarni bosish, o'chirish uchun tortish va tushirish, so'ngra qayta yoqish uchun tortish va tushirish.
Ogohlantirish: bu hamma narsani o'chirib tashlaydi. CPX -dagi barcha kodlar yo'qoladi.
CPX -dagi o'zgarishlarni saqlash muammolarga olib kelishi mumkin
Men ba'zida faylni CPX -ga saqlaganimdan so'ng, python ish vaqti yomon holatda bo'lishini aniqladim. Qayta tiklash tugmachasini bosib, tuzatish python ish vaqtini qayta boshladi. Uni faqat bir marta bosing. Uni ikki marta bosish qayta yoqish jarayonini boshlaydi.
CPX -ga to'g'ridan -to'g'ri saqlash xavfli
CPX-ni qayta ko'rsatish ehtimoli tufayli, ularning barcha kodlarini yo'qotish xavfi bor. Kodni ikki marta yo'qotib qo'yganimdan so'ng, men oddiy ish oqimini topdim. Men kodimni mahalliy qattiq diskka saqlardim. U CPXda sinovdan o'tishga tayyor bo'lganda, men uni oddiy tarqatish skriptini ishga tushirib nusxa ko'chirardim.
7 -qadam: O'yin maydonchasi tezligini kodlash
Bu vaqtda CPX va NeoPixels deyarli to'liq. Ular bilan boshqa mexanik yoki elektr ishlarini bajarish shart emas. Qolganlarning hammasi dasturiy ta'minot.
Kodni mening github hisobimdan topish mumkin. Asosiy python kodi barcha operatsion tizimlar uchun o'zgarishsiz ishlashi kerak. Adafruit CircuitPython tashqi kutubxonalarini o'rnatmang. Ular ishlatilmaydi.
Bu erda kodda nima bo'layotgani haqida yuqori darajadagi xulosa.
Qaysi kirish nima qiladi?
- A tugmasi: LED animatsiyalari bo'ylab aylanadi
- B tugmasi: qo'shiqlar bo'ylab aylanadi
- A1 sig'imli sensorli panel: LED animatsiyasi ranglarini o'zgartiradi
- Capacitive Touch Pad A6: LED animatsiyalarining tezligini o'zgartiradi
3 ta animatsiya mavjud, lekin faqat 2 tasi amalda
kod.py
pixelsoff -ni import qilish
#mport vumeter import zinapoyalar importi miltillaydi… led_animations = [pixelsoff. PixelsOff (piksel), # vumeter. VuMeter (piksel, 100, 400) zinapoyalar. Dairalar (piksellar), miltillashlar.
Men Ampli-Tie VU metr uslubi kodini tashdim. Ovozni qabul qilish va tovush amplitudasiga qarab NeoPixellarni yoqish uchun CPX mikrofonidan foydalaniladi. Biroq, men ko'proq animatsiyalarni xohlardim. Xotira cheklovlari tufayli men xohlagan animatsiyalarni tanlashim kerak edi. Odatiy bo'lib, qolgan ikkitasi, Stair and Twinkle, kodni o'zgartirmasdan ishlaydi. VU o'lchagich animatsiyasini ishga tushirish uchun boshqa ko'rsatuvlardan biriga yoki ikkalasiga izoh berilishi va VU o'lchagichga izoh qoldirilmasligi kerak.
Musiqa menejeri va oflayn rejimda kodlash
shoxrux_sozlar.py
musiqiy_notlarni mn sifatida import qilish
# Frosty Snowman # Walter E. Rollins qo'shig'i = [(m4 G4, mn. HLF), (m4. E4, mn. DTQ), (mn. F4, mn. ETH), (mn. G4, mn. QTR)), (mn. C5, min. HLF),…
convert_to_binary.py
qo'shiqlar = [(jingle_bells.song, "jingle_bells.bin"), (frosty_the_snowman.song, "frosty_the_snowman.bin")] qo'shiqlardagi qo'shiq uchun: data = song [0] file = song [1] with open (file, "wb") bin_file sifatida: ma'lumotlarni kiritish uchun: chop etish ("yozish:" + str (kirish)) note = yozuv [0] dur = kirish [1] bin_file.write (struct.pack ("<HH", eslatma, dur))
Men bayram musiqasini xohlardim. CPX ham WAV, ham ohanglarni qo'llab -quvvatlaydi. WAV fayllari fayl hajmi va ish vaqti xotirasi jihatidan juda katta bo'lib chiqdi. Ohanglarni ushlab turish uchun python ma'lumotlar tuzilmalaridan foydalanish va ularning davomiyligi ham juda ko'p ish vaqti xotirasidan foydalangan. Men Holi-Tie kodini siqilgan ikkilik formatdagi faqat kerakli qo'shiq ma'lumotlarini o'z ichiga olgan siqilgan ikkilik faylni o'qish uchun o'zgartirdim. Men ssenariy yozdim, u python ma'lumotlar tuzilmasida saqlangan qo'shiqni o'qiydi va uni ikkilik formatga yozadi. Qo'shiqni faylda ikkilik ma'lumotlar sifatida kodlanishi qo'shiqni ham kichik, ham dinamik qiladi. Qo'shiq ijro etilgach, xotira bo'shatiladi.
Yana qo'shiq qo'shish befoyda. Tafsilotlar uchun qo'shiqlarda README.md ga qarang.
A tugmasi NeoPixellarni jonlantiradi, B musiqa ijro etadi, lekin bir vaqtning o'zida emas
kod.py
def tugmasi_a_pressed ():
if music.is_playing (): # Musiqa ijro etilsa musiqani to'xtating.stop () next_led_animation () def button_b_pressed (): if active_led_animation! = 0: # no.op animation next_led_animation (0) if music.is_playing (): # Toggle music.stop () boshqa: music.play ()
Hatto xotirani tejaydigan musiqa boshqaruv tizimi bo'lsa ham, men 2 ta animatsiyani ishlay olaman, bittasida o'ynay olmayman va bir vaqtning o'zida qo'shiq ijro eta olmadim. Chunki men VU o'lchagichni ish vaqtining xotirasida umuman ishlatmaslikni tanlaganim uchun, animatsiya sonini 1 taga kamaytirmoqchi emas edim. Shunday qilib, men kodni animatsiya o'ynayotgan yoki musiqa ijro etiladigan qilib yozganman. ikkalasi ham. Yana bir variant - NeoPixel sonini kamaytirish edi, lekin bu animatsiyaning salqinligini yo'qotadi.
Python kodining funktsionalligi
Men faxriy dasturiy ta'minot ishlab chiqaruvchisi bo'lsam -da, men hech qachon Python yozmaganman. Men o'zimni tutib, yaxshi kodlash amaliyotini, masalan, inkapsulyatsiya va modullashtirishni ko'rib chiqqach, men juda ko'p ish vaqti xotirasidan foydalanayotganimni tezda angladim. Shunday qilib, DRY bo'lmagan kod juda ko'p. Ish vaqti xotirasi muammolarini yanada kamaytirish uchun, shuningdek, const () kabi ba'zi MicroPython usullaridan foydalanishim kerak edi.
Tuzilgan modullar
kompilyatsiya qilish
#!/bin/bash
kompilyator = ~/development/circuitpython/mpy-cross-3.x-windows.exe CD qo'shiqlari python3./convert_to_binary.py cd.. f in *.py uchun; agar
Loyihaning boshida men Adafruit maslahatiga amal qildim va Adafruit CircuitPython kutubxonalarini tezda saqladim. Biroq, bu mening loyiham uchun juda oz joy qoldirdi. Mening kodimni CPX -ga olish uchun men modullarni kompilyatsiya qilishni va ularni MCU -ga joylashtirishni boshladim. Ma'lum bo'lishicha, Holi-Tie tashqi kutubxonalarga muhtoj emas. UF2 -dagi mavjud kutubxonalar ushbu loyiha uchun etarli edi. *. Mpy fayllarini ishga tushirish biroz samaraliroq, shuning uchun men tuzilgan modullarni joylashtirish jarayonini davom ettirdim.
Yuqoridagi kompilyatsiya skriptidan ko'rinib turibdiki, men Windows mashinasida ishlayman, lekin bash va python3 kabi Unix yordam dasturlaridan foydalanaman. Men buni amalga oshirish uchun Cygwin -dan foydalanaman. Ushbu skriptni DOS to'plamiga va Windows -ning mahalliy Python3 dasturiga osongina tarjima qilish mumkin.
8 -qadam: galstuk tugmachasini bosish
Oxirgi qadam - galstuk yadrosini joyiga qaytarish, galstukni qayta yig'ish va tikish. CPX -ni ochiq qilish imkoniyatiga ega bo'lishingizga ishonch hosil qiling. Batareyani almashtirish yoki kodni o'zgartirish paytida sizga kerak bo'ladi.
Tavsiya:
Batareya bilan ishlaydigan ofis. Quyosh panellari va shamol turbinasi: Sharq/G'arbni avtomatik almashtirish bilan quyosh tizimi: 11 qadam (rasmlar bilan)
Batareya bilan ishlaydigan ofis. Quyosh tizimi Sharq/G'arbning avtomatik panellari va shamol turbinasi bilan almashinuvi bilan: Loyiha: 200 kvadrat metrli ofis batareyali bo'lishi kerak. Ofis, shuningdek, ushbu tizim uchun zarur bo'lgan barcha tekshirgichlar, batareyalar va komponentlarni o'z ichiga olishi kerak. Quyosh va shamol energiyasi batareyalarni zaryad qiladi. Faqat kichik muammo bor
NaTaLia ob -havo stantsiyasi: Arduino quyosh energiyasi bilan ishlaydigan ob -havo stantsiyasi to'g'ri yo'l bilan amalga oshirildi: 8 qadam (rasmlar bilan)
NaTaLia ob -havo stantsiyasi: Arduino quyosh energiyasi bilan ishlaydigan ob -havo stantsiyasi to'g'ri yo'lga qo'yildi: 1 yil davomida 2 xil joyda muvaffaqiyatli ishlaganimdan so'ng, men quyosh energiyasi bilan ishlaydigan ob -havo stantsiyasining loyiha rejalari bilan bo'lishaman va uning qanday qilib uzoq vaqt yashay oladigan tizimga aylanganini tushuntiraman. quyosh energiyasidan o'tgan davrlar. Agar ergashsangiz
Twinky bilan eng zo'r Arduino robot bilan tanishing: 7 qadam (rasmlar bilan)
Twinky bilan eng zo'r Arduino roboti bilan tanishing: Salom, men sizga "Jibo" ni o'zim qanday yaratganimni o'rgataman. lekin "Twinky" deb nomlangan, men buni ochib bermoqchiman … Bu nusxa emas! Men ikkiyuzlamachilik bilan qurardim va shundan keyingina shunga o'xshash narsaning mavjudligini tushundim: bu erda
OpenLH: Biologiya bilan ijodiy tajriba o'tkazish uchun ochiq suyuqlik bilan ishlash tizimi: 9 qadam (rasmlar bilan)
OpenLH: Biologiya bilan ijodiy eksperimentlar uchun ochiq suyuqlik bilan ishlash tizimi: Biz bu ishni moddiy, ko'milgan va mujassamlangan o'zaro ta'sir xalqaro konferentsiyasida (TEI 2019) taqdim etganimizdan faxrlanamiz. Tempe, Arizona, AQSh | 17-20 mart. Hamma yig'ish fayllari va qo'llanmalar bu erda mavjud. Oxirgi kod versiyasi
Vaqt o'tishi bilan rasmlar uchun kamera osonlashtirildi: 22 qadam (rasmlar bilan)
Vaqt o'tishi bilan suratga olish uchun kamera osonlashtirildi. Men boshqa ko'rsatmalarni vaqtni tez suratga olish filmlarini suratga olishni tekshirib ko'rdim. U kino qismini juda yaxshi yoritgan. U filmlar yaratish uchun yuklab olishingiz mumkin bo'lgan bepul dasturiy ta'minot haqida gapirib berdi. Men o'z -o'zimga aytdim, men o'ylaymanki, agar men qila olsam