Inhaltsverzeichnis:

RPi 3 Steuerbord / Partikelgenerator - Gunook
RPi 3 Steuerbord / Partikelgenerator - Gunook

Video: RPi 3 Steuerbord / Partikelgenerator - Gunook

Video: RPi 3 Steuerbord / Partikelgenerator - Gunook
Video: Part 1: Sailboat Arduino Autopilot, selfbuild, Magnetic- / Wind- and Route-Steering 2024, Juli
Anonim
Image
Image
Montieren Sie die LED-Platine
Montieren Sie die LED-Platine

Ist Ihnen Ihr Raspberry Pi langweilig? Bist du bereit, die elementaren Kräfte des Universums zu befehligen und nach Belieben Photonen herbeizurufen und zu entlassen? Möchten Sie nur etwas Interessantes in Ihrem Wohnzimmer hängen oder ein ausgefallenes Projekt auf Facebook posten, um Denise zu zeigen, dass es Ihnen heutzutage gut geht, vielen Dank? Bist du in einer Computersimulation gefangen und verbringst die Stunden, bis du befreit oder gelöscht wirst? Wenn einer oder alle dieser Punkte Sie beschreiben, dann [Stimme des Sprechers] Willkommen!

Dieses Tutorial zeigt Ihnen, wie Sie ein Partikelgenerator-Display mit einem Raspberry Pi 3 und einigen RGB-Matrix-Panels zusammenbauen und einrichten. Es sollte zwischen einer und zwei Stunden dauern, und das fertige Produkt wird ungefähr 30 "x8" groß sein (ohne den Pi) und an der Wand montierbar sein. Es ist eine ziemlich coole Dekoration für ein Wohnzimmer, Büro, Spielzimmer oder wo auch immer Sie es platzieren möchten.

Bevor Sie beginnen, finden Sie hier, was Sie benötigen und wie hoch die ungefähren Kosten sind:

  • Rpi 3 + SD-Karte + Gehäuse + Netzteil: 70 US-Dollar (von Canakit, aber Sie können die Teile wahrscheinlich billiger bekommen, wenn Sie sie separat kaufen.)
  • 4x 32x32 RGB LED Matrix (vorzugsweise p6 Indoor mit 1/16 Scan): $80-$100 versendet auf Alibaba oder Aliexpress; 160 $ für Adafruit oder Sparkfun.
  • Adafruit RGB-Matrix-Hut: $25
  • 5V 4A Netzteil: $15
  • 3D-gedruckte Clips: $ 1ish (diese dienen zum Verbinden der Paneele und zum Aufhängen an der Wand; wenn Sie keinen Zugang zu einem 3D-Drucker haben, können Sie sie mit einer Unterlegleiste zusammenhalten und einige Klammern aus dem Baumarkt verwenden hängen Sie es an die Wand. Ich habe versucht, die Designdateien oder die.stls dafür zu finden, aber sie scheinen aus der Erde gekommen zu sein. Die Clips sind jedoch ziemlich einfach zu modellieren.)
  • 14x M4x10 Schrauben: $5ish
  • Vier 4x8 IDC-Kabel und drei Stromkabel für die RGB-Matrizen (ich weiß nicht, wie diese heißen!). Diese sollten in Ihren LED-Panels enthalten sein.
  • Gesamt: Etwa 200 US-Dollar, geben oder nehmen.

Das Projekt erfordert kein Löten oder spezielle Programmierkenntnisse; Es wird davon ausgegangen, dass Sie wissen, wie man ein Bild auf eine microSD-Karte schreibt. Wenn Sie sich nicht sicher sind, wie das geht, bietet die Raspberry Pi Foundation hier ein gutes Tutorial.

Es wird auch davon ausgegangen, dass Sie über Grundkenntnisse in der Ausführung von Dingen über die Befehlszeile in Linux verfügen, und die Code-Anleitung setzt voraus, dass Sie die Grundlagen von Python kennen (aber Sie müssen die Code-Anleitung nicht befolgen, um in der Lage zu sein, zu erstellen und Führen Sie den Partikelgenerator aus.) Wenn Sie bei einem der Schritte stecken bleiben, können Sie eine Frage stellen oder in / r / raspberry_pi posten (was, wie ich annehme, auch das Hauptpublikum für dieses anweisbare ist)

Schritt 1: Montieren Sie die LED-Platine

Montieren Sie die LED-Platine
Montieren Sie die LED-Platine

Zuerst werden Sie die einzelnen 32x32 LED-Panels zu einem großen 128x32-Panel zusammenbauen. Sie müssen sich Ihre Boards ansehen und die kleinen Pfeile finden, die die Verbindungsreihenfolge anzeigen; bei mir sind sie direkt in der Nähe der HUB75 / 2x8 IDC-Anschlüsse. Stellen Sie sicher, dass die Pfeile von der Stelle aus zeigen, an der sich der Rpi (auf dem Foto oben rechts) entlang der Länge des Boards verbinden wird.

Sie müssen auch die Stromkabel anschließen. Die meisten dieser Kabel haben zwei Buchsen, die an die Platinen angeschlossen werden, und einen Satz Flachstecker, die an die Stromquelle angeschlossen werden. Die Panels, mit denen ich arbeite, haben die Anzeigen für 5V und GND fast vollständig unter den Anschlüssen selbst versteckt, aber die Kabel verbinden sich nur in eine Richtung. Sie sollten sicherstellen, dass Sie alle 5Vs miteinander und alle GNDs miteinander verbinden, denn wenn Sie diese rückwärts betreiben, werden Sie sie mit ziemlicher Sicherheit braten.

Da die mit meinen Boards mitgelieferten Stromkabel so kurz waren, musste ich eines verlängern, indem ich die Zinken des Flachsteckers in den Anschluss eines anderen stecke (Das ist ziemlich einfach - Sie müssen die Flachstecker möglicherweise leicht nach innen biegen, aber ich ' habe für alle Fälle ein Bild beigefügt). Am Ende hatte ich zwei Sätze Spatenklemmen und einen 2x8 IDC-Anschluss rechts von meiner jetzt verlängerten LED-Platine.

Sie werden auch feststellen, dass ich an beiden Enden des Bretts zwei Schrauben habe, die an nichts befestigt sind; Diese befinden sich auf der Oberseite, sobald das Ganze umgedreht wird, und werden verwendet, um es an der Wand zu befestigen.

Sobald Sie also alle Panels mit Clips, 2x8 IDC-Kabeln und Stromkabeln verbunden haben, können Sie mit dem nächsten Schritt fortfahren!

Schritt 2: Bereiten Sie den Raspberry Pi vor

Als nächstes legen Sie die LED-Platine (vorerst) beiseite und machen den Pi 3 betriebsbereit. Wir werden Raspbian Stretch Lite und die RGB-Matrix-Bibliothek von hzeller verwenden (anstelle der Matrix-Bibliothek von Adafruit, die älter und nicht gewartet ist).

Zuerst möchten Sie das Raspbian Lite-Image auf eine SD-Karte schreiben. Sobald Sie dies getan haben, schließen Sie einen Monitor und eine Tastatur an den Pi an und starten Sie ihn. (Sie können dies auch kopflos tun, entweder über ssh oder einen seriellen Anschluss, aber wenn Sie so vorgehen, brauchen Sie wahrscheinlich nicht, dass ich Ihnen sage, wie es geht.) Sie benötigen dafür eine Internetverbindung; Wenn Sie über WLAN verfügen, verbinden Sie den Pi mit Ihrem drahtlosen Netzwerk, indem Sie /etc/wpa_supplicant/wpa_supplicant.conf bearbeiten und wpa_cli -i wlan0 reconfigure ausführen. (Wenn Sie dies noch nie getan haben, können Sie hier eine Anleitung erhalten).

Sobald Sie mit dem Internet verbunden sind, aktualisieren wir die dpkg-Repository-Einstellungen und laden die benötigten Bibliotheken herunter, indem wir die folgenden Befehle ausführen:

sudo apt-get update

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

git-Klon

Jetzt müssen wir den Matrixcode kompilieren und installieren. Sie gehen also in den Ordner, der die Bibliothek enthält:

cd rpi-rgb-led-matrix

und kompilieren (dies kann eine Minute dauern):

make && build-python erstellen

und installiere die Python-Bindungen:

sudo make install-python

Wenn beim Kompilieren des Bibliothekscodes Fehler auftreten, gehen Sie zurück und stellen Sie sicher, dass Sie python-dev und python-pil korrekt installiert haben! Die Python-Bindungen werden nicht kompiliert, ohne dass diese beiden Pakete installiert sind.

Sie müssen auch die Soundausgabe Ihres Pi deaktivieren (der On-Board-Sound stört den Matrixcode), indem Sie /boot/config.txt bearbeiten. Suchen Sie nach der Zeile dtparam=audio=on und ändern Sie sie in dtparam=audio=off.

Wenn alles in Ordnung ist (Sie erhalten ein paar Warnungen zu Wstrict-Prototypen), sollte Ihr Pi bereit sein, das Matrixboard auszuführen. Fahren Sie fort und fahren Sie es herunter (sudo Shutdown jetzt), ziehen Sie es ab, und wir verbinden die Lichtplatine im nächsten Schritt mit dem Pi.

Schritt 3: Verbinden Sie Pi + Matrix Hat + LED-Platine

Verbinden Sie Pi + Matrix-Hut + LED-Platine
Verbinden Sie Pi + Matrix-Hut + LED-Platine

Nun, da Ihr Pi ausgeschaltet und ausgesteckt ist, verbinden wir den Matrixhut mit dem Pi und die LED-Platine mit dem Matrixhut. Wenn Ihr Pi noch nicht in seinem Fall ist, ist jetzt ein guter Zeitpunkt, ihn dort zu platzieren.

Installieren Sie den Matrixhut, indem Sie ihn mit den GPIO-Pins auf dem Pi ausrichten und ihn mit gleichmäßiger Kraft auf beiden Seiten vorsichtig nach unten drücken. Stellen Sie sicher, dass die Pins richtig ausgerichtet sind, so dass die Buchsenleisten auf dem Hut die GPIO-Pins auf dem Pi genau abdecken. Wenn Sie es falsch ausrichten, ist dies keine Katastrophe; Ziehen Sie es einfach vorsichtig zurück und glätten Sie alle Stifte, die sich verbogen haben.

Sobald Sie den Hut aufgesetzt haben, legen Sie das Pi rechts von der zusammengebauten LED-Platine (überprüfen Sie die Stromanschlüsse noch einmal und stellen Sie sicher, dass die Pfeile vom Pi über die Länge der Platine zeigen) und schließen Sie den IDC an Kabel zum Matrixhut.

Als nächstes möchten Sie die Flachstecker für die Stromversorgung mit dem Klemmenblock des Matrixhuts verbinden. Sie haben zwei Kabelschuhe pro Seite, aber sie sollten beide gut hineinpassen. Lösen Sie zuerst die Schrauben und - Dies sollte selbstverständlich sein - stellen Sie sicher, dass Sie die 5V-Klemmen in die mit + gekennzeichnete Seite stecken (diese sollten rot sein, aber - wieder - überprüfen Sie Ihre Stecker und gehen Sie nicht davon aus, dass sie richtig hergestellt wurden) und die GND-Anschlüsse (diese sollten schwarz sein) in der mit - gekennzeichneten Seite. Sobald sie drin sind, ziehen Sie die Schrauben oben auf dem Klemmenblock fest, und Sie sollten etwas haben, das wie das Header-Bild für diesen Schritt aussieht.

Nun - Sie haben vielleicht bemerkt, dass bei dieser speziellen Konfiguration die Hälfte des Spaten-Terminals auf beiden Seiten freiliegt und nur wenige Millimeter über dem Matrixhut schwebt (und nicht sehr viel weiter voneinander entfernt). UND - die Spaten-Terminals werden sehr bald sein die sowohl mehrere Volt als auch mehrere Ampere Raw Power trägt. Ist dies (ich kann Sie von der anderen Seite des Bildschirms fragen) wirklich der richtige Weg, es zu tun? Ist es (du lehnst dich näher und flüsterst) eine gute Idee?

Und die Antwort ist (ich antworte achselzuckend) – nein, ist es nicht. Der richtige Weg, dies zu tun, besteht darin, die Flachstecker von den Stromkabeln abzuisolieren und sie erneut in den richtigen Stecker für diesen Klemmenblock zu crimpen (oder sie als blanke Drähte zu belassen und sie ohne Stecker in den Block anzuschließen). Andernfalls können Sie einen Schrumpfschlauch um die freiliegende Seite des Flachsteckers legen oder ihn einfach in Isolierband einwickeln. Aber die Welt ist gefallen und der Mensch ist faul und eitel, also habe ich das nicht getan.

Aber - verpackt oder unverpackt - die Kabelschuhe sind mit dem Klemmenblock verbunden, und wir sind bereit, zum nächsten Schritt überzugehen.

Schritt 4: Testen Sie die RGB-Matrix

Nachdem Ihr Pi mit der Lichtplatine verbunden ist, drehen Sie die Platine um und schalten Sie den Pi wieder ein. Sie können den Matrixhut mit Strom versorgen, nachdem der Pi eingesteckt ist; Wenn Sie den Hut jedoch vor dem Pi einschalten, versucht der Pi, mit nicht genügend Strom zu booten und wird sich bitter beschweren (und kann zu einer Kernel-Panik führen und überhaupt nicht booten.)

Wenn Sie Probleme haben, den Pi mit dem Matrix-Hut zum Booten zu bringen, stellen Sie sicher, dass Sie ein ausreichend kräftiges Netzteil für den Pi verwenden (2A + sollte gut sein) und versuchen Sie, sowohl das Netzteil für den Hut als auch für das anzuschließen Pii in dieselbe Steckdosenleiste oder dasselbe Verlängerungskabel und schalten Sie sie zusammen ein.

Sobald der Pi gebootet ist, sind wir bereit, die Matrizen zu testen. Gehen Sie zu den Python-Bindungsbeispielen (cd /rpi-rgb-led-matrix/bindings/python/samples) und probieren Sie den rotierenden Blockgenerator mit dem folgenden Befehl aus:

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

Sie müssen es als sudo ausführen, da die Matrixbibliothek bei der Initialisierung Low-Level-Zugriff auf die Hardware benötigt. Das -m gibt an, wie die Panels mit dem Pi verbunden sind (in diesem Fall ein Adafruit-Hut) und die --led-chain gibt - Sie haben es erraten - an, wie viele Panels wir miteinander verkettet haben. Zeilen und Spalten pro Panel sind beide standardmäßig auf 32, also sind wir gut darin.

Nun - sobald Sie das Programm ausgeführt haben, wird eines von zwei (oder wirklich eines von drei) Dingen passieren:

  • Nichts passiert
  • Sie erhalten einen schönen rotierenden Block in der Mitte Ihres Lichtboards.
  • Die Lichttafel funktioniert, ähm, denke ich, aber sie sieht … komisch aus (die Hälfte ist grün, einige Reihen leuchten nicht usw.)

Wenn nichts passiert oder das Panel seltsam aussieht, drücken Sie Strg+C, um das Beispielprogramm zu beenden, fahren Sie den Pi herunter und überprüfen Sie alle Ihre Verbindungen (IDC-Kabel, Stromversorgung, stellen Sie sicher, dass beide Netzteile angeschlossen sind usw.) Stellen Sie außerdem sicher, dass der Hut richtig angeschlossen ist; Wenn dies nicht behoben wird, nehmen Sie es auf ein Panel herunter (stellen Sie sicher, dass Sie beim Testen --led-chain 1 verwenden) und sehen Sie, ob eines der Panels fehlerhaft ist. Wenn DAS nicht funktioniert, lesen Sie die Tipps zur Fehlerbehebung von hzeller. wenn DAS NOCH nicht funktioniert, posten Sie auf /r/raspberry_pi (oder in den Adafruit-Foren, wenn Sie Ihre Panels von Adafruit erhalten haben, oder Stack Exchange usw.)

Wenn es irgendwie funktioniert, aber immer noch seltsam aussieht (vielleicht wie das Header-Bild für diesen Abschnitt), nachdem Sie die Verbindungen überprüft haben, ist es möglich, dass Sie alles richtig angeschlossen haben, dass die Panels ordnungsgemäß funktionieren, aber dass etwas anderes geht An. Was uns zu unserem nächsten Schritt führen wird – mehr eine Ablenkung als ein Schritt – bei Multiplexing und Abtastraten. (Wenn Ihre LED-Platine einwandfrei funktioniert und Sie nicht am Innenleben dieser Panels interessiert sind, können Sie den nächsten Schritt überspringen.)

Schritt 5: Multiplexing und Scanraten (oder: eine vorübergehende Umleitung auf dem Weg zum Grab)

Einer der Fehler, die ich gemacht habe, als ich meinen ersten Satz Panels bei Alibaba bestellt habe, ist, dass ich Outdoor-Panels bekommen habe (warum nicht, dachte ich - sie sind wasserdicht und heller!). Und als ich sie an meinen Matrix-Hut angeschlossen habe, sahen die Dinge… nicht richtig aus.

Um zu verstehen, warum das so ist, nehmen wir uns eine Minute Zeit, um uns Phil Burgess aus Adafruits Beschreibung der Funktionsweise dieser Panels anzusehen. Sie werden feststellen, dass Burgess darauf hinweist, dass die Panels nicht alle LEDs gleichzeitig aufleuchten - sie leuchten Reihen von Reihen auf. Das Verhältnis zwischen der Panelhöhe in Pixeln und der Anzahl der Zeilen, die gleichzeitig aufleuchten, wird als Scanrate bezeichnet. Also zum Beispiel - Auf einem 32x32-Panel mit 1/16-Scan werden zwei Reihen (1 und 17, 2 und 18, 3 und 19 usw.) gleichzeitig auf der gesamten Platine beleuchtet, und dann wiederholt sich der Controller. Die meisten Bibliotheken, die RGB-Matrizen ansteuern, sind für Panels gebaut, bei denen die Abtastrate die Hälfte der Höhe in Pixeln beträgt – das heißt, sie treiben zwei Reihen von LEDs gleichzeitig an.

Outdoor-Panels (und einige Indoor-Panels - sehen Sie sich vor der Bestellung unbedingt die Spezifikationen an) haben Scanraten von 1/4 der Höhe in Pixeln, was bedeutet, dass sie erwarten, dass vier Zeilen gleichzeitig angesteuert werden. Dies macht sie heller (was gut ist), aber viele Standardcodes funktionieren nicht mit ihnen (was schlecht ist). Darüber hinaus neigen sie dazu, die Pixel intern nicht in Ordnung zu bringen, was eine Transformation der x- und y-Werte in der Software erfordert, um die richtigen Pixel zu adressieren. Warum sind die so gemacht? Ich habe keine Ahnung. Wissen Sie? Wenn ja, sagen Sie es mir bitte. Sonst muss es nur ein Geheimnis bleiben.

Wenn Sie also eines dieser verrückten Outdoor-Panels haben, haben Sie (wahrscheinlich) Glück! hzeller hat kürzlich seine Bibliothek um Unterstützung für gängige Konfigurationen dieser Art von Panels erweitert. Sie können mehr darüber auf der Github-Seite des Projekts lesen, aber Sie können --led-multiplexing={0, 1, 2, 3} an den Beispielcode übergeben (Sie müssen möglicherweise auch so tun, als hätten Sie ein doppelte Kette von halblangen Platten) und es sollte funktionieren.

Es gibt jedoch einige Pixeltransformationsmuster, die nicht unterstützt werden - und (raten Sie mal) meine Panels haben eines davon! Also musste ich meinen eigenen Transformationscode schreiben (ich muss auch - aus welchen Gründen auch immer - der Bibliothek sagen, dass sie sich so verhalten soll, als hätte ich acht 16x32-Panels miteinander verkettet). das ist wie folgt:

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

effK = k % 32

modY = k

modX = j

#modX und modY sind die modifizierten X und Y;

#effJ und effK stellen sicher, dass wir innerhalb einer 32x32-Matrix transformieren, bevor wir pushen

wenn ((effJ) > 15):

modX = modX + 16

wenn ((effK) > 7):

modY = modY - 8

modX = modX + 16

wenn ((effK) > 15):

modX = modX - 16

wenn ((effK) > 23):

modY = modY - 8

modX = modX + 16

#Dann schieben wir sie an die richtige Stelle (jedes x+32 verschiebt ein Panel)

wenn (j > 31):

modX += 32

wenn (j > 63):

modX += 32

wenn (j > 95):

modX += 32

zurück (modX, modY)

Wenn Sie ein Panel wie meines haben, könnte dies dafür funktionieren. Wenn dies nicht der Fall ist, müssen Sie Ihre eigenen schreiben - also viel Glück und viel Erfolg.

Schritt 6: Das Steuerbord-Programm (oder: Zurück auf der Strecke und bereit für Pixel)

Jetzt, da Sie Ihre Matrizen betriebsbereit und einsatzbereit haben, müssen Sie nur noch das Steuerbord-Programm auf Ihren Pi legen und ihn betriebsbereit machen. Stellen Sie sicher, dass Sie sich im Home-Verzeichnis des pi-Benutzers befinden (cd /home/pi) und führen Sie den folgenden Befehl aus:

git-Klon

Sie sollten einen neuen Ordner, starboard, haben, der drei Dateien enthält: LICENSE.md, README.md und starboard_s16.py. Probieren Sie das Steuerbord-Programm aus, indem Sie es über Python ausführen:

sudo python./starboard_s16.py

und Sie sollten einen Haufen Partikel erhalten, die sich mit unterschiedlichen Geschwindigkeiten bewegen und mit unterschiedlichen Geschwindigkeiten zerfallen. Alle 10.000 Ticks oder so (Sie können in das Python-Skript gehen, um dies zu bearbeiten / zu ändern) wird der Modus geändert (es gibt vier: RGB, HSV, Rainbow und Greyscale).

Jetzt müssen Sie nur noch den Steuerbord-Code beim Start ausführen. Dazu bearbeiten wir (mit sudo) /etc/rc.local. Was Sie tun möchten, ist die folgende Zeile direkt vor "exit 0" in das Skript einzufügen:

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

Nachdem Sie dies getan haben, starten Sie das Pi neu - sobald es die Boot-Sequenz durchlaufen hat, sollte das Skript starboard_s16.py sofort starten!

Wenn Sie im Skript herumstöbern möchten, können Sie dies gerne tun - es ist unter der GNU GPL 3.0 lizenziert. Wenn das Skript für Sie nicht ausgeführt wird oder Sie Probleme damit haben, können Sie es mir gerne mitteilen oder einen Fehler auf github einreichen, und ich werde sehen, was ich tun kann, um ihn zu beheben!

Das (ganz) letzte, was Sie vielleicht tun möchten, ist SSH auf dem Pi einzurichten, damit Sie es remote einbinden und sicher herunterfahren können. Sie werden /definitiv/ Ihr Passwort ändern wollen (über den Befehl passwd), und Anweisungen zum Aktivieren von ssh (auch über die Befehlszeile) finden Sie hier.

Empfohlen: