Experimenteren met de Raspberry Pi Zero – De Display (deel – 7)

Ik had nog een display liggen die ik ooit voor een projectje had besteld en deze past prima op de Raspberry Pi zero. Van de week had ik wat problemen met de Display omdat hij los begon te raken van de printplaat. Ik heb de randen voorzichtig weer vastgeplakt met een lijm pistool.

Display vast gelijmd

De display is van “Waveshare” en is een 1.44 inch display met joystick.

We beginnen met het installeren van wat drivers die we nodig hebben.

sudo apt-get install fbset raspi-config raspi-gpio

In het configuratie menu van Raspberry Pi zetten we nu SPI aan.

sudo raspi-config

>>Interface Options

>>P4 SPI

>>Enable

We gaan nu de modules file aanpassen

sudo raspi-config

Voeg onderstaande regels toe onderaan de file.

spi-bcm2835
fbtft_device

Nog een filetje aanpassen de fbtft.conf.

sudo nano /etc/modprobe.d/fbtft.conf

Voeg deze regel aan de file toe.

options fbtft_device name=adafruit18_green gpios=reset:27,dc:25,cs:8,led:24 speed=40000000 bgr=1 fps=60 custom=1 height=128 width=128 rotate=180

Wat je ziet is dat we de display 180 graden draaien. Dit is omdat er een bug in deze display zit. Hij laat nl een storend randje zien aan de zijkant van de display. Als we hem 180 graden draaien zijn we van het probleem verlost.

We gaan nu de Raspberry Pi herstarten.

sudo shutdown -r now

We kunnen nu controleren of we een extra display hebben op de Raspberry Pi.

ls /dev/fb*

De fb1 is onze display.

fbset -i -fb /dev/fb1

We gaan nu een foto downloaden.

cd

wget https://mytuner.global.ssl.fastly.net/media/tvos_radios/mjHvU9YY9n.png

En deze hernoemen we na de download.

mv mjHvU9YY9n.png caroline.png

Als het goed is hebben we nu een foto in onze home directory staan en die heeft de naam caroline.png.

We gaan nu een BASH filetje maken. Dit is een scriptje waarmee we alles opstarten zodra we de spanning er op zetten.

sudo nano //etc/init.d/caroline.sh

In de file plaatsen we de volgende regels.

!/bin/bash

ffmpeg -v 0 -y -i /home/pi/caroline.png -vf scale=128:128,transpose=1 -vcodec rawvideo -f rawvideo -pix_fmt rgb565 – > /dev/fb1
bluetoothctl connect 30:C0:1B:C5:25:DD
sleep 10
ffplay http://sc6.radiocaroline.net:8040

Dit heeft wat uitleg nodig. Een bash file is een script in linux waarin je allerlei commando’s uit kan voeren. Voor het opstarten van onze radio stream en het toveren van een fotootje op de display moeten we meerdere commando’s uitvoeren. Dit kun je in een bash scriptje kwijt.

De bovenste regel stuurt de foto naar de display. Dit doe je met het programma ffmpeg wat we eerder hebben geïnstalleerd. In de regel vind je de groote 128×128 en transpose zorgt er voor dat we de display weer 90 graden doordraaien. Je komt nu exact in de positie waar je het logo wilt hebben.

De bluetoothctl connect zorgt er voor dat je speaker weer connect. Let op het MAC adres is mijn MAC adres. Plaats hier het MAC adress van je eigen speaker.

sleep 10 is een pauze van 10 seconde. Ik wil nl zeker weten dat de Bluetooth speaker geconnect is. En met ffplay opennen we de stream.

De file moeten we nu executable maken zodat hij ook daadwerkelijk uitgevoerd kan worden. Dit kan met chmod.

sudo chmod +x //etc/init.d/caroline.sh

Er zijn meerdere methodes om een file uit te laten voeren bij het opstarten van de Raspberry Pi. Mijn voorkeur gaat naar het gebruik van een cronjob.

crontab -e -u pi

Kies 1
Voeg de volgende regel toe aan de cron file

@reboot sudo -u pi nohup //etc/init.d/caroline.sh

Wat staat hier precies: @reboot is na het herstarten van de Raspberry Pi. sudo, we gaan een commando uitvoeren als superuser, -u vanuit de user “pinohup starten we op zonder dat we een terminal scherm nodig hebben, //etc/init.d/caroline.sh, het bash script caroline.sh welke zich bevind in de map //etc/init.d/.

We gaan nu testen. Zet je speaker aan. en herstart de Raspberry Pi.

sudo shutdown -r now

Na het opstarten komt er muziek uit je boxje en zie je op de display het logo van Radio Caroline.

Display na opstarten

Volgende keer wil ik de foto van Radio Caroline laten wisselen met een foto van het weerbericht.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *