James Webb fotolijst
Doe je ruimtepak maar aan, dit wordt een lange reis!
Inhoudsopgave
- Belangrijk
- 1. Ontwerp
- 2. Raspberry Pi en besturingssysteem
- 3. Diavoorstelling: prutsen met fbi
- 4. Muziek: lokaal of online afspelen
- 5. Automatiseren
- 6. Klussen en assemblage
- 7. De laatste loodjes
- Bijlage A: Benodigdheden
Belangrijk
- Ik heb deze post op 3 augustus 2025 bijgewerkt met de huidige hardware en verbeteringen. Onderaan deze post vind je de benodigdheden voor als je dit zelf wilt maken.
- In deze post beschrijf ik eerst de software die ik heb gebruikt voor het project. Als je direct wilt zien hoe ik alles in elkaar heb gezet, kun je beginnen bij hoofdstuk 6: Klussen en assemblage.
Op eerste Kerstdag 2021 werd de James Webb ruimtetelescoop gelanceerd. Net als heel veel mensen vond ik het heel spannend en keek ik uit naar de prachtige beelden die er inmiddels zijn. Ik maak in het kader van home automation wel vaker dingen zelf, en daarom dacht ik dat het mooi zou zijn om een digitale fotolijst te maken waarop ik de nieuwste foto’s van de telescoop kan bekijken. En toen vond ik online zeshoekige spiegeltegels.
Ik had een lumineus idee.
Dus ik bestelde een set tegels, maar ze waren bijna allemaal kapot. Maargoed, ik laat me niet kisten, dus ik bestelde nog een set.
De spiegeltegels
1. Ontwerp
Omdat Aliexpress er even over doet om spullen te leveren, had ik ruim de tijd om na te denken over het ontwerp. Ik wilde de telescoop namaken met een op maat gezaagde houten plaat, zwarte verf en de spiegeltjes. In het midden wilde ik een scherm plaatsen waarop de nieuwste James Webb-foto’s te zien zijn. Ik heb een ontwerp getekend:
Het ontwerp en de afmetingen voor de plaat en tegels
In het midden van het ontwerp zit geen tegel, maar het scherm (waar je op de echte telescoop een zwarte kolom ziet). Daarom tekende ik één tegel op ware grootte, zodat ik kon meten hoe een scherm erin past:
Het ontwerp en afmetingen voor het scherm
Voor het scherm had ik twee opties in gedachten: een scherm van 5 inch (de rode rechthoek binnen de zeshoek), maar dat is erg klein en een beetje zielig, of een scherm van 7 inch (de schuine groene rechthoek). Ik heb voor het scherm van 7 inch gekozen, maar dat levert een ander probleem op omdat dit niet binnen één tegel past. Daarom zouden de spiegels voor een deel niet zichtbaar zijn. Dat moest ik oplossen, want ik had twee vereisten voor het ontwerp:
- Het scherm moet minimaal 7 inch zijn, want op een kleiner scherm zijn de foto’s te klein om ze goed te kunnen zien. Later heb ik dit vervangen door een 10.5-inch scherm, zie 6.2. Scherm.
- Alle spiegels rond het midden moeten heel blijven en zichtbaar zijn.
Voor mij was de oplossing duidelijk: ik moest een kolom maken die ik op de plaat kan bevestigen (net als op de echte telescoop) en ruimte heeft om de kabels weg te werken. Vervolgens zou ik het scherm aan de voorkant van de kolom kunnen bevestigen.
Ik probeerde dit ontwerp uit te leggen aan anderen, en helemaal niemand begreep hoe ik het voor me zag. Maar als je doorleest, zie je aan de foto’s wel wat ik bedoel.
2. Raspberry Pi en besturingssysteem
Voor de eerste versie heb ik een Raspberry Pi 3b gebruikt die ik nog had liggen. Eerst wilde ik een Pi Zero 2 W gebruiken omdat die minder ruimte inneemt, maar de 3b paste ook prima achter de plaat. In 2025 heb ik de 3b vervangen door een Raspberry Pi 4b, die werkt vrijwel hetzelfde.
Als besturingssysteem heb ik Raspberry Pi OS geïnstalleerd. Het installatieproces daarvoor is heel simpel en kun je vinden op de website van Raspberry Pi. Download de imager, kies het besturingssysteem dat je wilt installeren en schrijf het naar de microSD-kaart. Een grafische installatie is optioneel, ik vond het handig om alles voor de eerste keer in te stellen. Daarna heb ik de grafische omgeving uitgezet.
Het is handig als je de Raspberry Pi kunt bereiken via ssh. Dit kun je instellen in de configuratie voordat je de image maakt met de Raspberry Pi Imager. Kies het besturingssysteem, klik op het tandwieltje rechtsonder en kies een hostnaam. Vink vervolgens Enable SSH aan en kies of je een wachtwoord of sleutel wilt gebruiken. Vink ook Set username and password aan en vul deze velden in. Tot slot vink je Configure wireless LAN en vul je het SSID en wachtwoord in. Dit alles scheelt je later een boel werk.
Het kan zijn dat bepaalde functies nog niet werken na de installatie. Je kunt de instellingen dan wijzigen in de config-tool door sudo raspi-config
te typen in je terminal. Voor wifi kun je een andere handige tool gebruiken door sudo nmtui
te typen.
Na de installatie kun je inloggen via ssh:
$ ssh gebruikersnaam@hostnaam.local
3. Diavoorstelling: prutsen met fbi
Voor de diavoorstelling gebruik ik de tool fbi - framebuffer imageviewer. Deze tool heeft nogal wat gebreken, maar het is me gelukt om het in te stellen zoals ik dat wil. Mogelijk wil ik dit later vervangen door een andere tool genaamd fim (fbi improved). Als ik dat doe zal ik deze post updaten.
Installeer fbi met de volgende opdrachten:
$ sudo apt-get update
$ sudo apt-get -y install fbi
Maak een mapje aan en doe er foto’s in, en start vervolgens een diavoostelling met fbi:
$ sudo fbi -T 1 -noverbose -a -t 300 /pad/naar/fotomap/*
3.1. Opties voor fbi
Enkele vereiste en/of handige commandline-opties voor fbi zijn:
-d /dev/fbN
gebruikt de framebuffer /dev/fbN. Standaard is dit de framebuffer die is gekoppeld aan je virtual console (fb0
in mijn geval). Dit heb je nodig als je de opdracht uitvoert via systemd.-T
start fbi op virtual console n, waarbij n meestal 1 is.--noverbose
zorgt dat de informatieregel onderaan het scherm verdwijnt. Deze optie heeft gek genoeg geen effect op de workaround voor bijschriften in 3.2. Bijschriften toevoegen met een workaround.-a
toont de afbeeldingen met autozoom, en dat is handig voor afbeeldingen met verschillende afmetingen.-f
is de instelling voor het lettertype. Je kunt ook de lettergrootte aanpassen, bijvoorbeeld:-f monospace:size=32
. Dit is niet officieel gedocumenteerd.-t
is de interval tussen dia’s in seconden.
Op de fbi man page vind je meer info over de opties en argumenten.
3.2. Bijschriften toevoegen met een workaround
Voor de specifieke diavoorstelling die ik heb gemaakt, wilde ik een bijschrift onder elke afbeelding hebben. Dit bleek nogal moeilijk te zijn, omdat fbi helemaal niets doet met annotaties, opmerkingen of andere informatie in de exif-gegevens van een afbeelding, en bovendien werkt dit alleen voor jpg-bestanden. Een vriend van me (Peter/Habbie) ontdekte dat als je de afbeelding in een aparte map plaatst en in die map ook een .directory
-bestand met een desktop-item plaatst, fbi de opmerking in dat bestand wel laat zien (dank je Peter!). Dit is ook niet officieel gedocumenteerd.
Op GitHub heb ik een voorbeeld gemaakt van een map waarin alles gelezen wordt door fbi: voorbeeld van map met afbeelding.
In de opdracht moet het pad naar de afbeeldingen een extra wildcard bevatten, zodat alle mappen aan de diavoorstelling worden toegevoegd: /pad/naar/afbeeldingen/*/*
Uiteindelijk ziet de opdracht die ik gebruik er zo uit:
$ sudo fbi -d /dev/fb0 -T 1 -f monospace:size=32 -a -t 300 /pad/naar/afbeeldingen/*/*
4. Muziek: lokaal of online afspelen
Zoals ik al zei besloot ik in 2025 om het project te upgraden met een groter scherm. Het nieuwe scherm heeft toevallig twee luidsprekers aan de achterkant, en dat is een goed excuus om wat muziek met ruimte-thema af te spelen.
Ik heb twee manieren gevonden om dit te doen: lokaal door een mediaplayer te installeren en een mapje met mp3-bestanden toe te voegen, of online door de tool spotifyd
te installeren, waarmee je van je Raspberry Pi een Spotify Connect-apparaat maakt.
4.1. Lokaal afspelen met mplayer
Voor lokale muziek kun je mplayer installeren:
$ sudo apt install -y mplayer
Zorg dat je een aantal mp3-bestanden in een map hebt staan en speel de lijst herhaald af met shuffle:
$ mplayer -loop 0 -shuffle /pad/naar/mp3-bestanden/*
Dit kun je natuurlijk ook doen met een andere mediaplayer.
4.2. Online afspelen met spotifyd
Je kunt ook spotifyd installeren. Deze optie heb ik uiteindelijk niet gekozen, en omdat deze tool al goed gedocumenteerd is zal ik de instructies hier niet herhalen. Je vindt meer info op de GitHub repository.
5. Automatiseren
5.1. Scripts
Het zou natuurlijk prachtig zijn als fbi en de mediaspeler direct beginnen na het opstarten. Ik heb hiervoor twee kleine scriptjes gemaakt. Voor fbi doe je dit als volgt:
$ nano jwst-slideshow.sh
In het script zet je de volgende regels neer:
#!/bin/sh
sudo fbi -d /dev/fb0 -T 1 -f monospace:size=32 -a -t 300 /pad/naar/afbeeldingen/*/*
Pas de opties en argumenten aan naar wens en wijzig het pad naar de map. Sla je wijzigingen op met Ctrl+O en verlaat nano met Ctrl+X. Maak je script uitvoerbaar met:
$ sudo chmod +x jwst-slideshow.sh
Voor een lokale mediaplayer maak je nog een script met daarin de opdracht die je gebruikt om de muziekbestanden af te spelen.
5.2. Systemd
Nu voeg je het script toe aan een systemd .service-bestand. Maak een .service-bestand aan:
$ sudo nano /etc/systemd/system/jwst-slideshow.service
en voeg de volgende regels toe, waarbij je ‘user’ vervangt door je gebruikersnaam en achter ‘ExecStart’ de juiste pad naar het script toevoegt:
[Unit]
Description=Systemd service for starting the JWST slideshow
After=multi-user.target
[Service]
Type=exec
User=user
ExecStart=/pad/naar/jwst-slideshow.sh --no-daemon
RemainAfterExit=true
Restart=always
RestartSec=60
[Install]
WantedBy=default.target
Maak je service uitvoerbaar:
$ sudo chmod 644 /etc/systemd/system/jwst-slideshow.service
en activeer dan je systemd-service:
$ sudo systemctl enable jwst-slideshow.service
Voor je mediaplayer-script kun je hetzelfde doen. Voeg in dat geval één extra regel toe onder [unit]
: Wants=sound.target
. Ik heb een paar voorbeelden van .service-bestanden op GitHub gezet.
Start je Raspberry Pi opnieuw op en klaar is Kees!
Nu gaan we klussen.
6. Klussen en assemblage
Je kunt natuurlijk direct gaan doe-het-zelven, maar het is belangrijk dat je eerst de hardware en software test voordat je alles in elkaar zet. Het project is groot en lastig te verplaatsen, en je wilt niet een spier verrekken omdat je in een rare houding naar de muur moet kijken terwijl je aan het testen bent.
6.1. Houten plaat
Mijn vader is timmerman, dus ik vroeg hem of hij misschien nog een houten plaat had liggen die groot genoeg was voor het project, en dat had ie! Op de plaat heb ik de omtrek van de spiegels uitgetekend en vervolgens heb ik er een rand van 3cm omheen getekend. Een grotere rand is ook prima, maar ik heb het wat smaller gemaakt omdat ik dacht dat het project anders te groot zou worden.
Mijn vader heeft het meeste zaagwerk gedaan, want dat is niet mijn sterkste punt. Ik had het waarschijnlijk verkeerd gedaan. Hij heeft ook een groot gat in het midden gezaagd om de kabels weg te werken.
Mijn vader was aan het zagen en mijn broer Frank hielp mee. Toppers zijn ze! ❤️
Mijn broer en ik hebben de plaat geschuurd, vooral op de randen om ze af te ronden. Eenmaal thuis heb ik gaatjes en onregelmatigheden weggewerkt met houtvuller, waarna ik de plaat zwart heb geschilderd met drie lagen verf voor de zekerheid.
De plaat zwart schilderen
6.2. Scherm
Ik ben begonnen met een 7-inch scherm en later heb ik dat vervangen door een 10,5-inch scherm van Aliexpress (links vind je in de Benodigdheden). Op de achterkant van het nieuwe scherm zitten gaten voor een 75x75mm VESA-beugel en er zitten ook twee luidsprekers in.
6.3. Kolom
Het lastigste doe-het-zelfklusje was misschien wel de kolom. I heb in Tinkercad een eenvoudige kolom gemaakt en een 3D-print besteld. Dit was een grote gok en het had best fout kunnen gaan, maar voor een eerste versie zag het er prima uit. Toen ik een 3D-printer had gekocht heb ik het design verbeterd.
Ontwerp in Tinkercad
Het ontwerp heeft aan beide kanten schroefgaten met de afmetingen van 75x75mm VESA. Aan de kant van de achterplaat zijn de schroefgaten niet heel diep, zodat een schroef met een scherpe punt zichzelf in het PLA werkt en het geheel stevig vast zit. Aan de kant van het scherm heb ik uiteindelijk alleen de meegeleverde schroeven gebruikt van de VESA-beugel die ik had gekocht.
Opmerking: in één kant van de kolom zit een gat voor de kabels. Let op dat je de kolom bevestigt met het gat aan de juiste kant.
Op GitHub vind je de stl en een link naar Tinkercad als je het bronbestand wilt aanpassen.
De kolom met het scherm eraan
6.4. Achterkant en spiegels
Aan de achterkant van de plaat was nog veel te doen. Eerst heb ik twee houten balkjes bevestigd: eentje om het project aan de muur te hangen en eentje voor de balans. Op het bovenste balkje heb ik 2 rekogen bevestigd met 2 schroeven elk, zodat ze goed vastzitten en veel gewicht kunnen dragen.
Ook heb ik op dit punt de Raspberry Pi op de plaat geschroefd, met de poorten in de juiste richting zodat de kabels eenvoudig aan te sluiten en weg te werken zijn. De Raspberry Pi zit in een 3D-geprinte case. Een link daarnaar vind je in de Benodigdheden.
Rekogen en weggewerkte kabels op de achterkant
Nu moest de kolom met scherm op het midden van de plaat worden bevestigd. Eerst heb ik 4 gaten in de plaat geboord, en ik heb alles zorgvuldig uitgemeten volgens de 75x75mm VESA-norm zodat de kolom precies in het midden zat. Daarna heb ik de kolom met scherpe schroeven goed vastgezet aan de achterplaat.
De kabels worden verborgen door connectors met een hoek van 90 graden, en de kabels gaan door het gat in de kolom en komen aan de achterkant uit het gat in het midden van de plaat. Met een stukje kabelgoot dat ik nog had liggen (en duct tape waar nodig) heb ik de kabels naar de Raspberry Pi geleid en daarna naar de onderkant van de plaat. Ik was hier vergeten ruimte te maken voor de kabels in het onderste houten balkje. Dat heb ik opgelost door wat hout weg te beitelen (wel heel voorzichtig want het scherm zat er al aan vast). Andere oplossingen zijn natuurlijk beter, zoals twee kleinere balkjes.
7. De laatste loodjes
Het laatste doe-het-zelfklusje was het bevestigen van de spiegels, waarvoor ik de meegeleverde ronde stukjes dubbelzijdig tape heb gebruikt. Eigenlijk heb ik ze iets eerder in het proces toegevoegd omdat ik ongeduldig was, maar je moet ze pas op het laatste moment toevoegen omdat ze snel bekrast kunnen raken of kapot kunnen gaan. Ik had mazzel, maar het had natuurlijk anders kunnen lopen. De afmetingen van de spiegels waren niet overal perfect dus het was een behoorlijke puzzel, maar het is evengoed prachtig!
De spiegelpuzzel 🧩
En dan nu eindelijk het eindresultaat. I ben er megablij mee!
Versie 1, met mijn vader en mij in de spiegels
Versie 2, nu met groter scherm
En luister naar de muziek op YouTube:
De diavoorstelling in actie, met muziekEnorm veel dank aan mijn vader, mijn broer en een aantal nerds op irc. Het project is niet naar de maan, maar helemaal naar L2 ❤️
Bijlage A: Benodigdheden
A.1. Klusspullen
- 18 zeshoekige spiegeltegels. Je vindt ze op Aliexpress: spiegeltegels. Bestel extra tegels, ze gaan snel stuk!
- Een grote houten plaat.
- Houtvuller voor gaatjes/onregelmatigheden in het hout.
- Zwarte verf en schilderspullen.
- Een houten balkje (te verdelen in één langer stuk en twee kortere stukjes).
- Een 3D-geprinte kolom.
- Een 3D-geprinte case voor de Raspberry Pi - link.
- A piece of thin cable duct.
- Een stukje kabelgoot.
A.2. Computerhardware
- Een 10.5-inch scherm. Link op Aliexpress: monitor, of zoek naar ‘10.5 inch monitor’
- Een 75x75mm VESA-beugel. Link op Aliexpress: VESA bracket, of zoek naar ‘75mm VESA bracket’. Ik heb uiteindelijk alleen de schroeven gebruikt.
- Een HDMI-kabel en adapter voor het scherm.
- Een Raspberry Pi met een RPi-adapter. Je kunt een adapter van een ander merk gebruiken, maar die gaan vaak niet goed om met het voltage dat de Raspberry Pi vereist. Zoals eerder vermeld heb ik zelf een 3b/4b in plaats van een Zero 2 W gebruikt, maar als je een Raspberry Pi Zero hebt werkt die ook prima, omdat fbi geen zwaar programma is. Ik heb dit echter niet getest met de extra mediaplayer-functie.
- Een microSD-kaart. Ik heb een kaartje van 64 GB gebruikt, maar kleiner is helemaal prima.
A.3. Software
- Raspberry Pi OS.
- fbi, een programma voor Linux waarmee je diavoorstellingen kunt laten zien.
- mplayer als je mp3-bestanden wilt afspelen.
- spotifyd als je een Spotify-playlist wilt afspelen.
- Je vindt de volgende bestanden op mijn GitHub repository:
- het .stl-bestand voor de kolom
- twee voorbeeldscripts voor de fbi diavoorstelling en de mediaplayer
- twee voorbeelden van .service-bestanden voor systemd
- een voorbeeldmap met een afbeelding en een .directory-bestand