Mundarija:

Pipboy hurdadan qurilgan: 26 qadam (rasmlar bilan)
Pipboy hurdadan qurilgan: 26 qadam (rasmlar bilan)

Video: Pipboy hurdadan qurilgan: 26 qadam (rasmlar bilan)

Video: Pipboy hurdadan qurilgan: 26 qadam (rasmlar bilan)
Video: Насколько реален Pip-Boy из Fallout 2024, Iyul
Anonim
Image
Image
Pipboy qalbini qurish
Pipboy qalbini qurish

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

Pipboy qalbini qurish
Pipboy qalbini qurish

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

Karton prototipi
Karton prototipi
Karton prototipi
Karton prototipi
Karton prototipi
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

Prototipdan shablongacha
Prototipdan shablongacha
Prototipdan shablongacha
Prototipdan shablongacha
Prototipdan shablongacha
Prototipdan shablongacha

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

Ekran va PI uchun korpus qo'shing
Ekran va PI uchun korpus qo'shing
Ekran va PI uchun korpus qo'shing
Ekran va 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

Boshqarish paneli uchun takrorlang
Boshqarish paneli uchun takrorlang
Boshqarish paneli uchun takrorlang
Boshqarish paneli uchun takrorlang
Boshqarish paneli uchun takrorlang
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

Quvurni kesib oling
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

Bezel
Bezel
Bezel
Bezel

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

Batareya sinovi
Batareya sinovi
Batareya sinovi
Batareya sinovi
Batareya sinovi
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

Fit sinovi
Fit sinovi
Fit testi
Fit testi
Fit sinovi
Fit sinovi

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

Boshqaruv va tafsilotlarni qo'shing
Boshqaruv va tafsilotlarni qo'shing
Boshqaruv va tafsilotlarni qo'shing
Boshqaruv va tafsilotlarni qo'shing
Boshqaruv va tafsilotlarni qo'shing
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

Bezel 3 -sonli qayta qurish
Bezel 3 -sonli qayta qurish
Bezel 3 -sonli qayta qurish
Bezel 3 -sonli qayta qurish
Bezel 3 -sonli qayta qurish
Bezel 3 -sonli 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

Elektronikani prototiplash
Elektronikani prototiplash
Elektronikani prototiplash
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;

  1. Rotary enkoder - bu bosish yo'nalishi va tugmachasini boshqarish uchun GPIO pinlari va tuproqdan foydalaniladi.
  2. Bir nechta tugmachali tugmalar, ular har birida bitta umumiy GPIO pinidan foydalaniladi
  3. 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

Elektronikani tanaga o'tkazish
Elektronikani tanaga o'tkazish
Elektronikani tanaga o'tkazish
Elektronikani tanaga o'tkazish
Elektronikani tanaga o'tkazish
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

Fitni nozik sozlash
Fitni nozik sozlash
Fitni nozik sozlash
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

Rotary enkoderni orqaga qaytarish
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

Ichki astar
Ichki astar
Ichki astar
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

Tafsilot qo'shilmoqda
Tafsilot qo'shilmoqda
Tafsilot qo'shilmoqda
Tafsilot qo'shilmoqda

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

Tanani bo'yash va tugatish
Tanani bo'yash va tugatish
Tanani bo'yash va tugatish
Tanani bo'yash va tugatish
Tanani bo'yash va tugatish
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

Kodlash
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

Statistikalar ekrani
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

Inventarizatsiya ekrani
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

Xarita ekrani
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

Ma'lumotlar ekrani
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

Radio ekrani
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

Image
Image
Yakuniy fikrlar
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

Github -da kod ochiladi
Github -da kod ochiladi

Oxir -oqibat, men Github -da kodni ochishga muvaffaq bo'ldim. Bu havolada mavjud:

Tavsiya: