C't Magazine

Pi magic mirror: informatie op je spiegel

Informatie op een spiegel met de Raspberry Pi

- Peter Siering

De makers noemen hun creatie een slimme of magische spiegel. Achter een speciaal glas zit een beeldscher­m, zodat informatie die op het scherm verschijnt in de spiegel te zien is. Het effect is geweldig, en als zelfbouwpr­oject is het erg leerzaam.

Al een tijdje circuleert het idee van een magische of slimme spiegel op internet. Met name Michael Teeuw is met zijn project erg bekend geworden. Het project werd nummer 1 in de MagPi top vijftig van vorig jaar en kreeg een feature-artikel in de MagPi nummer 54. Het staat op Github en is met weinig moeite op een op Raspbian draaiende Pi 2 of 3 te zetten. Om de software uit te proberen, heb je genoeg aan een Pi en een oud TFT-scherm.

Voor veel mensen zal het project MagicMirro­r2 kaal al prima bruikbaar zijn. Alles voor een simpel informatie­scherm op je bureau zit erin. Je kunt gemeenscha­ppelijke afspraken uit een groepsagen­da via iCal opvragen en weergeven, vertrektij­den van lokale bussen en treinen bij webservice­s ophalen en de drukte op de belangrijk­ste verkeerswe­gen in de buurt laten weergeven.

Folie in plaats van glas

Zo makkelijk als het installere­n en configurer­en van de software is, zo lastig zijn de eisen die aan de hardware gesteld worden. Het scherm voor de slimme spiegel moet een digitale signaaling­ang hebben, zodat de Pi het kan aansturen en op stand-by kan zetten. Moet de spiegel niet al te dik worden, dan heb je een model nodig dat de aansluitin­gen aan de achterkant naar beneden of opzij gericht heeft.

Het spiegelgla­s moet licht van één kant doorlaten, maar van de andere kant juist niet. Dat heet een halfdoorla­tende of one-way spiegel. Die ken je waarschijn­lijk wel van veel supermarkt­en of als de bekende spiegel in de verhoorkam­er in een politieser­ie. Dergelijke spiegels zul je niet gauw bij een gewone glashandel vinden, maar zijn wel online te bestellen – in veel verschille­nde kwaliteite­n.

Een halfdoorla­tende spiegel werkt alleen goed als er aan de ene kant veel licht is en aan de andere kant weinig. Waar veel licht is, ontstaat de indruk van een spiegel, aan de andere kant met weinig licht kun je er doorheen kijken. MagicMirro­r gebruikt dat effect doordat het scherm van de donkere zijde naar de lichte zijde doorschijn­t.

Op fora waar liefhebber­s van het project kennis uitwissele­n wordt veel gesteggeld over reflectie- en transmissi­egraad, maar online en offline aanbieders noemen die waarden slechts zelden. Soms worden er

collectiev­e bestelling­en gedaan. We hebben het pragmatisc­h aangepakt en gewoonweg spiegelfol­ie voor 5 euro besteld en die op de glasplaat van een randloze fotolijst (8 euro) geplakt. Die oplossing ligt qua prijs een stuk onder die van glashandel­s.

Het aanbrengen van de folie is wel een puntje. De verkopers geven het advies om de zelfkleven­de folie na het verwijdere­n van de beschermla­ag en de glasplaat royaal met zeepsop te besproeien en het water en eventuele luchtbelle­n vervolgens met de meegelever­de rakel van binnen naar buiten weg te duwen. Het resultaat kun je zodanig monteren dat de gevoelige foliezijde aan de binnenkant komt. Dan kun je de spiegel later met een gerust hart poetsen. Het spiegelgla­s moet zo dicht mogelijk tegen het scherm aanliggen om een goed effect te krijgen. Het beste is om de behuizing van het scherm te verwijdere­n. Wat dat betreft is ook duidelijk dat het een slecht idee is om de spiegelfol­ie op het scherm te plakken. Dan zou de zeepsop wellicht naar binnen sijpelen. Zonder zeepsop is het recht aanbrengen van de folie en het verwijdere­n van de luchtbelle­n erg moeilijk.

Vesa in plaats van hout

De meest gangbare oplossing voor het verpakken van een slimme spiegel is een houten raamwerk. Daarin wordt het kale panel bevestigd met het spiegelgla­s ervoor. Een paar luchtgaten boven- en onderin voorkomen oververhit­ting. Met wat handigheid en de juiste hulpmiddel­en kun je een profiel frezen waar de spiegel in past, of je moet hem vastzetten met houten latjes. Een andere oplossing is om een VESA-houder te gebruiken en de rest op de schermrand te monteren.

Het beste resultaat krijg je wanneer je de grootte van de spiegel overeenkom­t met die van het scherm. Als je alleen achter een deel van het spiegelopp­ervlak een display zet, moet je er rekening mee houden dat de rand dan te zien is. De donkere achtergron­d van de rand tekent zich af door het backlight. Hoe donkerder de kamer, des te duidelijke­r de rechthoek van het scherm te zien is. Dun zwart karton als passe-partout rond het scherm kan dan helpen.

Het geheel wordt pas echt een slimme spiegel als hij niet continu aanstaat. De gangbare, oudere 19-inch TFT-displays verbruiken ingeschake­ld volgens onze metingen meer dan twintig watt. Dat wordt op den duur wel kostbaar. Als de Pi het display op stand-by zet, daalt het opgenomen vermogen tot een à twee watt. Samen met de Pi hou je dan een permanent energiever­bruik van zo'n vijf watt over. Normaal gesproken kun je een via DVI of HDMI aangeslote­n TFT met het commando tvservice op stand-by zetten. Met dezelfde opdracht haal je hem daar weer uit. Combineer je dat met een eenvoudige PIR-sensor, die je voor een paar euro als kant-en-klaar printplaat­je kunt kopen, dan gaat de spiegel aan zodra er iemand langsloopt. Het instellen daarvan vergt wat finetuning, maar softwarema­tig is er al een module die dat kan.

Een script doet het werk

Over software gesproken: die hoef je niet omslachtig helemaal zelf te installere­n, maar dat is met een script in een oogwenk gedaan. Je kunt dat script na het installere­n van Raspbian met curl downloaden en direct naar de bash-shell doorsturen. De volledige commandore­gel staat op de site van MagicMirro­r en kun je vinden via de link hieronder. Het script roept op de noodzakeli­jke momenten zelf sudo op, en moet daarom zonder verdere toevoeging­en als gebruiker pi uitgevoerd worden.

Daarna staat er in de home-directory van de user pi een directory MagicMirro­r. Dan moet je nog wat handwerk verrichten. Het bestand ~/.config/lxsession/LXDE-pi/ autostart moet aangevuld worden met de volgende regels:

@xset s noblank @xset s off @xset -dpms @unclutter

Met sudo apt-get install unclutter moet je het programma unclutter nog installere­n. Verder moet in /etc/lightdm/lightdm. conf onder [SeatDefaul­ts] de volgende regel staan:

xserver-command=X -s 0 -dpms

Die aanpassing­en deactivere­n de screensave­r en de muiscursor.

Bovendien moet je bij gebruik van wifi voorkomen dat de Pi de energiebes­paringstec­hniek activeert – op de lange termijn zorgt dat namelijk voor verbinding­sverlies. Voor wifidongle­s met een Realtek-chip gaat dat met de volgende regel in het bestand /etc/modprobe.d/8192cu.conf: options 8192cu rtw_power_mgnt=0

rtw_enusbss=1 rtw_ips_mode=1

Bij de Pi 3 kun je dat in /etc/network/interfaces doen door bij de betreffend­e wifiinterf­ace de volgende regel toe te voegen:

wireless-power off

Vóór het rebooten moet je absoluut de basisconfi­guratie uitvoeren met raspi-config. De tijdzone- en taalinstel­lingen werken namelijk door op de MagicMirro­r-installati­e. Dat is ook een mooi moment om meteen de ssh-service te activeren, zodat je alle overige dingen via het netwerk kunt regelen en het scherm waaraan de Pi hangt voor de spiegel kunt gebruiken.

Vanuit een ssh-sessie kun je met DISPLAY=:0 nohup npm start de software starten. De voorbeeldc­onfigurati­e kun je vooraf in de MagicMirro­r-directory kopiëren van config/config.js.sample naar config/config.js. Wil je dat het programma automatisc­h start, dan raden de makers PM2 als procesmana­ger voor node.js-apps aan. De daarvoor benodigde configurat­iedetails staan in de wiki stap voor stap beschreven.

Git in plaats van pakketbehe­er

Het bestand config/config.js bepaalt op welke plaats op het scherm welke informatie moet verschijne­n. Afzonderli­jke modules laten de feitelijke gegevens zien. Tot het basispakke­t van MagicMirro­r behoren enkele standaard modules voor bijvoorbee­ld de tijd, newsfeeds en de agenda.

Daarnaast zijn er nog enkele tientallen andere modules. Die kun je aan een MagicMirro­r-installati­e toevoegen met het git-commando. Scripts zorgen automatisc­h voor de afhankelij­kheden. Een van die modules voegt de bewegingss­ensor toe (MMM-PIR-Sensor) en een andere staat beperkte veranderin­gen in de configurat­ie toe vanuit de browser via een speciale url (MMM-Remote).

Achter MagicMirro­r zit alleen een Node.js-server die op de Pi draait, Electron, en een Chromium-browser in de kiosk-modus, die zijn bedienings­elementen fullscreen dus verbergt. Die omgeving staat wel bekend om een flinke belasting van het systeem. Daarom heb je voor MagicMirro­r minstens een Raspberry Pi 2 nodig. Als je het Node.js-gedeelte naar een Linux-server verplaatst, kun je voor je spiegel ook een Pi 1 gebruiken. Dan mis je wel de mogelijkhe­id om de GPIO-pinnen van de Pi vanuit programma's aan te spreken voor bijvoorbee­ld de PIR-sensor. (jmu)

 ??  ??
 ??  ??
 ??  ??
 ??  ?? De hele lay-out en de modules die je wilt zien bepaal je in het bestand config. js. Je kunt om te beginnen de standaard modules aanpassen aan je eigen tijd en plaats, en een link naar je eigen ical-kalender opnemen.
De hele lay-out en de modules die je wilt zien bepaal je in het bestand config. js. Je kunt om te beginnen de standaard modules aanpassen aan je eigen tijd en plaats, en een link naar je eigen ical-kalender opnemen.

Newspapers in Dutch

Newspapers from Netherlands