Spisu treści:

RPi 3 na sterburtę / generator cząstek: 6 kroków (ze zdjęciami)
RPi 3 na sterburtę / generator cząstek: 6 kroków (ze zdjęciami)

Wideo: RPi 3 na sterburtę / generator cząstek: 6 kroków (ze zdjęciami)

Wideo: RPi 3 na sterburtę / generator cząstek: 6 kroków (ze zdjęciami)
Wideo: Ep 35 - Dirty Weekend at the Boat! 2024, Lipiec
Anonim
Image
Image
Złóż tablicę LED
Złóż tablicę LED

Czy jesteś znudzony swoim Raspberry Pi? Czy jesteś gotowy, aby dowodzić podstawowymi siłami wszechświata, przyzywając i odrzucając fotony do woli? Czy chcesz po prostu coś ciekawego do powieszenia w swoim salonie, czy wymyślny projekt do opublikowania na Facebooku, aby pokazać Denise, że ostatnio dobrze ci idzie, bardzo dziękuję? Czy jesteś uwięziony w symulacji komputerowej i spędzasz godziny, zanim zostaniesz uwolniony lub usunięty? Jeśli któreś lub wszystkie z nich cię opisują, to [głos prezentera] Witaj!

Ten samouczek pokaże Ci, jak złożyć i skonfigurować wyświetlacz generatora cząstek za pomocą Raspberry Pi 3 i niektórych paneli matrycowych RGB. Powinno to zająć od jednej do dwóch godzin, a gotowy produkt będzie miał wymiary około 30"x8" (bez Pi) i będzie można go zamontować na ścianie. To całkiem fajna dekoracja do salonu, biura, pokoju gier lub gdziekolwiek indziej chcesz go umieścić.

Zanim zaczniesz, oto czego będziesz potrzebować i jakie są przybliżone koszty:

  • Rpi 3 + karta SD + obudowa + zasilacz: 70 USD (od Canakit, ale prawdopodobnie możesz kupić części taniej, jeśli kupisz je osobno).
  • 4x 32x32 RGB LED Matrix (najlepiej p6 indoor z 1/16 skanem): 80-100 USD wysłane na Alibaba lub Aliexpress; 160 USD na Adafruit lub Sparkfun.
  • Czapka Adafruit RGB Matrix: $25
  • Zasilanie 5 V 4 A: 15 USD
  • Klipsy wydrukowane w 3D: $1ish (służą do łączenia paneli i wieszania ich na ścianie; jeśli nie masz dostępu do drukarki 3D, możesz użyć paska z futra, aby utrzymać je razem i kilku wsporników ze sklepu z narzędziami do powiesić go na ścianie. Próbowałem znaleźć dla nich pliki projektowe lub.stls, ale wydaje się, że odeszły od ziemi. Klipy są jednak dość łatwe do modelowania.)
  • 14x śruby M4x10: 5 usd
  • Cztery kable IDC 4x8 i trzy kable zasilające do matryc RGB (nie wiem, jak się one nazywają!). Powinny one być dołączone do paneli LED.
  • Razem: około 200 USD, daj lub bierz.

Projekt nie wymaga lutowania ani specjalnej wiedzy programistycznej; zakłada, że wiesz, jak zapisać obraz na karcie microSD. Jeśli nie masz pewności, jak to zrobić, podstawa Raspberry Pi ma tutaj dobry samouczek.

Zakłada również, że masz podstawową wiedzę o tym, jak robić rzeczy z wiersza poleceń w systemie Linux, a przewodnik po kodzie zakłada, że znasz podstawy Pythona (ale - nie musisz śledzić instrukcji kodu, aby móc budować i uruchom generator cząstek).

Krok 1: złóż tablicę LED

Złóż tablicę LED
Złóż tablicę LED

Najpierw zmontujesz poszczególne panele LED 32x32 w jeden duży panel 128x32. Będziesz musiał spojrzeć na swoje tablice i znaleźć małe strzałki wskazujące kolejność połączeń; na moim są tuż przy złączach IDC HUB75/2x8. Upewnij się, że masz strzałki wskazujące, gdzie Rpi połączy się (z prawej strony na powyższym zdjęciu) na całej długości planszy.

Będziesz także musiał podłączyć kable zasilające. Większość z tych kabli ma dwa złącza żeńskie, które łączą się z płytami i jeden zestaw końcówek widełkowych, które podłącza się do źródła zasilania. Panele z którymi pracuję mają wskaźniki 5V i GND prawie całkowicie schowane pod samymi złączami, ale kable łączą się tylko w jednym kierunku. Będziesz chciał się upewnić, że łączysz wszystkie 5 V razem i wszystkie GND razem, ponieważ jeśli włączysz je do tyłu, prawie na pewno je usmażysz.

Ponieważ kable zasilające dołączone do moich płyt były tak krótkie, musiałem przedłużyć jeden, wkładając bolce końcówki widełkowej do złącza innej (jest to dość proste – być może będziesz musiał zgiąć końcówki widełkowe lekko do wewnątrz, ale ja' na wszelki wypadek dołączyłem zdjęcie). Skończyłem z dwoma zestawami końcówek widełkowych i jednym złączem IDC 2x8 po prawej stronie mojej wydłużonej płytki LED.

Zauważysz też, że na obu końcach deski mam dwie śruby, które nie są przymocowane do niczego; będą one znajdować się na górze, gdy całość zostanie odwrócona, i zostaną użyte do przymocowania jej do ściany.

Tak więc - po połączeniu wszystkich paneli razem z klipsami, kablami 2x8 IDC i kablami zasilającymi, jesteś gotowy, aby przejść do następnego kroku!

Krok 2: Przygotuj Raspberry Pi

Następnie odłożysz tablicę LED (na razie) i przygotujesz Pi 3 do jej uruchomienia. Będziemy używać Raspbian Stretch Lite i biblioteki macierzy RGB hzellera (zamiast biblioteki macierzy Adafruit, która jest starsza i nieutrzymywana).

Najpierw będziesz chciał zapisać obraz Raspbian Lite na karcie SD; kiedy już to zrobisz, podłącz monitor i klawiaturę do pi i uruchom go. (Możesz też zrobić to bez głowy, albo przez ssh, albo przez złącze szeregowe, ale jeśli tak właśnie idziesz, prawdopodobnie nie potrzebujesz, abym ci mówił, jak to zrobić.) Potrzebujesz do tego połączenia z Internetem; Jeśli masz wifi, podłącz Pi do swojej sieci bezprzewodowej, edytując /etc/wpa_supplicant/wpa_supplicant.conf i uruchamiając wpa_cli -i wlan0 reconfigure. (Jeśli nigdy tego nie robiłeś, możesz uzyskać instrukcje tutaj).

Po nawiązaniu połączenia z Internetem zaktualizujemy ustawienia repozytorium dpkg i pobierzemy potrzebne nam biblioteki, uruchamiając następujące polecenia:

aktualizacja sudo apt-get

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

klon git

Teraz musimy skompilować i zainstalować kod macierzy. Więc przejdziesz do folderu zawierającego bibliotekę:

cd rpi-rgb-led-matryca

i skompiluj (może to chwilę potrwać):

make && make build-python

i zainstaluj powiązania Pythona:

sudo make install-python

Jeśli podczas kompilacji kodu biblioteki pojawią się błędy, wróć i upewnij się, że poprawnie zainstalowałeś python-dev i python-pil! Powiązania Pythona nie zostaną skompilowane bez zainstalowanych obu tych pakietów.

Będziesz także musiał wyłączyć wyjście dźwięku swojego Pi (dźwięk na pokładzie koliduje z kodem matrycy), edytując /boot/config.txt. Poszukaj wiersza, który mówi dtparam=audio=on i zmień go na dtparam=audio=off.

Jeśli wszystko skompilowało się dobrze (dostaniesz kilka ostrzeżeń o prototypach Wstrict), twoje pi powinno być gotowe do uruchomienia tablicy macierzy. Śmiało i wyłącz go (sudo shutdown teraz), odłącz go, a w następnym kroku podłączymy tablicę świetlną do pi.

Krok 3: Podłącz Pi + Matrix Hat + tablica LED

Podłącz Pi + Matrix Hat + tablica LED
Podłącz Pi + Matrix Hat + tablica LED

Więc teraz, gdy twoje Pi jest wyłączone i odłączone, podłączmy kapelusz matrycy do pi, a płytkę LED do kapelusza matrycy. Jeśli twoje Pi nie jest jeszcze w tym przypadku, teraz jest dobry moment, aby go tam umieścić.

Zainstaluj czapkę matrycy, dopasowując ją do pinów GPIO na Pi i wciskając ją delikatnie z równomierną siłą po obu stronach. Upewnij się, że piny są ustawione prawidłowo, tak aby żeńskie nagłówki na kapeluszu dokładnie zakrywały piny GPIO na pi. Jeśli go nie dopasujesz, to nie jest katastrofa; po prostu delikatnie ją odciągnij i wyprostuj wszystkie wygięte szpilki.

Po założeniu czapki umieść Pi po prawej stronie zmontowanej płytki LED (sprawdź ponownie połączenia zasilania i upewnij się, że strzałki są skierowane od Pi na całej długości płytki) i podłącz IDC kabel do kapelusza matrycy.

Następnie będziesz chciał podłączyć końcówki widełkowe do zasilania do listwy zaciskowej matrycy. Z każdej strony masz dwa złącza widełkowe, ale oba powinny się tam dobrze zmieścić. Poluzuj najpierw śruby i - To oczywiste - upewnij się, że umieściłeś zaciski 5 V po stronie oznaczonej + (powinny być czerwone, ale - ponownie - sprawdź dokładnie złącza i nie zakładaj, że zostały wykonane prawidłowo) i zaciski GND (powinny być czarne) po stronie oznaczonej -. Gdy już tam będą, dokręć śruby na górze listwy zaciskowej, a powinieneś mieć coś, co wygląda jak obraz nagłówka dla tego kroku.

Teraz – być może zauważyłeś, że ta konkretna konfiguracja pozostawia odkrytą połowę końcówki widełkowej po obu stronach, unoszącą się zaledwie milimetry nad kapeluszem matrycy (i niewiele dalej od siebie). ORAZ – końcówki widełkowe wkrótce będą niosący zarówno kilka woltów, jak i kilka amperów Raw Power. Czy to (słyszę, jak pytasz z drugiej strony ekranu) jest naprawdę WŁAŚCIWYM SPOSOBEM? Czy to jest (pochylasz się bliżej i szepczesz) Dobry Pomysł?

A odpowiedź brzmi (odpowiadam, wzruszając ramionami) – nie, nie jest. Właściwym sposobem na to byłoby zdjęcie końcówek widełkowych z kabli zasilających i ponowne zaciśnięcie ich w odpowiednim złączu dla tego bloku zacisków (lub pozostawienie ich jako gołych przewodów i podłączenie ich bez złącza do bloku). W przeciwnym razie można umieścić rurkę termokurczliwą wokół odsłoniętej strony złącza widełkowego lub po prostu owinąć go taśmą elektryczną. Ale świat upadł, a człowiek jest leniwy i próżny, więc tego nie zrobiłem.

Ale - owinięte lub rozpakowane - zaciski widełkowe są połączone z listwą zaciskową i jesteśmy gotowi, aby przejść do następnego kroku.

Krok 4: Przetestuj macierz RGB

Teraz, gdy twoje Pi jest połączone z tablicą świetlną, odwróć tablicę i włącz ponownie Pi. Możesz zasilać kapelusz matrycy po podłączeniu Pi; jeśli jednak włączysz kapelusz przed Pi, Pi spróbuje uruchomić się z niewystarczającym prądem i będzie gorzko narzekać (i może wywołać panikę jądra i w ogóle się nie uruchamiać).

Jeśli masz problemy z uruchomieniem Pi z założoną czapką matrycy, upewnij się, że używasz wystarczająco mocnego zasilacza dla Pi (2A + powinno być dobre) i spróbuj podłączyć zarówno zasilacz do czapki, jak i do Podłącz do tej samej listwy zasilającej lub przedłużacza i podłącz je razem.

Po uruchomieniu Pi jesteśmy gotowi do testowania macierzy. Przejdź do miejsca, w którym znajdują się próbki wiązania Pythona (cd /rpi-rgb-led-matrix/bindings/python/samples) i wypróbuj generator bloków obrotowych za pomocą następującego polecenia:

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

Musisz uruchomić go jako sudo, ponieważ biblioteka macierzy potrzebuje dostępu do sprzętu na niskim poziomie podczas inicjalizacji. -m określa sposób, w jaki panele są połączone z pi (w tym przypadku kapeluszem adafruit), a --led-chain określa - zgadłeś - ile paneli połączyliśmy razem. Zarówno wiersze, jak i kolumny na panel mają domyślnie 32, więc jesteśmy w tym dobrze.

Teraz - po uruchomieniu programu, wydarzy się jedna z dwóch (a właściwie jedna z trzech) rzeczy:

  • Nic się nie dzieje
  • Otrzymasz ładny obracający się blok na środku swojej tablicy świetlnej.
  • Tablica świetlna działa, tak mi się wydaje, ale wygląda… dziwnie (połowa jest zielona, niektóre rzędy się nie świecą itp.)

Jeśli nic się nie dzieje lub panel wygląda dziwnie, naciśnij ctrl+c, aby wyjść z przykładowego programu, wyłącz pi i sprawdź wszystkie połączenia (kabel IDC, zasilanie, upewnij się, że oba zasilacze są podłączone itp.) Upewnij się również, że czapka jest prawidłowo podłączona; jeśli to nie rozwiąże problemu, przenieś go do jednego panelu (upewnij się, że używasz --led-chain 1 podczas testowania) i sprawdź, czy jeden z paneli może być zły. Jeśli TO nie zadziała, zapoznaj się ze wskazówkami rozwiązywania problemów firmy hzeller. jeśli TO NADAL nie działa, spróbuj opublikować w /r/raspberry_pi (lub na forach Adafruit, jeśli masz panele z Adafruit lub wymiany stosów itp., itp.)

Jeśli to działa, ale nadal wygląda dziwnie (być może jak obraz nagłówka dla tej sekcji) po sprawdzeniu połączeń, możliwe, że wszystko jest prawidłowo podłączone, że panele działają prawidłowo, ale coś jeszcze się dzieje na. Co zaprowadzi nas do następnego kroku - bardziej odwrócenia uwagi niż kroku - w zakresie multipleksowania i szybkości skanowania. (Jeśli twoja tablica led działa dobrze i nie jesteś zainteresowany wewnętrznym działaniem tych paneli, możesz pominąć następny krok.)

Krok 5: Multipleksowanie i szybkość skanowania (lub: Chwilowe przekierowanie na drodze do grobu)

Tak więc jednym z błędów, które popełniłem, kiedy zamówiłem pierwszy zestaw paneli od Alibaba, jest to, że mam panele zewnętrzne (dlaczego nie, pomyślałem - są wodoodporne i jaśniejsze!). A kiedy podłączyłem je do mojego kapelusza matrycy, sprawy wyglądały… nie tak.

Aby zrozumieć, dlaczego tak jest, przyjrzyjmy się Philowi Burgessowi z opisu działania tych paneli autorstwa Adafruit. Zauważysz, że Burgess wskazuje, że panele nie zapalają wszystkich swoich diod naraz – zapalają zestawy rzędów. Zależność między wysokością panelu w pikselach a liczbą wierszy, które zapalają się jednocześnie, nazywa się szybkością skanowania. Na przykład - na panelu 32x32 ze skanowaniem 1/16, dwa rzędy (1 i 17, 2 i 18, 3 i 19, itd.) są podświetlane jednocześnie, aż do końca tablicy, a następnie kontroler powtarza. Większość bibliotek obsługujących macierze RGB jest zbudowana dla paneli, w których szybkość skanowania wynosi 1/2 wysokości w pikselach - to znaczy obsługują dwa rzędy diod LED jednocześnie.

Panele zewnętrzne (i niektóre panele wewnętrzne – przed złożeniem zamówienia upewnij się, że zapoznałeś się ze specyfikacjami) mają szybkość skanowania wynoszącą 1/4 wysokości w pikselach, co oznacza, że oczekują, że będą prowadzone jednocześnie cztery linie. To sprawia, że są jaśniejsze (co jest dobre), ale sprawia, że wiele standardowego kodu nie działa z nimi (co jest złe). Ponadto mają tendencję do wewnętrznego nieprawidłowego porządkowania pikseli, co wymaga przekształcenia wartości x i y w oprogramowaniu, aby zaadresować właściwe piksele. Dlaczego tak się robi? Nie mam pojęcia. Czy wiesz? Jeśli tak, powiedz mi. W przeciwnym razie będzie musiała pozostać tajemnicą.

Tak więc, jeśli masz jeden z tych dziwacznych paneli zewnętrznych, masz (prawdopodobnie) szczęście! hzeller ostatnio dodał do swojej biblioteki obsługę typowych konfiguracji tego typu paneli. Możesz przeczytać więcej na ten temat na stronie github dla projektu, ale możesz przekazać --led-multiplexing={0, 1, 2, 3} do przykładowego kodu (możesz też udawać, że masz łańcuszek o podwójnej długości z połówkowych paneli) i powinien działać.

Istnieją jednak pewne wzorce transformacji pikseli, które nie są obsługiwane - i (zgadnij co) moje panele mają jeden z nich! Musiałem więc napisać własny kod transformacji (z jakiegoś powodu muszę też powiedzieć bibliotece, żeby zachowywała się tak, jakbym miał osiem połączonych ze sobą paneli 16x32). czyli w następujący sposób:

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

effK = k % 32

modY = k

modX = j

#modX i modY to zmodyfikowane X i Y;

#effJ i effK upewnij się, że transformujemy w macierzy 32x32 przed wciśnięciem

jeśli ((effJ) > 15):

modX = modX + 16

jeżeli ((effK) > 7):

modY = modY - 8

modX = modX + 16

jeżeli ((effK) > 15):

modX = modX - 16

jeżeli ((effK) > 23):

modY = modY - 8

modX = modX + 16

#Następnie przesuwamy je we właściwe miejsce (każdy x+32 przesuwa jeden panel)

jeśli (j > 31):

modX += 32

jeśli (j > 63):

modX += 32

jeżeli (j > 95):

modX += 32

powrót (modX, modY)

Jeśli masz panel taki jak mój, może to zadziałać. Jeśli tak się nie stanie, będziesz musiał napisać swój własny - więc wiesz, powodzenia i szybkości.

Krok 6: Program na sterburcie (lub: Powrót na tor i gotowy do piksela)

Teraz, gdy masz już gotowe matryce do pracy, wszystko, co musisz zrobić, to umieścić program na sterburcie na swoim Pi i przygotować go do pracy. Upewnij się, że jesteś w katalogu domowym użytkownika pi (cd /home/pi) i uruchom następujące polecenie:

klon git

powinieneś mieć nowy folder, starboard, który zawiera trzy pliki: LICENSE.md, README.md i starboard_s16.py. Wypróbuj program na sterburcie, uruchamiając go przez Pythona:

sudo python./starboard_s16.py

i powinieneś otrzymać kilka cząstek poruszających się z różnymi prędkościami i rozpadających się z różnymi prędkościami. Co około 10 000 kleszczy (możesz przejść do skryptu Pythona, aby to edytować / zmienić) zmieni tryby (są cztery: RGB, HSV, Rainbow i Skala szarości).

Więc teraz jedyną rzeczą do zrobienia jest uruchomienie kodu na sterburcie przy starcie. Zrobimy to edytując (za pomocą sudo) /etc/rc.local. To, co chcesz zrobić, to dodać następujący wiersz tuż przed „exit 0” w skrypcie:

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

Po wykonaniu tej czynności zrestartuj pi - po uruchomieniu przez sekwencję rozruchową skrypt starboard_s16.py powinien rozpocząć się od razu!

Jeśli chcesz pogrzebać w skrypcie, możesz to zrobić - jest na licencji GNU GPL 3.0. Jeśli skrypt nie działa dla Ciebie lub masz z nim problemy, daj mi znać lub prześlij błąd na github, a zobaczę, co mogę zrobić, aby to naprawić!

Ostatnią (bardzo) rzeczą, którą możesz chcieć zrobić, jest skonfigurowanie SSH na pi, dzięki czemu możesz zdalnie się włączyć i bezpiecznie wyłączyć. Będziesz /zdecydowanie/ chciał zmienić swoje hasło (za pomocą polecenia passwd), a instrukcje włączenia ssh (również z wiersza poleceń) znajdziesz tutaj.

Zalecana: