Talaan ng mga Nilalaman:

Itinayo ang Pipboy Mula sa Scrap: 26 Mga Hakbang (na may Mga Larawan)
Itinayo ang Pipboy Mula sa Scrap: 26 Mga Hakbang (na may Mga Larawan)

Video: Itinayo ang Pipboy Mula sa Scrap: 26 Mga Hakbang (na may Mga Larawan)

Video: Itinayo ang Pipboy Mula sa Scrap: 26 Mga Hakbang (na may Mga Larawan)
Video: 3-часовой марафон паранормальных и необъяснимых историй - 2 2024, Hulyo
Anonim
Image
Image
Pagbuo ng Puso ng Pipboy
Pagbuo ng Puso ng Pipboy

Ito ang aking gumaganang Pipboy, na binuo mula sa random junk mula sa garahe at isang pagsalakay ng aking stock ng mga elektronikong sangkap. Natagpuan ko ito isang mapaghamong pagbuo at inabot ako ng maraming buwan ng trabaho, kaya hindi ko ito ikakategorya bilang isang kumpletong proyekto ng mga nagsisimula. Ang mga kasanayang kinakailangan ay may kasamang gawaing plastik at kahoy, electronics at coding. Ang katawan ay itinayo mula sa iba't ibang mga piraso ng mga plastik na scrap na gupitin at pinagsama nang magkasama. Gumamit ako ng isang Raspberry Pi 0 bilang micro-controller, na may isang display header na naka-mount sa bahagi ng mga GPIO pin. Ang natitirang mga pin ay ginagamit upang himukin ang mga LED at ikonekta ang mga pindutan / kontrol. Sumulat ako ng isang "Pipboy" na interface ng gumagamit na may ilang mga demo screen sa Python upang makumpleto ang proyekto.

Ang aking mga layunin para sa proyekto ay:

  • Kailangang gumana - ibig sabihin kinakailangan upang magkaroon ng isang display na gumawa ng mga bagay-bagay
  • Nais kong magkaroon ito ng isang "dial" upang mapili ang iba't ibang mga screen na palaging nakatayo para sa akin bilang isang iconic na bahagi ng UI sa Fallout
  • Ang buong pagbuo ay dapat na nakumpleto gamit ang mga bagay na mayroon ako sa garahe o sa aking tanggapan (hindi ito ganap na nakamit, ngunit napalapit ako - paitaas ng 90% ng mga ito ay nahanap na mga item o bagay na mayroon na akong inilalagay)
  • Kailangang maisusuot

Ang isang layunin na wala sa akin ay gawin itong isang eksaktong kopya ng isa sa mga in-game na modelo - Mas gusto kong bumuo ng mga bagay-bagay "sa istilo" ng isang bagay, dahil binibigyan ako nito ng silid upang maiakma ang random na basura na nakita ko, at hinahayaan akong maging mas malikhain. Sa wakas, oo alam kong mabibili mo ang mga ito ngunit hindi iyon ang punto din;)

Mga gamit

Mga gamit

  • Malawak na tubo (tulad ng isang piraso ng tubo ng alisan ng tubig)
  • Mga plastik na scrap (pareho para sa paglikha ng katawan at para sa mga pandekorasyon na layunin)
  • Maliit na lalagyan
  • Foam floor mat
  • Raspberry Pi
  • 3.5 "display
  • KY040 Rotary Encoder
  • 3x LEDs
  • 2x Push button
  • Powerbank
  • Kable
  • Mga tornilyo, pandikit, pintura, tagapuno atbp

Mga kasangkapan

  • Dremmel
  • Multi-tool na may mga attachment ng pamutol at sanding
  • Drill
  • Mga file
  • Panghinang
  • Mainit na glue GUN
  • (Mga) driver ng tornilyo
  • Matalas na kutsilyo
  • Saw

Hakbang 1: Pagbuo ng Puso ng Pipboy

Pagbuo ng Puso ng Pipboy
Pagbuo ng Puso ng Pipboy

Ang unang bagay na kailangan kong gawin ay upang matiyak na makakakuha ako ng isang display at micro-controller sa isang form factor na maaari kong gumana. Nagkaroon ako ng 3.5 display na sumisipa sa paligid na nakaupo bilang isang HAT papunta sa mga pin ng GPIO ng isang Raspberry PI, kaya napagpasyahan kong gamitin ito. Ipinares ko ito sa isang Raspberry Pi 0 at tinitiyak na gumana ito OK, mayroong isang ilang mga hakbang upang makilala ang Linux ang display na kailangan mong patakbuhin.

Tulad ng nakikita mo sa pangalawang larawan nagdagdag ako ng isang maliit na platform ng karton / foam na idinikit ko sa kaso upang matulungan ang suporta sa display. Ginawa ko ito tulad ng alam kong hahawakan ko ang bahaging ito ng maraming at hindi nais na masira ang mga pin o ang display sa pamamagitan ng kakulangan ng suporta. Sa kalaunan napalitan ito, ngunit ito ay isang maliit na karagdagang idinagdag na proteksyon sa panahon ng proseso ng pagbuo.

Ito rin ay nagkakahalaga ng pansin sa puntong ito, na sa paglaon sa pagbuo ay nasagasaan ko ang mga isyu sa pagganap sa setup na ito - higit sa lahat ang rate ng pag-refresh sa interface sa pagitan ng Pi at ng display, pupunta ako dito sa paglaon sa pagbuo ngunit kung ako ginawa ito muli maaari kong isaalang-alang ang iba't ibang mga hardware dito.

Narito ang ilang mga kapaki-pakinabang na link para dito:

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…

Isasama ko rin sa github na nauugnay dito ang ilang mga tala para sa kung ano talaga ang ginawa ko upang magawa itong gumana (bagaman mula sa aking pagbabasa ng paksa mayroong maraming pagkakaiba-iba kung paano ito gumagana para sa mga tukoy na pagkakataon / driver, kaya't maaaring mag-iba ang iyong millage).

Hakbang 2: Prototype ng Cardboard

Cardotype Prototype
Cardotype Prototype
Cardotype Prototype
Cardotype Prototype
Cardotype Prototype
Cardotype Prototype

Natagpuan ko ang ilang mga lumang gatilyo / tubo na maaari kong magamit para sa katawan, ngunit kailangan kong magkaroon ng isang disenyo para sa aktwal na lugar ng screen at control panel. Para sa mga ito ay gumawa lang ako ng mga karton na mock up at gumamit ng masking tape upang ayusin ang mga ito sa tubo. Ang una ay isang simpleng "kahon" ngunit pakiramdam nito ay napakasimple, kaya binago ko ito upang gawing mas kawili-wili ang lugar ng screen at nagdagdag ng isang hiwalay na lugar ng control panel. Ang higit pa o mas kaunti ay naging pangwakas na disenyo (mayroong ilang mga pag-aayos na makikita mo, ngunit malapit ito).

Hakbang 3: Mula sa Prototype hanggang sa Template

Mula sa Prototype hanggang sa Template
Mula sa Prototype hanggang sa Template
Mula sa Prototype hanggang sa Template
Mula sa Prototype hanggang sa Template
Mula sa Prototype hanggang sa Template
Mula sa Prototype hanggang sa Template

Ngayon ay mayroon akong isang prototype na masaya ako, maaari kong patagin ang karton at gawing isang template na pagkatapos ay inilipat ko sa bahagi ng isang matandang PC kaso na sinipa ko. Anumang katulad na matigas na plastik ay gagana, gumagamit lang ako ng basura na kailangan kong ibigay. Kapag minarkahan, nagawa kong gupitin ang mga piraso upang masimulan kong tipunin ang pangunahing katawan. Ang isang kapaki-pakinabang na tip dito, upang gawing mas madali ang parehong mark up at kasunod na gupitin ang plastik, tinakpan ko ang mga lugar na kakailanganin kong gupitin ng masking tape muna, kapwa binigyan ako nito ng isang mas madaling paraan upang iguhit ang template sa plastik, at isang bagay upang makatulong na pigilan ang paggupit ng disc mula sa pagdulas habang ginawa ko ang unang pagbawas.

Hakbang 4: Magdagdag ng Kaso para sa Screen & Pi

Magdagdag ng Kaso para sa Screen & Pi
Magdagdag ng Kaso para sa Screen & Pi
Magdagdag ng Kaso para sa Screen & Pi
Magdagdag ng Kaso para sa Screen & Pi

Nais kong ang mga sulok ng lugar ng screen ay maging hubog, at kailangan ko ng isang bagay upang talagang hawakan ang Pi at ipakita - ang aking solusyon ay ang paggamit ng isang maliit na lalagyan ng plastik na mayroon ako. Pinutol ko ang isang butas mula sa tuktok ng katawan at idinikit ang lalagyan sa pamamagitan nito. Pagkatapos ay idinikit ko ang lahat ng mga gilid. Gumamit ako ng superglue dito na may masaganang baking soda upang makatulong na palakasin ang mga hinang. Nang maglaon pinunan ko at isampa / i-sanded ang lahat upang maayos ang lahat at bigyan ito ng isang mas "hulma" na pakiramdam.

Hakbang 5: Ulitin para sa Control Panel

Ulitin para sa Control Panel
Ulitin para sa Control Panel
Ulitin para sa Control Panel
Ulitin para sa Control Panel
Ulitin para sa Control Panel
Ulitin para sa Control Panel

Susunod, ginawa ko eksaktong eksakto ang template ng paglipat, paggupit at pagdikit upang maitayo ang control panel ng pabahay.

Hakbang 6: Gupitin ang Pipe

Gupitin ang Pipe
Gupitin ang Pipe

Tulad ng nakikita mo ang lalagyan na pinaplano kong gamitin upang itabi ang pangunahing mga elektronikong sangkap na nakaupo ngayon sa loob ng itim na plastik na paligid, nangangahulugan ito na kailangan kong gumawa ng isang pambungad sa tubo upang ito mapunta. Gumamit ulit ako ng masking tape upang pumila kung saan ko nais na gupitin, at gupitin ang isang parisukat ng tubo upang magkasya ang mga bahagi.

Hakbang 7: Bezel

Bezel
Bezel
Bezel
Bezel

Isang hamon na hindi ko sinasadyang pinilit sa aking sarili ay sinusubukan na magkaroon ng isang bezel na pupunuin ang lugar sa paligid ng display hanggang sa mga gilid ng lalagyan. Sa kasamaang palad ang paraan ng paggawa ng display wala rin itong kapaki-pakinabang sa disenyo nito (tulad ng mga butas o anumang bagay) upang matulungan itong mai-mount ito, kaya't dapat ding hawakan ng bezel ang display sa lugar. Ang aking unang pagtatangka (nakikita dito) ay isang halo ng plastik at foam. Sa huli ay natapos ko ang pag-ulit dito nang maraming beses at natapos itong maging isa sa mga mas mapaghamong bahagi ng pagbuo. Ginawang mas masahol pa sa mga maliliit na tolerance at pinong kalikasan ng parehong bezel mismo at ang display.

Hakbang 8: Pagsubok sa Baterya

Pagsubok sa Baterya
Pagsubok sa Baterya
Pagsubok sa Baterya
Pagsubok sa Baterya
Pagsubok sa Baterya
Pagsubok sa Baterya

Sa puntong ito, binalik ko ang aking isip sa kung paano ito tatakbo nang nakapag-iisa ng isang mains na ibinigay na USB. Sinubukan ko ang iba't ibang mga baterya at nalaman na ang display na Raspberry Pi + ay hindi talaga gumuhit ng gaanong lakas at perpektong masaya itong tumatakbo sa kahit na isa sa aking mas maliit na mga pack ng baterya (isang freebie mula sa isang trade show). Ito ay talagang mapalad habang ang pack ay magkasya ganap na ganap sa isang puwang sa loob ng build (mga larawan sa paglaon). Ngayon ay maaari naming pansamantalang mai-tape ang pangunahing mga sangkap ng katawan, at makuha ang aming unang pagsubok na pagpapatakbo nito sa aking braso!

Hakbang 9: Pagkasyahin sa Pagsubok

Pagkasyahin sa Pagsubok
Pagkasyahin sa Pagsubok
Pagkasyahin sa Pagsubok
Pagkasyahin sa Pagsubok
Pagkasyahin sa Pagsubok
Pagkasyahin sa Pagsubok

Dito makikita mo kung saan ko pa binago ang pangunahing tubo upang payagan ang pag-access sa ilalim ng mga bahagi. Maaari mo ring makita kung paano ako napalad sa baterya na maayos na umaangkop sa isang lukab sa isang bahagi ng lalagyan na Pi. Sa wakas ay sinimulan ang proseso ng paglilinis ng mga bono, pagpuno, sanding at gumawa ng isang test coat ng panimulang aklat upang maunawaan ang tapos na hitsura (alam ko sa yugtong ito na mas maraming beses akong magpapahatid dito at halos lahat ng panimulang aklat na iyon ay pupunta, ngunit nais kong magkaroon ng isang pakiramdam para sa hitsura nito).

Hakbang 10: Magdagdag ng Mga Kontrol at Pagdetalye

Magdagdag ng Mga Kontrol at Detalye
Magdagdag ng Mga Kontrol at Detalye
Magdagdag ng Mga Kontrol at Detalye
Magdagdag ng Mga Kontrol at Detalye
Magdagdag ng Mga Kontrol at Detalye
Magdagdag ng Mga Kontrol at Detalye

Gusto ko ng isang serye ng pula / dilaw / berde na LED upang bumuo ng isang gauge, pati na rin isang rotary dial at hindi bababa sa 2 mga push button. Ang lahat ng ito ay nilagyan ng seksyon ng control panel - isang kaso lamang ng pagbabarena ng lahat ng mga tamang butas. Sinimulan ko ring magdagdag ng maliliit na piraso ng mga sangkap ng scrap plastic (karaniwang pag-bash ng kit) upang magdagdag ng mga detalye at higit na interes sa katawan at control panel.

Hakbang 11: Muling Bumuo ng Bezel No. 3

Muling Itayo ang Bezel No. 3
Muling Itayo ang Bezel No. 3
Muling Itayo ang Bezel No. 3
Muling Itayo ang Bezel No. 3
Muling Itayo ang Bezel No. 3
Muling Itayo ang Bezel No. 3

Tulad ng nabanggit ko kanina, nagpumiglas ako sa bezel para sa pagbuo na ito at itinayo ulit ito nang maraming beses. Ito ang pangatlong pag-ulit na natigil ko. Ang aking diskarte dito upang gumamit ng hardboard at gupitin ang 2 magkakaibang mga hugis, isang thinker kaysa sa isa pa at pagkatapos ay nakadikit (at naipit) ang mga ito upang mabuo ang gitnang larawan. Pinapayagan ng mga hugis na ito ang parisukat na display na maupo sa loob nito at pagkatapos ay hinawakan nito ang display sa lugar sa loob ng lalagyan (tulad ng larawan 3). Binigyan lamang ako nito ng sapat na materyal upang magamit ang 4 napakaliit na mga turnilyo bilang mga fixture - na ginamit ko upang ayusin ito nang matatag sa lugar sa loob ng kaso, at ito naman ang hahawak sa screen na matatag at ligtas. Sa paggunita muli ay makakahanap ako ng isang display na kung saan ay dumating na may ilang disenteng mga pagpipilian sa pag-mount (o gumamit ng isang 3D printer - na wala sa oras na iyon).

Hakbang 12: Prototyping ang Electronics

Prototyping ang Electronics
Prototyping ang Electronics
Prototyping ang Electronics
Prototyping ang Electronics

Gumagamit ako ng isang breadboard upang i-layout ang aking mga simpleng circuit na tulad nito, at tulad ng madalas kong gawin ang bahaging ito ng proyekto sa isang iba't ibang puwang sa pangunahing pagbuo ng katawan, isinama ko rin ito sa ibang Raspberry PI. Dito ginamit ko ang isang modelo 3, na nagbigay sa akin ng kaunting lakas upang direktang kumonekta dito at magpatakbo ng isang IDE onboard. Ginawa nitong mas madali para sa akin ang mabilis na pag-prototyp ng code. Mayroong maraming iba pang mga paraan upang malayuang kumonekta / code / debug, nais ko lamang dito na gawin ko.

Ang disenyo dito ay medyo tuwid na pasulong, mayroon kaming;

  1. Rotary encoder - gumagamit ito ng isang ground at grupo ng mga GPIO pin upang harapin ang direksyon ng pag-click at ang pindutan ng push.
  2. Pares ng mga pindutan ng push, ang mga ito ay gumagamit lamang ng isang solong GPIO pin bawat isa at isang karaniwang lupa
  3. 3 LED's, bawat isa ay may isang inline resister upang ihinto ang kanilang pag-pop, lahat ng pagpunta sa isang karaniwang landas, ngunit may isang indibidwal na GPIO pin bawat isa upang ang bawat isa ay maaaring matugunan nang paisa-isa.

Binigyan ako nito ng 3 LEDs para sa aking gauge, isang rotary encoder upang paikutin ang mga screen sa pipboy at 3 push button upang magmaneho ng mga aksyon (isa sa rotary encoder at 2 magkahiwalay na wired). Ito ay tungkol sa lahat na maaari kong magkasya, at sa pagpapakita ng pagkuha ng isang kumpol ng mga pin, halos ubusin kung ano ang mayroon ka sa isang karaniwang layout ng Pi GPIO. Gayunpaman ito ay pagmultahin para sa aking mga hangarin.

Ang pangalawang larawan ay halos ipinapakita ang panghuling panloob na layout na sinamahan ko. Gumugol ako ng ilang oras dito sa pagsubok ng mga paraan ng pagmamaneho ng mga sangkap at pag-verify sa lahat ng ito ay nagtrabaho bago ko ito ilipat sa katawan ng build. Ang lahat ng mga code ay nasa github.

Isang tala tungkol sa mga rotary encoder. Gumugol ako ng maraming oras sa pagsusulat ng aking sariling makina ng estado ng Rotary Encoder upang subaybayan ang mataas / mababang pagbabago ng GPIO at mapa ang mga ito sa mga rotary na posisyon. Nagkakahalo ako ng tagumpay dito, nakuha ko itong nagtatrabaho para sa "karamihan" na mga kaso, ngunit palaging may mga gilid na kaso at (de) nagba-bounce atbp upang harapin. Malayo, mas madaling gamitin ang isang handa nang gawing silid-aklatan at may mahusay para sa mga magagamit na mai-install para sa Python. Ginamit ko iyon sa huli dahil pinapayagan akong mag-focus sa kasiya-siyang bahagi ng pagbuo, kaysa sa paggastos ng mga edad sa pag-debug ng mga isyu. Ang lahat ng mga detalye para sa na ay kasama sa source code.

Kung bago ka sa Raspberry Pi, GPIO at electronics, lubos kong inirerekumenda ang mga sumusunod na tutorial na lumalakad sa iyo sa lahat ng kailangan mong gawin sa layout sa itaas;

projects.raspberrypi.org/en/projects/physi…

thepihut.com/blogs/raspberry-pi-tutorials/…

Hakbang 13: Paglipat ng Elektronikong Sa Katawan

Paglipat ng Elektronikong Sa Katawan
Paglipat ng Elektronikong Sa Katawan
Paglipat ng Elektronikong Sa Katawan
Paglipat ng Elektronikong Sa Katawan
Paglipat ng Elektronikong Sa Katawan
Paglipat ng Elektronikong Sa Katawan

Matapos kong makumpleto ang layout gamit ang isang breadboard, oras na upang magsimulang mag-isip tungkol sa kung paano i-mount ang mga ito sa katawan ng pipboy. Napagpasyahan kong nais kong gawin ito upang maalis ko at matanggal ang lahat ng mga elektronikong sangkap sakaling kailanganin ko upang ayusin o baguhin ang anumang bagay sa hinaharap. Upang magawa ito, nagpasya akong gawin ang lahat ng mga sub-bahagi na plug-kaya gamit ang mga konektor ng dupont.

Para sa mga pindutan na akong naghinang sa ilang mga wire na extension at ginamit ang wire wrap upang mapang-insulate ang mga dulo, pinapayagan akong mag-ipon at i-disassemble ang mga ito mula sa katawan (hal. Para sa pagsubok, pagkatapos ay pagpipinta atbp). Ang Rotary Encoder ay mayroon nang mga pin na maaaring tumanggap ng mga konektor ng dupont, kaya kailangan ko lang gumawa ng ilang mga wire sa tamang haba.

Ang LED ay tumagal ng kaunti pang trabaho - para dito, nagpasya akong gumamit ng kaunting scrap plastic na mayroon ako (gupitin upang magkasya) upang makagawa ng isang naaalis na panel upang mai-mount ang LED. Pagkatapos ay ininit ko ang mga ito sa lugar at hinihinang ang mga resisters at wires. Ginawa nito ang isang yunit ng pagtanggal na maaari kong magkasya at alisin at pinadali ang pagpipinta at pagtatapos.

Tandaan na ang aking paghihinang ay kahila-hilakbot, kaya't pinananatili ko ang simpleng ito at iniwasan ang anumang masyadong detalyado / pagmultahin. Sa huling larawan na nakikita mong mayroon din akong napakaliit na broadboard (5x5), ginamit ko ang isa sa mga naka-mount sa loob upang magbigay ng isang panel upang ikonekta ang lahat sa / mula sa GPIO. Sa partikular na ito ay kapaki-pakinabang upang lumikha ng isang karaniwang ground rail na maaari kong magamit at maiwasan ang pagkakaroon ng maraming mga ground wires na bumalik sa Pi.

Pagkatapos ay pinutol ko ang iba't ibang mga butas sa lalagyan upang pakainin ang mga wire hanggang sa Pi at kumonekta hanggang sa GPIO. Pinapayagan ako ng disenyo na ito na kumpletuhin ang lahat kung kailangan ko (isang bagay na ginawa ko ng maraming beses habang tinatapos ko ang pagbuo).

Hakbang 14: Fine Pag-tune ng Pagkasyahin

Pinong Pag-tune ng Pagkasyahin
Pinong Pag-tune ng Pagkasyahin
Pinong Pag-tune ng Pagkasyahin
Pinong Pag-tune ng Pagkasyahin

Sa puntong ito tumakbo ako sa ilang mga "akma" na isyu. Una ang paggamit ng mga konektor ng dupont para sa mga kable ay nangangahulugan na mahirap makuha ang mga ito upang magkasya sa mga pin na may display hat sa lugar dahil walang sapat na clearance sa taas. Nalutas ko ito sa pamamagitan ng pagbili (ito ay isa sa ilang mga bagay na talagang binili ko para sa proyektong ito) isang maliit na GPIO pin extender upang magkaroon ako ng display hat na umupo nang mas mataas at mag-iwan ng silid upang ma-access ang natitirang mga GPIO pin gamit ang mga konektor ng dupont.

Pinutol ko rin ang ilang maliliit na piraso ng foam floor mat upang makagawa ng mga gilid na padding sa loob ng lalagyan, nakatulong ito upang maupuan ang Pi + Display sa tamang lugar at pigilan itong gumalaw.

Hakbang 15: I-Retro Up ang Rotary Encoder

I-Retro Up ang Rotary Encoder
I-Retro Up ang Rotary Encoder

Ang mga rotary encoder ay madalas na dumating (tulad ng minahan) na may magandang makintab na modernong "hi fi" na style knob. Ito ay ganap na wala sa character para sa pagbuo, kaya kailangan kong magkaroon ng iba pa. Sa aking random na kahon ng mga bahagi ay nakatagpo ako ng isang lumang cog mula sa isang drill na sinira ko matagal na ang nakalipas. Mukha itong maganda, ngunit hindi umaangkop sa rotary encoder. Ang aking solusyon dito ay upang subukan ang iba't ibang mga plugs ng pader hanggang sa makita ko ang isa na akma sa rotary dial, at pagkatapos ay i-cut ito sa hugis upang magamit ko ito bilang isang "panloob na kwelyo" upang maupuan ang drill cog papunta sa rotary encoder bilang isang mas naaangkop na tema kontrolin

Hakbang 16: Panloob na Lining

Inner lining
Inner lining
Inner lining
Inner lining

Mas maraming foam tile tile! Sa oras na ito, ginamit ko ang mga ito upang bumuo ng isang malambot na lining upang gawin itong isang mas komportable na magkasya (nang hindi ito masyadong maluwag). Sa pamamagitan ng paggupit ng isang butas mula sa foam ay nagawa ko ring makuha ang ilang "bukol" na ginagawa ng lalagyan para sa Pi. Pangkalahatang ginawa nitong mas masusuot. Hindi ipinakita sa mga larawang ito, ngunit ginawa ko itong bahagyang mas malaki kaysa sa pangunahing katawan kaya nakikita ito sa mga dulo, na kalaunan ay pininturahan ko at nakatulong ang lahat upang magdagdag ng kaunting kaibahan at interes sa natapos na item.

Hakbang 17: Pagdaragdag ng Detalye

Pagdaragdag ng Detalye
Pagdaragdag ng Detalye
Pagdaragdag ng Detalye
Pagdaragdag ng Detalye

Oras upang simulang magdagdag ng ilang dekorasyon at gawin itong mas kawili-wili. Una sa lahat nagdagdag ako ng ilang mga scrap strip ng plastik kasama ang isang mukha upang mabigyan ito ng kaunting visual na interes. Pagkatapos ay nagdagdag ako ng ilang mga pekeng mga wire sa ilang mga terminal at itinulak lamang ito sa isang butas na drill ko sa katawan. Ito ay sa kalaunan ay pininturahan ng magkakaibang mga kulay.

Hakbang 18: Pagpipinta at Pagtatapos sa Pagbuo ng Katawan

Pagpipinta at Pagtatapos ng Pagbuo ng Katawan
Pagpipinta at Pagtatapos ng Pagbuo ng Katawan
Pagpipinta at Pagtatapos ng Pagbuo ng Katawan
Pagpipinta at Pagtatapos ng Pagbuo ng Katawan
Pagpipinta at Pagtatapos ng Pagbuo ng Katawan
Pagpipinta at Pagtatapos ng Pagbuo ng Katawan

Hindi ako masyadong nag-alala sa isang malinis na tapusin - tulad ng dapat na matanda at mahusay na gamitin pa rin (sa katunayan maaari akong bumalik at gumawa ng mas maraming pag-aalala dito sa ilang mga punto). Ngunit ginusto ko ito upang magmukhang isang pare-pareho at kumpletong bagay na hindi naiiba mula sa random na basura (kahit na eksakto kung ano ito). Dumaan ako sa maraming mga pag-ulit ng sanding, pagpuno (milliput ang aking tagapuno ng pagpipilian para sa plastik), at ulitin. Pagkatapos maraming mga layer ng panimulang aklat at pintura upang higit na makatulong na makinis ang lahat ng mga sumali. Pagkatapos mas maraming sanding at higit pang pagpuno, at higit pang pagpipinta.

Kapag nagkaroon ako ng isang hitsura at pakiramdam ng katawan na masaya ako, nagsimula akong magdagdag ng ilang detalye. Gumamit ako ng rub at buff sa mga grills sa mga kontrol upang mabigyan sila ng mas maraming pakiramdam ng wire mesh. Nagdagdag din ako ng maliliit na detalye ng pintura dito at doon gamit ang acrylics.

Kinuha ko ang aking koleksyon ng mga random na sticker at nagdagdag ng ilang upang tapusin ang epekto. Pagkatapos ay gumawa ako ng isang pag-hugasan ng panahon sa ilang mga halo-halong pintura upang magdagdag ng dumi at dumi sa mahirap maabot ang mga lugar na mahirap linisin. Ito ay marahil medyo masyadong banayad sa ngayon, at maaari akong bumalik at magdagdag pa.

Hakbang 19: Coding

Coding
Coding

Bahagi ng aking ambisyon para sa proyektong ito na gawin itong reaksyon tulad ng isang tunay na pipboy - at para sa akin ang pinaka-iconic na bahagi ng in-game na iyon ay ang pag-dial upang i-flip sa pagitan ng iba't ibang mga screen. Upang makamit ito, nagpasya akong magsulat ng isang interface ng gumagamit ng pipboy na maaaring magpakita ng isang serye ng mga screen at payagan kang mag-scroll sa pagitan nila. Nais kong gawin ang nilalaman ng mga screen ng isang bagay na madali kong mababago, at sa katunayan ay maaaring magdagdag / mag-alis ng mga screen.

Pinili kong isulat ito sa Python dahil sa mahusay na suporta para sa Raspberry Pi, GPIO atbp Ang Python ay medyo mababa sa aking listahan ng mga wika na pamilyar sa akin, kaya't ito ay isang malaking kurba sa pag-aaral para sa akin, at ang karamihan sa code ay magulo bilang isang resulta. Ina-update ko ito sa paglipas ng panahon dahil hindi ko pa natatapos ang lahat ng nais kong gawin dito - ngunit malapit na itong malapit upang ibahagi ngayon dahil naroroon ang lahat ng mga pangunahing konsepto.

Ang aking disenyo para sa UI code ay makatwirang tuwid, may pangunahing script ng Python na nagtatakda ng display, nag-configure ng GPIO, na-load ang mga screen at pumapasok sa isang walang katapusang loop ng pag-update, naghihintay para sa mga kaganapan ng gumagamit at ina-update ang display kung kinakailangan. Bilang karagdagan mayroong iba't ibang mga script ng suporta na makakatulong upang makabuo ng mga screen ng UI nang maaga.

Mga pangunahing silid aklatan na ginamit:

  • pygame: Ginagamit ko ito bilang engine upang patakbuhin ang UI dahil pinapayagan akong gumuhit ng di-makatwirang graphics, manipulahin ang mga imahe, font, pumunta sa buong screen atbp.
  • pyky040: Nagbibigay ito ng paghawak para sa rotary dial at nai-save ako ng maraming oras (maraming salamat kay Raphael Yancey para sa paglabas nito.
  • RPi. GPIO: Para sa mahusay na pagmamaneho ng GPIO, naglaro ako sa ilang mga pagpipilian dito, ngunit binigyan ako nito ng tamang antas ng kakayahang umangkop na nais ko, lalo na sa mga bagay tulad ng paggamit ng isang ekstrang GPIO bilang isa pang 3.3v upang himukin ang rotary encoder atbp.
  • ingay: Para sa pagbuo ng ingay ng perlin, upang payagan akong lumikha ng isang random na form ng alon para sa screen ng radyo na mukhang mas natural
  • pila: Napatakbo ako sa isang nakakabigo na bug na may oras ng mga kaganapan mula sa paikot na encoder na nakabukas at ang (napaka) mabagal na rate ng pag-refresh ng LCD display. Sa huli ang paraan ng paglutas nito ay ang pag-en-pila ng mga papasok na kaganapan mula sa rotary encoder at kunin ang mga ito nang paisa-isa habang nagre-refresh ang screen.
  • os, sys, threading, oras: lahat ginagamit para sa karaniwang pag-andar ng sawa

Isang tala sa disenyo ng paghawak ng screen. Ang mga screen ay tinukoy bilang isang listahan ng mga pangalan sa loob ng code. Ang bawat entry sa listahan ay maaaring magkaroon ng alinman sa isang-p.webp

Ang mga nilalaman ng mga file na iyon ay nabuo sa ibang lugar (sa pamamagitan ng kamay o ng iba pang mga script), ang output nito ay nai-save bilang-p.webp

Mayroong mga kakaibang pagbubukod kung saan naka-code ang ilang mga bagay - tulad ng form ng alon para sa random na radyo sa radyo na na-compute sa real time at animated.

Kung makakatulong ang isang pagkakatulad, isipin ang disenyo ng UI bilang isang labis na krudo at simpleng web browser - ang bawat "screen" ay tulad ng isang simpleng simpleng webpage na maaari lamang binubuo ng isang png, isang txt file o isang kombinasyon ng dalawa. Ang mga nilalaman ng mga iyon ay malaya at iginuhit lamang ng UI tulad ng isang browser na gumuhit ng isang webpage.

Narito ang mga link sa pangunahing mga aklatan na ginamit ko dito:

www.pygame.org/news

pypi.org/project/pyky040/

pypi.org/project/noise/

Hakbang 20: Screen ng Stats

Stats Screen
Stats Screen

Walang pipboy ang magiging kumpleto nang wala ang klasikong screen ng stats ng silhouette na pipboy. Para sa mga ito, ang aking kaibigan ay lumikha ng isang static na-p.webp

Hakbang 21: Screen ng Imbentaryo

Screen ng Imbentaryo
Screen ng Imbentaryo

Isang bagay na palaging kapaki-pakinabang sa mga proyekto ng Pi ay nagkakaroon ng isang paraan upang maipakita ang pangunahing impormasyon tulad ng IP address sa DHCP'd nito atbp. Napagpasyahan kong mag-overload ang screen ng Imbentaryo bilang isang pagpapakita ng "imbentaryo" ng Pi - kung ano ang CPU, memorya, IP address atbp. Sumulat ako ng isang maliit na script ng Linux upang kolektahin ang impormasyong ito at i-redirect lang ito sa isang naaangkop na pinangalanang teksto (.txt) na file na kinukuha at ipinapakita ng system ng UI. Sa ganitong paraan kung nasa ibang lokasyon ako maaari kong sunugin ang script at kunin ang isang sariwang.txt file kasama ang napapanahong IP address atbp.

Hakbang 22: Screen ng Mapa

Screen ng Mapa
Screen ng Mapa

Ang screen na ito ay isa sa mga mas kumplikadong mga screen upang gumana. Ang Raspberry Pi 0 ay hindi nagmula sa isang module ng GPS, ngunit nais kong gawing may bisa ang Mapa kung nasaan ang Pi. Ang aking solusyon dito ay isang hiwalay na script na kumukuha ng Pi IP address, gumagamit ng https://ipinfo.io upang maghanap ng isang tinatayang lokasyon. Ang tugon ng JSON ay nakunan at pagkatapos ay i-convert ko ang mga co-ordinate upang maaari kong hilahin pababa ang isang openstreetmap.org tile para sa tinatayang lokasyon.

Ang mga tile ay bumaba sa maraming mga kulay, ngunit nais ko ng isang berdeng-scale na imahe upang tumugma sa hitsura at pakiramdam ng Pipboy at hindi ko makita ang eksaktong eksaktong ganyan, kaya nagsulat ako ng isang berdeng-scale na filter sa Python upang muling ibalik ang mga kulay ng openstreetmap tile at pagkatapos ay i-cache ang bagong imahe sa isang-p.webp

Sa panahon ng proseso sa itaas ang isang file ng teksto ay nabuo na may tinatayang lokasyon at mga co-ordinate, at ang map tile ay nilikha bilang isang png. Kinukuha ng pipboy UI ang parehong mga file na ito at inilalagay ang mga nilalaman upang lumikha ng isang screen ng Mapa na gumagana (sa loob ng kawastuhan ng resolusyon ng IP address sa isang lokasyon).

Hakbang 23: Screen ng Data

Screen ng Data
Screen ng Data

Ito ay isang test card lamang (nabuo ng isa pang script ng python at output sa isang-p.webp

Hakbang 24: Radio Screen

Screen sa Radyo
Screen sa Radyo

Kasama ang screen ng mapa, ito ang iba pang screen na talagang sanhi sa akin ng maraming trabaho. Ito ang nag-iisang screen kung saan nagpatugtog ako ng may animasidad - at halos gumana ito ayon sa nilalayon, ngunit ang pagganap ay isang problema pa rin sa mga rate ng pag-refresh ng screen ng LCD. Ang istraktura ng screen ay isang file ng teksto na naglalaman ng ilang mga sapalarang piniling mga pangalan ng radyo (ang mga ito ay di-makatwirang mga string at hindi gumawa ng anumang bagay maliban sa ipakita ang isang listahan sa screen), isang-p.webp

Ito ang nag-iisang screen kung saan ang pygame loop ay gumagawa ng anumang tunay na gawain tulad ng bawat pag-ikot, kailangan nitong kalkulahin ang bagong form ng alon, burahin ang bahagi ng screen na ito ay nabubuhay at muling binibigyang muli.

Hakbang 25: Pangwakas na Mga Saloobin

Image
Image
Pangwakas na Saloobin
Pangwakas na Saloobin

Ito ay marahil ang pinaka-mapaghamong pagbuo na nagawa ko, na may maraming iba't ibang mga konsepto at kasanayan na tinawag, ngunit ito rin ay isa sa pinaka kasiya-siya sa totoong bagay na gumagana bilang isang resulta. Nasa proseso pa rin ako ng pag-ayos ng ilan sa aking higit pang mga teknikal na tala pati na rin ang github repo para sa code. Ang lahat ng ito ay gagawing magagamit ko kaagad, kaya't bumalik kaagad para sa higit pang mga detalye at impormasyon sa pagkakaroon ko ng oras upang idagdag ang mga ito sa pagsulat.

Kung nais mong gawin ang isang bagay tulad nito, nais kong makita ang mga resulta at kung mayroon kang anumang mga katanungan mangyaring huwag mag-atubiling makipag-ugnay at magsisikap akong magdagdag ng karagdagang impormasyon sa anumang mga hakbang kung saan mo nais tumulong.

Hakbang 26: Buksan ang Code sa Github

Buksan ang Code sa Github
Buksan ang Code sa Github

Sa wakas nakuha ko ang paligid upang buksan ang code up sa Github. Magagamit ito sa link na ito:

Inirerekumendang: