İçindekiler:
- Gereçler
- Adım 1: Pipboy'un Kalbini İnşa Etmek
- 2. Adım: Karton Prototip
- Adım 3: Prototipten Şablona
- 4. Adım: Ekran ve Pi için Vaka Ekle
- Adım 5: Kontrol Paneli için tekrarlayın
- Adım 6: Boruyu Kesin
- Adım 7: Çerçeve
- Adım 8: Pil Testi
- 9. Adım: Uyumun Test Edilmesi
- Adım 10: Kontroller ve Detaylandırma Ekleyin
- Adım 11: Çerçeve Yeniden Yapılandırma No. 3
- Adım 12: Elektroniği Prototipleme
- Adım 13: Elektroniği Gövdeye Aktarma
- Adım 14: Sığdırmanın İnce Ayarı
- Adım 15: Döner Kodlayıcıyı Geriye Döndürme
- Adım 16: İç Astar
- Adım 17: Ayrıntı Ekleme
- Adım 18: Vücut Yapısını Boyama ve Bitirme
- Adım 19: Kodlama
- Adım 20: İstatistikler Ekranı
- Adım 21: Envanter Ekranı
- Adım 22: Harita Ekranı
- Adım 23: Veri Ekranı
- Adım 24: Radyo Ekranı
- Adım 25: Son Düşünceler
- Adım 26: Github'da Kod Açma
Video: Hurdadan İnşa Edilen Pipboy: 26 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
Bu benim çalışan Pipboy'um, garajdan aldığım rastgele çöplerden ve elektronik parça stoğumun baskınından yapılmış. Bunu zorlu bir yapı buldum ve birkaç ay çalışmamı aldı, bu yüzden bunu tam bir başlangıç projesi olarak kategorize etmem. Gerekli beceriler arasında plastik ve ahşap işleri, elektronik ve kodlama yer alır. Gövde, birlikte kesilip kaynaklanmış çeşitli hurda plastik parçalarından yapılmıştır. GPIO pinlerinin bir kısmına monte edilmiş bir ekran başlığı ile mikro denetleyici olarak bir Raspberry Pi 0 kullandım. Kalan pinler, LED'leri sürmek ve düğmeleri/kontrolleri bağlamak için kullanılır. Projeyi tamamlamak için Python'da bazı demo ekranlarla birlikte "Pipboy" tarzı bir kullanıcı arayüzü yazdım.
Proje için hedeflerim şunlardı:
- Çalışıyor olmalıydı - yani aslında bir şeyler yapan bir ekrana sahip olması gerekiyordu
- Fallout'ta kullanıcı arayüzünün ikonik bir parçası olarak benim için her zaman göze çarpan farklı ekranları seçmek için bir "kadran" olmasını istedim.
- Tüm yapı, zaten garajda veya ofisimde bulunan malzemeler kullanılarak tamamlanmak zorundaydı (bu tam olarak başarılmadı, ancak yaklaştım - bunun %90'ından fazlası zaten ortalıkta bulunan eşyalar veya eşyalardı)
- Giyilebilir olması gerekiyordu
Sahip olmadığım bir amaç, onu oyun içi modellerden birinin tam bir kopyası yapmaktı - Bir şeyin "tarzında" bir şeyler inşa etmeyi tercih ediyorum, çünkü bana bulduğum rastgele önemsiz şeyleri uyarlamam için yer veriyor ve biraz daha yaratıcı olmama izin ver. Son olarak, evet, bunları satın alabileceğinizi biliyorum ama mesele bu değildi;)
Gereçler
Gereçler
- Geniş çaplı boru (bir parça tahliye borusu gibi)
- Hurda plastikler (hem gövde oluşturmak hem de dekoratif amaçlı)
- Küçük konteyner
- Köpük paspas
- Ahududu Pi
- 3.5" ekran
- KY040 Döner Enkoder
- 3x LED'ler
- 2x Basmalı düğmeler
- Taşınabilir şarj aleti
- kablolama
- Vidalar, yapıştırıcılar, boyalar, dolgu maddeleri vb.
Aletler
- Dremmel
- Kesici ve zımpara ataşmanlarına sahip çok amaçlı alet
- Delmek
- Dosyalar
- Havya
- Sıcak yapıştırıcı tabancası
- Tornavida(lar)
- Keskin bıçak
- Testere
Adım 1: Pipboy'un Kalbini İnşa Etmek
Yapmam gereken ilk şey, birlikte çalışabileceğim bir form faktöründe bir ekran ve mikro denetleyici alabileceğimden emin olmaktı. Raspberry PI'nin GPIO pinlerinin üzerine HAT olarak oturan 3.5 bir ekrana sahiptim, bu yüzden bunu kullanmaya karar verdim. Bir Raspberry Pi 0 ile eşleştirdim ve düzgün çalıştığından emin oldum, bir Linux'un üzerinden geçmeniz gereken ekranı tanımasını sağlamak için birkaç adım.
İkinci resimde görebileceğiniz gibi, ekranı desteklemek için kasaya yapıştırdığım küçük bir karton/köpük platform ekledim. Bunu, bu kısmı çok fazla idare edeceğimi bildiğim için yaptım ve destek eksikliği nedeniyle pimleri veya ekranı kırmak istemedim. Sonunda bu değiştirildi, ancak oluşturma işlemi sırasında iyi bir ek koruma oldu.
Bu noktada şunu da belirtmekte fayda var, daha sonra derlemede bu kurulumla ilgili performans sorunlarıyla karşılaştım - ağırlıklı olarak Pi ve ekran arasındaki arayüz üzerindeki yenileme hızı, buna derlemede daha sonra gireceğim ama eğer Bunu tekrar yaptım, burada farklı donanımları düşünebilirim.
İşte bunun için bazı yararlı 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…
Ayrıca, bununla ilişkili github'a, bu çalışmayı elde etmek için gerçekte ne yaptığımla ilgili bazı notlar ekleyeceğim (konuyu okuduğumdan, bunun belirli örnekler/sürücüler için nasıl çalıştığı konusunda çok fazla değişkenlik olmasına rağmen, bu nedenle, değirmeniniz değişebilir)).
2. Adım: Karton Prototip
Gövde için kullanabileceğim eski bir oluk/boru buldum, ancak gerçek ekran alanı ve kontrol paneli için bir tasarım bulmam gerekiyordu. Bunun için kartondan maketler yaptım ve bunları boruya sabitlemek için maskeleme bandı kullandım. İlki basit bir "kutu"ydu ama çok basit geldi, bu yüzden ekran alanını daha ilginç hale getirmek için değiştirdim ve ayrı bir kontrol paneli alanı ekledim. Bu az çok nihai tasarım oldu (göreceğiniz gibi birkaç ince ayar yapıldı, ancak yakın).
Adım 3: Prototipten Şablona
Artık mutlu olduğum bir prototipim vardı, kartonu düzleştirebilir ve daha sonra tekme attığım eski bir PC kasasının parçasına aktardığım bir şablona dönüştürebilirdim. Herhangi bir benzer sert plastik işe yarardı, sadece elimdeki çöpleri kullanıyordum. İşaretlendikten sonra, ana gövdeyi birleştirmeye başlayabilmem için parçaları kesebildim. Burada faydalı bir ipucu, plastiği hem işaretlemeyi hem de daha sonra kesmeyi kolaylaştırmak için önce kesmem gereken alanları maskeleme bandıyla kapattım, bu ikisi de şablonu plastiğin üzerine çizmem için daha kolay bir yol sağladı, ve ilk kesimleri yaparken kesme diskinin kaymasını önlemeye yardımcı olacak bir şey.
4. Adım: Ekran ve Pi için Vaka Ekle
Ekran alanının köşelerinin kavisli olmasını istedim ve Pi'yi gerçekten tutacak ve içinde gösterecek bir şeye ihtiyacım vardı - benim çözümüm, sahip olduğum küçük bir plastik kap kullanmaktı. Gövdenin üstünden bir delik açtım ve kabı bunun içinden yapıştırdım. Sonra her tarafını yapıştırdım. Kaynakları güçlendirmek için burada bol kabartma tozu ile süper yapıştırıcı kullandım. Daha sonra hepsini toplamak ve daha "kalıplanmış" bir his vermek için her şeyi doldurdum ve dosyaladım/zımparaladım.
Adım 5: Kontrol Paneli için tekrarlayın
Ardından, kontrol paneli muhafazasını oluşturmak için tam olarak aynı şablonun yer değiştirmesini, kesmesini ve yapıştırmasını yaptım.
Adım 6: Boruyu Kesin
Gördüğünüz gibi, ana elektronik bileşenleri barındırmak için kullanmayı planladığım kap şimdi siyah plastik çerçevenin içinde gururlu bir şekilde oturuyor, bu da borunun içine oturması için bir delik açmam gerektiği anlamına geliyor. Kesmek istediğim yeri hizalamak için tekrar maskeleme bandı kullandım ve parçaların sığması için borudan bir kare kestim.
Adım 7: Çerçeve
Yanlışlıkla kendime zorladığım şeylerden biri, ekranın etrafındaki alanı kabın kenarlarına kadar dolduracak bir çerçeve bulmaya çalışmaktı. Ne yazık ki ekranın üretilme şekli, tasarımında onu monte etmeye yardımcı olacak (delikler veya herhangi bir şey gibi) yararlı hiçbir şeye sahip değil, bu nedenle çerçevenin de ekranı yerinde tutması gerekiyordu. İlk denemem (burada görülen) plastik ve köpük karışımıydı. Sonunda bunu birkaç kez yineledim ve sonunda yapının daha zorlu kısımlarından biri oldu. Hem çerçevenin hem de ekranın küçük toleransları ve hassas yapısı nedeniyle daha da kötüleşti.
Adım 8: Pil Testi
Bu noktada, ana şebekeden beslenen bir USB'den bağımsız olarak bunun nasıl çalıştırılacağına karar verdim. Çeşitli pilleri test ettim ve Raspberry Pi + ekranının aslında o kadar fazla güç çekmediğini ve daha küçük pil takımlarımdan biriyle (ticaret fuarından ücretsiz bir hediye) bile çalışmaktan son derece mutlu olduğunu gördüm. Paket, yapının içindeki bir boşluğa mükemmel bir şekilde oturduğu için bu gerçekten şanslıydı (fotoğraflar daha sonra). Şimdi ana gövde bileşenlerini geçici olarak bantlayabilir ve kolumda ilk test çalıştırmamızı çalıştırabiliriz!
9. Adım: Uyumun Test Edilmesi
Burada, bileşenlerin alt tarafına erişime izin vermek için çekirdek boruyu nerede değiştirdiğimi görebilirsiniz. Pilin Pi kabının bir tarafındaki boşluğa güzelce oturmasıyla nasıl şanslı olduğumu da görebilirsiniz. Sonunda bağları temizleme, doldurma, zımparalama işlemine başladım ve bitmiş görünümü anlamak için bir test katı astarı yaptım (Bu aşamada biliyordum ki bu kadar çok daha fazla zımpara yapacağım ve bu astarın neredeyse tamamı gidecekti., ama nasıl görüneceğine dair bir fikir edinmek istedim).
Adım 10: Kontroller ve Detaylandırma Ekleyin
Bir gösterge oluşturmak için bir dizi kırmızı/sarı/yeşil LED'in yanı sıra bir döner kadran ve en az 2 buton istedim. Bunların hepsi kontrol paneli bölümüne takıldı - sadece tüm doğru deliklerin delinmesi durumu. Ayrıca gövdeye ve kontrol paneline ayrıntılar ve daha fazla ilgi eklemek için küçük parçalar halinde hurda plastik bileşenler (temelde kit vurma) eklemeye başladım.
Adım 11: Çerçeve Yeniden Yapılandırma No. 3
Daha önce de bahsettiğim gibi, bu yapı için çerçeveyle uğraştım ve birkaç kez yeniden inşa ettim. Bu, sıkışıp kaldığım üçüncü yineleme. Buradaki yaklaşımım, sunta kullanmak ve biri diğerinden farklı 2 farklı şekil kesmek ve ardından orta resmi oluşturmak için bunları birbirine yapıştırmak (ve kenetlemek). Bu şekiller, kare ekranın bunun içine oturmasını sağladı ve ardından ekranı kabın içinde yerinde tuttu (resim 3'teki gibi). Bu bana armatür olarak 4 çok küçük vidayı kullanmaya yetecek kadar malzeme verdi - bunu kasanın içine sıkıca sabitlerdim ve sırayla ekranı sabit ve güvenli tutardı. Geriye dönüp baktığımda, bazı uygun montaj seçenekleriyle gelen bir ekran bulurdum (veya o sırada sahip olmadığım bir 3D yazıcı kullanırdım).
Adım 12: Elektroniği Prototipleme
Basit devrelerimi bu şekilde düzenlemek için bir devre tahtası kullanıyorum ve projenin bu bölümünü ana gövde yapısından farklı bir alanda sık sık yaptığım için, onu farklı bir Raspberry PI ile de eşleştirdim. Burada, doğrudan ona bağlanmak ve yerleşik bir IDE çalıştırmak için bana biraz daha fazla güç veren bir model 3 kullandım. Bu, hızlı kod prototiplemeyi benim için biraz daha kolaylaştırdı. Uzaktan bağlanmanın/kodlamanın/hata ayıklamanın birçok başka yolu var, bu sadece burada yapmayı tercih ettiğim şey.
Buradaki tasarım oldukça yalındır, bizde;
- Döner kodlayıcı - bu, tıklama yönü ve basma düğmesi ile ilgilenmek için bir topraklama ve bir grup GPIO pini kullanır.
- Bir çift basma düğmesi, bunlar her biri tek bir GPIO pini ve ortak bir zemin kullanır
- 3 LED'in her biri, patlamalarını önlemek için sıralı bir rezistansa sahiptir, hepsi ortak bir zemine gider, ancak her biri ayrı ayrı ele alınabilmesi için her biri ayrı bir GPIO pinine sahiptir.
Bu bana göstergem için 3 LED, pipboy üzerindeki ekranlar arasında döndürmek için bir döner kodlayıcı ve eylemleri yürütmek için 3 basma düğmesi (biri döner kodlayıcıda ve 2'si ayrı kablolu) verdi. Bu, sığdırabildiğim her şeydi ve ekran bir sürü pin kaplarken, standart bir Pi GPIO düzeninde sahip olduğunuz şeyi hemen hemen tüketiyor. Ancak benim amaçlarım için iyiydi.
İkinci resim, birlikte gittiğim son iç düzeni hemen hemen gösteriyor. Bunu yapının gövdesine aktarmadan önce, bileşenleri sürmenin yollarını test etmek ve her şeyin işe yaradığını doğrulamak için burada biraz zaman harcadım. Tüm kodlar github'da.
Döner kodlayıcılar hakkında bir not. GPIO yüksek/düşük değişikliklerini izlemek ve bunları döner konumlara eşlemek için kendi Döner Kodlayıcı durum makinemi yazmak için çok zaman harcadım. Burada karışık bir başarı elde ettim, "çoğu" vaka için çalışmasını sağladım, ancak başa çıkmak için her zaman uç vakalar ve (de)zıplama vb. Hazır bir kitaplığı kullanmak çok, çok daha kolay ve bunlar için Python için kurulabilecek harika bir kitaplık var. Sonunda, hata ayıklama sorunları için uzun zaman harcamak yerine binanın eğlenceli kısmına odaklanmama izin verdiği için bunu kullandım. Bunun için tüm detaylar kaynak kodunda yer almaktadır.
Raspberry Pi, GPIO ve elektronikte yeniyseniz, yukarıdaki düzeni yapmak için ihtiyacınız olan her şeyde size yol gösteren aşağıdaki öğreticileri şiddetle tavsiye ederim;
projects.raspberrypi.org/en/projects/physi…
thepihut.com/blogs/raspberry-pi-tutorials/…
Adım 13: Elektroniği Gövdeye Aktarma
Bir breadboard kullanarak yerleşimi tamamladıktan sonra, bunları pipboy'un gövdesine nasıl monte edeceğimi düşünmeye başlamanın zamanı gelmişti. Gelecekte herhangi bir şeyi tamir etmem veya değiştirmem gerektiğinde tüm elektronik bileşenleri söküp çıkarabilmem için bunu yapmak istediğime karar verdim. Bunu başarmak için tüm alt parçaları dupont konektörler kullanarak takılabilir hale getirmeye karar verdim.
Bazı uzatma kablolarına lehimlediğim ve uçlarını yalıtmak için tel sargı kullandığım düğmeler için bu, bunları gövdeden söküp takmamı sağladı (örn. test için, sonra boyama vb. için). Döner Kodlayıcı zaten çift konektörleri kabul edebilecek pimlere sahipti, bu yüzden bazı kabloları doğru uzunlukta yapmam gerekiyordu.
LED'ler biraz daha fazla iş aldı - bunun için, LED'leri monte etmek için çıkarılabilir bir panel yapmak için (sığdırmak için kesilmiş) biraz hurda plastik kullanmaya karar verdim. Sonra onları sıcak yapıştırdım ve dirençleri ve telleri lehimledim. Bu, takıp çıkarabileceğim bir sökme ünitesi yaptı ve boyama ile bitirmeyi kolaylaştırdı.
Lehimlememin korkunç olduğuna dikkat edin, bu yüzden bunu basit tuttum ve çok ayrıntılı/ince bir şeyden kaçındım. Son resimde de görebileceğiniz gibi çok küçük geniş tahtalarım (5x5) vardı, bunlardan birini içine monte edilmiş olarak GPIO'ya/GPIO'dan her şeyi bağlamak için bir panel sağlamak için kullandım. Özellikle bu, kullanabileceğim ve çok sayıda topraklama kablosunun Pi'ye geri dönmesini önleyebileceğim ortak bir topraklama rayı oluşturmak için faydalı oldu.
Daha sonra kabloları Pi'ye beslemek ve GPIO'ya bağlamak için kabın içine çeşitli delikler açtım. Bu tasarım, gerekirse her şeyi çıkarmamı sağladı (yapıyı tamamlarken birkaç kez yaptığım bir şey).
Adım 14: Sığdırmanın İnce Ayarı
Bu noktada bazı "uyum" sorunlarıyla karşılaştım. İlk olarak, kablolama için dupont konektörlerin kullanılması, yeterli yükseklik boşluğu olmadığı için, ekran şapkası yerindeyken pimlere takmalarının zor olduğu anlamına geliyordu. Bunu (bu proje için gerçekten satın aldığım birkaç şeyden biri) küçük bir GPIO pin genişletici satın alarak çözdüm, böylece ekran şapkasını daha yükseğe oturtabilir ve dupont konektörlerini kullanarak kalan GPIO pinlerine erişmek için yer bırakabilirdim.
Ayrıca kabın içinde bir miktar yan dolgu yapmak için bazı küçük köpük paspas parçaları kestim, bu Pi + Ekranın doğru yere oturmasına ve hareket etmesini engellemeye yardımcı oldu.
Adım 15: Döner Kodlayıcıyı Geriye Döndürme
Döner kodlayıcılar genellikle (benimki gibi) güzel, parlak, modern bir "hi fi" tarzı düğmeyle gelir. Bu, yapı için tamamen karakter dışıydı, bu yüzden başka bir şey bulmam gerekiyordu. Rastgele parça kutumda uzun zaman önce kırdığım bir matkaptan eski bir dişliye rastladım. Bu iyi görünüyordu, ancak döner kodlayıcıya uymuyordu. Buradaki çözümüm, döner kadrana uyan bir tane bulana kadar çeşitli dübelleri denemek ve daha sonra, matkap dişlisini döner kodlayıcıya daha uygun bir tema olarak yerleştirmek için bir "iç bilezik" olarak kullanabilmem için şekle sokmaktı. kontrol.
Adım 16: İç Astar
Daha fazla köpük yer karosu! Bu sefer, daha rahat oturması için (çok gevşek olmadan) yumuşak bir astar oluşturmak için onları kullandım. Köpükten bir delik açarak Pi kabının yaptığı "topakların" bir kısmını da emebildim. Genel olarak bu, onu çok daha giyilebilir hale getirdi. Bu fotoğraflarda gösterilmedi, ancak ana gövdeden biraz daha büyük yaptım, böylece daha sonra boyadığım uçlarda görünür oldu ve hepsi bitmiş ürüne biraz kontrast ve ilgi katmaya yardımcı oldu.
Adım 17: Ayrıntı Ekleme
Biraz dekorasyon eklemeye başlamanın ve daha ilginç hale getirmenin zamanı geldi. Her şeyden önce, biraz görsel ilgi uyandırmak için bir yüz boyunca bazı hurda plastik şeritler ekledim. Sonra bazı terminallere bazı sahte kablolar ekledim ve onları gövdede açtığım bir deliğe ittim. Bunların hepsi daha sonra farklı renklere boyandı.
Adım 18: Vücut Yapısını Boyama ve Bitirme
Eski ve iyi kullanılmış olması gerektiği gibi, bozulmamış bir yüzeyle pek ilgilenmedim (aslında bir noktada geri gelebilir ve üzerinde daha da fazla hava koşullarına maruz kalabilirim). Ama rastgele çöplerden topallanmayan tutarlı ve eksiksiz bir nesne gibi görünmesini istedim (tam olarak böyle olmasına rağmen). Çok sayıda zımparalama, doldurma yinelemesinden geçtim (miliput, plastik için tercih ettiğim dolgu maddesidir) ve tekrarladım. Ardından, tüm bağlantıların düzeltilmesine yardımcı olmak için birkaç kat astar ve boya. Sonra daha fazla zımpara, daha fazla dolgu ve daha fazla boyama.
Memnun olduğum vücuda bir bakış ve his edindikten sonra, biraz detay eklemeye başladım. Onlara daha fazla tel örgü hissi vermek için kontrollerdeki ızgaralarda ovma ve cila kullandım. Ayrıca akrilik kullanarak küçük boya detayları da ekledim.
Rastgele çıkartma koleksiyonuma baktım ve efekti tamamlamak için birkaç tane ekledim. Daha sonra, temizlenmesi zor olan ulaşılması zor alanlara biraz kir ve kir eklemek için bazı karışık boyalarla hava aşındırıcı bir yıkama yaptım. Bu, şu anda biraz fazla incelikli olabilir ve daha sonra geri gelip biraz daha ekleyebilirim.
Adım 19: Kodlama
Bu projeye yönelik tutkumun bir kısmı, gerçek bir pipboy gibi tepki vermesini sağlamaktı - ve benim için bu oyunun en ikonik kısmı, kadranı farklı ekranlar arasında çevirmek için çevirmek. Bunu başarmak için, bir dizi ekranı görüntüleyebilecek ve aralarında gezinmenizi sağlayacak bir pipboy kullanıcı arayüzü yazmaya karar verdim. Ekranların içeriğini kolayca değiştirebileceğim ve gerçekten de ekran ekleyebileceğim/kaldırabileceğim bir şey yapmak istedim.
Raspberry Pi, GPIO vb. için mükemmel destek nedeniyle bunu Python'da yazmayı seçiyorum. Python, aşina olduğum diller listemde oldukça düşük, bu yüzden bu benim için büyük bir öğrenme eğrisiydi ve kodun çoğu sonuç olarak dağınık. Burada yapmak istediğim her şeyi tamamen bitirmediğim için zaman içinde bunu güncelleyeceğim - ancak tüm ana kavramlar orada olduğu için şimdi paylaşmak için yeterince yakın.
UI kodu için tasarımım oldukça basit, ekranı ayarlayan, GPIO'yu yapılandıran, ekranları yükleyen ve sonsuz bir güncelleme döngüsüne giren, kullanıcı olaylarını bekleyen ve ekranı gerektiği gibi güncelleyen bir ana Python betiği var. Ayrıca, UI ekranlarını önceden oluşturmaya yardımcı olan çeşitli destek komut dosyaları vardır.
Kullanılan ana kütüphaneler:
- pygame: Bunu, keyfi grafikler çizmeme, görüntüleri, yazı tiplerini değiştirmeme, tam ekrana geçmeme vb. izin verdiği için kullanıcı arayüzünü çalıştırmak için motor olarak kullanıyorum.
- pyky040: Bu, döner kadranın kullanımını sağlıyor ve bana çok zaman kazandırdı (bunu serbest bıraktığı için Raphael Yancey'e çok teşekkürler.
- RPi. GPIO: İyi bir GPIO sürüşü için burada birkaç seçenekle oynadım, ancak bu bana özellikle döner kodlayıcıyı sürmek için başka bir 3.3v olarak yedek bir GPIO kullanmak gibi şeylerde istediğim doğru esneklik seviyesini verdi.
- gürültü: Perlin gürültüsü oluşturmak için, radyo ekranı için daha doğal görünen rastgele bir dalga formu oluşturmama izin vermek için
- sıra: Dönen kodlayıcıdan olayların zamanlaması ve LCD ekranın (çok) yavaş yenileme hızı ile ilgili sinir bozucu bir hatayla karşılaştım. Sonunda bunu çözmenin yolu, döner kodlayıcıdan gelen olayları sıraya almak ve ekran yenilenirken bunları birer birer almaktı.
- os, sys, threading, time: tümü standart python işlevleri için kullanılır
Ekran işleme tasarımı hakkında bir not. Ekranlar, kod içindeki adların listesi olarak tanımlanır. Listedeki her giriş, kendisiyle ilişkilendirilmiş bir-p.webp
Bu dosyaların içeriği başka bir yerde (elle veya diğer komut dosyaları tarafından) oluşturulur; bunların çıktısı-p.webp
Birkaç şeyin kodlandığı tuhaf istisnalar vardır - örneğin, gerçek zamanlı olarak hesaplanan ve canlandırılan rastgele radyo ekranının dalga biçimi gibi.
Bir benzetme yardımcı olursa, kullanıcı arayüzü tasarımını son derece kaba ve basit bir web tarayıcısı olarak düşünün - her "ekran", yalnızca bir png, bir txt dosyası veya ikisinin birleşiminden oluşabilen gerçekten basit bir web sayfası gibidir. Bunların içeriği bağımsızdır ve bir tarayıcının bir web sayfası çizeceği gibi UI tarafından sadece çizilir.
Burada kullandığım ana kütüphanelere bağlantılar:
www.pygame.org/news
pypi.org/project/pyky040/
pypi.org/project/noise/
Adım 20: İstatistikler Ekranı
Klasik pipboy siluet istatistik ekranı olmadan hiçbir pipboy tamamlanmış sayılmaz. Bunun için bir arkadaşım, sadece yer tutucu olarak gösterdiğim statik bir-p.webp
Adım 21: Envanter Ekranı
Pi projelerinde her zaman yararlı olan bir şey, DHCP'li IP adresi gibi temel bilgileri görüntülemenin bir yolunun olmasıdır. Envanter ekranını Pi "envanterinin" bir görüntüsü olarak aşırı yüklemeye karar verdim - hangi CPU, bellek, IP adresi vb. Bu bilgiyi toplamak için küçük bir Linux betiği yazdım ve bunu sadece uygun şekilde adlandırılmış bir metin (.txt) dosyasına yeniden yönlendirdim ve UI sisteminin ardından alıp görüntüledim. Bu şekilde, eğer farklı bir konumda olursam, komut dosyasını çalıştırabilir ve güncel IP adresi vb. ile yeni bir.txt dosyası alabilirim.
Adım 22: Harita Ekranı
Bu ekran, üzerinde çalışılması gereken daha karmaşık ekranlardan biriydi. Raspberry Pi 0 bir GPS modülü ile gelmiyor, ancak Harita'nın Pi'nin bulunduğu yerde bir geçerliliği olmasını istedim. Buna benim çözümüm, Pi IP adresini çeken, yaklaşık bir konum aramak için https://ipinfo.io kullanan ayrı bir komut dosyasıdır. JSON yanıtı yakalanır ve ardından yaklaşık konum için bir openstreetmap.org döşemesi çekebilmek için koordinatları dönüştürürüm.
Fayanslar birden fazla renkte çıkıyor, ancak Pipboy'un görünümüne ve hissine uyması için yeşil ölçekli bir görüntü istedim ve tam olarak buna benzer bir tane bulamadım, bu yüzden renkleri yeniden eşlemek için Python'da yeşil ölçekli bir filtre yazdım openstreetmap döşemesinin ve ardından yeni görüntüyü bir-p.webp
Yukarıdaki işlem sırasında yaklaşık konum ve koordinatlarla bir metin dosyası oluşturulur ve harita döşemesi-p.webp
Adım 23: Veri Ekranı
Bu, boyutlandırmayı/düzeni test etmeye yardımcı olmak için görüntülenen yalnızca bir test kartıdır (başka bir python betiği tarafından oluşturulur ve bir-p.webp
Adım 24: Radyo Ekranı
Harita ekranının yanı sıra gerçekten çok işime yarayan diğer ekran bu. Bu, animasyonla oynadığım tek ekran - ve çoğunlukla amaçlandığı gibi çalışıyor, ancak performans hala LCD ekran yenileme hızlarıyla ilgili bir sorun. Ekranın yapısı, rastgele seçilmiş bazı radyo adlarını içeren bir metin dosyasıdır (bunlar yalnızca keyfi dizelerdir ve ekranda bir liste sunmaktan başka bir şey yapmazlar), grafik alanının eksenini içeren bir-p.webp
Bu, pygame döngüsünün her döngüde gerçek bir iş yaptığı tek ekrandır, yeni dalga biçimini hesaplamak, ekranın bu bölümdeki bölümünü silmek ve yeniden çizmek zorundadır.
Adım 25: Son Düşünceler
Bu, muhtemelen birçok farklı konsept ve beceri gerektiren, yaptığım en zorlu yapıdır, ancak sonuç olarak işe yarayan gerçek şeyle birlikte en zevkli olanlardan biridir. Hala daha teknik notlarımdan bazılarını ve kodun github deposunu toplama sürecindeyim. Bunların hepsini kısa süre içinde kullanıma sunacağım, bu yüzden onları yazıya eklemek için zamanım olduğunda daha fazla ayrıntı ve bilgi için yakında tekrar gelin.
Böyle bir şey yapmaya başlarsanız, sonuçları görmeyi çok isterim ve herhangi bir sorunuz varsa lütfen bizimle iletişime geçmekten çekinmeyin; yardım etmek istediğiniz herhangi bir adımda daha fazla bilgi eklemeye çalışacağım.
Adım 26: Github'da Kod Açma
Sonunda kodu Github'da açmaya karar verdim. Bu bağlantıda mevcut:
Önerilen:
Kendi Kendini Süren Bir Tekne İnşa Etme (ArduPilot Rover): 10 Adım (Resimlerle)
Kendi Kendini Süren Bir Tekne İnşa Etme (ArduPilot Rover): Güzel olan ne biliyor musun? İnsansız kendi kendine giden araçlar. Aslında o kadar havalılar ki biz (üniversite meslektaşlarım ve ben) 2018'de kendimiz bir tane yapmaya başladık. Bu yüzden bu yıl nihayet boş zamanlarımda bitirmek için yola çıktım. Bu Enst
Raspberry Pi SÜPER Hava İstasyonu İnşa Edin: 8 Adım (Resimlerle)
Ahududu Pi SÜPER Hava İstasyonu İnşa Edin: Kabul edelim, biz insanlar hava hakkında çok konuşuruz ⛅️. Ortalama bir insan günde dört kez, ortalama 8 dakika 21 saniye boyunca hava durumu hakkında konuşur. Matematiği yapın ve bu, hayatınızın yaklaşık 10 ayını gevezelik ederek geçireceğiniz anlamına gelir
Hurdadan Karton Hoparlör: 5 Adım (Resimli)
Hurdadan Karton Hoparlör: Bu talimat, eski kartondan geri dönüştürülmüş sağlam ve güçlü bir taşınabilir hoparlörün nasıl oluşturulacağına dair küçük bir kılavuzdur. Karton kelimesini duyduğumuzda genellikle bir karton kutu düşünürüz ve herkesin görüşüne göre bir karton kutu o kadar güçlü değil,
Hurdadan Güneş Enerjili Power Bank: 3 Adım
Hurdadan Güneş Enerjili Güç Bankası: Güneş Enerjili Güç Bankası, eski dizüstü bilgisayar pilinden yapılmıştır. Bu çok ucuz ve güneşten şarj edilebilir. Bu ayrıca, güç bankasındaki güç yüzdesini gösteren bir ekrana sahiptir. Başlayalım
Hurdadan Yapılan CNC Besleme Hızı Ölçme Aleti: 5 Adım
Hurdadan Yapılan CNC Besleme Hızı Ölçme Aleti: Hiç kimse bir CNC makinesinde gerçek besleme hızını ölçmek istedi mi? Muhtemelen hayır, bir CNC işinden sonra freze uçları sağlam olana kadar… ama düzenli olarak kırılmaya başladıklarında, belki de araştırma zamanı gelmiştir. Bu talimatta ca