Mündəricat:

RPi 3 Starboard / Particle Generator: 6 Addım (Şəkillərlə birlikdə)
RPi 3 Starboard / Particle Generator: 6 Addım (Şəkillərlə birlikdə)

Video: RPi 3 Starboard / Particle Generator: 6 Addım (Şəkillərlə birlikdə)

Video: RPi 3 Starboard / Particle Generator: 6 Addım (Şəkillərlə birlikdə)
Video: Stepping into the Future: Linnaeus University's IoT & AI Live Stream Marathon⚡🤩 2024, Iyun
Anonim
Image
Image
LED lövhəsini yığın
LED lövhəsini yığın

Raspberry Pi ilə cansıxıcı hiss edirsiniz? Fotonun istədiyi kimi çağıraraq yox edərək, kainatın elementar qüvvələrinə əmr verməyə hazırsınızmı? Yalnız oturma otağınızda maraqlı bir şeyin asılmasını və ya Denise bu günlərdə çox yaxşı işlər gördüyünüzü göstərmək üçün feysbukda yayımlanacaq bir fantastik layihə istəyirsiniz, çox sağ olun? Bir kompüter simulyasiyasında sıxışırsınız və azad olunana və ya silinənə qədər saatlarla uzağa gedirsiniz? Bunlardan biri və ya hamısı sizi təsvir edirsə, [diktor səsi] Xoş gəldiniz!

Bu dərslik, Raspberry Pi 3 və bəzi RGB matris panellərindən istifadə edərək hissəcik generatoru ekranının necə qurulacağını və qurulacağını sizə göstərəcək. Sizə bir ilə iki saat arasında vaxt lazımdır və hazır məhsul təxminən 30 "x8" (Pi daxil deyil) və divara bərkidiləcək. Qonaq otağı, ofis, oyun otağı və ya başqa yerə qoymaq istədiyiniz yerdə olduqca gözəl bir bəzək yaradır.

İşə başlamazdan əvvəl ehtiyacınız olan şeylər və təxmini xərclər bunlardır:

  • Rpi 3 + SD Kart + Kasa + Güc Təchizatı: 70 dollar (Canakit -dən, lakin hissələri ayrıca satın alsanız çox güman ki, daha ucuz əldə edə bilərsiniz.)
  • 4x 32x32 RGB LED Matrix (tercihen 1/16 tarama ilə p6 qapalı): Alibaba və ya Aliexpress-də göndərilən $ 80- $ 100; Adafruit və ya Sparkfun üçün 160 dollar.
  • Adafruit RGB Matrix şapka: 25 dollar
  • 5V 4A enerji təchizatı: 15 dollar
  • 3D çaplı kliplər: 1 dollar (bunlar panelləri birləşdirmək və divara asmaq üçündür; 3D printerə çıxışınız yoxdursa, onları bir araya gətirmək üçün tırtıllı zolaqdan və hardware mağazasından bəzi mötərizələrdən istifadə edə bilərsiniz. divardan asın. Bunun üçün dizayn sənədlərini və ya.stls tapmağa çalışdım, amma deyəsən yer üzündən keçiblər. Klipləri modelləşdirmək olduqca asandır.)
  • 14x M4x10 boltlar: 5 dollar
  • Dörd 4x8 IDC kabeli və RGB matrisləri üçün üç güc kabeli (bunların nə adlandırıldığını bilmirəm!). Bunlar LED panellərinizə daxil edilməli idi.
  • Cəmi: Təxminən 200 dollar, verin və ya alın.

Layihə lehimləməyinizi və ya xüsusi proqramlaşdırma biliklərinizə malik olmağınızı tələb etmir; Bir microSD kartına bir şəkil yazmağı bildiyinizi güman edir. Bunu necə edəcəyinizi bilmirsinizsə, Raspberry Pi fondunun burada yaxşı bir dərsliyi var.

Linux -da əmr satırından işlərin necə aparılacağına dair əsas biliklərə sahib olduğunuzu da güman edir və kodun keçidi Python -un əsaslarını bildiyinizi güman edir (lakin - qurmaq və öyrənmək üçün kod təlimatına əməl etməyinizə ehtiyac yoxdur. hissəcik generatorunu işlədin.) Hər hansı bir addımda ilişib qalmısınızsa, /r /raspberry_pi -də bir sual verməkdən və ya yazmaqdan çekinmeyin (mən də bu təlimatın əsas auditoriyasını güman edirəm)

Addım 1: LED lövhəsini yığın

LED lövhəsini yığın
LED lövhəsini yığın

Birincisi, fərdi 32x32 LED panellərini bir böyük 128x32 panelə yığacaqsınız. Lövhələrinizə baxmaq və əlaqə qaydasını göstərən kiçik oxları tapmaq lazımdır; mənim tərəfimdə HUB75/2x8 IDC konnektorlarının yaxınlığındadır. Rpi -nin bağlandığı yerdən (yuxarıdakı fotoşəkildə sağa doğru) lövhənin uzunluğunu göstərən oxların olduğuna əmin olun.

Elektrik kabellərini də bağlamalısınız. Bu kabellərin çoxunda lövhələrə yapışan iki qadın konnektoru və enerji mənbəyinə bərkidilən bir kürək terminali var. İşlədiyim panellərdə 5V və GND göstəriciləri demək olar ki, tamamilə bağlayıcıların altında gizlənir, ancaq kabellər yalnız bir istiqamətə bağlanır. Bütün 5V -ləri və bütün GND -ləri bir -birinə bağladığınızdan əmin olmaq istəyəcəksiniz, çünki bu geriyə güc versəniz, demək olar ki, qızardacaqsınız.

Lövhələrimə daxil olan elektrik kabelləri çox qısa olduğu üçün, maşının ucunu digərinin bağlayıcısına daxil edərək birini uzatmaq məcburiyyətində qaldım (Bu olduqca sadədir - kürək uclarını bir az içəri əymək məcburiyyətindəsiniz, amma mən ' hər halda bir şəkil əlavə etdim). İndi uzadılmış LED lövhəmin sağında iki dəst kürək terminalı və bir 2x8 IDC konnektoru ilə sona çatdım.

Lövhənin hər iki ucunda heç bir şeyə bərkidilməyən iki boltum olduğunu da görəcəksiniz; hər şey çevrildikdən sonra bunlar yuxarıda olacaq və divara yapışdırmaq üçün istifadə olunacaq.

Beləliklə, bütün panelləri kliplər, 2x8 IDC kabelləri və elektrik kabelləri ilə birləşdirdikdən sonra növbəti mərhələyə keçməyə hazırsınız!

Addım 2: Raspberry Pi hazırlayın

Sonra, LED lövhəni bir kənara qoyub Pi 3 -ü işə salmağa hazırlayacaqsınız. Raspbian Stretch Lite və hzeller -in RGB matris kitabxanasından istifadə edəcəyik (köhnə və baxımsız olan Adafruit -in matris kitabxanasından çox).

Birincisi, Raspbian Lite şəklini SD karta yazmaq istəyəcəksiniz; Bunu etdikdən sonra, bir monitor və klaviaturanı pi -yə qoşun və işə salın. (Bunu ya başsız edə bilərsiniz, ya ssh üzərindən, ya da seriyalı bağlayıcıdan, amma bu yolla gedirsinizsə, yəqin ki, bunu necə edəcəyimi sizə deməyim lazım deyil.) Bunun üçün internet bağlantısına ehtiyacınız olacaq.; Wi -Fi varsa, /etc/wpa_supplicant/wpa_supplicant.conf redaktə edərək wpa_cli -i wlan0 yenidən konfiqurasiya edərək Pi -ni simsiz şəbəkənizə qoşun. (Bunu heç etməmisinizsə, təlimatları buradan əldə edə bilərsiniz).

İnternetə qoşulduqdan sonra, dpkg depo parametrlərini yeniləyəcəyik və aşağıdakı əmrləri yerinə yetirərək ehtiyacımız olan kitabxanaları yükləyəcəyik:

sudo apt-get yeniləməsi

sudo apt-get install python-dev python-pil yükləyin

git klonu

İndi matris kodunu tərtib etməliyik. Beləliklə, kitabxananın olduğu qovluğa girəcəksiniz:

cd rpi-rgb-led-matrix

və tərtib edin (bu bir dəqiqə çəkə bilər):

build & python qurun

və python bağlarını quraşdırın:

sudo install-python edir

Kitabxana kodunu tərtib edərkən hər hansı bir səhv alırsınızsa, geri qayıdın və python-dev və python-pil-i düzgün qurduğunuzdan əmin olun! Python bağlamaları, hər iki paket də quraşdırılmadan tərtib edilməyəcək.

/Boot/config.txt faylını redaktə edərək Pi-nin səs çıxışını (təyyarədəki səs matris koduna müdaxilə edir) deaktiv etməlisiniz. Dtparam = audio = on deyən xətti axtarın və onu dtparam = audio = off olaraq dəyişdirin.

Hər şey qaydasındadırsa (Wstrict-protoypes haqqında bir neçə xəbərdarlıq alacaqsınız), pi matris lövhəsini işə salmağa hazır olmalıdır. Davam edin və bağlayın (indi sudo bağlayın), ayırın və növbəti addımda işıq lövhəsini pi -yə bağlayacağıq.

Addım 3: Pi + Matrix Hat + LED Lövhəsini birləşdirin

Pi + Matrix Hat + LED lövhəsini birləşdirin
Pi + Matrix Hat + LED lövhəsini birləşdirin

Beləliklə, indi Pi -niz söndürüldükdə və çıxarıldıqda, matris şapkasını pi -yə və LED lövhəni matris şapkasına bağlayaq. Pi'niz artıq vəziyyətində deyilsə, onu oraya qoymaq üçün yaxşı vaxtdır.

Matris şapkasını Pi üzərindəki GPIO pinləri ilə düzəldərək hər iki tərəfdən bərabər güclə yumşaq bir şəkildə aşağı itələyərək quraşdırın. Şapka üzərindəki dişi başlıqların pi üzərindəki GPIO sancaqlarını tam olaraq örtməsi üçün sancaqların düzgün düzülmüş olduğundan əmin olun. Yanlış hizalasanız, bu fəlakət deyil; yavaşca geri çəkin və əyilmiş hər hansı bir sancağı düzəldin.

Şapka taxdıqdan sonra, yığılmış LED lövhənin sağına Pi qoyun (güc əlaqələrini yenidən yoxlayın və oxların Pi -dən lövhənin uzunluğuna doğru yönəldiyini yoxlayın) və IDC -ni bağlayın. matris şapkasına kabel.

Daha sonra, güc üçün kürək terminallərini matris şapkasının terminal blokuna bağlamaq istəyəcəksiniz. Hər tərəfdə iki kürək bağlayıcı var, amma hər ikisi də oraya yaxşı oturmalıdır. Əvvəlcə vintləri gevşetin və - Bu, deməyə ehtiyac yoxdur - 5V terminallarını + etiketli tərəfə qoyduğunuzdan əmin olun (bunlar qırmızı olmalıdır, amma - yenə - bağlayıcılarınızı iki dəfə yoxlayın və düzgün istehsal edildiyini düşünməyin) və etiketli tərəfdəki GND terminalları (bunlar qara olmalıdır). İçəridə olduqdan sonra terminal blokunun üstündəki vintləri sıxın və bu addım üçün başlıq şəklinə bənzəyən bir şeyə sahib olmalısınız.

İndi - bəlkə də bu xüsusi konfiqurasiyanın hər iki tərəfdəki kürək terminalının yarısını açıq buraxdığını və matris şapkasının üstündən sadəcə milimetr (və bir -birindən çox da uzaqda deyil) qaldığını və - kürək terminallarının çox yaxında həm bir neçə volt, həm də bir neçə amper Raw Power daşıyır. Bu, (ekranın digər tərəfindən soruşduğunuzu eşidirəm) həqiqətən bunu etməyin doğru yoludur? Yaxşı bir fikirdir (yaxınlaşıb pıçıldayırsan)?

Və cavab budur (çiyinlərimi çəkərək cavab verirəm) - yox, belə deyil. Bunu etmək üçün ən doğru yol, məftil terminallarını elektrik kabellərindən ayırmaq və yenidən həmin terminal bloku üçün düzgün konnektora sıxmaqdır (və ya onları çılpaq tellər olaraq qoyub konnektora bağlamadan bağlamaq). Əks təqdirdə, konnektorun açıq tərəfinin ətrafına bir az istilik borusu qoya bilərsiniz və ya sadəcə elektrik lentinə sarın. Ancaq dünya yıxıldı və insan tənbəl və boş yerə, buna görə mən bunu etməmişəm.

Ancaq - bükülmüş və ya açılmamış - kürək terminalları terminal blokuna bağlıdır və növbəti mərhələyə keçməyə hazırıq.

Addım 4: RGB Matrisini sınayın

Pi'iniz işıq lövhəsinə bağlandığı üçün lövhəni çevirin və Pi'yi yenidən açın. Pi bağlandıqdan sonra matris şapkasını işə sala bilərsiniz; Şapkanı Pi -dən əvvəl gücləndirsəniz, Pi kifayət qədər cərəyan olmadan yükləməyə çalışacaq və acı -acı şikayət edəcək (və sizə heç bir açılış çaxnaşması verə bilər.)

Pi -ni matris şapka ilə açmaqda çətinlik çəkirsinizsə, Pi üçün kifayət qədər səssiz bir enerji təchizatı istifadə etdiyinizə əmin olun (2A+ yaxşı olmalıdır) və həm şapka, həm də Eyni elektrik zolağına və ya uzatma kabelinə bağlayın və onları birlikdə gücləndirin.

Pi açıldıqdan sonra matrisləri sınamağa hazırıq. Python bağlama nümunələrinin olduğu yerə gedin (cd/rpi-rgb-led-matrix/bindings/python/nümunələri) və aşağıdakı əmrlə fırlanan blok generatorunu sınayın:

sudo./rotating-block-generator.py -m adafruit-papaq --ed-zəncir 4

Matris kitabxanasının başlanğıcda aparata aşağı səviyyəli girişə ehtiyacı olduğu üçün bunu sudo olaraq işləməlisiniz. -M, panellərin pi -yə (bu halda, adafruit şapka) necə bağlanacağını və -zəncirinin -siz təxmin etdiyinizi -neçə paneli birlikdə zəncirlədiyimizi göstərir. Panel başına satır və sütun hər ikisi standart olaraq 32 -dir, buna görə də oradayıq.

İndi - proqramı yerinə yetirdikdən sonra iki (və ya həqiqətən də üçdən biri) hadisələr baş verəcək:

  • Heç nə olmur
  • İşıq lövhənizin ortasında gözəl bir fırlanan blok alırsınız.
  • İşıq lövhəsi işləyir, məncə, amma qəribə görünür (yarısı yaşıldır, bəzi cərgələr yanmır və s.)

Heç bir şey olmazsa və ya panel qəribə görünsə, nümunə proqramından çıxmaq üçün ctrl+c düymələrini basın, pi -ni bağlayın və bütün əlaqələrinizi yoxlayın (IDC kabeli, güc, hər iki enerji təchizatının qoşulduğundan əmin olun və s.) Şapkanın düzgün bağlandığından da əmin olun; bunu düzəltmirsə, onu bir panelə endirin (sınayarkən-led-chain 1 istifadə etdiyinizə əmin olun) və panellərdən birinin pis ola biləcəyinə baxın. Bu kömək etmirsə, hzeller -in problemlərini həll etmək üçün tövsiyələrinə baxın. Hələ də işləmirsə, /r /raspberry_pi (və ya panellərinizi Adafruitdən və ya yığın mübadiləsi və s.

Əlaqələri yoxladıqdan sonra bir növ işləyir, amma yenə də qəribə görünürsə (bəlkə də bu bölmənin başlıq şəkli kimi), hər şeyin düzgün bir şəkildə bağlanması, panellərin düzgün işləməsi mümkündür, amma başqa bir şey gedir üzərində Hansı bizi növbəti addımımıza aparacaq - bir addımdan daha çox bir sapma - multipleksləmə və tarama nisbətləri. (Led lövhəniz yaxşı işləyirsə və bu panellərin daxili işləri ilə maraqlanmırsınızsa, növbəti addımı atmaqdan çekinmeyin.)

Addım 5: Çarpma və Tarama dərəcələri (və ya: Qəbrə gedən yolda bir anlıq sapma)

Beləliklə, Alibaba'dan ilk panellərimi sifariş edərkən etdiyim səhvlərdən biri də açıq panellər aldığımdır (niyə olmasın deyə düşündüm - onlar suya davamlıdır və daha parlaqdır!). Onları matris şapkama bağladığımda işlər düzgün görünmürdü.

Bunun niyə olduğunu başa düşmək üçün Adafruit -in bu panellərin necə işlədiyini izah edən Phil Burgess -ə baxmaq üçün bir dəqiqə çəkəcəyik. Qeyd edəcəksiniz ki, Burgess, panellərin bütün LED -lərini bir anda yandırmadığını - satır dəstələrini işıqlandırdığını qeyd edir. Panelin piksel hündürlüyü ilə bir anda yanan satır sayı arasındakı əlaqəyə tarama sürəti deyilir. Beləliklə, məsələn - 1/16 taramalı 32x32 paneldə, iki satır (1 və 17, 2 və 18, 3 və 19 və s.) Lövhənin aşağı hissəsinə qədər bir anda yanır və sonra nəzarətçi təkrarlayır.. RGB matrislərini idarə edən əksər kitabxanalar, tarama sürətinin piksellərin hündürlüyünün 1/2 hissəsi olduğu panellər üçün qurulmuşdur - yəni bir anda iki sıra LED idarə edirlər.

Xarici panellər (və bəzi daxili panellər - sifariş verməzdən əvvəl xüsusiyyətlərə baxdığınızdan əmin olun), tarama sürətinin piksellərin hündürlüyünün 1/4 -ə bərabərdir, yəni eyni anda dörd xəttin çəkiləcəyini gözləyirlər. Bu, onları daha parlaq edir (bu yaxşıdır), lakin bir çox standart kodun onlarla işləməməsinə səbəb olur (pisdir). Buna əlavə olaraq, pikselləri daxili olaraq sıradan çıxarmağa meyllidirlər ki, bu da düzgün pikselləri həll etmək üçün proqramdakı x və y dəyərlərinin dəyişdirilməsini tələb edir. Niyə bu şəkildə yaradılıb? Heç bir fikrim yoxdur Siz bilirsiniz? Əgər belədirsə, mənə deyin. Əks təqdirdə bir sirr olaraq qalacaq.

Beləliklə, bu qəribə açıq hava panellərindən birinizə sahibsinizsə, (yəqin ki) şanslısınız! hzeller bu yaxınlarda kitabxanasına bu tip panellərin ümumi konfiqurasiyaları üçün dəstək əlavə etdi. Layihə üçün github səhifəsində bu barədə daha çox oxuya bilərsiniz, ancaq --led-multiplexing = {0, 1, 2, 3} kodunu nümunə koduna keçirə bilərsiniz (sizdə elə bil yarım uzunluqlu panellərin iki uzunluqlu zənciri) və işləməlidir.

Dəstəklənməyən bəzi piksel çevrilmə nümunələri var və panellərimdə onlardan biri var! Beləliklə, öz çevrilmə kodumu yazmalı oldum (mən də - hər hansı bir səbəbdən - kitabxanaya 16x32 səkkiz lövhənin bir -birinə bağlanmış kimi hərəkət etməsini söyləməliyəm). bu belədir:

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

effK = k % 32

modY = k

modX = j

#modX və modY dəyişdirilmiş X və Y -dir;

#effJ və effK itələmədən əvvəl 32x32 matris daxilində çevrildiyimizdən əmin olun

əgər ((effJ)> 15):

modX = modX + 16

əgər ((effK)> 7):

modY = modY - 8

modX = modX + 16

əgər ((effK)> 15):

modX = modX - 16

əgər ((effK)> 23):

modY = modY - 8

modX = modX + 16

#Sonra onları doğru yerə itələyirik (hər x+32 bir paneli hərəkət etdirir)

əgər (j> 31):

modX += 32

əgər (j> 63):

modX += 32

əgər (j> 95):

modX += 32

qayıt (modX, modY)

Mənim kimi bir paneliniz varsa, bunun üçün işləyə bilər. Əgər belə deyilsə, özünüz yazmalısınız - buna görə də uğurlar və uğurlar diləyirəm.

Addım 6: Ulduz lövhəsi Proqramı (və ya: Yolda və Pikseldə Hazır)

Matrislerinizi işə saldıqdan və işə hazır olduğunuzdan sonra, sancaq proqramını Pi -yə qoyub işə hazırlamaq kifayətdir. Pi istifadəçinin ev qovluğunda olduğunuzdan əmin olun (cd /home /pi) və aşağıdakı əmri işlədin:

git klonu

LICENSE.md, README.md və starboard_s16.py adlı üç fayl olan yeni bir qovluğa, sancağa sahib olmalısınız. Sancaq proqramını python vasitəsilə işlədərək sınayın:

sudo python./starboard_s16.py

və fərqli sürətlərdə hərəkət edən və fərqli nisbətlərdə çürüyən bir dəstə hissəcik almalısınız. Hər 10 000 gənə (və ya bunu dəyişdirmək üçün python skriptinə daxil ola bilərsiniz) rejimi dəyişdirəcək (dörd var: RGB, HSV, Rainbow və Greyscale).

Beləliklə, indi qalan tək şey, başlanğıcda sancaq kodunu işə salmaqdır. Bunu (sudo ilə) /etc/rc.local redaktə edərək edəcəyik. Nə etmək istəsəniz, skriptdə "0 -dan çıxmadan" əvvəl aşağıdakı sətri əlavə edin:

python /home/pi/starboard/starboard_s16.py &

Bunu etdikdən sonra, pi -ni yenidən başladın - açılış ardıcıllığından keçdikdən sonra, starboard_s16.py skripti dərhal başlamalıdır!

Ssenari ətrafında gəzmək istəyirsinizsə, bunu etməkdən çekinmeyin - GNU GPL 3.0 altında lisenziyalıdır. Ssenari sizin üçün işləməyəcəksə və ya probleminiz varsa, mənə bildirin və ya github -da bir səhv göndərin və onu düzəltmək üçün nə edə biləcəyimi görəcəyəm!

Etmək istəyə biləcəyiniz son şey, SSH -ni pi -də qurmaqdır ki, uzaqdan girib təhlükəsiz şəkildə bağlaya biləsiniz. Şifrənizi dəyişdirmək istəyəcəksiniz (passwd əmri ilə) və burada ssh -in (həmçinin əmr satırından) işə salınması üçün təlimatları tapa bilərsiniz.

Tövsiyə: