Mündəricat:
- Təchizat
- Addım 1: Pipboyun Qəlbini Qurmaq
- Addım 2: Karton Prototip
- Addım 3: Prototipdən Şablona
- Addım 4: Screen & Pi üçün Case əlavə edin
- Addım 5: İdarəetmə Paneli üçün təkrarlayın
- Addım 6: Borunu kəsin
- Addım 7: Çərçivə
- Addım 8: Batareya Testi
- Addım 9: Uyğunluğu yoxlayın
- Addım 10: Nəzarət və Detal əlavə edin
- Addım 11: 3 nömrəli Bezel yenidən qurun
- Addım 12: Elektronikanın prototipləşdirilməsi
- Addım 13: Elektronikanı bədənə köçürmək
- Addım 14: Fitin İncə Ayarlanması
- Addım 15: Rotary Encoder -i yuxarı qaldırın
- Addım 16: Daxili astar
- Addım 17: Detal əlavə edin
- Addım 18: Rəsm və Bitirmə Bədən Quruluşu
- Addım 19: Kodlaşdırma
- Addım 20: Statistikalar Ekranı
- Addım 21: Envanter Ekranı
- Addım 22: Xəritə Ekranı
- Addım 23: Məlumat Ekranı
- Addım 24: Radio Ekranı
- Addım 25: Son Düşüncələr
- Addım 26: Github -da Kod Açın
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-23 12:54
Bu, qarajdakı təsadüfi zibillərdən və elektron komponentlərimin bir basqınından hazırlanan işçi Pipboyumdur. Bu çətin bir quruluş gördüm və bir neçə aylıq işimi aldı, buna görə də bunu yeni başlayanlar üçün tam bir layihə olaraq təsnif etməzdim. Lazım olan bacarıqlara plastik və ağac işi, elektronika və kodlaşdırma daxildir. Korpus kəsilmiş və qaynaqlanmış müxtəlif plastik parçalardan tikilmişdir. GPIO sancaqlarının bir hissəsinə quraşdırılmış bir ekran başlığı ilə mikro nəzarətçi olaraq Raspberry Pi 0 istifadə etdim. Qalan sancaqlar LEDləri idarə etmək və düymələri/idarəetmələri birləşdirmək üçün istifadə olunur. Layihəni tamamlamaq üçün Pythonda bəzi demo ekranları olan "Pipboy" üslublu bir istifadəçi interfeysi yazdım.
Layihə üçün məqsədlərim bunlar idi:
- İşləmək lazım idi - yəni bir şeylər edən bir ekrana sahib olmaq lazımdır
- İstəyirəm ki, Fallout -da UI -nin ikonik bir hissəsi olaraq mənim üçün həmişə fərqlənən fərqli ekranları seçmək üçün bir "dial" olsun.
- Bütün tikinti, artıq qarajda və ya ofisimdə olan əşyalarla tamamlanmalı idi (buna tam nail ola bilmədim, amma yaxınlaşdım - bunun 90% -dən çoxu artıq qoyduğum əşyalar və ya əşyalar idi)
- Geyinilə bilən olması lazımdır
Əldə etmədiyim bir məqsəd, onu oyun içi modellərdən birinin dəqiq bir nüsxəsinə çevirmək idi - tapdığım təsadüfi çöpləri uyğunlaşdırmaq üçün mənə imkan verdiyi üçün bir şeyin "üslubunda" tikilməsini üstün tuturam. bir az daha yaradıcı olmağa imkan verir. Nəhayət, bəli, bunları ala biləcəyinizi bilirəm, amma məsələ də bu deyildi;)
Təchizat
Təchizat
- Geniş delikli boru (drenaj borusu parçası kimi)
- Hurda plastiklər (həm gövdə yaratmaq, həm də dekorativ məqsədlər üçün)
- Kiçik konteyner
- Döşəmə köpüyü
- Moruq Pi
- 3.5 "ekran
- KY040 Rotary Encoder
- 3x LED
- 2x düymələr
- Powerbank
- Kablolama
- Vintlər, yapışqanlar, boyalar, doldurucu və s
Alətlər
- Dremmel
- Kesici və zımpara əlavələri olan çox alət
- Qazma
- Fayllar
- Lehimleme dəmir
- İsti yapışqan silahı
- Tornavida (lar)
- İti bıçaq
- Gördü
Addım 1: Pipboyun Qəlbini Qurmaq
Etməyim lazım olan ilk şey, işləyə biləcəyim bir forma faktorunda bir ekran və mikro nəzarətçi əldə edə biləcəyimi təmin etmək idi. Bir Raspberry PI -nin GPIO sancaqlarına HAT olaraq oturan 3,5 düymlük bir ekrana sahib oldum, buna görə istifadə etməyə qərar verdim. Raspberry Pi 0 ilə qoşdum və yaxşı işlədiyinə əmin oldum. Linux -un keçməli olduğunuz ekranı tanımasını təmin etmək üçün bir neçə addım.
İkinci şəkildə gördüyünüz kimi ekranı dəstəkləmək üçün qutuya yapışdırdığım kiçik bir karton/köpük platforması əlavə etdim. Bu hissəni çox idarə edəcəyimi bildiyim üçün etdim və dəstəyin olmaması səbəbindən sancaqlar və ya ekranı sındırmaq istəmədim. Nəhayət bu dəyişdirildi, ancaq qurma prosesi zamanı yaxşı bir əlavə qorunma oldu.
Bu nöqtədə qeyd etmək lazımdır ki, sonradan quruluşda bu qurğu ilə performans problemləri ilə üzləşdim - əsasən Pi ilə ekran arasındakı interfeys üzərində yeniləmə sürəti, buna daha sonra quruluşda girəcəyəm, amma əgər bunu bir daha etdi, burada fərqli donanımları düşünə bilərəm.
Bunun üçün bəzi faydalı bağlantılar:
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…
Bununla əlaqəli github -a bu işi gerçəkləşdirmək üçün etdiyim işlərə dair bəzi qeydlər də daxil edəcəyəm (mövzunu oxuduğumdan bunun xüsusi nümunələr/sürücülər üçün necə işlədiyində bir çox dəyişkənlik olduğu üçün milliniz fərqli ola bilər.).
Addım 2: Karton Prototip
Bədən üçün istifadə edə biləcəyim bir neçə köhnə oluk/boru tapdım, amma əsl ekran sahəsi və idarəetmə paneli üçün bir dizayn hazırlamalı oldum. Bunun üçün kartondan hazırlanan şəkillər düzəltdim və boruya yapışdırmaq üçün maskalanan lentdən istifadə etdim. Birincisi sadə bir "qutu" idi, amma çox sadə görünürdü, buna görə ekran sahəsini daha maraqlı etmək üçün dəyişdirdim və ayrıca bir idarəetmə paneli sahəsi əlavə etdim. Bu az -çox son dizayn oldu (gördüyünüz kimi bir neçə düzəliş oldu, amma yaxındır).
Addım 3: Prototipdən Şablona
İndi məmnun olduğum bir prototipim var idi, kartonu düzəldib bir şablon halına gətirə bilərdim, sonra ətrafa vurduğum köhnə bir PC qutusunun bir hissəsinə köçürdüm. Hər hansı bir bənzər sərt plastik işləyəcək, sadəcə əlimdə olan zibildən istifadə edirdim. İşarələdikdən sonra əsas gövdəni yığmağa başlaya bilmək üçün parçaları kəsə bildim. Burada faydalı bir ipucu, plastikin həm işarələnməsini, həm də sonradan kəsilməsini asanlaşdırmaq üçün əvvəlcə kəsməliyim olan sahələri maskalanan bantla örtdüm, bu da şablonu plastikə çəkməyin daha asan bir yolunu verdi, və ilk kəsiklər edərkən kəsmə diskinin sürüşməsini dayandırmağa kömək edəcək bir şey.
Addım 4: Screen & Pi üçün Case əlavə edin
Ekran sahəsinin künclərinin əyri olmasını istədim və əslində Pi -ni tutmaq və göstərmək üçün bir şeyə ehtiyacım vardı - həllim sahib olduğum kiçik bir plastik qabdan istifadə etmək idi. Bədənin yuxarı hissəsindən bir çuxur kəsdim və konteynerdən içəri yapışdırdım. Sonra bütün tərəfləri bir -birinə yapışdırdım. Qaynaqların möhkəmlənməsinə kömək etmək üçün burada bol soda ilə super yapışqan istifadə etdim. Daha sonra hər şeyi düzəltmək və daha "qəliblənmiş" bir hiss vermək üçün hər şeyi doldurdum və doldurdum/zımpara etdim.
Addım 5: İdarəetmə Paneli üçün təkrarlayın
Sonra, idarəetmə panelinin gövdəsini qurmaq üçün eyni şablonu köçürdüm, kəsdim və yapışdırdım.
Addım 6: Borunu kəsin
Gördüyünüz kimi, əsas elektron komponentləri yerləşdirmək üçün istifadə etməyi planlaşdırdığım konteyner indi qara plastik ətrafın içində qürurla oturur, bu onu yerləşdirmək üçün boruda bir boşluq açmalı olduğumu göstərir. Kəsmək istədiyim yerə düzmək üçün yenidən maskalanma lentindən istifadə etdim və hissələrin uyğun olması üçün borunun bir kvadratını kəsdim.
Addım 7: Çərçivə
Təsadüfən özümə məcbur etdiyim bir problem, ekranın ətrafını konteynerin kənarlarına qədər dolduracaq bir çərçivə hazırlamaq idi. Təəssüf ki, ekranın necə qurulduğunun dizaynında heç bir faydası yoxdur (çuxur və ya başqa bir şey kimi), buna görə də çərçivə ekranı yerində saxlamalı idi. İlk cəhdim (burada görüldü) plastik və köpük qarışığı idi. Nəhayət bunun üzərində bir neçə dəfə təkrarlamağa son qoydum və quruluşun ən çətin hissələrindən biri oldu. Həm çərçivənin özünün, həm də ekranın kiçik tolerantlıqları və incə təbiəti ilə daha da pisləşdi.
Addım 8: Batareya Testi
Bu nöqtədə, fikrimi ağdan USB -dən asılı olmayaraq necə işə salmaq barədə düşündüm. Müxtəlif batareyaları sınadım və gördüm ki, Raspberry Pi + ekranı o qədər də çox güc çəkmir və hətta kiçik batareya paketlərimdən birində (ticarət sərgisindən bir pulsuz pay) istifadə etmək çox xoşbəxtdir. Bu, paketin içərisindəki bir boşluğa mükəmməl uyğun gəldiyi üçün həqiqətən şanslı idi (daha sonra fotoşəkillər). İndi bədənin əsas komponentlərini müvəqqəti olaraq bir -birinə bağlaya bilərik və ilk sınaq sınağımı qolumda işə sala bilərik!
Addım 9: Uyğunluğu yoxlayın
Burada komponentlərin alt hissəsinə çıxışı təmin etmək üçün əsas borunu harada dəyişdirdiyimi görə bilərsiniz. Pi konteynerinin bir tərəfindəki boşluğa gözəl bir şəkildə oturan batareya ilə necə şanslı olduğumu da görə bilərsiniz. Nəhayət, bağları təmizləmək, doldurmaq, zımpara etmək prosesinə başladıq və bitmiş görünüşü hiss etmək üçün bir astar tətbiq etdim (bu mərhələdə daha çox zımpara edəcəyimi bilirdim və demək olar ki, bütün astar gedəcək, amma necə görünəcəyini hiss etmək istədim).
Addım 10: Nəzarət və Detal əlavə edin
Bir sıra qırmızı/sarı/yaşıl LED -lərin bir göstərici, eləcə də fırlanan bir kadr və ən azı 2 düyməni yaratmaq istədim. Bunların hamısı idarəetmə paneli hissəsinə quraşdırılmışdı - sadəcə bütün lazımi deliklərin qazılması. Korpusa və idarəetmə panelinə detallar və daha çox maraq əlavə etmək üçün kiçik miqdarda hurda plastik komponentlər (əsasən dəst bashing) əlavə etməyə başladım.
Addım 11: 3 nömrəli Bezel yenidən qurun
Daha əvvəl də qeyd etdiyim kimi, bu bina üçün çərçivə ilə mübarizə apardım və bir neçə dəfə yenidən qurdum. Bu, yapışdığım üçüncü iterasiyadır. Sərt lövhədən istifadə etmək və bir fərqli düşünmək üçün 2 fərqli forma kəsmək və sonra ortada şəkil yaratmaq üçün onları bir -birinə yapışdırmaq (və bağlamaq) kimi yanaşmam. Bu şəkillər kvadrat ekranın bunun içərisində oturmasına imkan verdi və sonra ekranı konteynerin içərisində saxladı (şəkil 3 -də olduğu kimi). Bu, mənə 4 çox kiçik vintləri armatur kimi istifadə etmək üçün kifayət qədər material verdi - bunu korpusun içərisində möhkəm bir şəkildə düzəltdim və öz növbəsində ekranı sabit və etibarlı saxlayacaqdım. Geriyə baxdıqda, bəzi uyğun montaj variantları ilə gələn bir ekran tapardım (və ya 3D printerdən istifadə etməliyəm).
Addım 12: Elektronikanın prototipləşdirilməsi
Sadə sxemlərimi belə yerləşdirmək üçün bir çörək taxtası istifadə edirəm və tez -tez layihənin bu hissəsini əsas gövdə konstruksiyasından fərqli bir məkanda etdiyim üçün onu fərqli bir Moruq PI ilə birləşdirdim. Burada 3 -cü modeldən istifadə etdim ki, bu da mənə birbaşa qoşulmaq və təyyarədə bir IDE işə salmaq üçün bir az daha çox güc verdi. Bu, mənim üçün sürətli kod prototipini bir az asanlaşdırdı. Uzaqdan/kod/debug bağlamağın bir çox başqa yolu var, sadəcə burada etmək istədiyim budur.
Buradakı dizayn olduqca düzdür, bizdə var;
- Rotary encoder - bu, klik istiqaməti və basma düyməsi ilə məşğul olmaq üçün bir yer və bir dəstə GPIO pinindən istifadə edir.
- Bir cüt düymə, bunlar sadəcə bir GPIO pinindən istifadə edir
- 3 LED, hər birinin ortadan qalxmasını dayandırmaq üçün sıralı bir müqavimətçi var, hamısı ortaq bir yerə gedir, ancaq hər biri fərdi olaraq həll oluna bilməsi üçün fərdi GPIO pinlə.
Bu mənə ölçü cihazım üçün 3 LED verdi, pipboydakı ekranlarda fırlanmaq üçün fırlanan bir kodlayıcı və hərəkətləri idarə etmək üçün 3 düymə (biri dönər kodlayıcıda və 2 ayrı telli). Bu, sığdıra biləcəyim hər şey idi və ekran bir dəstə sancaq götürdükdə, standart bir Pi GPIO layoutundakı şeyləri çox istifadə edir. Ancaq məqsədlərim üçün yaxşı idi.
İkinci şəkil, çox vaxt birlikdə getdiyim son daxili planı göstərir. Bir müddət burada komponentləri idarə etmə yollarını sınamaq və bunu quruluşun gövdəsinə köçürməzdən əvvəl hamısının işlədiyini yoxlamaq üçün keçirdim. Bütün kodlar github -da.
Döner kodlayıcılar haqqında bir qeyd. GPIO yüksək/aşağı dəyişikliklərini izləmək və bunları fırlanan mövqelərlə əlaqələndirmək üçün öz Rotary Encoder dövlət maşınımı yazmaq üçün çox vaxt sərf etdim. Burada qarışıq bir müvəffəqiyyət əldə etdim, "əksər" hallar üçün işlədim, amma həmişə ən yaxşı hallar və (de) sıçrayan və s. Hazır kitabxanadan istifadə etmək çox asandır və Python üçün quraşdırmaq üçün əla bir kitabxana var. Sonda bunu istifadə etdim, çünki problemlərin aradan qaldırılması üçün yaş sərf etməkdənsə, binanın əyləncəli hissəsinə diqqət yetirməyə icazə verdim. Bunun üçün bütün detallar mənbə koduna daxil edilmişdir.
Raspberry Pi, GPIO və elektronika ilə yeni tanışsınızsa, yuxarıdakı düzeni etmək üçün lazım olan hər şeyi sizə təqdim edən aşağıdakı dərsləri çox tövsiyə edirəm;
projects.raspberrypi.org/az/projects/physi…
thepihut.com/blogs/raspberry-pi-tutorials/…
Addım 13: Elektronikanı bədənə köçürmək
Layihəni bir çörək taxtasından istifadə edərək tamamladıqdan sonra, bunları pipboyun gövdəsinə necə bağlayacağımızı düşünməyə başlamağın vaxtı gəldi. Gələcəkdə bir şeyi təmir etməyim və ya dəyişdirməyim lazım olduğu təqdirdə bütün elektron komponentləri söküb silmək üçün bunu etmək istədiyimə qərar verdim. Bunu həyata keçirmək üçün, bütün alt hissələri dupont konnektorlarından istifadə edərək qoşula bilən hala gətirməyə qərar verdim.
Bəzi uzatma tellərinə lehimladığım düymələr və uclarını izolyasiya etmək üçün tel sarğı istifadə edərək, bunları gövdədən yığmağa və sökməyə icazə verdim (məsələn, sınaq üçün, sonra rəngləmə və s.). Rotary Encoder -də artıq dupont konnektorlarını qəbul edə bilən pinlər var idi, buna görə də bəzi telləri lazımi uzunluğa düzəltmək lazım idi.
LED -lər bir az daha çox iş gördü - bunun üçün, LED -ləri quraşdırmaq üçün çıxarıla bilən bir panel hazırlamaq üçün bir az plastik hurda istifadə etməyə qərar verdim. Sonra onları isti yerə yapışdırdım və müqavimət göstərənləri və telləri lehimlədim. Bu, uyğunlaşdıra biləcəyim və sökə biləcəyim bir sökmə qurğusu etdi və rəngləmə və bitirməni asanlaşdırdı.
Diqqət yetirin ki, lehimləmə dəhşətlidir, buna görə də bu sadəliyi saxladım və çox detallı/incə bir şeydən çəkindim. Gördüyünüz son şəkildə, çox kiçik (5x5) geniş lövhələrim də var idi, bunlardan hər birini GPIO -ya qoşmaq üçün bir panel təmin etmək üçün içəriyə quraşdırdım. Xüsusilə bu, istifadə edə biləcəyim ümumi bir yerüstü dəmir yolu yaratmaq və Pi -yə geri dönən çoxlu torpaq tellərinin olmamasının qarşısını almaq üçün faydalı oldu.
Daha sonra telləri Pi -yə ötürmək və GPIO -ya bağlamaq üçün konteynerə müxtəlif deliklər kəsdim. Bu dizayn, ehtiyacım olanda hər şeyi sıfırlamağa imkan verdi (tikintini başa çatdırarkən bir neçə dəfə etdiyim bir şey).
Addım 14: Fitin İncə Ayarlanması
Bu nöqtədə bəzi "uyğun" məsələlərlə qarşılaşdım. Əvvəlcə kabellər üçün dupont konnektorlarının istifadəsi, kifayət qədər yüksəklik boşluğu olmadığı üçün onları ekran şapkası ilə pinlərə yerləşdirməyin çətin olduğunu bildirir. Kiçik bir GPIO pin genişləndiricisini satın alaraq həll etdim (bu, bu layihə üçün satın aldığım şeylərdən biridir), ekran şapkasının daha yüksəkdə oturmasını və dupont bağlayıcılarından istifadə edərək qalan GPIO sancaqlarına daxil olmaq üçün yer buraxmağım üçün.
Konteynerin içərisinə bir az yastıq düzəltmək üçün bəzi kiçik köpük döşəmə matlarını da kəsdim, bu Pi + Ekranı lazımi yerə yerləşdirməyə və ətrafda hərəkət etməyi dayandırmağa kömək etdi.
Addım 15: Rotary Encoder -i yuxarı qaldırın
Döner kodlayıcılar tez -tez (mənimki kimi) gözəl parlaq müasir "hi fi" üslublu bir düymə ilə gəlir. Bu quruluş üçün tamamilə xarakterik deyildi, buna görə başqa bir şeylə qarşılaşmalı oldum. Təsadüfi hissələr qutusunda çoxdan sındırdığım bir matkapdan köhnə bir dişlə rastlaşdım. Bu yaxşı görünürdü, ancaq fırlanan kodlayıcıya uyğun gəlmirdi. Buradakı həllim, fırlanan kadr uyğun olan birini tapana qədər müxtəlif divar fişlərini sınamaq və daha sonra daha uyğun bir mövzu olaraq matkap dişlini dönər kodlayıcıya yerləşdirmək üçün "daxili yaxa" olaraq istifadə etmək üçün şəklini kəsmək idi. nəzarət.
Addım 16: Daxili astar
Daha çox köpüklü döşəmə plitələri! Bu dəfə daha rahat oturması üçün yumşaq astar tikmək üçün istifadə etdim (çox gevşek olmadan). Köpükdən bir çuxur kəsərək, Pi üçün qabın hazırladığı "topağı" da uddum. Ümumiyyətlə, bu onu daha çox geyinməyə imkan verdi. Bu fotoşəkillərdə göstərilməyib, amma mən onu əsas gövdədən bir qədər böyük etdim, beləliklə uclarında göründü, sonra rənglədim və hamısı bitmiş əşyaya bir az ziddiyyət və maraq qatmağa kömək etdi.
Addım 17: Detal əlavə edin
Bəzi bəzək əşyaları əlavə etmək və daha maraqlı etmək vaxtıdır. Əvvəlcə bir az vizual maraq göstərmək üçün bir üzünə bir neçə plastik zolaqlar əlavə etdim. Sonra bəzi terminallara bəzi saxta tellər əlavə etdim və onları gövdəyə qazdığım bir çuxura itirdim. Bütün bunlar sonradan fərqli rənglərlə boyanmışdır.
Addım 18: Rəsm və Bitirmə Bədən Quruluşu
Səliqəli bir bitirmə ilə çox narahat deyildim - köhnə olduğu və hər halda yaxşı istifadə edildiyi güman edildiyi kimi (əslində geri dönə bilərəm və bir nöqtədə daha da çox havalandıra bilərəm). Ancaq təsadüfi çöplərdən bir araya gəlməyən ardıcıl və tam bir obyekt kimi görünməsini istədim (tam olaraq belə olsa da). Çox sayda zımpara, doldurma (milliput plastik üçün seçdiyim doldurucudur) və təkrarlamaqdan keçdim. Sonra bütün birləşmələri hamarlaşdırmaq üçün bir neçə qat astar və boya çəkin. Sonra daha çox zımpara və daha çox doldurma və daha çox rəngləmə.
Xoşbəxt olduğum bədənə baxanda və hiss etdikdə bəzi detallar əlavə etməyə başladım. Onlara daha çox tel hörmə hissi vermək üçün idarəetmə panellərindəki ızgaralarda ovuşdurucu və tampon istifadə etdim. Akrilik istifadə edərək ora -buraya kiçik boya detalları da əlavə etdim.
Təsadüfi etiketlər kolleksiyamı qazdım və effekti bitirmək üçün bir neçə əlavə etdim. Sonra təmizlənməsi çətin olan yerlərə çirk və kir əlavə etmək üçün qarışıq boyalarla yuyundum. Bu hal hazırda bəlkə də bir az incədir və geri qayıdıb bir az sonra əlavə edə bilərəm.
Addım 19: Kodlaşdırma
Bu proyektə olan həvəsimin bir hissəsi, gerçək bir pipboy kimi reaksiya vermək idi və mənim üçün oyundakı ən ikonik hissə, fərqli ekranlar arasında çevirmək üçün düyməni çevirməkdir. Buna nail olmaq üçün bir sıra ekranlar nümayiş etdirə biləcək və aralarında keçməyə imkan verən bir pipboy istifadəçi interfeysi yazmağa qərar verdim. Ekranların məzmununu asanlıqla dəyişə biləcəyim bir şey etmək istədim və həqiqətən də ekranları əlavə edə/silə bildim.
Raspberry Pi, GPIO və s. Üçün əla dəstəyi olduğu üçün bunu Pythonda yazmağı seçirəm Python, tanış olduğum dillər siyahısında olduqca aşağıdır, buna görə də bu mənim üçün böyük bir öyrənmə əyrisi idi və kodun çoxu nəticədə qarışıqdır. Burada etmək istədiyim hər şeyi tam bitirmədiyim üçün bunu zaman keçdikcə yeniləyəcəyəm - amma bütün əsas anlayışlar olduğu üçün indi paylaşmaq üçün kifayət qədər yaxındır.
UI kodu üçün dizaynım olduqca irəlidir, ekranı quran, GPIO -nu konfiqurasiya edən, ekranları yükləyən və istifadəçi hadisələrini gözləyən və lazım olduqda ekranı yeniləyən sonsuz bir yeniləmə döngəsinə daxil olan əsas Python skript var. Əlavə olaraq UI ekranlarını vaxtından əvvəl yaratmağa kömək edən müxtəlif dəstək skriptləri var.
İstifadə olunan əsas kitabxanalar:
- pygame: İstifadəçi interfeysini idarə etmək üçün bunu mühərrik olaraq istifadə edirəm, çünki ixtiyari qrafiklər çəkməyə, şəkilləri, şriftləri idarə etməyə, tam ekrana çıxmağa və s.
- pyky040: Bu, fırlanan kadrların idarə olunmasını təmin edir və mənə çox vaxt qənaət edir (bunu buraxdığına görə Raphael Yancey -ə çox sağol.
- RPi. GPIO: Yaxşı GPIO sürmək üçün burada bir neçə variantla oynadım, amma bu, xüsusən də dönən kodlayıcını idarə etmək üçün başqa bir 3.3v kimi ehtiyat GPIO istifadə etmək kimi şeylərlə mənə lazım olan rahatlıq səviyyəsini verdi.
- səs -küy: Perlin səs -küyü yaratmaq üçün, daha təbii görünən radio ekranı üçün təsadüfi bir dalğa forması yaratmağım üçün
- növbə: Dönən kodlayıcıdan hadisələrin vaxtının çevrilməsi və LCD ekranın (çox) yavaş yeniləmə sürəti ilə sinir bozucu bir səhvlə qarşılaşdım. Sonda bunu həll etmə üsulum, gələn hadisələri fırlanan kodlayıcıdan növbə çəkmək və ekran yenilənəndə bir-bir götürmək idi.
- os, sys, threading, time: hamısı standart python funksiyaları üçün istifadə olunur
Ekran idarəçiliyinin dizaynına dair bir qeyd. Ekranlar koddakı adların siyahısı olaraq təyin olunur. Siyahıdakı hər bir giriş ya bir-p.webp
Bu faylların məzmunu başqa bir yerdə (əllə və ya digər skriptlərlə) yaradılır, çıxışı pipboy UI -nin sonra göstərmək üçün bir ekran olaraq yükləyə biləcəyi-p.webp
Bir neçə şeyin kodlandığı qəribə istisnalar var - məsələn, təsadüfi radio ekranı üçün dalğa forması kimi real vaxtda hesablanır və cizgi verilir.
Bir bənzətmə kömək edərsə, UI dizaynını son dərəcə kobud və sadə bir veb brauzer kimi düşünün - hər bir "ekran" yalnız bir png, bir txt faylı və ya ikisinin birləşməsindən ibarət ola biləcək həqiqətən sadə bir səhifəyə bənzəyir. Bunların məzmunu müstəqildir və bir brauzerin bir veb səhifəsi çəkdiyi kimi UI tərəfindən çəkilir.
Burada istifadə etdiyim əsas kitabxanalara bağlantılar:
www.pygame.org/news
pypi.org/project/pyky040/
pypi.org/project/noise/
Addım 20: Statistikalar Ekranı
Klassik pipboy siluet statistikası ekranı olmadan heç bir pipboy tam ola bilməz. Bunun üçün bir dostum statik bir-p.webp
Addım 21: Envanter Ekranı
Pi layihələrində həmişə faydalı olan bir şey, DHCP'də və s. IP ünvanı kimi əsas məlumatları göstərmək üçün bir yoldur. Envanter ekranını Pi "inventarının" görüntüsü olaraq həddindən artıq yükləməyə qərar verdim - hansı CPU, yaddaş, IP ünvanı və s. Bu məlumatı toplamaq üçün kiçik bir Linux skript yazdım və onu UI sisteminin sonra götürüb göstərdiyi uyğun bir mətn (.txt) faylına yönləndirdim. Fərqli bir yerdə olsam, bu şəkildə skripti atəşə tuta bilərəm və ən son IP ünvanı olan yeni bir.txt faylını ala bilərəm.
Addım 22: Xəritə Ekranı
Bu ekran üzərində işləyəcəyimiz ən mürəkkəb ekranlardan biri idi. Raspberry Pi 0 GPS modulu ilə gəlmir, amma xəritənin Pi olduğu yerə qədər etibarlı olmasını istəyirdim. Bunun həll yolu, Pi IP ünvanını çəkən, təxmini bir yer axtarmaq üçün https://ipinfo.io istifadə edən ayrı bir skriptdir. JSON cavabı tutulur və sonra koordinatları çevirirəm ki, təxminən bir yer üçün openstreetmap.org kafelini aşağı çəkim.
Plitələr çox rəngdədir, amma Pipboyun görünüşünə uyğun yaşıl ölçülü bir şəkil istədim və buna bənzərini tapa bilmədim, buna görə də rəngləri yenidən birləşdirmək üçün Pythonda yaşıl miqyaslı bir filtr yazdım. openstreetmap kafelini seçin və sonra yeni görüntünü bir-p.webp
Yuxarıdakı proses zamanı, təxmini yeri və koordinatları olan bir mətn faylı yaradılır və xəritə plitəsi-p.webp
Addım 23: Məlumat Ekranı
Ölçmə/düzülüşü sınamaq üçün göstərilən yalnız bir test kartıdır (başqa bir python skripti və-p.webp
Addım 24: Radio Ekranı
Xəritə ekranı ilə yanaşı, həqiqətən də çox iş görməyimə səbəb olan digər ekrandır. Bu, animasiya ilə oynadığım yeganə ekrandır - və əsasən nəzərdə tutulduğu kimi işləyir, lakin LCD ekranın yeniləmə dərəcələri ilə bağlı performans hələ də problemdir. Ekranın quruluşu, təsadüfi seçilmiş bəzi radio adlarını ehtiva edən bir mətn faylıdır (bunlar sadəcə ixtiyari sətirlərdir və ekranda bir siyahı təqdim etməkdən başqa bir şey etmir), qrafik sahəsinin oxunu ehtiva edən bir-p.webp
Bu, pygame loopunun hər dövrdə hər hansı bir real iş gördüyü yeganə ekrandır, yeni dalğa formasını hesablamalı, ekranın bu həyatda olan hissəsini silməli və yenidən çəkməlidir.
Addım 25: Son Düşüncələr
Bu, bəlkə də etdiyim ən çətin quruluşdur, bir çox fərqli anlayış və bacarıqla çağırılır, amma nəticədə işləyən real şeylə ən zövqlü biridir. Hələ də bəzi texniki qeydlərimi və kod üçün github repolarımı yığışdırmaq prosesindəyəm. Hamısını qısa müddətdə təqdim edəcəyəm, buna görə də yazmağa əlavə etmək üçün vaxt tapdığım üçün daha çox məlumat və məlumat üçün tezliklə yenidən geri qayıdın.
Əgər belə bir işlə məşğul olsanız, nəticələrini görmək istərdim və hər hansı bir sualınız varsa, bizimlə əlaqə saxlaya bilərsiniz və kömək etmək istədiyiniz hər hansı bir addımda daha çox məlumat əlavə etməyə çalışacağam.
Addım 26: Github -da Kod Açın
Nəhayət kodu Github -da açmağa başladım. Bu linkdə mövcuddur:
Tövsiyə:
Arduino Uno ilə Akustik Levitasiya Addım-addım (8 addım): 8 addım
Arduino Uno ilə Akustik Levitasiya Adım Adım (8 addım): ultrasəs səs ötürücüləri L298N Dc dişi qadın adapteri kişi dc pinli Arduino UNOBreadboard Bu necə işləyir: Əvvəlcə Arduino Uno-ya kod yükləyirsiniz (rəqəmsal ilə təchiz edilmiş bir mikro nəzarətçidir) və kodu çevirmək üçün analog portlar (C ++)
Real Pipboy / IronMan: Geyilə bilən qızdırıcı + Runner Utility Light: 10 addım
Real Pipboy / IronMan: Geyinilə bilən qızdırıcı + Runner Utility İşıq: Arxa plan: Prometey tərəfindən İnsanın Yaradılması (JM Hunt tərəfindən): " Prometey, Epimeteyə yerdəki canlılara sürət, hiylə kimi müxtəlif keyfiyyətləri vermək vəzifəsi vermişdi. , güc, xəz və qanadlar. Təəssüf ki, tərəfindən
Hurdadan Karton Dinamik!: 5 Adım (Şəkillərlə birlikdə)
Hurdadan Karton Dinamik !: Bu təlimat, köhnə kartondan təkrar emal edilən sağlam və güclü bir portativ dinamikin necə yaradılacağına dair kiçik bir bələdçidir. Karton sözünü eşidəndə ümumiyyətlə bir karton qutu və hər kəsin fikrincə bir karton qutu o qədər də güclü deyil
DJi F450 Quadcopter Necə Yaranır? Evdə tikilmiş: 7 addım (şəkillərlə)
DJi F450 Quadcopter Necə Yaranır? Evdə tikilmiş .: Bu, hobbi kral 6 kanallı verici və qəbuledici və Kk2.1.5 uçuş nəzarətçisi tərəfindən idarə olunan, normal olaraq 1000KV aralığında fırçasız mühərriklər tərəfindən idarə olunan, lakin layihəm üçün ən yaxşı performans üçün 1400KV mühərriklərdən istifadə edən bir ev qurğusudur
Asan addımlar və şəkillərlə kompüteri necə sökmək olar: 13 addım (şəkillərlə)
Asan Adımlar və Şəkillərlə Kompüteri Sökmək Necə: Bu, kompüterin sökülməsi ilə bağlı təlimatdır. Əsas komponentlərin çoxu moduldur və asanlıqla çıxarılır. Bununla birlikdə, bu mövzuda təşkilatlanmanız vacibdir. Bu, hissələri itirməməyinizə və eyni zamanda montajı asanlaşdırmağa kömək edəcək