Mundarija:
- Ta'minotlar
- 1 -qadam: Pipboy qalbini yaratish
- 2 -qadam: karton prototipi
- 3 -qadam: Prototipdan shablonga
- 4 -qadam: Screen & Pi uchun korpus qo'shing
- 5 -qadam: Boshqarish paneli uchun takrorlang
- 6 -qadam: Quvurni kesib oling
- 7 -qadam: ramka
- 8 -qadam: Batareya sinovi
- 9 -qadam: Fitni tekshirish
- 10 -qadam: Boshqaruv va tafsilotlarni qo'shing
- 11 -qadam: 3 -sonli bezakni qayta qurish
- 12 -qadam: Elektronikani prototiplash
- 13 -qadam: Elektronikani tanaga o'tkazish
- 14 -qadam: Fitni nozik sozlash
- 15 -qadam: Rotary Enkoderni orqaga qaytarish
- 16 -qadam: Ichki astar
- 17 -qadam: Tafsilotlarni qo'shish
- 18 -qadam: tanani bo'yash va tugatish
- 19 -qadam: kodlash
- 20 -qadam: Statistikalar ekrani
- 21 -qadam: Inventarizatsiya ekrani
- 22 -qadam: Xarita ekrani
- 23 -qadam: Ma'lumotlar ekrani
- 24 -qadam: Radio ekrani
- 25 -qadam: Yakuniy fikrlar
- 26 -qadam: Kod Github -da ochiladi
Video: Pipboy hurdadan qurilgan: 26 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:23
Bu mening ishlaydigan Pipboy, garajdagi tasodifiy axlatdan va elektron komponentlar aktsiyalari reydidan qurilgan. Men buni qiyin qurilish deb topdim va menga bir necha oylik ish kerak bo'ldi, shuning uchun men buni yangi boshlanuvchilar loyihasi deb tasniflamagan bo'lardim. Kerakli ko'nikmalarga plastmassa va yog'ochdan ishlov berish, elektronika va kodlash kiradi. Korpus kesilgan va payvandlangan plastmassaning turli qismlaridan qurilgan. Men GPI pinlarining bir qismiga displey sarlavhasi o'rnatilgan mikroprosessor sifatida Raspberry Pi 0 dan foydalanardim. Qolgan pinlar LEDlarni boshqarish va tugmalar/boshqaruv elementlarini ulash uchun ishlatiladi. Men loyihani yakunlash uchun Python -da ba'zi demo ekranlari bo'lgan "Pipboy" uslubidagi foydalanuvchi interfeysi yozdim.
Loyihadagi maqsadlarim:
- Ishlash kerak edi, ya'ni biror narsa qilgan displeyga ega bo'lish kerak edi
- Men har xil ekranlarni tanlash uchun "terish" ni xohlardim, chunki bu men uchun har doim Fallout -da foydalanuvchi interfeysining ajralmas qismi edi.
- Butun qurilishni garajda yoki ofisimda bo'lgan narsalar yordamida bajarish kerak edi (bunga umuman erishilmadi, lekin men yaqinlashib qoldim - buning 90% dan ko'prog'ini men topgan narsalar yoki narsalar topdi)
- Kiyinadigan bo'lishi kerak
Maqsadim yo'q edi, bu uni o'yindagi modellardan birining aniq nusxasiga aylantirish edi - men narsalarni "uslubida" qurishni afzal ko'raman, chunki bu menga tasodifiy keraksiz narsalarni moslashtirishga imkoniyat beradi. menga biroz ijodiy bo'lishga imkon beradi. Nihoyat, ha, bilaman, siz ularni sotib olishingiz mumkin, lekin bu ham muhim emas edi;)
Ta'minotlar
Ta'minotlar
- Keng teshikli quvur (drenaj trubkasi kabi)
- Hurda plastmassalar (korpus yaratish uchun ham, dekorativ maqsadlar uchun ham)
- Kichik konteyner
- Ko'pikli pol qoplamasi
- Raspberry Pi
- 3,5 dyuymli displey
- KY040 aylanadigan kodlovchi
- 3x LED
- 2 marta bosish tugmachalari
- Powerbank
- Ulanish
- Vintlar, elimlar, bo'yoqlar, plomba va boshqalar
Asboblar
- Dremmel
- To'sar va zımpara qo'shimchalari bo'lgan ko'p asbob
- Matkap
- Fayllar
- Lehimlash temir
- Issiq yopishtiruvchi qurol
- Tornavida (lar)
- O'tkir pichoq
- Ko'rdim
1 -qadam: Pipboy qalbini yaratish
Men qilishim kerak bo'lgan birinchi narsa, men ishlashim mumkin bo'lgan form faktorida displey va mikro-nazoratchini olishim edi. Men tasodifan 3,5 dyuymli displeyga ega bo'ldim, u Raspberry PI -ning GPIO pinlariga HAT sifatida joylashtirilgan edi, shuning uchun men uni ishlatishga qaror qildim. Men uni Raspberry Pi 0 bilan bog'ladim va u yaxshi ishlaganiga ishonch hosil qildim. Linuxni ishga tushirish kerak bo'lgan ekranni tanib olish uchun bir necha qadamlar.
Ikkinchi rasmda ko'rib turganingizdek, men displeyni qo'llab -quvvatlash uchun qutiga yopishtirib qo'ygan kichik karton/ko'pikli platformani qo'shdim. Men bu qismni juda ko'p ishlatishni bilganim uchun qildim va qo'llab -quvvatlanmaganligi sababli pinlar yoki displeyni sindirmoqchi emasdim. Oxir -oqibat, bu almashtirildi, lekin bu qurilish jarayonida yaxshi himoyalangan edi.
Shuni ham ta'kidlash joizki, keyinchalik qurilishda men ushbu sozlash bilan ishlashda muammolarga duch keldim - asosan Pi va displey o'rtasidagi interfeysning yangilanish tezligi, men buni keyinchalik qurilishda ko'rib chiqaman, lekin agar men Men buni yana qildim, men bu erda turli xil uskunalarni ko'rib chiqishim mumkin.
Buning uchun ba'zi foydali havolalar:
www.raspberrypi.org/forums/viewtopic.php?t…
www.raspberrypi.org/forums/viewtopic.php?t…
www.raspberrypi.org/forums/viewtopic.php?f…
learn.sparkfun.com/tutorials/serial-periph…
Men bu bilan bog'liq bo'lgan githubga bu ishni bajarish uchun nima qilganim haqida ba'zi eslatmalarni kiritaman (garchi men bu mavzuni o'qiganimda, bu muayyan misollar/haydovchilar uchun qanday ishlashida juda ko'p o'zgaruvchanlik bor, shuning uchun sizning millatingiz o'zgarishi mumkin)).
2 -qadam: karton prototipi
Men korpus uchun ishlatilishi mumkin bo'lgan eski truba/trubani topdim, lekin men ekranning haqiqiy maydoni va boshqaruv paneli uchun dizayn ishlab chiqishim kerak edi. Buning uchun men kartondan maketlar yasadim va ularni quvurga mahkamlash uchun niqob tasmasini ishlatdim. Birinchisi oddiy "quti" edi, lekin bu juda oddiy tuyulardi, shuning uchun men uni ekran maydonini yanada qiziqarli qilish uchun o'zgartirdim va boshqaruv panelining alohida maydonini qo'shdim. Bu ozmi -ko'pmi oxirgi dizaynga aylandi (siz ko'rib turganingizdek, bir nechta o'zgartirishlar bor edi, lekin u yaqin).
3 -qadam: Prototipdan shablonga
Endi men prototipga ega bo'ldim, men kartonni tekislab, uni shablonga aylantira olardim, keyin uni eski kompyuter qutisiga tashladim. Har qanday shunga o'xshash qattiq plastmassa ishlaydi, men faqat qo'limga kerak bo'lmagan narsalarni ishlatardim. Belgilanganidan so'ng, men asosiy qismni yig'ishni boshlash uchun bo'laklarni kesib oldim. Bu erda foydali maslahat, plastmassani belgilashni ham, undan keyin kesishni ham osonlashtirish uchun men avval kesishim kerak bo'lgan joylarni niqobli lenta bilan yopdim, bu menga shablonni plastmassaga chizishning oson yo'lini berdi, va birinchi bo'laklarni kesganimdayoq chiqib ketish diskining siljishini to'xtatishga yordam beradigan narsa.
4 -qadam: Screen & Pi uchun korpus qo'shing
Men ekran maydonining burchaklari egilgan bo'lishini xohlardim va menga Pi va ekranni ushlab turadigan biror narsa kerak edi - men uchun kichik plastik idishdan foydalanish kerak edi. Tananing yuqori qismidan bir teshik kesib, shu orqali idishni yopishtirdim. Keyin men hamma tomonlarni yopishtirdim. Men bu erda payvand choklarini mustahkamlashga yordam berish uchun ko'p miqdordagi pishirish soda bilan super yopishtiruvchi vositani qo'lladim. Keyinchalik men hamma narsani tartibga solib, unga "mog'orlangan" tuyg'u berish uchun hamma narsani to'ldirdim, to'ldirdim/zımparaladim.
5 -qadam: Boshqarish paneli uchun takrorlang
Keyin men boshqaruv paneli korpusini qurish uchun xuddi shu shablonni ko'chirish, kesish va yopishtirishni qildim.
6 -qadam: Quvurni kesib oling
Ko'rib turganingizdek, men asosiy elektron komponentlarni joylashtirish uchun foydalanmoqchi bo'lgan konteyner endi qora plastmassa bilan o'ralgan, bu shuni anglatadiki, men uni quvurga ochishim kerak. Men yana niqob tasmasini ishlatib, kesmoqchi bo'lgan joyimni navbatga qo'ydim va uning qismlari to'g'ri kelishi uchun trubaning kvadratini kesib oldim.
7 -qadam: ramka
Men tasodifan o'zimga majbur qilgan qiyinchiliklardan biri, displey atrofini idishning chetigacha to'ldiradigan ramka yaratishga harakat qilish edi. Afsuski, displey qanday yasalgan bo'lsa, uning dizaynida uni o'rnatishga yordam beradigan hech qanday foydali narsa yo'q (masalan, tuynuklar yoki biror narsa), shuning uchun bezak ham displeyni joyida ushlab turishi kerak edi. Mening birinchi urinishim (bu erda ko'rilgan) plastik va ko'pik aralashmasi edi. Oxir -oqibat men buni bir necha bor takrorladim va u qurilishning eng qiyin qismlaridan biriga aylandi. Panelning o'zi ham, displeyning ham kichik bardoshliligi va nozik tabiati yomonlashdi.
8 -qadam: Batareya sinovi
Shu nuqtada, men uni tarmoqdan USB -dan mustaqil ravishda qanday ishlashni o'ylab topdim. Men turli xil batareyalarni sinab ko'rdim va Raspberry Pi + displeyi unchalik katta kuchga ega emasligini va hatto mening kichik akkumulyator to'plamlarimdan birida ishlayotganimdan baxtli ekanini ko'rdim (savdo ko'rgazmasidan bepul). Bu, albatta, omadli edi, chunki paket qurilish ichidagi bo'shliqqa juda mos tushdi (keyinroq fotosuratlar). Endi biz tananing asosiy tarkibiy qismlarini vaqtincha birlashtira olamiz va uning birinchi sinovini qo'limda ishga tushiramiz!
9 -qadam: Fitni tekshirish
Bu erda siz komponentlarning pastki qismiga kirishga ruxsat berish uchun yadro quvurini qaerda o'zgartirganimni ko'rishingiz mumkin. Bundan tashqari, men qanday qilib omadli bo'lganimni, konteynerning bir tomonidagi bo'shliqqa yaxshi joylashtirilganini ko'rishingiz mumkin. Nihoyat, zanjirlarni tozalash, to'ldirish, silliqlash jarayonini boshladik va tayyor ko'rinishga ega bo'lish uchun astar sinovini o'tkazdim (men shuni bilardimki, men bu bosqichda yana bir necha marta silliqlashimni va deyarli hamma astar ketadi, lekin men qanday ko'rinishini his qilmoqchi edim).
10 -qadam: Boshqaruv va tafsilotlarni qo'shing
Men bir qator qizil/sariq/yashil LEDlarning o'lchagichini, shuningdek aylanadigan kadrni va kamida 2 ta tugmachani yaratishni xohlardim. Bularning barchasi boshqaruv paneli bo'limiga o'rnatildi - bu faqat kerakli teshiklarni burg'ilash. Men, shuningdek, korpus va boshqaruv paneliga tafsilotlarni va qiziqishni qo'shish uchun plastmassa qoldiqlarning kichik qismlarini qo'sha boshladim.
11 -qadam: 3 -sonli bezakni qayta qurish
Yuqorida aytib o'tganimdek, men bu qurilish uchun ramka bilan kurashdim va uni bir necha bor qayta qurdim. Bu men yopishgan uchinchi takrorlash. Bu erda men qattiq taxtadan foydalanaman va bir -biridan farqli o'laroq 2 xil shaklni kesaman, so'ngra o'rtadagi rasmni hosil qilish uchun ularni yopishtirib (va qisib) qo'yaman. Bu shakllar kvadrat displeyni uning ichida o'tirishga imkon berdi va keyin displeyni idishning ichida ushlab turdi (3 -rasmdagi kabi). Bu menga 4 ta kichik vintni armatura sifatida ishlatish uchun etarli materialni berdi, men uni korpus ichida mahkam o'rnashtirardim va bu o'z navbatida ekranni barqaror va xavfsiz ushlab turardi. Orqaga qarab, men o'rnatishning yaxshi variantlari bilan ta'minlangan displeyni topardim (yoki 3D printerdan foydalanaman - menda o'sha paytda bo'lmagan).
12 -qadam: Elektronikani prototiplash
Men oddiy sxemalarimni shunday joylashtirish uchun non taxtasidan foydalanaman va men ko'pincha loyihaning bu qismini asosiy korpus konstruktsiyasining boshqa joyida bajarar ekanman, uni boshqa Raspberry PI bilan bog'ladim. Bu erda men 3 -modeldan foydalandim, bu menga unga to'g'ridan -to'g'ri ulanish va bortda IDE -ni ishga tushirish uchun biroz kuch berdi. Bu men uchun tez kod prototipini biroz osonlashtirdi. Masofadan ulanish/kod/disk raskadrovka qilishning boshqa ko'plab usullari mavjud, bu men xohlagan narsadir.
Bu erda dizayn juda to'g'ri, bizda;
- Rotary enkoder - bu bosish yo'nalishi va tugmachasini boshqarish uchun GPIO pinlari va tuproqdan foydalaniladi.
- Bir nechta tugmachali tugmalar, ular har birida bitta umumiy GPIO pinidan foydalaniladi
- 3 ta LED, ularning har biri o'z -o'zidan chiqib ketishini to'xtatadigan ichki qarshiligiga ega, hammasi umumiy fikrga keladi, lekin har biriga alohida GPIO pin o'rnatilgan, shuning uchun ularning har birini alohida hal qilish mumkin.
Bu menga o'lchagichim uchun 3 ta LED, pipboy ekranlari bo'ylab aylanadigan enkoder va harakatlarni boshqarish uchun 3 ta tugma (bitta aylanadigan kodlovchi va 2 ta alohida simli) berdi. Bu men sig'dira oladigan hamma narsaga to'g'ri keldi va displeyda bir nechta pim bor, sizda Pi GPIO -ning standart sxemasida mavjud bo'lgan narsalar juda ko'p iste'mol qilinadi. Biroq, bu mening maqsadlarim uchun yaxshi edi.
Ikkinchi rasmda men borgan oxirgi ichki tartib ko'rsatilgan. Men bu erda bir muncha vaqt o'tkazdim, men uni tarkibiy qismlarga haydash usullarini sinab ko'rdim va hamma narsani ishning korpusiga joylashtirishdan oldin tekshirdim. Barcha kodlar github -da.
Aylanadigan kodlovchi haqida eslatma. Men GPIO yuqori/past o'zgarishlarini kuzatish va ularni aylanuvchi pozitsiyalarga solish uchun o'z Rotary Encoder davlat mashinasini yozishga ko'p vaqt sarfladim. Men bu erda turli xil muvaffaqiyatlarga erishdim, men buni "ko'p" holatlar uchun ishladim, lekin har doim eng chekka holatlar va (va) qaytish va hokazo. Tayyor kutubxonadan foydalanish ancha osonroq va Python uchun o'rnatilishi mumkin bo'lgan ajoyib kitob bor. Men buni oxir -oqibat ishlatdim, chunki bu muammolarni tuzatishda yoshni sarflashdan ko'ra, qurilishning qiziqarli qismiga e'tibor qaratishga imkon berdi. Buning uchun barcha tafsilotlar manba kodiga kiritilgan.
Agar siz Raspberry Pi, GPIO va elektronika sohasida yangi bo'lsangiz, men sizga yuqoridagi tartibni bajarish uchun kerak bo'lgan hamma narsani o'rgatadigan quyidagi darsliklarni tavsiya qilaman;
projects.raspberrypi.org/uz/projects/physi…
thepihut.com/blogs/raspberry-pi-tutorials/…
13 -qadam: Elektronikani tanaga o'tkazish
Men maketni taxtadan foydalanib tugatganimdan so'ng, ularni pipboyning tanasiga qanday o'rnatish haqida o'ylashni boshlash vaqti keldi. Men kelajakda biror narsani ta'mirlash yoki o'zgartirish kerak bo'lganda, barcha elektron komponentlarni demontaj qilish va olib tashlash uchun shunday qilishga qaror qildim. Buni amalga oshirish uchun men dupont ulagichlari yordamida barcha pastki qismlarni ulashga qaror qildim.
Men bir nechta uzatma simlariga lehimlangan tugmachalarni va uchlarini izolyatsiyalash uchun simli o'ramni ishlatganman, bu ularni korpusdan yig'ish va demontaj qilishga imkon berdi (masalan, sinov uchun, keyin bo'yash va hk). Rotary Encoder -da dupont ulagichlarini qabul qila oladigan pinlar bor edi, shuning uchun menga kerakli uzunlikdagi ba'zi simlarni yasash kerak edi.
LEDlar biroz ko'proq ish olib bordi - buning uchun men LEDni o'rnatish uchun olinadigan panel yasash uchun o'zimdagi plastmassa qoldiqlaridan foydalanishga qaror qildim. Keyin men ularni issiq joyga yopishtirib, rezistorlar va simlarni lehimladim. Bu men joylashtiradigan va olib tashlashim mumkin bo'lgan olib tashlash moslamasini yaratdi va bo'yash va tugatishni osonlashtirdi.
E'tibor bering, mening lehimlashim dahshatli, shuning uchun men buni sodda saqladim va juda batafsil/nozik narsalardan qochdim. Oxirgi rasmda siz ko'rishingiz mumkin, menda juda kichik (5x5) keng panellar bor edi, men ulardan birini GPIO -ga ulash uchun panel bilan ta'minlash uchun ichkariga o'rnatdim. Ayniqsa, bu men foydalana oladigan va erga ulanadigan simlarning ko'pligi Pi -ga qaytib ketmasligi uchun umumiy temir yo'lni yaratish uchun foydalidir.
Keyin konteynerga simlarni Pi orqali etkazib berish va GPIO -ga ulash uchun turli teshiklarni kesib tashladim. Bu dizayn, agar kerak bo'lsa, hamma narsani olib tashlashga imkon berdi (men qurilishni tugatayotganda bir necha marta qilganman).
14 -qadam: Fitni nozik sozlash
Bu vaqtda men ba'zi "mos" muammolarga duch keldim. Birinchidan, simlarni ulash uchun dupontli ulagichlardan foydalanish, ularni balandlik oralig'i etarli bo'lmaganligi sababli, displey shlyapasi bilan pinlarga o'rnatib qo'yish qiyin bo'lgan. Men buni sotib olish yo'li bilan hal qildim (bu loyiha uchun men sotib olgan narsalardan biri), men GPIO pinli kichraytirgichni o'rnatdim, shunda men ekran shlyapasini balandroq qilib, qolgan GPIO pinlariga dupontli ulagichlar yordamida kira olaman.
Men, shuningdek, idishning ichiga yon tomondan to'ldirish uchun ko'pikli pol qoplamasini kesib oldim, bu Pi + displeyini kerakli joyga qo'yishga va uning harakatlanishini to'xtatishga yordam berdi.
15 -qadam: Rotary Enkoderni orqaga qaytarish
Aylanadigan kodlovchi tez -tez (meniki kabi) zamonaviy, "hi fi" uslubidagi chiroyli porloq tugma bilan keladi. Bu qurilishga mutlaqo mos bo'lmagan, shuning uchun men boshqa narsani o'ylab topishga majbur bo'ldim. Tasodifiy qismlar qutisida men uzoq vaqt oldin buzilgan matkapdan eski tishli tishli qutiga duch keldim. Bu yaxshi ko'rinardi, lekin aylanadigan kodlovchi mos kelmadi. Bu erda mening yechimim - aylanadigan kadrga mos keladigan vilkasini topgunimcha, har xil devor vilkalarini sinab ko'rish, keyin uni kesish uchun kesish edi, shunda men uni "ichki yoqa" sifatida ishlatib, burg'ulash tishli aylanani enkoderga ko'proq mos keladigan mavzu sifatida joylashtirishim mumkin edi. boshqaruv.
16 -qadam: Ichki astar
Yana ko'pikli pol plitalari! Bu safar men ularni yanada qulayroq qilish uchun yumshoq astar qurishda ishlatardim (juda bo'shashmasdan). Ko'pikdan teshik kesib, men Pi uchun idish tayyorlaydigan "bo'laklarni" ham o'zlashtira oldim. Umuman olganda, bu uni ancha eskirgan qilib qo'ydi. Bu fotosuratlarda ko'rsatilmagan, lekin men uni asosiy korpusdan biroz kattaroq qilib qo'ydim, shuning uchun uning uchlari ko'rinib turardi, men keyinchalik chizganman va barchasi tayyor buyumga biroz kontrast va qiziqish qo'shishga yordam bergan.
17 -qadam: Tafsilotlarni qo'shish
Biroz bezak qo'shishni boshlash va uni yanada qiziqarli qilish vaqti keldi. Birinchidan, men vizual qiziqish uyg'otish uchun bir yuziga plastmassa bo'laklarini qo'shdim. Keyin men ba'zi terminallarga bir nechta soxta simlarni qo'shib qo'ydim va ularni tanaga teshilgan teshikka itirdim. Bularning barchasi keyinchalik turli xil ranglarda bo'yalgan.
18 -qadam: tanani bo'yash va tugatish
Men eskirgan va baribir yaxshi ishlatilgan bo'lishi kerak edi (aslida men qaytib kelib, bir paytlar undan ham ko'proq ob -havo qilishim mumkin). Lekin men bu tasodifiy axlatdan to'planmagan, bir xil va to'liq ob'ektga o'xshab ketishini xohlardim (garchi bu shunday bo'lsa ham). Men zımpara, to'ldirishning ko'p sonli takrorlanishlarini boshdan kechirdim (milliput - plastmassani tanlashda mening to'ldiruvchim) va takrorlang. Keyin barcha birikmalarning silliqlashiga yordam beradigan bir necha qatlamli astar va bo'yoq. Keyin ko'proq zımpara va ko'proq to'ldirish va ko'proq rasm.
Men o'zimni baxtli his qilganimdan so'ng, ba'zi tafsilotlarni qo'sha boshladim. Men ularga panjara panjalarini silliqlash hissi berish uchun ishqalanish va tampon ishlatardim. Men akril yordamida bu erda va u erda bo'yoqning kichik detallarini qo'shdim.
Men tasodifiy stikerlar to'plamini qazib oldim va effektni tugatish uchun bir nechtasini qo'shdim. Keyin tozalash qiyin bo'lgan joylarga kir va axloqsizlik qo'shish uchun bir necha aralash bo'yoqlar bilan havoni yuvdim. Bu, ehtimol, hozir juda nozik, va men qaytib kelib, biroz keyinroq qo'shishim mumkin.
19 -qadam: kodlash
Bu loyihaga bo'lgan intilishimning bir qismi, uni haqiqiy pipboyga o'xshatib yuborish edi va men uchun o'yinning eng muhim qismi - bu kadranni turli ekranlar o'rtasida aylantirish. Bunga erishish uchun men ketma -ket ekranlarni ko'rsatadigan va ular orasida aylanib o'tishga imkon beradigan pipboy foydalanuvchi interfeysi yozishga qaror qildim. Men ekranlarning mazmunini osongina o'zgartiradigan narsaga aylantirmoqchi edim va ekranlarni qo'shish/o'chirish imkoniyatiga ega bo'ldim.
Men buni Raspberry Pi, GPIO va boshqalarni mukammal qo'llab -quvvatlashi tufayli Pythonda yozishni tanladim. Python men bilgan tillar ro'yxatida juda past, shuning uchun bu men uchun katta o'rganish egri edi va kodning ko'p qismi natijada tartibsiz. Men buni vaqt o'tishi bilan yangilab turaman, chunki men bu erda qilmoqchi bo'lgan hamma narsani to'liq tugatmaganman - lekin hozir hamma bilan bo'lishish uchun yaqin, chunki hamma asosiy tushunchalar bor.
UI kodi uchun mening dizaynim juda to'g'ri, displeyni o'rnatadigan, GPIO -ni sozlaydigan, ekranlarni yuklaydigan va cheksiz yangilanish tsikliga kiruvchi, foydalanuvchi hodisalarini kutadigan va kerak bo'lganda displeyni yangilaydigan asosiy Python skripti mavjud. Bundan tashqari, UI ekranlarini oldindan ishlab chiqarishga yordam beradigan turli xil qo'llab -quvvatlash skriptlari mavjud.
Asosiy kutubxonalar ishlatilgan:
- pygame: Men buni foydalanuvchi interfeysi uchun vosita sifatida ishlataman, chunki bu o'zboshimchalik bilan grafikalar chizish, tasvirlar, shriftlarni o'zgartirish, to'liq ekranga o'tish va hk.
- pyky040: Bu aylanadigan kadrni boshqarishni ta'minlaydi va menga ko'p vaqtni tejaydi (buni ozod qilgani uchun Rafael Yansiga katta rahmat.
- RPi. GPIO: Yaxshi GPIO haydash uchun men bu erda bir nechta variantni o'ynadim, lekin bu menga kerakli moslashuvchanlik darajasini berdi, ayniqsa, zaxira GPIO -ni boshqa 3.3v sifatida aylanuvchi enkoderni ishlatish uchun.
- shovqin: perlin shovqinini yaratish uchun, menga tabiiyroq ko'rinadigan radio ekrani uchun tasodifiy to'lqin shaklini yaratishga ruxsat berish
- Navbat: Men aylanuvchi kodlovchi voqealar vaqti va LCD displeyining juda sekin yangilanish tezligi bilan xafa bo'ladigan xatoga duch keldim. Oxir-oqibat, men buni hal qilardim, aylanuvchi kodlovchidan kiruvchi hodisalarni navbatga qo'yish va ekran yangilanishi bilan ularni birma-bir o'chirish.
- os, sys, threading, time: barchasi standart piton funktsiyalari uchun ishlatiladi
Ekranni boshqarish dizayni haqida eslatma. Ekranlar kod ichidagi ismlar ro'yxati sifatida aniqlanadi. Ro'yxatdagi har bir yozuv-p.webp
Bu fayllarning mazmuni boshqa joyda (qo'lda yoki boshqa skriptlarda) ishlab chiqariladi, ularning chiqishlari-p.webp
Bir nechta narsalar kodlangan g'alati istisnolar mavjud, masalan, tasodifiy radio ekranining to'lqin shakli, u real vaqtda hisoblangan va jonlantirilgan.
Agar o'xshashlik yordam bersa, UI dizaynini o'ta qo'pol va oddiy veb -brauzer deb o'ylang - har bir "ekran" faqat bitta png, bitta txt fayli yoki ikkisining kombinatsiyasidan iborat bo'lishi mumkin bo'lgan oddiy veb -sahifaga o'xshaydi. Ularning tarkibi mustaqil va brauzer veb -sahifani chizgandek foydalanuvchi interfeysi tomonidan chizilgan.
Bu erda men foydalangan asosiy kutubxonalarga havolalar:
www.pygame.org/news
pypi.org/project/pyky040/
pypi.org/project/noise/
20 -qadam: Statistikalar ekrani
Klassik pipboy siluet statistikasi ekranisiz hech qanday pipboy to'liq bo'lmaydi. Buning uchun mening do'stim statik-p.webp
21 -qadam: Inventarizatsiya ekrani
Pi loyihalarida har doim foydali bo'lgan narsa - bu DHCP -dagi IP -manzili kabi asosiy ma'lumotlarni ko'rsatish usuli. Men inventarizatsiya ekranini Pi "inventarizatsiyasini" ko'rsatish uchun ortiqcha yuklashga qaror qildim - qaysi CPU, xotira, IP -manzili va boshqalar. Men bu ma'lumotni yig'ish uchun kichik Linux skriptini yozdim va uni UI tizimi tanlagan va ko'rsatadigan tegishli nomli matnli (.txt) faylga yo'naltirdim. Shunday qilib, agar men boshqa joyda bo'lsam, skriptni o'chirib, yangi IP -manzili va.txt bilan yangi.txt faylini olishim mumkin.
22 -qadam: Xarita ekrani
Bu ekran ishlash uchun eng murakkab ekranlardan biri edi. Raspberry Pi 0 GPS moduli bilan ta'minlanmagan, lekin men xaritani Pi qaerda ekanligiga ishonch hosil qilmoqchi edim. Mening yechimim - bu IP -manzilni tortib oladigan alohida manzil, https://ipinfo.io yordamida taxminiy manzilni qidiradi. JSON javobi yozib olinadi va men koordinatalarni aylantiraman, shuning uchun Openstreetmap.org plitasini taxminan joylashish uchun pastga tushirishim mumkin.
Plitkalar bir nechta rangda tushadi, lekin men yashil o'lchamdagi tasvirni Pipboyning tashqi ko'rinishiga mos keltirishini xohlardim va men uni topa olmadim, shuning uchun ranglarni o'zgartirish uchun Python-da yashil o'lchovli filtr yozdim. Openstreetmap fayli va keyin yangi rasmni-p.webp
Yuqoridagi jarayon davomida taxminiy joylashuvi va koordinatalari bo'lgan matnli fayl yaratiladi va-p.webp
23 -qadam: Ma'lumotlar ekrani
Bu faqat o'lchov/tartibni sinab ko'rish uchun ko'rsatiladigan sinov kartasi (boshqa python skripti va-p.webp
24 -qadam: Radio ekrani
Xarita ekrani bilan bir qatorda, bu menga haqiqatan ham ko'p ish olib kelgan ekran. Bu men animatsiya bilan o'ynagan yagona ekran - va u asosan maqsadga muvofiq ishlaydi, lekin ishlash hali ham LCD displeyni yangilash tezligida muammo bo'lib qolmoqda. Ekranning tuzilishi - bu tasodifiy tanlangan radio nomlarini o'z ichiga olgan matnli fayl (bu tasodifiy satrlar va ekrandagi ro'yxatni ko'rsatishdan boshqa hech narsa qilmaydi), grafik maydoni o'qini o'z ichiga olgan-p.webp
Bu har bir tsikl davomida pygame loopi har qanday haqiqiy ishni bajaradigan yagona ekran, u yangi to'lqin shaklini hisoblashi, ekranning bu hayotdagi qismini o'chirib tashlashi va qayta chizishi kerak.
25 -qadam: Yakuniy fikrlar
Bu, ehtimol, men qilgan har xil tushunchalar va ko'nikmalarga ega bo'lgan eng qiyin qurilishdir, lekin natijada ishlaydigan haqiqiy narsaning eng zavqlilaridan biri. Men hali ham ba'zi texnik eslatmalarimni, shuningdek, kod uchun github repo -ni tartibga solish jarayonidaman. Men bularning barchasini yaqinda taqdim etaman, shuning uchun tez orada yana batafsil ma'lumot va ma'lumotni oling, chunki men ularni ro'yxatga qo'shishga vaqt topaman.
Agar siz shunga o'xshash ishni qilmoqchi bo'lsangiz, men natijalarni ko'rishni xohlayman va agar sizda biron bir savol bo'lsa, iltimos, biz bilan bog'laning va men sizga yordam berishni istagan har qanday qadamda qo'shimcha ma'lumot qo'shishga harakat qilaman.
26 -qadam: Kod Github -da ochiladi
Oxir -oqibat, men Github -da kodni ochishga muvaffaq bo'ldim. Bu havolada mavjud:
Tavsiya:
Uy qurilishi RC Cessna Skyhawk samolyoti Oson qurilgan: 7 qadam (rasmlar bilan)
Uy qurilishi RC Cessna Skyhawk samolyoti Oson qurilgan: Bolaligimdan beri, hamma bolalar singari, men ham RC samolyotlarini yaxshi ko'rardim, lekin ularni hech qachon sotib ololmadim yoki yasab bera olmadim, lekin o'sha kunlar ortda qoldi Men birinchi RC samolyotini qanday qilganimni aytib beraman (men
Ayol tomonidan qurilgan portfel kompyuter: 14 qadam (rasmlar bilan)
Ayol tomonidan qurilgan portfel kompyuteri: 1 -QADAM: Qo'llaniladigan materiallarni yozing: Balsa yog'och 3 "AMD RYZEN 5 3500X 3.6GHZ 35MB AMD CPU (6C/6T) GIGABYTE B550 AORUS PRO A WIFI AM4 ATX DDR4 CORSAIR VENGEANCE LPX360016 (2X8GB) CL18 DDR4 (RYZEN) ADATA XPG SX8200 2TB PRO 2 P
Qayta qurilgan soat: 5 qadam (rasmlar bilan)
Qayta qurilgan soat: Analog soatlar klassik bo'lishi mumkin, lekin ular biroz zerikarli, vaqtni boshqacha ko'rsatish uchun analog soatni buzish. Soat, minut va soniya aylanuvchi raqamli terishlarni qo'shish orqali kadrlar vertikal bo'ylab tushgan joydan o'qiladi
Ob'ektlarni kuzatish kamerasi aylanishi o'qi bilan. 3D bosma va RoboClaw DC dvigatel boshqaruvi va Arduino -da qurilgan: 5 qadam (rasmlar bilan)
Ob'ektni kuzatish kamerasi aylanishi o'qi bilan. 3D bosilgan va RoboClaw DC Motor Controller & Arduino-da qurilgan: bu loyiha mening qiziqishimni DIY bilan uyg'unlashtirganimdan beri eng sevimli loyihalarimdan biri bo'ldi. Men har doim kinofilmlarni tomosha qilish uchun ekran bo'ylab harakatlanayotgan filmlardagi kinofilmlarga taqlid qilishni xohlaganman
20 soatlik 20 dollarlik stol usti yuzlab o'yinlar bilan qurilgan. 7 qadam (rasmlar bilan)
Yuzlab o'yinlar bilan 20 soatlik 20 dollarlik stol usti arkadasi. Men bir paytlar shunday narsa qilishni xohlardim, lekin boshqa loyihalar bilan shoshilmasdim. Men shoshmaganim uchun, qurilish uchun zarur bo'lgan barcha komponentlarni arzon narxlarda yig'ib olguncha kutdim. Mana