Maak van de Raspberry Pi een digitaal fotolijstje

© PXimport

Maak van de Raspberry Pi een digitaal fotolijstje

Geplaatst: 18 augustus 2014 - 04:00

Aangepast: 24 november 2022 - 11:03

Koen Vervloesem

Toe nu toe hebben we de Raspberry Pi vooral ingezet voor allerlei servertoepassingen. In deze how to gaan we creatiever aan de slag: we sluiten het kleine computertje aan op een schermpje en zetten het op die manier in als een digitaal fotolijstje.

We laten zien hoe je je favoriete foto's op het schermpje krijgt, zodat je ze altijd in de woonkamer kunt bekijken. Die foto's zet je bijvoorbeeld op een usb-stick, maar de Pi kan ook automatisch foto's van je netwerk halen of zelfs van websites downloaden. We tonen hoe je dit alles in elkaar knutselt. We gaan ervan uit dat Raspbian al op Raspberry Pi draait.

Overigens kun je je Raspberry Pi ook gebruiken als printserver of RSS-machine.

01 Scherm

Om ons fotolijstje te maken, gaan we een speciaal schermpje op de Raspberry Pi aansluiten, op de analoge video-aansluiting. Dat schermpje vereist een eigen voeding en wat tussenstukjes. Dat is het enige speciale dat we aan de hardware veranderen. Maar dit is niet verplicht: je kunt alle software-gerelateerde stappen in de workshop uittesten zonder speciaal schermpje. Sluit de Raspberry Pi dan eerst op een tv of een HDMI-computerscherm aan. Daardoor hoef je je maar op één ding tegelijk te focussen en kun je een apart schermpje desgewenst ook later aanschaffen.

 

© PXimport

02 Foto's op usb

Voor de eenvoud beginnen we met het scenario dat we foto's op een usb-stick zetten en die op het scherm willen te zien krijgen wanneer we die in de Raspberry Pi steken. We gaan ervan uit dat de usb-stick één partitie bevat die is geformatteerd in het FAT32-formaat van Windows. We gaan er ook van uit dat u maar één usb-stick tegelijk op de Pi aansluit. Daarna installeren we met het commando sudo apt-get install usbmount het programma usbmount, dat bij het aansluiten van een usb-apparaat automatisch het bestandssysteem in Raspbian aankoppelt.

 

© PXimport

03 Fotodirectory

De schijf moet wel zo aangekoppeld worden dat de gebruiker er toegang tot krijgt. Voer daarom de opdracht sudo nano /etc/usbmount/usbmount.conf uit (dit opent de teksteditor Nano) en voeg een regel toe met FS_MOUNTOPTIONS="-fstype=vfat,uid=pi,gid=pi,umask=007". En op de regel die begint met MOUNTPOINTS=" plaats je vóór /media/usb0 de directory /home/pi/pictures/usb. Sla dit op met Ctrl+O en sluit af met Ctrl+X. Maak die directory met de opdracht mkdir -p /home/pi/pictures/usb en sluit de usb-stick aan. Met de opdracht mount verifieer je of de stick aan de juiste directory gekoppeld is.

 

© PXimport

Tft-schermpje

Voor deze workshop hebben we een aantal onderdelen gekocht in de webshop Kiwi-electronics.nl. De belangrijkste component is het schermpje, een NTSC/PAL tft-scherm van 3,5 inch met een resolutie van 320 bij 240 pixels, dat op de composiet-uitgang van de Raspberry Pi past. Wie een groter scherm wil, moet eens kijken op de website www.adafruit.com, waar nog heel wat andere uitvoeringen te vinden zijn. Let wel goed op welke kabels of andere componenten je bij een scherm nodig hebt.

Andere componenten

Het schermpje komt met een kabel, maar die kabel heeft een mannelijke RCA-aansluiting en onze Pi ook, dus we hebben een koppelstuk nodig. Ook een voeding moeten we zelf voorzien: het schermpje kan overweg met 6 tot 15 V, dus normaal werkt elke standaard 12V-voeding. Ons schermpje heeft echter geen normale voedingsaansluiting, maar slechts twee draadjes, dus we hebben ook hier een koppelstukje nodig, met een terminal block.

 

© PXimport

04 Automatisch inloggen

Wanneer de Pi opgestart is, vraagt hij je om in te loggen. Als je van het apparaatje een fotolijstje wilt maken, wil je onmiddellijk foto's zien zonder te hoeven inloggen. Start daarom Nano met de opdracht sudo nano /etc/inittab en zoek de regel 1:2345:respawn:/sbin/getty --noclear 38400 tty1. Vervang die door 1:2345:respawn:/bin/login -f pi tty1 /dev/tty1 2>&1. Druk op Ctrl+O en Ctrl+X om het bestand op te slaan en af te sluiten, en herstart de Pi. Die zal nu na alle opstartmeldingen een opdrachtprompt (pi@raspberrypi ~ $) tonen, want de gebruiker pi wordt automatisch aangemeld.

 

© PXimport

05 Fbi

Om nu in plaats van de opdrachtprompt foto's te tonen, gebruiken we het programma fbi (framebuffer image viewer). We installeren dat met de opdracht sudo apt-get install fbi. Om ervoor te zorgen dat fbi automatisch uitgevoerd wordt als gebruiker 'pi' zich aanmeldt, voer je het commando nano ~/.bashrc uit. Helemaal op het einde van het bestand ~/.bashrc plaats je de volgende regel: fbi /home/pi/pictures/**/*. Druk op Ctrl+O en Ctrl+X, en herstart de Raspberry Pi. Na het opstarten krijg je op je scherm een van je foto's te zien.

 

© PXimport

06 Slideshow

Om een slideshow te laten zien van al je foto's in subdirectory's van de directory /home/pi/pictures, moeten we op het einde van het bestand /.bashrc een aantal opties aan het programma fbi doorgeven (zie ook vorige stap). Met de optie -t (gevolgd door een getal) geef je op hoeveel seconden pauze er tussen de foto's blijft. Met -a schakel je autozoom in, zodat elke foto het hele scherm inneemt. Met -u worden de foto's in willekeurige volgorde getoond. Met -noverbose voorkomen we dat de bestandsnaam getoond wordt. De regel wordt bijvoorbeeld:

fbi -t 10 -a -u -noverbose /home/pi/pictures/**/*

 

© PXimport

07 Nieuwe foto's (1)

Onze Raspberry Pi werkt nu als een fotolijstje, maar foto's toevoegen is nogal omslachtig. Je moet de usb-stick dan eerst uit de Pi trekken, in je pc steken, bestanden kopiëren en de usb-stick terug in je Pi steken. Daarna moet je je Pi herstarten omdat fbi de nieuwe bestanden niet ziet. De oplossing: we laten fbi automatisch opnieuw opstarten als de usb-stick opnieuw aangekoppeld wordt. Gelukkig is dat een functie die usbmount ondersteunt: alle scripts in /etc/usbmount/mount.d worden bij het aankoppelen van een usb-stick uitgevoerd.

 

© PXimport

08 Nieuwe foto's (2)

We gaan er voor de eenvoud van uit dat je slechts één usb-opslagapparaat op je Pi aansluit. Dan is ons script vrij eenvoudig. Maak een nieuw script aan met de opdracht sudo nano /etc/usbmount/mount.d/10_fbi_reload. Voeg in het bestand de regel pkill -t tty1 toe en daaronder de regel exit 0, sla het op met Ctrl+O en sluit het af met Ctrl+X. Maak het script nu uitvoerbaar met de opdracht sudo chmod +x /etc/usbmount/mount.d/10_fbi_reload. Zodra je nu je usb-stick opnieuw aankoppelt, wordt de gebruiker 'pi' afgemeld en terug aangemeld, waardoor fbi opnieuw de lijst met foto's inlaadt en de nieuwe foto's toont.

 

© PXimport

09 Foto's op het netwerk

Zelfs met deze oplossing moet je nogal wat handelingen met de usb-stick uitvoeren. Zou het niet handiger zijn als je Pi automatisch foto's toont op je lokale netwerk, bijvoorbeeld op je NAS of pc? Maak daarvoor eerst een subdirectory onder /home/pi/pictures aan voor elke Windows-share waarvan je foto's wilt gebruiken. Dat kan bijvoorbeeld met de opdracht mkdir /home/pictures/pc. Deel dan op je NAS of Windows-pc de directory en noteer het IP-adres en pad, bijvoorbeeld //192.168.0.109/Users/Koen/Pictures. Noteer indien er geen gasttoegang is ook de gebruikersnaam en het wachtwoord.

 

© PXimport

10 Netwerkschijf

Om te zorgen dat de netwerkshare automatisch aangekoppeld wordt, voegen we het pad toe aan de lijst. Voer daarvoor de opdracht sudo nano /etc/fstab uit en voeg onderaan deze regel toe: //192.168.0.109/Users/Koen/Pictures /home/pi/pictures/pc cifs guest 0 0. Indien je niet met gasttoegang werkt, gebruik dan /pc cifs username=gebruiker,password=wachtwoord 0 0 aan het einde van de regel, waarbij je uiteraard de juiste waardes invult. Druk op Ctrl+O en Ctrl+W, voer de opdracht sudo apt-get install cifs-utils uit en een herstart. Daarna verschijnen ook de foto's van de netwerkshare.

 

© PXimport

Scherm aansluiten

Stap 1

Het schermpje is met een fragiele platte kabel met een besturingsbordje verbonden. Wees voorzichtig. Je kunt het besturingsbordje aan het scherm vastlijmen als je ongelukken wilt vermijden. Sluit de ene kant van de videokabel op het besturingsbordje aan. Aan de andere kant heb je twee connectoren. Je hebt er maar één nodig: sluit die op het koppelstuk aan, dat je op de RCA-connector van de Pi aansluit.

 

© PXimport

Stap 2

De videokabel heeft een rood en een zwart draadje, waarmee het besturingsbordje stroom krijgt. Ontdoe beide draadjes op hun uiteinde van de isolatie en steek ze in de schroefklemmen van het DC-koppelstuk: de rode in de plus en de zwarte in de min. Schroef de klemmen dicht en steek de andere kant van de connector in de DC-voedingsadapter. Sluit nu de andere kabels van je Raspberry Pi aan en start het computertje op.

 

© PXimport

Stap 3

De resolutie is waarschijnlijk nog niet in orde. Open daarom het bootconfiguratiebestand met de opdracht sudo nano /boot/config.txt en voeg de regels framebuffer_width=320 en framebuffer_height=240 toe, waarbij je 320 en 240 vervangt door der resolutie van je scherm. Als er een zwarte rand te zien is, krijg je die weg met overscan_left=-26, overscan_right=26, overscan_top=-16 en overscan_bottom=-16. Experimenteer met de juiste waarden. Druk op Ctrl+O en Ctrl+X en herstart je Pi met sudo reboot.

 

© PXimport

11 WebDAV

Een andere manier om foto's over het netwerk te gebruiken is via WebDAV. Dit protocol wordt door diverse cloudopslagdiensten ondersteund, waaronder Box, Strato HiDrive en 4Sync. Zo geef je je Raspberry Pi toegang tot foto's in je cloudopslag, waarna je fotolijstje automatisch de foto's downloadt en toont. Noteer de WebDAV-url voor jouw cloudopslag. Voor Strato HiDrive is dat bijvoorbeeld https://webdav.hidrive.strato.com/users/gebruikersnaam. Noteer ook je inloggegevens. Installeer daarna davfs2 met de opdracht sudo apt-get install davfs2.

 

© PXimport

12 WebDAV configureren

De gegevens van je cloudopslag geef je op met de opdracht sudo nano /etc/davfs2/secrets. Voeg aan het einde van het bestand een regel toe met de WebDAV-url van je cloudopslag en het bijbehorende account en wachtwoord, bijvoorbeeld https://webdav.hidrive.strato.com/users/gebruikersnaam gebruikersnaam wachtwoord. Sla het bestand op met Ctrl+O en sluit het af met Ctrl+X. Maak nu op je Pi een subdirectory van je afbeeldingenmap aan, bijvoorbeeld met de opdracht mkdir /home/pi/pictures/hidrive. Zodra je je HiDrive-opslag gekoppeld hebt, zijn je bestanden in die directory zichtbaar voor fbi.

 

© PXimport

13 WebDAV aankoppelen

Om te zorgen dat je cloudoplag automatisch gekoppeld wordt na het opstarten, voeg je de WebDAV-url toe aan de lijst van aan te koppelen bestandssystemen. Voer de opdracht sudo nano /etc/fstab uit en voeg onderaan de regel https://webdav.hidrive.strato.com/users/gebruikersnaam /home/pi/pictures/hidrive davfs rw,noexec,auto,user,async,_netdev,uid=pi,gid=pi 0 0 toe (url afhankelijk van clouddienst). Druk op Ctrl+O en Ctrl+W en hertstart je Pi. Daarna zie je dat de online foto's automatisch getoond worden.

 

© PXimport

14 Foto van de dag

We kunnen het fotolijstje uitbreiden met nog meer internetfunctionaliteit. Er zijn bijvoorbeeld heel wat websites die dagelijks een 'foto van de dag' aanbieden. We kunnen een scriptje schrijven dat dagelijks die foto downloadt en in onze afbeeldingenmap plaatst, waardoor fbi ze oppikt en naast onze andere foto's toont. Dat wordt wel moeilijker, omdat we in principe voor elke website een aangepast scriptje moeten schrijven. We zullen enkele eenvoudige voorbeelden tonen. Maar eerst maak je een directory aan waarin die foto's komen met de opdracht mkdir /home/pictures/pod.

 

© PXimport

15 Tijdelijke directory

Omdat we niet willen dat al die 'foto's van de dag' de SD-kaart van de Pi opvullen, maken we een tijdelijk bestandssysteem aan, dat we aan de hiervoor gemaakte directory koppelen. Alle bestanden die daarin gedownload worden, verdwijnen na het uitschakelen of herstarten van de Pi. Dat aankoppelen gebeurt zoals je al gewend bent. Geef de opdracht sudo nano /etc/fstab en voeg onderaan de volgende regel toe: tmpfs /home/pi/pictures/pod tmpfs size=100M,rw,mode=777 0 0. Wijzig eventueel de grootte van het bestandssysteem, maar overdrijf niet: het wordt namelijk in het (weinige) RAM van de Pi opgeslagen.

 

© PXimport

16 NASA

De eerste tijdelijke foto's komen van de Astronomy Picture of the Day van NASA. Deze worden gedownload als de Pi opgestart is. Voer daarvoor de opdracht sudo nano /etc/rc.local uit en plaats onderaan het bestand vlak vóór de regel exit 0 de regel wget http://apod.nasa.gov/apod/ap`/bin/date +%y%m%d`.html -O- 2> /dev/null | grep -m 1 'IMG SRC=' | sed -e 's///' -e 's/.*=//' -e 's/"//g' -e 's/^/http:\/\/apod.nasa.gov\/apod\//' | wget -i- -O /home/pi/pictures/pod/apod.jpg. Overigens gebeurt er op sommige dagen niets, omdat NASA dan geen foto, maar een filmpje online zet. En let op: in deze stap en stap 18 is er verschil tussen de aanhalingstekens: zowel ' als ` (accent grave of backquote) worden gebruikt.

 

© PXimport

17 National Geographic

Ook National Geographic biedt elke dag een foto aan. Voer hiervoor de opdracht sudo nano /etc/rc.local uit en plaats onderaan vlak vóór de regel exit 0 de regel wget http://photography.nationalgeographic.com/photography/photo-of-the-day -O- 2> /dev/null | grep -m 1 -o 'img src=".*.jpg"' | sed -e 's/img src="/http:/' -e 's/"//' | wget -i- -O /home/pi/pictures/pod/national_geographic.jpg. Wat gebeurt hier: we halen met de grep-opdracht de url van het eerste jpeg-bestand uit de webpagina, plaatsen er http: voor en downloaden die dan in het juiste bestand.

 

© PXimport

18 Wikimedia Commons

Hetzelfde trucje kunnen we uitvoeren voor de foto van de dag bij Wikimedia Commons. Deze keer is de regel die we in /etc/rc.local zetten complexer, want we moeten eerst de pagina downloaden, waar de verwijzing naar de foto staat. Het commando: wget -qO - `wget -qO - http://commons.wikipedia.org/wiki/Commons:Picture_of_the_day | grep File: | sed -e "s/.*href=\"//" -e "s/\"//" | cut -d ' ' -f 1 | head -n 1 | sed -e 's/^/http:\/\/commons.wikipedia.org/'`| grep "Original file" | sed -e "s/.*href=\"/http:/" -e 's/\".*//' | wget -i- -O /home/pi/pictures/pod/wikimedia_commons.jpg.

 

© PXimport

19 En verder

Zoals je ziet zijn de mogelijkheden eindeloos. Je kunt zelf foto's op een usb-stick zetten, je kunt je Pi foto's van een gedeelde netwerkmap of je cloudopslag laten halen, en je kunt zelfs scripts schrijven die volautomatisch foto's van allerlei plaatsen op internet downloaden. Hopelijk is uit deze workshop duidelijk dat je van je Raspberry Pi een veel flexibeler en krachtiger fotolijstje kunt maken dan degene die je in de winkels vindt. Veel plezier!

 

© PXimport

Laat je fantasie werken

Het fotolijstje dat we in deze workshop gebouwd hebben, is nog maar een begin. Je kunt je bijvoorbeeld laten inspireren door Samuel Clay, die met de Raspberry Pi een fotolijstje gebouwd heeft dat via wifi automatisch foto's van zijn Flickr-account downloadt. Hij heeft bovendien een infraroodsensor toegevoegd, zodat het schermpje enkel ingeschakeld wordt wanneer er iemand in de kamer aanwezig is. Van het frame maakte hij iets artistieks.

 

© PXimport

Ander scherm

Je hebt heel wat keuze voor het scherm. Het type NTSC/PAL-schermpje dat we in deze workshop gebruikt hebben, is populair voor de Raspberry Pi, maar hebben niet zo'n hoge resolutie. Je kunt ook een HDMI-scherm aansluiten en de Pi erachter bevestigen. En voor de knutselaars: wie weet kun je een oud laptopscherm recyclen, al heb je vaak nog extra componenten nodig om het aan te sturen.

Deel dit artikel
Voeg toe aan favorieten
ID.nl logo

ID.nl, onderdeel van Reshift BV, is in 2022 gestart en uitgegroeid tot de meest toonaangevende en complete consumentensite van Nederland. Het doel van ID.nl is om de consument te helpen met alle technologie die hoort bij het dagelijks leven: van smart-health-meters tot e-bikes, van warmtepompen tot zonnepanelen - en alles daar tussenin!

Duidelijk, betrouwbaar en onafhankelijk: ID.nl maakt moeilijke dingen makkelijk.

Contact

ID.nl

Nijverheidsweg 18

2031 CP Haarlem

info@id.nl

Telefoon: 023-5430000