Satura rādītājs:

Pipboy būvēts no lūžņiem: 26 soļi (ar attēliem)
Pipboy būvēts no lūžņiem: 26 soļi (ar attēliem)

Video: Pipboy būvēts no lūžņiem: 26 soļi (ar attēliem)

Video: Pipboy būvēts no lūžņiem: 26 soļi (ar attēliem)
Video: Proxelle's Surge Powerbank Bluetooth Speaker - Black 2024, Jūlijs
Anonim
Image
Image
Pipbo sirds veidošana
Pipbo sirds veidošana

Šis ir mans strādājošais Pipboy, kas būvēts no nejaušas garāžas atkritumiem un manu elektronisko komponentu krājuma reida. Es atklāju, ka šī ir izaicinoša būve, un man bija nepieciešami vairāki mēneši, tāpēc es to neklasificētu kā pilnīgu iesācēju projektu. Nepieciešamās prasmes ietver plastmasas un koka darbus, elektroniku un kodēšanu. Korpuss ir izgatavots no dažādiem plastmasas gabaliem, kas sagriezti un metināti kopā. Kā mikrokontrolleru es izmantoju Raspberry Pi 0 ar displeja galveni, kas uzstādīta pie daļas GPIO tapām. Atlikušās tapas tiek izmantotas, lai vadītu gaismas diodes un savienotu pogas/vadības ierīces. Lai pabeigtu projektu, es uzrakstīju "Pipboy" stila lietotāja interfeisu ar dažiem demonstrācijas ekrāniem Python.

Mani projekta mērķi bija:

  • Vajadzēja strādāt - t.i., lai faktiski būtu displejs, kas darīja lietas
  • Es gribēju, lai tam būtu "ciparnīca", lai atlasītu dažādus ekrānus, jo tas man vienmēr izcēlās kā ikonas lietotāja interfeisa daļa Fallout
  • Visa būve bija jāpabeidz, izmantojot lietas, kas man jau bija garāžā vai birojā (tas nebija pilnībā sasniegts, bet es nonācu tuvu - 90% no tā tika atrasti priekšmeti vai lietas, kas man jau bija apkārt)
  • Vajadzēja valkāt

Viens no mērķiem, kas man nebija, bija padarīt to par precīzu viena spēles modeļa kopiju - es labprātāk veidoju lietas “stilā”, jo tas dod man iespēju pielāgot nejauši atrastos atkritumus, un ļaujiet man būt nedaudz radošākam. Visbeidzot, jā, es zinu, ka jūs varat tos iegādāties, bet arī par to nebija runa;)

Piegādes

Piegādes

  • Plaša caurule (piemēram, kanalizācijas caurules gabals)
  • Plastmasas lūžņi (gan korpusa veidošanai, gan dekoratīviem nolūkiem)
  • Neliels konteiners
  • Putu grīdas paklājs
  • Raspberry Pi
  • 3,5 collu displejs
  • Rotācijas kodētājs KY040
  • 3x gaismas diodes
  • 2x spiedpogas
  • Powerbank
  • Elektroinstalācija
  • Skrūves, līmes, krāsas, pildviela utt

Rīki

  • Dremmel
  • Daudzfunkciju instruments ar griezēju un slīpēšanas piederumiem
  • Urbis
  • Faili
  • Lodāmurs
  • Karstās līmes pistole
  • Skrūvgriezis (-i)
  • Ass nazis
  • Ieraudzīja

1. solis: Pipboy sirds veidošana

Pipbo sirds veidošana
Pipbo sirds veidošana

Pirmā lieta, kas man bija jādara, bija nodrošināt displeju un mikrokontrolleri tādā formā, ar kādu es varētu strādāt. Man gadījās, ka 3,5 collu displejs spārdās apkārt un sēž kā cepure uz aveņu PI GPIO tapām, tāpēc es nolēmu to izmantot. Es to savienoju pārī ar Raspberry Pi 0 un pārliecinājos, ka tas darbojas labi, ir daži soļi, lai panāktu, ka Linux atpazīst displeju, kuram jums jāiziet.

Kā redzat otrajā attēlā, es pievienoju nelielu kartona/putu platformu, ko pielīmēju pie korpusa, lai palīdzētu atbalstīt displeju. Es to darīju, jo zināju, ka daudz apstrādāšu šo daļu un negribēju salauzt tapas vai displeju atbalsta trūkuma dēļ. Galu galā tas tika aizstāts, bet būvniecības procesā tā bija laba papildu aizsardzība.

Šajā brīdī ir arī vērts atzīmēt, ka vēlāk būvēšanas laikā es saskāros ar veiktspējas problēmām ar šo iestatījumu - pārsvarā atsvaidzes intensitāti, izmantojot saskarni starp Pi un displeju, es to aplūkošu vēlāk būvē, bet, ja es to darot, es varētu apsvērt citu aparatūru šeit.

Šeit ir dažas noderīgas saites:

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…

Es ar to saistītajā github iekļaušu arī dažas piezīmes par to, ko es patiesībā esmu darījis, lai tas darbotos (lai gan, lasot šo tēmu, ir daudz atšķirību, kā tas darbojas konkrētos gadījumos/draiveros, tāpēc jūsu diapazons var atšķirties).

2. solis: kartona prototips

Kartona prototips
Kartona prototips
Kartona prototips
Kartona prototips
Kartona prototips
Kartona prototips

Es atradu kādu vecu notekcauruli/cauruli, ko varētu izmantot korpusam, bet man vajadzēja izdomāt faktiskā ekrāna laukuma un vadības paneļa dizainu. Šim nolūkam es vienkārši izveidoju kartona maketus un izmantoju maskēšanas lenti, lai tos piestiprinātu pie caurules. Pirmais bija vienkāršs "lodziņš", bet tas šķita pārāk vienkāršs, tāpēc es to pārveidoju, lai padarītu ekrāna zonu interesantāku, un pievienoju atsevišķu vadības paneļa zonu. Tas vairāk vai mazāk kļuva par galīgo dizainu (kā redzēsit, bija daži pielāgojumi, bet tas bija tuvu).

3. darbība: no prototipa līdz veidnei

No prototipa līdz veidnei
No prototipa līdz veidnei
No prototipa līdz veidnei
No prototipa līdz veidnei
No prototipa līdz veidnei
No prototipa līdz veidnei

Tagad man bija prototips, ar kuru es biju apmierināts, es varēju saplacināt kartonu un pārvērst to par veidni, kuru pēc tam pārnesu uz daļu no vecā datora korpusa, kurā biju spārdījies. Jebkura līdzīga izturīga plastmasa derētu, es izmantoju tikai nevēlamos materiālus. Pēc atzīmēšanas es varēju izgriezt gabalus, lai es varētu sākt montēt galveno korpusu. Šeit ir noderīgs padoms, lai atvieglotu plastmasas iezīmēšanu un pēc tam griešanu, es ar maskēšanas lenti pārklāju tās vietas, kuras man vajadzēs izgriezt, un tas man ļāva vieglāk uzzīmēt veidni uz plastmasas, un kaut kas palīdz apturēt griešanas diska slīdēšanu, veicot pirmos griezumus.

4. darbība: pievienojiet korpusu ekrānam un Pi

Pievienojiet korpusu ekrānam un Pi
Pievienojiet korpusu ekrānam un Pi
Pievienojiet korpusu ekrānam un Pi
Pievienojiet korpusu ekrānam un Pi

Es gribēju, lai ekrāna laukuma stūri būtu izliekti, un man vajadzēja kaut ko, lai faktiski turētu Pi un displeju - mans risinājums bija izmantot nelielu plastmasas trauku, kas man bija. Es izgriezu caurumu no ķermeņa augšdaļas un caur to līmēju trauku. Pēc tam visas puses salīmēju kopā. Šeit es izmantoju superlīmi ar bagātīgu cepamo sodu, lai palīdzētu stiprināt metinājumus. Vēlāk es visu piepildīju un vīlēju/slīpēju, lai to visu sakārtotu un radītu "veidotu" sajūtu.

5. darbība. Atkārtojiet to ar vadības paneli

Atkārtojiet to ar vadības paneli
Atkārtojiet to ar vadības paneli
Atkārtojiet to ar vadības paneli
Atkārtojiet to ar vadības paneli
Atkārtojiet to ar vadības paneli
Atkārtojiet to ar vadības paneli

Tālāk es darīju tieši to pašu veidni, transponējot, sagriežot un līmējot, lai izveidotu vadības paneļa korpusu.

6. darbība: izgrieziet cauruli

Izgrieziet cauruli
Izgrieziet cauruli

Kā redzat, konteiners, kuru es plānoju izmantot galveno elektronisko komponentu izvietošanai, tagad lepni atrodas melnā plastmasas korpusā, tas nozīmē, ka man caurulē ir jāizveido atvere, lai tajā varētu ievietot. Es atkal izmantoju maskēšanas lenti, lai ierindotos vietā, kur es gribēju griezt, un izgriezu caurules kvadrātu, lai detaļas būtu piemērotas.

7. solis: rāmis

Rāmis
Rāmis
Rāmis
Rāmis

Viens izaicinājums, ko nejauši uzspiedu sev, bija mēģinājums izdomāt rāmi, kas aizpildītu laukumu ap displeju līdz konteinera malām. Diemžēl displeja izgatavošanas veidam nav arī nekā noderīga (piemēram, caurumi vai kaut kas cits), kas palīdzētu to uzstādīt, tāpēc arī rāmim bija jāuztur displejs vietā. Mans pirmais mēģinājums (redzams šeit) bija plastmasas un putu maisījums. Es galu galā to atkārtoju vairākas reizes, un tā kļuva par vienu no sarežģītākajām būves daļām. To pasliktina gan pašas rāmja, gan displeja mazās pielaides un smalkais raksturs.

8. darbība: akumulatora pārbaude

Akumulatora pārbaude
Akumulatora pārbaude
Akumulatora pārbaude
Akumulatora pārbaude
Akumulatora pārbaude
Akumulatora pārbaude

Šajā brīdī es pievērsos tam, kā šo darbību veikt neatkarīgi no tīkla USB. Es pārbaudīju dažādas baterijas un atklāju, ka Raspberry Pi + displejs faktiski neizmantoja tik daudz enerģijas, un tas bija pilnīgi laimīgs, darbojoties pat ar vienu no maniem mazākajiem akumulatoriem (bezmaksas izstāde no izstādes). Tas bija patiešām paveicies, jo iepakojums lieliski iederējās spraugā iekšpusē (fotoattēli vēlāk). Tagad mēs varam īslaicīgi salīmēt galvenās virsbūves sastāvdaļas un iegūt pirmo testa palaišanu manā rokā!

9. darbība: piemērotības pārbaude

Testēšana Fit
Testēšana Fit
Testēšana Fit
Testēšana Fit
Testēšana Fit
Testēšana Fit

Šeit jūs varat redzēt, kur es esmu pārveidojis serdes cauruli, lai ļautu piekļūt detaļu apakšpusei. Jūs varat arī redzēt, kā man paveicās ar akumulatoru, kas lieliski iederas dobumā vienā Pi konteinera pusē. Beidzot uzsāka saišu tīrīšanu, uzpildīšanu, slīpēšanu un uztaisīja gruntskrāsas slāni, lai sajustu gatavo izskatu (es zināju, ka šajā posmā es slīpēšu vēl daudzas reizes un gandrīz viss gruntējums aizies), bet es gribēju sajust, kā tas izskatīsies).

10. darbība: pievienojiet vadīklas un detaļas

Pievienojiet vadīklas un detaļas
Pievienojiet vadīklas un detaļas
Pievienojiet vadīklas un detaļas
Pievienojiet vadīklas un detaļas
Pievienojiet vadīklas un detaļas
Pievienojiet vadīklas un detaļas

Es gribēju, lai mērītāju veido virkne sarkanu/dzeltenu/zaļu gaismas diodes, kā arī rotējošs ciparnīca un vismaz 2 spiedpogas. Tie visi tika uzstādīti vadības paneļa sadaļā - vienkārši visu vajadzīgo caurumu urbšana. Es arī sāku pievienot nelielus gabaliņus plastmasas detaļu lūžņus (pamatā komplekta sabrukšanu), lai korpusam un vadības panelim pievienotu detaļas un lielāku interesi.

11. solis: rāmja atjaunošana Nr. 3

Rāmja pārbūve Nr. 3
Rāmja pārbūve Nr. 3
Rāmja pārbūve Nr. 3
Rāmja pārbūve Nr. 3
Rāmja pārbūve Nr. 3
Rāmja pārbūve Nr. 3

Kā jau minēju iepriekš, es cīnījos ar šīs konstrukcijas ietvaru un vairākas reizes to pārbūvēju. Šī ir trešā iterācija, ar kuru es iestrēdzu. Mana pieeja šeit ir izmantot kokšķiedru plātni un sagriezt 2 dažādas formas, vienu domātāju par otru un pēc tam pielīmēt (un saspiest), lai izveidotu vidējo attēlu. Šīs formas ļāva kvadrātveida displejam sēdēt tā iekšpusē, un tad tas turēja displeju vietā konteinera iekšpusē (kā 3. attēlā). Tas man deva pietiekami daudz materiāla, lai kā stiprinājumus izmantotu 4 ļoti mazas skrūves - kuras es izmantoju, lai to stingri nostiprinātu korpusa iekšpusē, un tas savukārt saglabātu ekrānu stabilu un drošu. Retrospektīvi es atrastu displeju, kas aprīkots ar dažām pienācīgām montāžas iespējām (vai izmantot 3D printeri - kas man tobrīd nebija).

12. solis: Elektronikas prototipēšana

Elektronikas prototipēšana
Elektronikas prototipēšana
Elektronikas prototipēšana
Elektronikas prototipēšana

Es izmantoju maizes dēli, lai izkārtotu savas vienkāršās shēmas šādi, un, tā kā es bieži veicu šo projekta daļu citā telpā, nevis pamata korpusa konstrukcijā, es to arī savienoju pārī ar citu Raspberry PI. Šeit es izmantoju 3. modeli, kas man deva nedaudz vairāk spēka, lai faktiski tieši izveidotu savienojumu ar to un palaistu IDE. Tas man tikai nedaudz atviegloja ātru koda prototipēšanu. Ir daudz citu veidu, kā attālināti izveidot savienojumu/kodu/atkļūdošanu, tas ir tikai tas, ko es gribēju darīt šeit.

Dizains šeit ir diezgan taisns, mums ir;

  1. Rotējošais kodētājs - tas izmanto zemējumu un GPIO tapas, lai tiktu galā ar klikšķa virzienu un spiedpogu.
  2. Pāris spiedpogu, tie vienkārši izmanto vienu GPIO tapu un kopīgu pamatu
  3. 3 gaismas diodes, katra ar iebūvētu pretestību, lai apturētu to iznišanu, un visi iet uz kopīgu pamatu, bet katrs ar atsevišķu GPIO tapu, lai katru varētu adresēt atsevišķi.

Tas man iedeva 3 gaismas diodes manam mērierīcei, rotējošu kodētāju, lai pagrieztos caur pipboy ekrāniem, un 3 spiedpogas, lai vadītu darbības (viena uz rotējošā kodētāja un 2 atsevišķi vadu). Tas bija viss, ko es varēju ievietot, un, displejam aizņemot ķekarus, diezgan daudz tiek patērēts tas, kas jums ir standarta Pi GPIO izkārtojumā. Tomēr maniem mērķiem tas bija labi.

Otrajā attēlā gandrīz redzams galīgais iekšējais izkārtojums, ar kuru es devos. Es šeit kādu laiku pavadīju, pārbaudot veidus, kā vadīt komponentus un pārbaudīt, vai tas viss izdevās, pirms es to transponēju būvē. Viss kods ir github.

Piezīme par rotējošiem kodētājiem. Es pavadīju daudz laika, rakstot savu Rotācijas kodētāja stāvokļa mašīnu, lai izsekotu GPIO augstās/zemās izmaiņas un kartētu tās rotācijas pozīcijās. Man šeit bija dažādi panākumi, es to darīju "lielākajā daļā" gadījumu, taču vienmēr ir malas gadījumi un (de) atlēcieni utt. Tālu, daudz vieglāk ir izmantot gatavu bibliotēku, un šeit ir lieliska bibliotēka, ko var instalēt Python. Galu galā es to izmantoju, jo tas ļāva man koncentrēties uz ēku jautro daļu, nevis pavadīt vecumus, atkļūdojot problēmas. Visa informācija par to ir iekļauta avota kodā.

Ja esat jauns Raspberry Pi, GPIO un elektronikas lietotājs, es ļoti iesaku šādas apmācības, kas sniedz jums visu nepieciešamo, lai veiktu iepriekš minēto izkārtojumu;

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

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

13. darbība: elektronikas transponēšana ķermenī

Elektronikas transponēšana ķermenī
Elektronikas transponēšana ķermenī
Elektronikas transponēšana ķermenī
Elektronikas transponēšana ķermenī
Elektronikas transponēšana ķermenī
Elektronikas transponēšana ķermenī

Kad es pabeidzu izkārtojumu, izmantojot maizes dēli, bija pienācis laiks sākt domāt par to, kā tos ievietot pipboy korpusā. Nolēmu, ka vēlos to izgatavot tā, lai varētu izjaukt un noņemt visas elektroniskās detaļas, ja nākotnē man būtu nepieciešams kaut ko labot vai mainīt. Lai to paveiktu, es nolēmu padarīt visas apakšdaļas savienojamas, izmantojot dupont savienotājus.

Pogām, kuras es lodēju uz dažiem pagarinājuma vadiem un izmantoju stieples aptinumu, lai izolētu galus, tas ļāva man salikt un izjaukt tos no korpusa (piemēram, testēšanai, pēc tam krāsošanai utt.). Rotācijas kodētājam jau bija tapas, kas varēja pieņemt dupont savienotājus, tāpēc man vienkārši vajadzēja izveidot dažus vadus pareizā garumā.

Gaismas diodēm bija vajadzīgs nedaudz vairāk darba - šim nolūkam es nolēmu izmantot mazliet plastmasas lūžņus, kas man bija (sagriezti atbilstoši), lai izveidotu noņemamu paneli, kurā uzstādīt gaismas diodes. Tad es tos karsti pielīmēju vietā un pielodēju pretestības un vadus. Tas padarīja noņemšanas bloku, ko es varēju uzstādīt un noņemt, un atviegloja krāsošanu un apdari.

Ņemiet vērā, ka mana lodēšana ir briesmīga, tāpēc es saglabāju šo vienkāršo un izvairījos no pārāk detalizēta/smalka. Galīgajā attēlā jūs redzat, ka man bija arī ļoti niecīgi plati (5x5), es izmantoju vienu no tiem, kas uzstādīts iekšpusē, lai nodrošinātu paneli, lai visu savienotu ar GPIO/no tā. Jo īpaši tas bija noderīgi, lai izveidotu kopēju zemes sliedi, kuru es varētu izmantot, un izvairītos no tā, ka daudzi zemes vadi atgriežas pie Pi.

Pēc tam es izgriezu konteinerā dažādus caurumus, lai vadus vadītu caur Pi un izveidotu savienojumu ar GPIO. Šis dizains ļāva man, ja nepieciešams, visu noņemt (kaut ko es darīju vairākas reizes, kamēr es pabeidzu būvniecību).

14. darbība. Precīza pielāgošana

Fit pielāgošana
Fit pielāgošana
Fit pielāgošana
Fit pielāgošana

Šajā brīdī es saskāros ar dažām "piemērotības" problēmām. Pirmkārt, dupont savienotāju izmantošana elektroinstalācijai nozīmēja, ka bija grūti panākt, lai tie tiktu piestiprināti pie tapām ar displeja cepuri, jo nebija pietiekama augstuma. Es to atrisināju, iegādājoties (šī ir viena no nedaudzajām lietām, ko es faktiski iegādājos šim projektam) nelielu GPIO tapu pagarinātāju, lai displeja cepure būtu augstāk un atstātu vietu, lai piekļūtu atlikušajām GPIO tapām, izmantojot dupont savienotājus.

Es arī sagriezu dažus mazus putu grīdas paklāja gabaliņus, lai konteinera iekšpusē būtu daži polsterējumi, tas palīdzēja novietot Pi + displeju pareizajā vietā un apturēt tā pārvietošanos.

15. solis: atkārtoti pagrieziet rotējošo kodētāju

Atkārtoti rotējošais kodētājs
Atkārtoti rotējošais kodētājs

Rotējošie kodētāji bieži nāk (tāpat kā manējie) ar jauku spīdīgu modernu "hi fi" stila pogu. Būvēšanai tas bija pilnīgi neraksturīgi, tāpēc man bija jāizdomā kaut kas cits. Savā nejaušajā detaļu kastē es saskāros ar vecu zobratu no urbja, kuru es sen salauzu. Tas izskatījās labi, bet nederēja rotējošajam kodētājam. Mans risinājums šeit bija izmēģināt dažādus sienas kontaktdakšas, līdz es atradu rotējošo ciparnīcu, un pēc tam to sagriezt pēc formas, lai es varētu to izmantot kā “iekšējo apkakli”, lai urbja zobratu novietotu uz rotējošā kodētāja kā piemērotāku tēmai. kontrole.

16. solis: iekšējā odere

Iekšējā odere
Iekšējā odere
Iekšējā odere
Iekšējā odere

Vairāk putu grīdas flīžu! Šoreiz es tos izmantoju, lai izveidotu mīkstu oderi, lai tā būtu ērtāk (bez pārāk vaļīgas). Izgriežot caurumu no putām, es arī varēju absorbēt dažus "gabaliņus", ko veido konteiners Pi. Kopumā tas padarīja to daudz valkājamāku. Šajās fotogrāfijās nav parādīts, bet es padarīju to nedaudz lielāku par galveno korpusu, lai tas būtu redzams galos, ko es vēlāk krāsoju, un tas viss palīdzēja gatavam priekšmetam pievienot mazliet kontrastu un interesi.

17. darbība: detaļas pievienošana

Detaļas pievienošana
Detaļas pievienošana
Detaļas pievienošana
Detaļas pievienošana

Laiks sākt pievienot kādu rotājumu un padarīt to interesantāku. Vispirms es pievienoju dažas plastmasas sloksnes gar vienu seju, lai sniegtu tai mazliet vizuālas intereses. Tad es pievienoju dažus viltus vadus dažiem spailēm un vienkārši iebāzu tos caurumā, kuru es urbju ķermenī. Tas viss vēlāk tika krāsots dažādās krāsās.

18. darbība. Ķermeņa veidošana un apdare

Ķermeņa uzbūve un krāsošana
Ķermeņa uzbūve un krāsošana
Ķermeņa uzbūve un krāsošana
Ķermeņa uzbūve un krāsošana
Ķermeņa uzbūve un krāsošana
Ķermeņa uzbūve un krāsošana

Es nebiju pārāk noraizējies par senatnīgu apdari - kā jau it kā vajadzētu būt vecam un labi lietotam (patiesībā es varbūt atgriezīšos un kādā brīdī darīšu vēl vairāk laika apstākļu). Bet es gribēju, lai tas izskatās kā konsekvents un pilnīgs objekts, kas netika savākts kopā no nejaušiem atkritumiem (lai gan tas bija tieši tas). Es izgāju daudzus slīpēšanas, pildīšanas atkārtojumus (milliput ir mana plastmasas pildviela) un atkārtoju. Pēc tam vairāki gruntējuma un krāsas slāņi, lai vēl vairāk palīdzētu izlīdzināt visus savienojumus. Tad vairāk slīpēšanas un vairāk pildīšanas, un vairāk krāsošanas.

Tiklīdz es biju apmierināts ar savu ķermeni, es sāku pievienot dažas detaļas. Es izmantoju berzi un pulēšanu uz režģiem uz vadības ierīcēm, lai tiem būtu vairāk stiepļu tīkla sajūtas. Es arī šeit un tur pievienoju sīkas krāsas detaļas, izmantojot akrilu.

Es iedziļinājos savā izlases uzlīmju kolekcijā un pievienoju dažas, lai pabeigtu efektu. Tad es veica mazgāšanu ar laika apstākļiem ar dažām jauktām krāsām, lai pievienotu netīrumus un netīrumus grūti sasniedzamās vietās, kuras būtu grūti notīrīt. Šobrīd tas varbūt ir pārāk smalks, un es, iespējams, atgriezīšos un pievienošu vēl dažus vēlāk.

19. darbība: kodēšana

Kodēšana
Kodēšana

Daļa no maniem mērķiem attiecībā uz šo projektu bija panākt, lai tas reaģētu kā īsts mīļotais puisis - un man šī spēles vissvarīgākā daļa ir pagriezt ciparnīcu, lai pārslēgtos starp dažādiem ekrāniem. Lai to panāktu, es nolēmu uzrakstīt pipboy lietotāja interfeisu, kas spētu parādīt ekrānu sēriju un ļautu ritināt starp tiem. Es gribēju padarīt ekrānu saturu kaut ko tādu, ko es varētu viegli mainīt, un patiešām varētu pievienot/noņemt ekrānus.

Es izvēlos to rakstīt Python, jo ir lielisks atbalsts Raspberry Pi, GPIO uc rezultātā netīrs. Laika gaitā es to atjaunināšu, jo neesmu pilnībā pabeidzis visu, ko šeit vēlējos darīt, taču tas ir pietiekami tuvu, lai dalītos tagad, jo tur ir visi galvenie jēdzieni.

Mans UI koda dizains ir samērā vienkāršs, ir galvenais Python skripts, kas izveido displeju, konfigurē GPIO, ielādē ekrānus un ievada bezgalīgu atjaunināšanas cilpu, gaidot lietotāja notikumus un pēc vajadzības atjauninot displeju. Turklāt ir dažādi atbalsta skripti, kas palīdz izveidot lietotāja saskarnes ekrānus pirms laika.

Galvenās izmantotās bibliotēkas:

  • pygame: Es to izmantoju kā dzinēju, lai palaistu lietotāja saskarni, jo tas ļāva uzzīmēt patvaļīgu grafiku, manipulēt ar attēliem, fontiem, pāriet uz pilnekrāna režīmu utt.
  • pyky040: Tas nodrošina rotējošā diska apstrādi un ietaupīja man daudz laika (liels paldies Raphael Yancey par šī atbrīvošanu.
  • RPi. GPIO: Labai GPIO braukšanai es šeit rotaļājos ar dažām iespējām, taču tas man deva vajadzīgo elastības līmeni, jo es vēlējos, jo īpaši, piemēram, izmantojot rezerves GPIO kā citu 3.3v, lai vadītu rotējošo kodētāju utt.
  • troksnis: lai radītu perlin troksni, ļaujiet man izveidot nejaušu viļņu formu radio ekrānam, kas izskatās dabiskāk
  • rinda: es saskāros ar nomāktu kļūdu, pagriežot notikumus no rotējošā kodētāja un (ļoti) lēno LCD displeja atsvaidzes intensitāti. Visbeidzot, kā es to atrisināju, bija ievietot ienākošos notikumus rindā no rotējošā kodētāja un paņemt tos pa vienam, kad ekrāns tika atsvaidzināts.
  • os, sys, threading, time: viss tiek izmantots standarta python funkcijām

Piezīme par ekrāna apstrādes dizainu. Ekrāni tiek definēti kā koda nosaukumu saraksts. Katrs ieraksts sarakstā var būt saistīts ar-p.webp

Šo failu saturs tiek ģenerēts citur (ar roku vai ar citiem skriptiem), kuru izvade tiek saglabāta kā-p.webp

Ir nepāra izņēmumi, kad tiek kodētas dažas lietas, piemēram, nejaušā radio ekrāna viļņu forma, kas tiek aprēķināta reālā laikā un animēta.

Ja kāda analoģija palīdz, domājiet par lietotāja interfeisa dizainu kā ārkārtīgi rupju un vienkāršu tīmekļa pārlūkprogrammu - katrs ekrāns ir kā patiešām vienkārša tīmekļa lapa, kas var sastāvēt tikai no viena png, viena txt faila vai abu kombinācijas. To saturs ir neatkarīgs, un lietotāja saskarne to vienkārši zīmē tāpat kā pārlūkprogramma zīmētu tīmekļa lapu.

Šeit ir saites uz galvenajām bibliotēkām, kuras es izmantoju šeit:

www.pygame.org/news

pypi.org/project/pyky040/

pypi.org/project/noise/

20. solis: statistikas ekrāns

Statistikas ekrāns
Statistikas ekrāns

Neviens pipboy nebūtu pilnīgs bez klasiskā pipboy silueta statistikas ekrāna. Šim nolūkam mans draugs izveidoja statisku PNG, kuru es vienkārši parādīju kā vietas turētāju. Kādā nākotnē es varētu atgriezties un padarīt to dinamiskāku ar nejaušu bojājumu attēlojumu vai tamlīdzīgi, bet pagaidām tas ir statisks ekrāns.

21. darbība. Inventāra ekrāns

Inventāra ekrāns
Inventāra ekrāns

Kaut kas Pi projektos vienmēr ir noderīgs, ir veids, kā parādīt pamatinformāciju, piemēram, IP adresi, tās DHCP, utt. Es nolēmu pārslogot inventāra ekrānu kā Pi "inventāra" displeju - kāds CPU, atmiņa, IP adrese utt. Es uzrakstīju nelielu Linux skriptu, lai apkopotu šo informāciju un vienkārši novirzītu to uz attiecīgi nosauktu teksta (.txt) failu, ko UI sistēma uztver un parāda. Šādā veidā, ja es kādreiz atrodos citā vietā, es varu aktivizēt skriptu un paņemt svaigu.txt failu ar atjauninātu IP adresi utt.

22. darbība: kartes ekrāns

Kartes ekrāns
Kartes ekrāns

Šis ekrāns bija viens no sarežģītākajiem ekrāniem, ar kuriem strādāt. Raspberry Pi 0 nav aprīkots ar GPS moduli, bet es vēlējos panākt, lai karte būtu derīga vietā, kur atradās Pi. Mans risinājums tam ir atsevišķs skripts, kas izvelk Pi IP adresi, izmanto https://ipinfo.io, lai meklētu aptuvenu atrašanās vietu. JSON atbilde tiek uztverta, un pēc tam es pārveidoju koordinātas, lai es varētu nojaukt openstreetmap.org flīzi aptuveni atrašanās vietai.

Flīzes ir dažādās krāsās, bet es gribēju, lai zaļās krāsas attēls atbilstu Pipboy izskatam un noskaņai, un es nevarēju atrast tieši tādu, tāpēc Python uzrakstīju zaļas skalas filtru, lai pārveidotu krāsas no openstreetmap flīzes un pēc tam saglabājiet jauno attēlu kešatmiņā-p.webp

Iepriekš minētā procesa laikā tiek ģenerēts teksta fails ar aptuveno atrašanās vietu un koordinātām, un kartes flīze tiek izveidota kā png. Pipboy UI izvelk abus šos failus un pārklāj saturu, lai izveidotu kartes ekrānu, kas darbojas (ar IP adreses izšķirtspējas precizitāti noteiktā vietā).

23. darbība: datu ekrāns

Datu ekrāns
Datu ekrāns

Šī ir tikai testa kartīte (ko ģenerē cits python skripts un izvada-p.webp

24. darbība: radio ekrāns

Radio ekrāns
Radio ekrāns

Kopā ar kartes ekrānu šis ir otrs ekrāns, kas man patiešām sagādāja daudz darba. Šis ir vienīgais ekrāns, kurā spēlēju animāciju - un tas lielākoties darbojas kā paredzēts, taču veiktspēja joprojām ir problēma ar LCD ekrāna atsvaidzes intensitāti. Ekrāna struktūra ir teksta fails, kurā ir daži nejauši izvēlēti radio nosaukumi (tās ir tikai patvaļīgas virknes un nedara neko citu, kā vien ekrānā parāda sarakstu),-p.webp

Šis ir vienīgais ekrāns, kurā pigame cilpa veic reālu darbu kā katru ciklu, tam ir jāaprēķina jaunā viļņa forma, jāizdzēš ekrāna daļa, kas tajā dzīvo un pārzīmē.

25. solis: pēdējās domas

Image
Image
Pēdējās domas
Pēdējās domas

Šī, iespējams, ir vissarežģītākā būve, ko esmu paveicis, ar daudziem dažādiem jēdzieniem un prasmēm, taču tā ir arī viena no patīkamākajām ar reālām lietām, kas tā rezultātā darbojas. Es joprojām turpinu sakārtot dažas savas tehniskākās piezīmes, kā arī github repo kodu. Tas viss drīzumā būs pieejams, tāpēc drīzumā atgriezieties, lai iegūtu sīkāku informāciju un informāciju, kad man būs laiks tos pievienot pierakstam.

Ja jūs sākat darīt kaut ko līdzīgu, es labprāt redzētu rezultātus, un, ja jums ir kādi jautājumi, lūdzu, nekautrējieties sazināties, un es centīšos pievienot vairāk informācijas visos soļos, kur vēlaties palīdzēt.

26. darbība. Atveriet kodu vietnē Github

Kods ir atvērts vietnē Github
Kods ir atvērts vietnē Github

Beidzot es sāku atvērt kodu vietnē Github. Tas ir pieejams šajā saitē:

Ieteicams: