İçindekiler:

RPi 3 Sancak / Parçacık Üreticisi: 6 Adım (Resimlerle)
RPi 3 Sancak / Parçacık Üreticisi: 6 Adım (Resimlerle)

Video: RPi 3 Sancak / Parçacık Üreticisi: 6 Adım (Resimlerle)

Video: RPi 3 Sancak / Parçacık Üreticisi: 6 Adım (Resimlerle)
Video: Are there any good Apple Wireless Carplay Adaptors? 2024, Temmuz
Anonim
Image
Image
LED Kartını Birleştirin
LED Kartını Birleştirin

Raspberry Pi'nizden sıkıldınız mı? İstediğiniz zaman fotonları çağıran ve uzaklaştıran evrenin en temel güçlerine komuta etmeye hazır mısınız? Sadece oturma odanıza asmak için ilginç bir şey mi istiyorsunuz, yoksa Denise'e bugünlerde gayet iyi olduğunuzu göstermek için Facebook'ta yayınlamak için süslü bir proje mi istiyorsunuz, çok teşekkür ederim? Bir bilgisayar simülasyonunda kapana kısıldınız ve serbest bırakılana veya silinene kadar geçen saatleri mi harcıyorsunuz? Bunlardan herhangi biri veya tümü sizi tarif ediyorsa, o zaman [spiker sesi] Hoş geldiniz!

Bu eğitim size bir Raspberry Pi 3 ve bazı RGB matris panelleri kullanarak bir parçacık üreteci ekranının nasıl monte edileceğini ve kurulacağını gösterecektir. Bir ila iki saatinizi alacaktır ve bitmiş ürün yaklaşık 30"x8" (Pi hariç) ve duvara monte edilebilir olacaktır. Bir oturma odası, ofis, oyun odası veya koymak istediğiniz başka bir yer için oldukça havalı bir dekorasyon yapar.

Başlamadan önce, ihtiyacınız olanlar ve yaklaşık maliyetler şunlardır:

  • Rpi 3 + SD Kart + Kasa + Güç Kaynağı: 70$ (Canakit'ten, ancak parçaları ayrı ayrı alırsanız muhtemelen daha ucuza alabilirsiniz.)
  • 4x 32x32 RGB LED Matrix (tercihen 1/16 taramalı p6 iç mekan): Alibaba veya Aliexpress üzerinden 80-$100 dolar; Adafruit veya Sparkfun'da 160 dolar.
  • Adafruit RGB Matrix şapkası: 25 $
  • 5V 4A Güç Kaynağı: 15 $
  • 3D baskılı klipsler: $1ish (bunlar panelleri birleştirmek ve duvara asmak içindir; bir 3D yazıcıya erişiminiz yoksa, bunları bir arada tutmak için kıvrık bir şerit ve hırdavatçıdan bazı braketler kullanabilirsiniz. duvara asın. Bunların tasarım dosyalarını veya.stl'lerini bulmaya çalıştım ama sanki topraktan çıkmışlar. Klipleri modellemek oldukça kolay.)
  • 14x M4x10 cıvata: 5 dolar
  • RGB matrisleri için dört 4x8 IDC kablosu ve üç güç kablosu (bunlara ne dendiğini bilmiyorum!). Bunlar LED panellerinize dahil edilmiş olmalıdır.
  • Toplam: Yaklaşık 200 dolar, ver ya da al.

Proje, lehimlemenizi veya herhangi bir özel programlama bilgisine sahip olmanızı gerektirmez; microSD karta nasıl resim yazılacağını bildiğinizi varsayar. Bunu nasıl yapacağınızdan emin değilseniz, Raspberry Pi vakfının burada iyi bir öğreticisi var.

Ayrıca, Linux'ta komut satırından işlerin nasıl yapılacağına dair temel bir bilgiye sahip olduğunuzu varsayar ve kod kılavuzu, Python'un temellerini bildiğinizi varsayar (ancak - inşa edebilmek için kod kılavuzunu izlemeniz gerekmez) parçacık oluşturucuyu çalıştırın.) Adımlardan herhangi birinde takılırsanız, bir soru sormaktan veya /r/raspberry_pi'ye mesaj göndermekten çekinmeyin (ki bu, aynı zamanda, bu talimat için ana hedef kitle olduğunu varsayıyorum)

Adım 1: LED Kartını Birleştirin

LED Kartını Birleştirin
LED Kartını Birleştirin

İlk olarak, tek tek 32x32 LED panelleri tek bir büyük 128x32 panelde birleştireceksiniz. Panolarınıza bakmanız ve bağlantı sırasını gösteren küçük okları bulmanız gerekecek; benimkinde HUB75/2x8 IDC konektörlerinin hemen yanındalar. Rpi'nin bağlanacağı yeri (yukarıdaki fotoğrafta sağa doğru) işaret eden okların kartın uzunluğu boyunca olduğundan emin olun.

Ayrıca güç kablolarını da bağlamanız gerekecek. Bu kabloların çoğu, kartlara bağlanan iki dişi konektöre ve güç kaynağına bağlanan bir dizi kürek terminaline sahiptir. Çalıştığım panellerde 5V ve GND göstergeleri neredeyse tamamen konektörlerin altına gizlenmiş durumda, ancak kablolar yalnızca bir yönde bağlanıyor. Tüm 5V'leri ve tüm GND'leri birbirine bağladığınızdan emin olmak isteyeceksiniz, çünkü bunları geriye doğru çalıştırırsanız neredeyse kesinlikle onları kızartacaksınız.

Kartlarımda bulunan güç kabloları çok kısa olduğu için, kürek terminalinin uçlarını diğerinin konektörüne takarak birini uzatmak zorunda kaldım (Bu oldukça basittir - kürek terminallerini hafifçe içe doğru bükmeniz gerekebilir, ama ben' Her ihtimale karşı bir resim ekledim). Artık uzatılmış LED kartımın sağında iki takım kürek terminali ve bir 2x8 IDC konektörü ile bitirdim.

Ayrıca, tahtanın iki ucunda hiçbir şeye bağlı olmayan iki cıvatam olduğunu fark edeceksiniz; bunlar her şey ters çevrildiğinde en üstte olacak ve duvara tutturmak için kullanılacak.

Böylece - tüm panelleri klipsler, 2x8 IDC kablolar ve güç kabloları ile birbirine bağladıktan sonra bir sonraki adıma geçmeye hazırsınız!

Adım 2: Ahududu Pi'yi hazırlayın

Ardından, LED kartını bir kenara koyacaksınız (şimdilik) ve Pi 3'ü çalıştırmaya hazır hale getireceksiniz. Raspbian Stretch Lite ve hzeller'in RGB matris kitaplığını kullanacağız (daha eski ve bakımsız olan Adafruit'in matris kitaplığı yerine).

İlk olarak, Raspbian Lite görüntüsünü bir SD karta yazmak isteyeceksiniz; Bunu yaptıktan sonra, devam edin ve pi'ye bir monitör ve klavye bağlayın ve başlatın. (Bunu ssh veya seri konektör üzerinden de başsız yapabilirsiniz, ancak bu şekilde gidiyorsanız, muhtemelen nasıl yapacağınızı söylememe ihtiyacınız yoktur.) Bunun için bir internet bağlantısına ihtiyacınız olacak.; Wifi'niz varsa, /etc/wpa_supplicant/wpa_supplicant.conf dosyasını düzenleyerek ve wpa_cli -i wlan0 reconfigure komutunu çalıştırarak Pi'yi kablosuz ağınıza bağlayın. (Bunu daha önce yapmadıysanız, talimatları buradan alabilirsiniz).

İnternete bağlandıktan sonra dpkg deposu ayarlarını güncelleyeceğiz ve aşağıdaki komutları çalıştırarak ihtiyacımız olan kitaplıkları indireceğiz:

sudo apt-get güncellemesi

sudo apt-get kurulumu git python-dev python-pil

git klonu

Şimdi matris kodunu derlememiz ve yüklememiz gerekiyor. Böylece kütüphaneyi içeren klasöre gideceksiniz:

cd rpi-rgb-led-matris

ve derleyin (bu bir dakika sürebilir):

yap && yap-python yap

ve python bağlamalarını kurun:

sudo yükleme-python yapmak

Kütüphane kodunu derlerken herhangi bir hata alırsanız, geri dönün ve python-dev ve python-pil'i doğru yüklediğinizden emin olun! Python bağlamaları, bu paketlerin ikisi de yüklenmeden derlenmeyecektir.

Ayrıca /boot/config.txt dosyasını düzenleyerek Pi'nizin ses çıkışını (yerleşik ses matris koduna müdahale eder) devre dışı bırakmanız gerekir. dtparam=audio=on yazan satırı arayın ve dtparam=audio=off olarak değiştirin.

Her şey yolundaysa (Wstrict-protoipleri hakkında birkaç uyarı alacaksınız), pi'niz matris kartını çalıştırmaya hazır olmalıdır. Devam edin ve kapatın (şimdi sudo kapatma), fişini çekin ve bir sonraki adımda ışık panosunu pi'ye bağlayacağız.

3. Adım: Pi + Matrix Hat + LED Kartını Bağlayın

Pi + Matrix Hat + LED Kartı bağlayın
Pi + Matrix Hat + LED Kartı bağlayın

Şimdi Pi'niz kapalı ve fişi çekilmiş olduğuna göre, matris şapkasını pi'ye ve LED kartını matris şapkasına bağlayalım. Pi'niz zaten kutusunda değilse, onu oraya koymanın şimdi tam zamanı.

Matrix şapkasını, Pi üzerindeki GPIO pimleriyle hizalayarak ve her iki taraftan eşit kuvvet uygulayarak hafifçe aşağı doğru iterek takın. Şapkadaki dişi başlıkların pi üzerindeki GPIO pinlerini tam olarak örtmesi için pinlerin doğru şekilde sıralandığından emin olun. Yanlış hizalarsanız, bu bir felaket değildir; sadece yavaşça geri çekin ve bükülen pimleri düzeltin.

Şapkayı taktıktan sonra, Pi'yi monte edilmiş LED kartının sağına koyun (güç bağlantılarını tekrar kontrol edin ve okların Pi'den kartın uzunluğuna baktığından emin olun) ve IDC'yi bağlayın matrix şapkaya giden kablo.

Ardından, güç için kürek terminallerini matris şapkasının terminal bloğuna bağlamak isteyeceksiniz. Her iki tarafta iki kürek konektörünüz var, ancak ikisi de oraya iyi oturmalı. Önce vidaları gevşetin ve - Bunu söylemeye gerek yok - 5V terminalleri + etiketli tarafa yerleştirdiğinizden emin olun (bunlar kırmızı olmalıdır, ancak - tekrar - konektörlerinizi iki kez kontrol edin ve doğru şekilde üretildiğini varsaymayın) ve - etiketli taraftaki GND terminalleri (bunlar siyah olmalıdır). İçeri girdikten sonra, terminal bloğunun üstündeki vidaları sıkın ve bu adım için başlık görüntüsüne benzeyen bir şeye sahip olmalısınız.

Şimdi - bu özel konfigürasyonun her iki taraftaki maça terminalinin yarısını açıkta bıraktığını, matris şapkasının sadece milimetre üzerinde durduğunu (ve birbirinden çok fazla uzakta olmadığını) fark etmiş olabilirsiniz. VE - maça terminalleri çok yakında olacak hem birkaç volt hem de birkaç amperlik Ham Güç taşır. Bu, (ekranın diğer tarafından sorduğunuzu duyabiliyorum) Gerçekten Bunu Yapmanın Doğru Yolu mu? (Yaklaşıp fısıldarsın), İyi Bir Fikir mi?

Ve cevap (omuzlarımı silkerek cevap veriyorum) - hayır, değil. Bunu yapmanın doğru yolu, kürek terminallerini güç kablolarından çıkarmak ve onları o terminal bloğu için doğru konektöre yeniden kıvırmak (veya onları çıplak kablolar olarak bırakıp bloğa konektör olmadan bağlamak) olacaktır. Bunu başaramazsanız, kürek konektörünün açıkta kalan tarafına bir miktar ısıyla daralan makaron koyabilir veya sadece elektrik bandına sarabilirsiniz. Ama dünya düştü ve insan tembel ve kibirli, bu yüzden bunu yapmadım.

Ancak - sarılmış veya açılmamış - kürek terminaller terminal bloğuna bağlıdır ve bir sonraki adıma geçmeye hazırız.

Adım 4: RGB Matrisini Test Edin

Artık Pi'niz ışık panosuna bağlı olduğuna göre, panoyu ters çevirin ve Pi'yi tekrar açın. Pi'yi taktıktan sonra matrix şapkasına güç verebilirsiniz; şapkayı Pi'den önce çalıştırırsanız, Pi yeterli akım olmadan açılmaya çalışacak ve acı bir şekilde şikayet edecektir (ve size bir çekirdek paniği verebilir ve hiç önyükleme yapmayabilir.)

Matrix şapkası takılıyken Pi'yi başlatmakta sorun yaşıyorsanız, Pi için yeterince güçlü bir güç kaynağı kullandığınızdan emin olun (2A+ iyi olmalıdır) ve hem şapka hem de pil için güç kaynağını takmayı deneyin. Pii'yi aynı anahtarlı uzatma kablosuna veya uzatma kablosuna takın ve birlikte açın.

Pi başlatıldığında, matrisleri test etmeye hazırız. Python bağlama örneklerinin bulunduğu yere gidin (cd /rpi-rgb-led-matrix/bindings/python/samples) ve aşağıdaki komutla dönen blok oluşturucuyu deneyin:

sudo./rotating-block-generator.py -m adafruit-hat --led-chain 4

Bunu sudo olarak çalıştırmanız gerekir çünkü matris kitaplığı, başlatma sırasında donanıma düşük düzeyde erişime ihtiyaç duyar. -m, panellerin pi'ye bağlanma şeklini belirtir (bu durumda, bir adafruit şapkası) ve --led-chain - tahmin ettiniz - birlikte kaç paneli zincirlediğimizi belirtir. Panel başına satır ve sütunların her ikisi de varsayılan olarak 32'dir, bu yüzden orada iyiyiz.

Şimdi - programı yürüttüğünüzde, ikisinden biri (veya gerçekten üçünden biri) olacak:

  • Hiçbir şey olmuyor
  • Işık panonuzun ortasında güzel bir dönen blok elde edersiniz.
  • Işık panosu çalışıyor, uh, sanırım, ama… garip görünüyor (yarısı yeşil, bazı satırlar yanmıyor vb.)

Hiçbir şey olmuyorsa veya panel garip görünüyorsa, örnek programdan çıkmak için ctrl+c tuşlarına basın, pi'yi kapatın ve tüm bağlantılarınızı kontrol edin (IDC kablosu, güç, her iki güç kaynağının da takılı olduğundan emin olun, vb.) Ayrıca şapkanın doğru bağlandığından emin olun; bu sorunu çözmezse, bir panele indirin (test ederken --led-chain 1 kullandığınızdan emin olun) ve panellerden birinin bozuk olup olmadığına bakın. BU işe yaramazsa, hzeller'in sorun giderme ipuçlarına bakın. BU HALA işe yaramazsa, /r/raspberry_pi'ye (veya panellerinizi Adafruit'ten aldıysanız Adafruit forumlarına veya yığın değişimi vb.) göndermeyi deneyin.

Bağlantıları kontrol ettikten sonra işe yarıyor ama yine de garip görünüyorsa (belki de bu bölümün başlık görüntüsü gibi), her şeyi doğru bağlamış olabilirsiniz, paneller düzgün çalışıyor, ancak Başka Bir Şey gidiyor olabilir. üzerinde. Bu da bizi bir sonraki adımımıza - bir adımdan çok bir saptırma - çoğullama ve tarama oranlarına götürecek. (Led panonuz iyi çalışıyorsa ve bu panellerin iç işleyişiyle ilgilenmiyorsanız, bir sonraki adımı atlamaktan çekinmeyin.)

Adım 5: Çoğullama ve Tarama Hızları (veya: Mezara Giden Yolda Anlık Bir Sapma)

Bu yüzden, Alibaba'dan ilk panel setimi sipariş ettiğimde yaptığım hatalardan biri, dış mekan panelleri almamdı (neden olmasın, diye düşündüm - su geçirmezler ve daha parlaklar!). Ve onları matrix şapkama bağladığımda işler… doğru değilmiş gibi görünüyordu.

Bunun nedenini anlamak için Adafruit'in bu panellerin nasıl çalıştığına ilişkin açıklamasından Phil Burgess'e bir göz atacağız. Burgess'in, panellerin tüm LED'lerini aynı anda yakmadığını, sıra kümelerini yaktıklarını belirttiğini fark edeceksiniz. Piksel cinsinden panel yüksekliği ile aynı anda yanan satır sayısı arasındaki ilişkiye tarama hızı denir. Bu nedenle, örneğin - 1/16 taramalı 32x32 panelde, iki sıra (1 ve 17, 2 ve 18, 3 ve 19, vb.) aynı anda, kartın sonuna kadar aydınlanır ve ardından denetleyici tekrar eder. RGB matrislerini çalıştıran kitaplıkların çoğu, tarama hızının piksel cinsinden yüksekliğin 1/2'si olduğu paneller için oluşturulmuştur - yani, aynı anda iki sıra LED'i çalıştırırlar.

Dış mekan panelleri (ve bazı iç mekan panelleri - sipariş vermeden önce teknik özelliklere baktığınızdan emin olun) piksel cinsinden yüksekliğin 1/4'ü olan tarama hızlarına sahiptir, bu da aynı anda dört satırın sürülmesini bekledikleri anlamına gelir. Bu onları daha parlak yapar (ki bu iyidir), ancak birçok standart kodun onlarla çalışmamasını sağlar (ki bu kötüdür). Buna ek olarak, doğru pikselleri ele almak için yazılımdaki x ve y değerlerinin dönüştürülmesini gerektiren dahili olarak pikselleri bozuk olma eğilimindedirler. Neden bu şekilde yapılır? Hiç bir fikrim yok. Biliyor musunuz? Eğer öyleyse, lütfen bana söyle. Aksi takdirde, sadece bir sır olarak kalmak zorunda kalacak.

Yani, bu tuhaf dış mekan panellerinden birine sahipseniz, (muhtemelen) şanslısınız! hzeller, yakın zamanda kitaplığına bu tür panellerin ortak konfigürasyonları için destek ekledi. Bununla ilgili daha fazla bilgiyi projenin github sayfasından okuyabilirsiniz, ancak örnek koda --led-multiplexing={0, 1, 2, 3} iletebilirsiniz (ayrıca bir yarım uzunlukta panellerin çift uzunlukta zinciri) ve çalışması gerekir.

Yine de desteklenmeyen bazı piksel dönüştürme kalıpları var - ve (tahmin edin) panellerimde bunlardan biri var! Bu yüzden kendi dönüşüm kodumu yazmam gerekti (ayrıca - her ne sebeple olursa olsun - kütüphaneye birbirine zincirlenmiş sekiz adet 16x32 panelim varmış gibi davranmasını söylemeliyim). aşağıdaki gibidir:

def transformPixels(j, k): effJ = j % 32

effK = k % 32

modY = k

modX = j

#modX ve modY, değiştirilmiş X ve Y'dir;

#effJ ve effK, zorlamadan önce 32x32 matris içinde dönüşüm yaptığımızdan emin olun

eğer ((effJ) > 15):

modX = modX + 16

eğer ((effK) > 7):

modY = modY - 8

modX = modX + 16

eğer ((effK) > 15):

modX = modX - 16

eğer ((effK) > 23):

modY = modY - 8

modX = modX + 16

#Ardından onları doğru konuma itiyoruz (her x+32 bir paneli hareket ettiriyor)

eğer (j > 31):

modX += 32

eğer (j > 63):

modX += 32

eğer (j > 95):

modX += 32

dönüş (modX, modY)

Benimki gibi bir paneliniz varsa, bu işe yarayabilir. Olmazsa, kendinizinkini yazmanız gerekecek - yani, bilirsiniz, iyi şanslar ve tanrısallık.

6. Adım: Sancak Programı (veya: Yola Geri Döndü ve Piksele Hazır)

Artık matrislerinizi çalıştırdığınıza ve gitmeye hazır olduğunuza göre, tek yapmanız gereken sancak programını Pi'nize koymak ve onu gitmeye hazır hale getirmek. Pi kullanıcısının ana dizininde (cd /home/pi) olduğunuzdan emin olun ve aşağıdaki komutu çalıştırın:

git klonu

üç dosya içeren sancak adlı yeni bir klasörünüz olmalıdır: LICENSE.md, README.md ve sancak_s16.py. Sancak programını python üzerinden çalıştırarak deneyin:

sudo python./starboard_s16.py

ve farklı hızlarda hareket eden ve farklı hızlarda bozunan bir grup parçacık elde etmelisiniz. Her 10.000 tıklamada (bunu düzenlemek/değiştirmek için python betiğine gidebilirsiniz) modları değiştirir (dört tane vardır: RGB, HSV, Rainbow ve Greyscale).

Yani, şimdi yapılacak tek şey, başlangıçta sancak kodunu çalıştırmak. Bunu /etc/rc.local ile (sudo ile) düzenleyerek yapacağız. Yapmak istediğiniz şey, komut dosyasında "çıkış 0" dan hemen önce aşağıdaki satırı eklemek:

python /home/pi/sancak/sancak_s16.py &

Bunu yaptıktan sonra, pi'yi yeniden başlatın - başlatma sırasından geçtikten sonra, starboard_s16.py betiği hemen başlamalıdır!

Senaryoda biraz dolaşmak istiyorsanız, bunu yapmaktan çekinmeyin - GNU GPL 3.0 altında lisanslanmıştır. Komut dosyası sizin için çalışmazsa veya onunla ilgili bir sorun yaşarsanız, bana bildirmekten veya github'da bir hata göndermekten çekinmeyin, düzeltmek için ne yapabileceğime bir bakacağım!

Yapmak isteyebileceğiniz (en) son şey, pi'ye SSH kurmaktır, böylece uzaktan girip güvenli bir şekilde kapatabilirsiniz. Parolanızı /kesinlikle/ değiştirmek isteyeceksiniz (passwd komutu aracılığıyla) ve ssh'yi etkinleştirme talimatlarını (ayrıca komut satırından) burada bulabilirsiniz.

Önerilen: