Ledcube
Project Ledcube | |
---|---|
Een kubus van ledpanelen. 24.576 pixels! | |
Status | In progress |
Contact | Sebastius, Polyfloyd, Boekenwuurm |
Last Update | 2018-01-14 |
We gaan kubussen maken met heel veel ledjes! Geïnspireerd door wat we zagen op 34C3 zijn we van plan drie kubussen te bouwen, elk met 6 x 64x64 pixels. 24.576 RGB pixels! Er zijn nog wat puzzels op te lossen qua software en stroomvoorziening.
Materialen
- 6x Hub75 compatible paneeltjes, 16x16cm, P2.5, 64x64 pixels RGB
- 1x http://www.electrodragon.com/product/rgb-matrix-panel-drive-board-raspberry-pi/
- 1x Raspberry Pi 3
En vast nog veel meer :)
Tekeningen
- Ledpaneel van achter gezien met dimensies: Media:Ledcube P25.jpg
- Flightcase voor de ledcube: Media:Flightcase ledcube.svg
- Maatje groter Media:LEDcube_Flightcase175mm.svg
- Ledcube frame: Media:Ledcube 160mm 4mm frames rev2.svg
- frame met meer ruimte voor magneten e.d. Media:Ledcube_160mm_4mm_frames_rev3.svg
Software
- Ledcat: https://github.com/polyfloyd/ledcat
- RPi-RGB Led Matrix: https://github.com/hzeller/rpi-rgb-led-matrix
Logboek
6 januari 2017: Concept testing
(Sebastius) Ik had in een opwelling al eerder dit soort panelen gekocht. 2x 64x32 pixels. Vandaag met een adaptertje aan de Pi gehangen en met Ledcat getest. Werkte direct! Wel wegens waarschijnlijk een rare updatefrequentie of te traag GPIO gebruik een nare flikkering in beeld. Kan vast nog opgelost worden.
7 januari 2017: Concept testing
(Sebastius) Vandaag met andere software een ledpaneel getest. Op https://github.com/hzeller/rpi-rgb-led-matrix staat prima software om voorlopig mee voort te kunnen tot LedCat zover is. Ook een doosje gesneden om de formfactor te ervaren en de stevigheid van het hout te voelen. Het idee is dat de paneeltjes nog opengewerkt worden (anders passen de componenten op de achterzijde van de ledpanelen niet). Tot slot de bestelling geplaatst voor 18 ledpaneeltjes via AliBaba ($380) en voor aansluitprintjes op de Pi: http://www.electrodragon.com/product/rgb-matrix-panel-drive-board-raspberry-pi/
8 januari 2017: Bestellen
(Sebastius) De ledboards zijn betaald en hopelijk met 7 dagen in huis. Ook AliExpress afgestruind voor 16p IDC connectoren, flatcable, gyroscoop en BMS bordjes. Geen idee nog hoe we de accu gaan doen maar er zal iets van bescherming op moeten.
Tekening ontvangen van de leverancier:
10 januari 2017: Tekenen!
(Sebastius) De ledboards zijn verscheept met DHL!
Tevens mezelf uitgesloofd met Inkscape op basis van wat aannames over de afmetingen (de tekening vanuit China klopt her en der niet):
Blauw, Rood en Zwart worden uitgesneden.
11 januari 2017: Lasercut prototype
(Sebastius) Met de lasercutter het prototype uitgesneden. Het 4mm multiplex van de Karwei gesneden met 40% power en 30mm feedrate. Kwam er nét niet doorheen. Volgende keer met meer vermogen of met een lagere snelheid.
12 januari 2017: Binnen! First blink!
(Sebastius) Vandaag met Kartoffel de zending opgehaald! Wat een mooie paneeltjes. De pixeldichtheid is enorm hoog. De panelen zijn via de achterkant geschroefd, wat een kleine aanpassing in het plan gaat vereisen tzt.
Uiteraard meteen de panelen op het prototype frame gezet. Een Pi3 geleend en bedraad.
Uiteindelijk met de demosoftware Game of Life aangezet: Video op Youtube
Het frame past al best goed, hoewel een aantal gaten 'uit het lood' zijn.
Daarom nieuwe tekeningen gemaakt, dit keer een flightcase en een nieuw frame met betere positie van de boorgaten.
13 januari 2017: Software, first loop
(Sebastius) Deze dag staat in het teken van de software. Ik heb nog niet het lef echt zelf te programmeren maar ik kan een aantal dingen wel. De kubus start nu bij boot een bash scriptje dat oneindig blijft loopen met een aantal effectjes zoals wat plaatjes tonen en Game of Life draaien. Ook laat het zijn IP adres zien zodat je via SSH er bij kunt.
Verder ontdekt dat de panelen niet RGB maar RBG zijn. Ook geleerd hoe ik een bashscriptje maak met een loop, hoe ik een scriptje stop (control z en/of kill $pid) en het script start als SystemD opstartscript.
Het ip adres zet ik om naar een plaatje om te tonen in de cyclus met onderstaande code:
#!/bin/bash ip addr show wlan0 | perl -lane'next if $F[0] !~ /inet/; next if /temporary|tmpaddr/; next if not /scope global/; print $F[1]' | xargs -I '{}' convert -size 64x64 -background black -fill green -pointsize 10 -font Helvetica label:'{}' /home/pi/cube/ipadress.png /home/pi/cube/led-image-viewer --led-rows=64 --led-chain=12 --led-rgb-sequence=RBG -l 1 -w 5 /home/pi/cube/ipadress.png
Daarnaast heb ik een simpel cycle.sh scriptje geschreven:
#!/bin/bash while true do /home/pi/cube/iptonen.sh /home/pi/cube/demo --led-rows=64 --led-chain=12 --led-pwm-bits=11 --led-show-refresh --led-slowdown-gpio=1 --led-pwm-lsb-nanoseconds 50 -t 10 --led-brightness=50 --led-rgb-sequence RBG -D2 /home/pi/cube/nyancat.ppm /home/pi/cube/demo --led-rows=64 --led-chain=12 --led-pwm-bits=11 --led-show-refresh --led-slowdown-gpio=1 --led-pwm-lsb-nanoseconds 50 -t 20 --led-brightness=50 --led-rgb-sequence RBG -D7 /home/pi/cube/demo --led-rows=64 --led-chain=12 --led-pwm-bits=11 --led-show-refresh --led-slowdown-gpio=1 --led-pwm-lsb-nanoseconds 50 -t 10 --led-brightness=50 --led-rgb-sequence RBG -D2 /home/pi/cube/hackalot.ppm /home/pi/cube/demo --led-rows=64 --led-chain=12 --led-pwm-bits=11 --led-show-refresh --led-slowdown-gpio=1 --led-pwm-lsb-nanoseconds 50 -t 20 --led-brightness=50 --led-rgb-sequence RBG -D10 -m 0 /home/pi/cube/demo --led-rows=64 --led-chain=12 --led-pwm-bits=11 --led-show-refresh --led-slowdown-gpio=1 --led-pwm-lsb-nanoseconds 50 -t 10 --led-brightness=50 --led-rgb-sequence RBG -D2 /home/pi/cube/revspace.ppm /home/pi/cube/demo --led-rows=64 --led-chain=12 --led-pwm-bits=11 --led-show-refresh --led-slowdown-gpio=1 --led-pwm-lsb-nanoseconds 50 -t 20 --led-brightness=50 --led-rgb-sequence RBG -D9 /home/pi/cube/led-image-viewer --led-rows=64 --led-chain=12 --led-rgb-sequence=RBG -l 2 /home/pi/cube/*.gif done
Het cycle-script start ik met een systemd service:
[Unit] Description=Start Cube cycle [Service] Type=oneshot ExecStart=/home/pi/cube/cycle.sh [Install] WantedBy=multi-user.target
Dit plaats je in /etc/systemd/system/cycle.service
En als je dat gedaan hebt enable je de service met sudo systemctl enable cycle.service en je kunt de service starten met sudo systemctl start cycle.service .
De flightcase past en werkt prima voor de eerste paar keer heen en weer slepen. Een volgende iteratie heeft handvatten oid nodig.
De cube heeft ook kort gedraaid op de Mux Powerbank. Dat werkt nét (tot je teveel wit/gemengde kleuren gebruikt). Dat gaf wel even een puinhoop binnen maar er is dus royaal genoeg ruimte.
In het donker gerommeld met plaatjes en democode. Indrukwekkend zonder er heel veel aan gedaan te hebben: