Sadržaj:

Pipboy izgrađen od otpada: 26 koraka (sa slikama)
Pipboy izgrađen od otpada: 26 koraka (sa slikama)

Video: Pipboy izgrađen od otpada: 26 koraka (sa slikama)

Video: Pipboy izgrađen od otpada: 26 koraka (sa slikama)
Video: Батьхождение - Мод "Наёмный убийца" часть 3 (HD 1080) 2024, Srpanj
Anonim
Image
Image
Izgradnja srca Pipboya
Izgradnja srca Pipboya

Ovo je moj radni Pipboy, napravljen od slučajnog smeća iz garaže i pretresa mojih zaliha elektroničkih komponenti. Smatrao sam da je ovo izazovna građevina i trebalo mi je nekoliko mjeseci rada pa ovo ne bih kategorizirao kao projekt za početnike. Potrebne vještine uključuju plastične i drvene radove, elektroniku i kodiranje. Tijelo je izrađeno od raznih komada otpadne plastike izrezanih i zavarenih. Koristio sam Raspberry Pi 0 kao mikrokontroler, sa zaglavljem zaslona montiranim na dio GPIO pinova. Preostali pinovi koriste se za pogon LED dioda i povezivanje gumba/kontrola. Napisao sam korisničko sučelje u stilu "Pipboy" s nekim demo zaslonima u Pythonu kako bih dovršio projekt.

Moji ciljevi za projekt bili su:

  • Morao je raditi - tj. Morao je imati zaslon koji je radio stvari
  • Željela sam da ima "brojčanik" za odabir različitih zaslona jer mi se to uvijek isticalo kao kultni dio korisničkog sučelja u Falloutu
  • Cijela je izgradnja morala biti dovršena korištenjem stvari koje sam već imao u garaži ili u uredu (to nije u potpunosti postignuto, ali sam se približio - više od 90% toga su pronađeni predmeti ili stvari koje sam već ležao okolo)
  • Treba biti nosiv

Jedan cilj koji nisam imao bio je napraviti točnu repliku jednog od modela u igri - više volim stvarati stvari "u stilu" stvari, jer mi daje prostora za prilagodbu slučajnog smeća koje pronađem, i dopustite mi da budem malo kreativniji. Konačno, da, znam da ih možete kupiti, ali ni to nije bila poanta;)

Pribor

Pribor

  • Cijev sa širokim otvorom (poput komada odvodne cijevi)
  • Otpadna plastika (i za izradu tijela i u dekorativne svrhe)
  • Mali spremnik
  • Podna podloga od pjene
  • Malina Pi
  • 3.5 "ekran
  • KY040 Rotacijski davač
  • 3x LED diode
  • 2x tipke
  • Moćna banka
  • Ožičenje
  • Vijci, ljepila, boje, punila itd

Alati

  • Dremmel
  • Višenamjenski alat s nastavcima za rezanje i brušenje
  • Bušilica
  • Datoteke
  • Lemilica
  • Pištolj za vruće ljepilo
  • Odvijači
  • Oštar nož
  • Pila

Korak 1: Izgradnja srca Pipboya

Izgradnja srca Pipboya
Izgradnja srca Pipboya

Prvo što sam trebao učiniti je osigurati da mogu dobiti zaslon i mikrokontroler u formatu s kojim mogu raditi. Slučajno mi se pojavio 3.5 -inčni zaslon koji sjedi kao HAT na GPIO pinovima Raspberry PI -a, pa sam odlučio koristiti ovo. Upario sam ga s Raspberry Pi 0 i uvjerio se da radi u redu, postoje nekoliko koraka do toga da Linux prepozna zaslon koji morate proći.

Kao što možete vidjeti na drugoj slici, dodao sam malu platformu od kartona/pjene koju sam zalijepio na kućište kako bih podržao zaslon. Učinio sam to jer sam znao da ću se puno baviti ovim dijelom i nisam htio slomiti pribadače ili zaslon zbog nedostatka podrške. Na kraju je ovo zamijenjeno, ali je to bila dobra dodatna zaštita tijekom procesa izgradnje.

U ovom trenutku također je vrijedno napomenuti da sam kasnije u izgradnji naišao na probleme s performansama s ovim postavljanjem - pretežno brzinu osvježavanja preko sučelja između Pi -a i zaslona, o tome ću više govoriti kasnije u izgradnji, ali ako je li to učinio ponovno, ovdje bih mogao razmotriti drugačiji hardver.

Evo nekoliko korisnih veza za to:

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…

Također ću uključiti u github povezan s ovim neke napomene o tome što sam zapravo učinio da ovo funkcionira (iako iz mog čitanja teme postoji mnogo varijacija u načinu na koji ovo radi za određene instance/upravljačke programe, pa se vaš miljage može razlikovati).

Korak 2: Prototip kartona

Kartonski prototip
Kartonski prototip
Kartonski prototip
Kartonski prototip
Kartonski prototip
Kartonski prototip

Pronašao sam neke stare oluke/cijevi koje bih mogao koristiti za tijelo, ali morao sam smisliti dizajn za stvarnu površinu zaslona i upravljačku ploču. Za to sam samo napravio makete od kartona i upotrijebio maskirnu traku da ih pričvrstim na cijev. Prva je bila jednostavna "kutija", ali činilo mi se da je previše jednostavna pa sam je izmijenila kako bih područje zaslona učinila zanimljivijim i dodala zasebno područje upravljačke ploče. Ovo je manje -više postalo konačni dizajn (bilo je nekoliko izmjena kao što ćete vidjeti, ali blizu).

Korak 3: Od prototipa do predloška

Od prototipa do predloška
Od prototipa do predloška
Od prototipa do predloška
Od prototipa do predloška
Od prototipa do predloška
Od prototipa do predloška

Sada sam imao prototip s kojim sam bio zadovoljan, mogao sam spljoštiti karton i pretvoriti ga u predložak koji sam zatim premjestio na dio starog kućišta za računalo koje sam razbijao. Bilo koja slična čvrsta plastika bi radila, samo sam koristio otpad koji sam morao imati u ruci. Nakon što sam ih označio, tada sam mogao izrezati komade kako bih mogao početi sastavljati glavno tijelo. Ovdje je koristan savjet, kako bih olakšao označavanje i naknadno rezanje plastike, prekrivao sam područja koja bih trebao izrezati najprije ljepljivom trakom, što mi je oboje dalo lakši način da nacrtam predložak na plastiku, i nešto što će spriječiti klizanje diska za rezanje prilikom prvih rezova.

Korak 4: Dodajte futrolu za Screen & Pi

Dodaj futrolu za Screen & Pi
Dodaj futrolu za Screen & Pi
Dodaj futrolu za Screen & Pi
Dodaj futrolu za Screen & Pi

Htio sam da kutovi područja zaslona budu zakrivljeni, a trebalo mi je nešto za držanje Pi i prikaz u njemu - moje je rješenje bilo upotrijebiti mali plastični spremnik koji sam imao. Izrezao sam rupu na vrhu tijela i zalijepio spremnik kroz ovo. Zatim sam zalijepila sve strane. Ovdje sam upotrijebio super ljepilo s obilnom sodom bikarbonom za jačanje zavara. Kasnije sam sve ispunio i uložio/brusio kako bih sve pospremio i dao mu više "oblikovanog" osjećaja.

Korak 5: Ponovite za upravljačku ploču

Ponovite za upravljačku ploču
Ponovite za upravljačku ploču
Ponovite za upravljačku ploču
Ponovite za upravljačku ploču
Ponovite za upravljačku ploču
Ponovite za upravljačku ploču

Zatim sam napravio potpuno isti predložak za transponiranje, rezanje i lijepljenje za izgradnju kućišta upravljačke ploče.

Korak 6: Izrežite cijev

Izrežite cijev
Izrežite cijev

Kao što vidite, spremnik koji planiram koristiti za smještaj glavnih elektroničkih komponenti sada ponosno sjedi u crnom plastičnom omotu, to znači da moram napraviti otvor u cijevi u koji će se smjestiti. Ponovno sam upotrijebio maskirnu traku kako bih se poredao tamo gdje sam želio izrezati i izrezati kvadrat cijevi kako bi dijelovi pristajali.

Korak 7: Okvir

Okvir
Okvir
Okvir
Okvir

Jedan izazov koji sam si slučajno nametnuo bio je pokušaj smisliti okvir koji bi ispunio područje oko zaslona do rubova spremnika. Nažalost, način na koji je zaslon izrađen također nema ništa korisno u svom dizajnu (poput rupa ili bilo čega) što bi mu pomoglo pri postavljanju, pa je okvir također morao držati zaslon na mjestu. Moj prvi pokušaj (vidi se ovdje) bila je mješavina plastike i pjene. Na kraju sam ovo ponovio nekoliko puta i završio je kao jedan od izazovnijih dijelova izgradnje. Pogoršavaju male tolerancije i osjetljiva priroda samog okvira i zaslona.

Korak 8: Test baterije

Test baterije
Test baterije
Test baterije
Test baterije
Test baterije
Test baterije

U ovom sam trenutku razmišljao o tome kako ovo pokrenuti neovisno o USB -u koji se napaja iz mreže. Testirao sam razne baterije i otkrio da Raspberry Pi + zaslon zapravo ne troši toliko energije i da je savršeno sretan što radi čak i na jednom od mojih manjih baterija (besplatan sa sajma). To je bila prava sreća jer se paket savršeno uklopio u prazninu unutar građe (fotografije kasnije). Sada možemo privremeno zalijepiti glavne dijelove tijela i pokrenuti naš prvi testni rad na ruci!

Korak 9: Testiranje sposobnosti

Testiranje fit
Testiranje fit
Testiranje fit
Testiranje fit
Testiranje fit
Testiranje fit

Ovdje možete vidjeti gdje sam dodatno promijenio jezgru kako bih omogućio pristup donjoj strani komponenti. Također možete vidjeti kako mi se posrećilo što je baterija lijepo postavljena u šupljinu s jedne strane spremnika Pi. Konačno je započeo proces čišćenja spojeva, punjenje, brušenje i napravio probni sloj temeljnog premaza kako bi se dobio osjećaj gotovog izgleda (znao sam da ću u ovoj fazi brusiti ovo još mnogo puta i gotovo sav taj temeljni premaz će otići, ali htio sam osjetiti kako će to izgledati).

Korak 10: Dodajte kontrole i pojedinosti

Dodajte kontrole i pojedinosti
Dodajte kontrole i pojedinosti
Dodajte kontrole i pojedinosti
Dodajte kontrole i pojedinosti
Dodajte kontrole i pojedinosti
Dodajte kontrole i pojedinosti

Htio sam da niz crvenih/žutih/zelenih LED dioda oblikuje mjerač, kao i okretni točkić i najmanje 2 tipke. Svi su oni bili postavljeni na odjeljak upravljačke ploče - jednostavno slučaj bušenja svih odgovarajućih rupa. Također sam počeo dodavati male komadiće plastičnih dijelova od otpadnog materijala (u osnovi, skupljanje kompleta) kako bih dodao detalje i povećao interes za tijelo i upravljačku ploču.

Korak 11: Obnova okvira broj 3

Obnova okvira broj 3
Obnova okvira broj 3
Obnova okvira broj 3
Obnova okvira broj 3
Obnova okvira broj 3
Obnova okvira broj 3

Kao što sam ranije spomenuo, borio sam se s okvirom za ovu konstrukciju i obnavljao je nekoliko puta. Ovo je treća iteracija s kojom sam se zadržao. Moj pristup ovdje je upotreba lesonita i izrezivanje 2 različita oblika, jednog mislioca od drugog, a zatim njihovo lijepljenje (i stezanje) zajedno kako bi nastala srednja slika. Ti su oblici omogućili da kvadratni zaslon sjedne u ovo mjesto, a zatim je držao zaslon na mjestu unutar spremnika (kao na slici 3). To mi je dalo taman dovoljno materijala za korištenje 4 vrlo mala vijka kao učvršćenja - kojima sam ovo čvrsto učvrstio u kućištu, a on bi zauzvrat držao zaslon stabilnim i sigurnim. U retrospektivi bih našao zaslon koji je došao s nekim pristojnim mogućnostima ugradnje (ili upotrijebio 3D pisač - kojeg tada nisam imao).

Korak 12: Prototipiranje elektronike

Prototipiranje elektronike
Prototipiranje elektronike
Prototipiranje elektronike
Prototipiranje elektronike

Koristim ploču za postavljanje svojih jednostavnih sklopova na ovaj način, a kako često ovaj dio projekta radim u drugačijem prostoru od glavne konstrukcije karoserije, također sam ga upario s drugim Raspoberry PI. Ovdje sam koristio model 3, koji mi je dao malo više snage da se zapravo izravno povežem s njim i pokrenem IDE na ploči. Ovo mi je samo olakšalo brzo prototipiranje koda. Postoji mnogo drugih načina za daljinsko povezivanje/kod/ispravljanje pogrešaka, ovo je samo ono što sam volio učiniti ovdje.

Ovdje je dizajn prilično jednostavan, imamo;

  1. Rotacijski koder - koristi se uzemljenje i hrpa GPIO pinova za upravljanje smjerom klika i pritiskom na gumb.
  2. Par tipki, oni jednostavno koriste svaki GPIO pin i zajedničku masu
  3. 3 LED diode, svaka s ugrađenim otpornikom kako bi se spriječilo njihovo pojavljivanje, sve ide na zajedničko tlo, ali svaka s pojedinačnim GPIO pinom, tako da se svaka može adresirati pojedinačno.

To mi je dalo 3 LED diode za moj mjerač, rotacijski koder za rotiranje kroz zaslone na pipboyu i 3 tipke za pokretanje radnji (jedna na rotacijskom davaču i 2 odvojeno ožičena). To je bilo sve što sam mogao smjestiti, a s obzirom da zaslon zauzima hrpu igala, prilično troši ono što imate na standardnom Pi GPIO rasporedu. Međutim, za moje potrebe bilo je dobro.

Druga slika prilično prikazuje konačni unutarnji izgled s kojim sam krenuo. Ovdje sam proveo neko vrijeme isprobavajući načine upravljanja komponentama i provjeravajući da li je sve uspjelo prije nego što sam to prenio u tijelo gradnje. Sav kôd je u githubu.

Napomena o rotacijskim koderima. Potrošio sam hrpu vremena pišući svoj vlastiti stroj s rotacijskim koderima za praćenje GPIO visokih/niskih promjena i preslikavanje na rotacijske položaje. Ovdje sam imao mješoviti uspjeh, uspio sam za "većinu" slučajeva, ali uvijek se moraju rješavati predmeti i (de) odbijanje itd. Daleko je, daleko lakše koristiti gotovu biblioteku, a postoji i sjajna za one koje je moguće instalirati za Python. Na kraju sam to iskoristio jer mi je omogućio da se usredotočim na zabavni dio izgradnje, umjesto da provedem godine u rješavanju problema. Svi detalji o tome uključeni su u izvorni kod.

Ako ste tek počeli koristiti Raspberry Pi, GPIO i elektroniku, toplo preporučujem sljedeće vodiče koji će vas provesti kroz sve što vam je potrebno za gornji izgled;

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

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

Korak 13: Transponiranje elektronike u tijelo

Transponiranje elektronike u tijelo
Transponiranje elektronike u tijelo
Transponiranje elektronike u tijelo
Transponiranje elektronike u tijelo
Transponiranje elektronike u tijelo
Transponiranje elektronike u tijelo

Nakon što sam dovršio izgled koristeći ploču, došlo je vrijeme da počnem razmišljati o tome kako ih montirati u tijelo pipboya. Odlučio sam da to želim učiniti tako da mogu demontirati i ukloniti sve elektroničke komponente u slučaju da u budućnosti trebam popraviti ili promijeniti bilo što. Kako bih to postigao, odlučio sam sve pod-dijelove učiniti spojenim pomoću dupont konektora.

Za gumbe koje sam lemio na nekim produžnim žicama i koristio žičane omote za izolaciju krajeva, to mi je omogućilo da ih sastavim i rastavim s tijela (npr. Za testiranje, zatim slikanje itd.). Rotacijski koder već je imao pinove koji su mogli prihvatiti dupont konektore, pa sam samo trebao napraviti neke žice odgovarajuće duljine.

LED -ima je trebalo malo više posla - za to sam odlučio upotrijebiti malo otpadne plastike koju sam imao (izrezati je da stane) kako bih napravio uklonjivu ploču na koju će se montirati LED diode. Zatim sam ih vruće zalijepio na mjesto i lemio otpornike i žice. To je učinilo jedinicu za uklanjanje koju sam mogao uklopiti i uklonilo te olakšalo slikanje i doradu.

Imajte na umu da je moje lemljenje užasno, pa sam ostao jednostavan i izbjegao sve previše detaljno/fino. Na konačnoj slici možete vidjeti da sam imao i vrlo male ploče (5x5). Koristio sam jednu od njih montiranu unutra kako bih osigurao ploču za povezivanje svega na/s GPIO -a. To je osobito bilo korisno za stvaranje zajedničke uzemljene tračnice koju bih mogao koristiti i izbjeći da se puno uzemljenih žica vijuga natrag do Pi.

Zatim sam izrezao razne rupe u spremnik kako bih žice provukao do Pi i spojio na GPIO. Ovaj dizajn mi je omogućio da sve do kraja uklonim ako je potrebno (nešto što sam učinio nekoliko puta dok sam dovršavao izgradnju).

Korak 14: Fino ugađanje Fit -a

Fino ugađanje Fit
Fino ugađanje Fit
Fino ugađanje Fit
Fino ugađanje Fit

U ovom trenutku naišao sam na neke "fit" probleme. Kao prvo, upotreba dupont konektora za ožičenje značila je da ih je bilo teško namjestiti na igle s postavljenim šeširom za prikaz jer nije postojao dovoljan razmak po visini. To sam riješio tako što sam kupio (ovo je jedna od rijetkih stvari koje sam zapravo kupio za ovaj projekt) mali GPIO pin produživač kako bih mogao postaviti šešir na zaslon i ostaviti prostor za pristup preostalim GPIO pinovima pomoću dupont konektora.

Također sam izrezao neke male komade podloge od pjene kako bih napravio neke bočne obloge unutar spremnika, što je pomoglo da se Pi + zaslon postavi na pravo mjesto i spriječi njegovo kretanje.

Korak 15: Ponovno postavite rotacijski davač

Ponovno postavite rotacijski davač
Ponovno postavite rotacijski davač

Rotacijski koderi često dolaze (kao i moji) s lijepim sjajnim, modernim gumbom u stilu "hi fi". Ovo nije bilo u skladu s izradom pa sam morao smisliti nešto drugo. U svojoj slučajnoj kutiji dijelova naišao sam na stari zupčanik iz bušilice koju sam davno polomio. Ovo je izgledalo dobro, ali nije odgovaralo rotacijskom koderu. Moje rješenje ovdje je bilo isprobavanje različitih zidnih utikača sve dok nisam pronašao jedan koji odgovara okretnom brojčaniku, a zatim ga izrezao u oblik kako bih ga mogao koristiti kao "unutarnju ogrlicu" za postavljanje svrdla na rotacijski davač kao prikladniju temu kontrolirati.

Korak 16: Unutarnja obloga

Unutarnja obloga
Unutarnja obloga
Unutarnja obloga
Unutarnja obloga

Još podnih pločica od pjene! Ovaj put sam ih iskoristio za izradu mekane podstave kako bi joj bilo udobnije (bez previše labave). Izrezivanjem rupe iz pjene također sam uspio apsorbirati dio "grudvice" koju čini spremnik za Pi. Sveukupno, to ga je učinilo mnogo nosivijim. Nije prikazano na ovim fotografijama, ali učinio sam ga malo većim od glavnog tijela tako da je vidljiv na krajevima, što sam kasnije naslikao i sve je to pomoglo da se gotovom predmetu doda malo kontrasta i interesa.

Korak 17: Dodavanje detalja

Dodavanje detalja
Dodavanje detalja
Dodavanje detalja
Dodavanje detalja

Vrijeme je da počnete dodavati neki ukras i učiniti ga zanimljivijim. Prije svega, dodao sam nekoliko traka od otpadaka plastike duž jednog lica kako bih dao vizualni interes. Zatim sam nekim terminalima dodao neke lažne žice i samo ih gurnuo u rupu koju sam izbušio u tijelu. Sve je to kasnije obojeno u različite boje.

Korak 18: Slikanje i završna izrada karoserije

Bojenje i završna izrada karoserije
Bojenje i završna izrada karoserije
Bojenje i završna izrada karoserije
Bojenje i završna izrada karoserije
Bojenje i završna izrada karoserije
Bojenje i završna izrada karoserije

Nisam se previše brinuo oko netaknute završne obrade - jer bi ona ionako trebala biti stara i dobro korištena (zapravo ću se možda vratiti i kad -tad još više izdržati). Ali ja sam želio da izgleda kao dosljedan i cjelovit objekt koji nije spojen zajedno od slučajnog otpada (iako je to upravo ono što je bilo). Prošao sam kroz brojne iteracije brušenja, punjenja (miliput je moj izbor punjenja za plastiku) i ponovio. Zatim nekoliko slojeva temeljnog premaza i boje kako bi se dodatno izgladili svi spojevi. Zatim više brušenja i punjenja, te više slikanja.

Kad sam pogledao i osjetio tijelo s kojim sam zadovoljan, počeo sam dodavati neke detalje. Koristio sam trljanje i poliranje rešetki na kontrolama kako bih im dao više osjećaja žičane mreže. Također sam tu i tamo dodao male detalje boje koristeći akril.

Ukopao sam se u svoju zbirku slučajnih naljepnica i dodao nekoliko kako bih dovršio učinak. Zatim sam oprao vremenske uvjete s mješovitim bojama kako bih dodao malo prljavštine i prljavštine u teško dostupna mjesta koja bi bilo teško očistiti. Ovo je možda trenutno previše suptilno, a kasnije ću se možda vratiti i dodati još neke.

Korak 19: Kodiranje

Kodiranje
Kodiranje

Dio mojih ambicija za ovaj projekt bio je natjerati ga da reagira poput pravog pipboya - a za mene je najpoznatiji dio te igre okretanje brojčanika za prebacivanje između različitih ekrana. Da bih to postigao, odlučio sam napisati pipboyevo korisničko sučelje koje će moći prikazati niz zaslona i omogućiti vam da se pomičete između njih. Htio sam učiniti sadržaj ekrana nečim što bih lako mogao promijeniti, a doista i moći dodavati/uklanjati zaslone.

Odlučio sam ovo napisati u Pythonu zbog izvrsne podrške za Raspberry Pi, GPIO itd. Python je prilično nisko na mojoj listi jezika koje poznajem, pa mi je ovo bila velika krivulja učenja, a veliki dio koda je kao rezultat toga neuredan. S vremenom ću ovo ažurirati jer nisam u potpunosti dovršio sve što sam htio učiniti ovdje - ali sada je dovoljno blizu da ga podijelim jer su svi glavni koncepti prisutni.

Moj dizajn UI koda je prilično jednostavan, postoji glavna Python skripta koja postavlja zaslon, konfigurira GPIO, učitava zaslone i ulazi u beskonačnu petlju ažuriranja, čekajući korisničke događaje i ažurirajući zaslon prema potrebi. Osim toga, postoje razne skripte za podršku koje pomažu u generiranju zaslona korisničkog sučelja prije vremena.

Glavne korištene biblioteke:

  • pygame: Koristim ovo kao motor za pokretanje korisničkog sučelja jer mi je omogućilo crtanje proizvoljne grafike, manipulaciju slikama, fontovima, prikaz na cijelom ekranu itd.
  • pyky040: Ovo omogućuje rukovanje okretnim brojčanikom i uštedjelo mi je puno vremena (veliko hvala Raphaelu Yanceyju što je ovo objavio).
  • RPi. GPIO: Za dobru GPIO vožnju ovdje sam se poigrao s nekoliko opcija, ali to mi je dalo pravu razinu fleksibilnosti koju sam želio, osobito sa stvarima poput korištenja rezervnog GPIO -a kao još 3,3 V za pogon rotacijskog davača itd.
  • šum: Za generiranje perlin šuma, koji mi omogućuje stvaranje slučajnog valnog oblika za radijski ekran koji izgleda prirodnije
  • red: Naišao sam na frustrirajuću grešku s vremenskim rasporedom događaja iz okretnog kodera i (vrlo) sporom frekvencijom osvježavanja LCD zaslona. Na kraju, način na koji sam to riješio bio je stavljanje ulaznih događaja u red čekanja iz rotacijskog kodera i njihovo odabiranje jedan po jedan dok se zaslon osvježavao.
  • os, sys, threading, time: sve se koristi za standardne python funkcije

Napomena o dizajnu rukovanja ekranom. Zasloni su definirani kao popis imena unutar koda. Svaki unos na popisu može imati ili-p.webp

Sadržaj tih datoteka generira se na drugom mjestu (ručno ili pomoću drugih skripti), čiji se izlaz sprema kao-p.webp

Postoje čudne iznimke u kojima je kodirano nekoliko stvari - poput valnog oblika za slučajni radijski ekran koji se izračunava u stvarnom vremenu i animira.

Ako vam analogija pomaže, zamislite dizajn sučelja kao iznimno grub i jednostavan web preglednik - svaki "zaslon" je poput zaista jednostavne web stranice koja se može sastojati samo od jednog-p.webp

Ovdje su veze do glavnih biblioteka koje sam ovdje koristio:

www.pygame.org/news

pypi.org/project/pyky040/

pypi.org/project/noise/

Korak 20: Zaslon sa statistikom

Ekran sa statistikom
Ekran sa statistikom

Nijedan pipboy ne bi bio potpun bez klasične statistike zaslona siluete pipboya. Za to je moj prijatelj stvorio statički-p.webp

Korak 21: Zaslon inventara

Zaslon inventara
Zaslon inventara

Nešto što je uvijek korisno kod Pi projekata je način prikazivanja osnovnih podataka poput IP adrese koju je imao DHCP itd. Odlučio sam preopteretiti zaslon inventara kao prikaz Pi "inventara" - koji CPU, memorija, IP adresa itd. Napisao sam malu Linux skriptu kako bih prikupio te podatke i samo ih preusmjerio u tekstualnu (.txt) datoteku s odgovarajućim imenom koju UI sustav tada preuzima i prikazuje. Na ovaj način, ako se ikada nađem na drugom mjestu, mogu pokrenuti skriptu i pokupiti novu.txt datoteku s ažuriranom IP adresom itd.

Korak 22: Zaslon karte

Zaslon karte
Zaslon karte

Ovaj je zaslon bio jedan od složenijih ekrana na kojem je potrebno raditi. Raspberry Pi 0 ne dolazi s GPS modulom, ali htio sam učiniti da Karta ima određenu valjanost tamo gdje je Pi bio. Moje rješenje za to je zasebna skripta koja povlači Pi IP adresu, koristi https://ipinfo.io za traženje približne lokacije. JSON odgovor se snima i tada pretvaram koordinate kako bih mogao povući ploču openstreetmap.org za približno mjesto.

Pločice se pojavljuju u više boja, ali želio sam da slika u zelenoj ljestvici odgovara izgledu i dojmu Pipboya, ali nisam mogao pronaći baš takvu, pa sam napisao pisač u zelenoj ljestvici u Pythonu kako bih preuredio boje pločice openstreetmap, a zatim novu sliku predmemorirajte u-p.webp

Tijekom gornjeg procesa generira se tekstualna datoteka s približnim mjestom i koordinatama, a pločica karte stvara se kao png. Korisničko sučelje pipboya povlači obje ove datoteke i prekriva sadržaj kako bi stvorio zaslon Karte koji radi (unutar točnosti razlučivosti IP adrese prema lokaciji).

Korak 23: Zaslon podataka

Zaslon s podacima
Zaslon s podacima

Ovo je samo probna kartica (generirana drugom python skriptom i ispisana u-p.webp

Korak 24: Radio ekran

Radio ekran
Radio ekran

Uz zaslon karte, ovo je drugi zaslon koji mi je doista napravio puno posla. Ovo je jedini zaslon na kojem sam se igrao s animacijama - i uglavnom radi kako je predviđeno, ali performanse su i dalje problem s učestalošću osvježavanja LCD zaslona. Struktura zaslona je tekstualna datoteka koja sadrži neke nasumično odabrane nazive radija (to su samo proizvoljni nizovi i ne rade ništa drugo osim predstavljanja popisa na ekranu),-p.webp

Ovo je jedini zaslon na kojem petlja pygame -a zaista radi u svakom ciklusu, mora izračunati novi valni oblik, izbrisati dio ekrana u ovom životu i ponovo ga iscrtati.

Korak 25: Završne misli

Image
Image
Završne misli
Završne misli

Ovo je vjerojatno najzahtjevnija konstrukcija koju sam napravio, s mnogo različitih koncepata i vještina, ali je ujedno i jedna od najugodnijih sa stvarnim stvarima koje kao rezultat toga funkcioniraju. Još sam u tijeku spremanja nekih svojih tehničkih bilješki, kao i github repo za kôd. Sve ću uskoro učiniti dostupnim, pa se uskoro vratite za više detalja i informacija kako budem imao vremena da ih dodam u zapis.

Voljeli biste vidjeti rezultate, a ako imate pitanja, slobodno me kontaktirajte, a ja ću nastojati dodati više informacija u svim koracima u kojima želite pomoći.

Korak 26: Kod otvoren na Githubu

Kod otvoren na Githubu
Kod otvoren na Githubu

Konačno sam stigao otvoriti kod na Githubu. Dostupno je na ovoj poveznici:

Preporučeni: