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.

Experimenteren met de Raspberry Pi Zero – Bluetooth (deel – 6)

In deze aflevering gaan we kijken hoe we de Bluetooth van de Raspberry Pi kunnen gebruiken om met een Bluetooth JBL speaker naar de Radio te luisteren. Ook gaan we een logo van het Radio station op de display tonen.

Allereerst gaan we ffmpeg installeren. Met dit programma kun je audio bestanden streamen. En nog veel meer. De website van FFMPEG zegt zelf: “decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created.”

Dit is dus een hele mooie tool. En nu de kracht van Linux. Type het volgende commando in.

We gaan voor de zekerheid eerst naar onze home directory.

cd

En nu installeren we FFMPEG.

sudo apt install ffmpeg

En hij is geinstalleerd.

Nu gaan we Bluealsa installeren. Met Bluealsa kun je Bluetooth apparaten registreren op je systeem.

sudo apt-get install bluealsa

sudo service bluealsa start

Schakel je JBL GO, of een ander BleuTooth device, in en druk op de Bluetooth discovery knop.

We gaan nu onze JBL GO zoeken.

sudo bluetoothctl

We komen nu in het bluetooth menu en zetten scan on.

[bluetooth] scan on

Bluetooth scan

Ik schrok van het aantal devices wat er langs komt. Dit was een behoorlijke lijst.

In de lijst zie je de Bluetooth speakers staan.

[NEW] Device 30:C0:1B:C5:25:DD JBL GO

Het MAC adress is belangrijk dus deze copieeren we even naar kladblok o.i.d.

Let op: In de voorbeelden hieronder gebruik ik het MAC adress van mijn JBL GO. Gebruik hier het MAC Adress van je eigen Bluetooth Speaker.

Nu gaan we hem pairen, trusten en connecten. Het kan zijn dat je inmiddels weer op de discovery button op je speaker moet drukken.

[bluetooth] pair 30:C0:1B:C5:25:DD
[bluetooth] trust 30:C0:1B:C5:25:DD
[bluetooth] connect 30:C0:1B:C5:25:DD
[bluetooth] exit

Om Bluetooth af te kunnen spelen vanaf de User pi ,moet je de User pi aan de Bluetooth groep toevoegen. Anders gaat het niet werken.

getent group | grep pi

Je ziet we zijn geen lid van de bluetooth groep. Nu voegen we de User pi toe aan de Bluetooth groep.

sudo usermod -G bluetooth -a pi

getent group | grep pi

Bluetooth group

We gaan het systeem herstarten en loggen opnieuw in.

sudo shutdown -r now

Na de herstart moet je de JBL GO speaker opnieuw connecten.

bluetoothctl connect 30:C0:1B:C5:25:DD

We gaan eens kijken of het allemaal werkt. We downloaden een klein wav filetje om te testen.

wget www.kozco.com/tech/organfinale.wav

En dit spelen we af.

aplay -D bluealsa:SRV=org.bluealsa,DEV=30:C0:1B:C5:25:DD,PROFILE=a2dp organfinale.wav

Als het werkte gaan we een standaard profiel aanmaken voor onze JBL GO speaker.

cd

sudo nano ~/.asoundrc

In dit filetje plakken we het volgende profiel. Let op dat je het MAC adress van je eigen speaker in het filetje plakt.

defaults.bluealsa.interface “hci0”
defaults.bluealsa.device “30:C0:1B:C5:25:DD
defaults.bluealsa.profile “a2dp”
defaults.bluealsa.delay 10000

pcm.btreceiver {
type plug
slave.pcm {
type bluealsa
device “30:C0:1B:C5:25:DD
profile “a2dp”
}
hint {
show on
description “Bluetooth Receiver”
}
}pcm.!default {
type plug
slave.pcm “btreceiver”
}

We slaan dit op met CTRL X en Y en herstarten weer het systeem.

sudo shutdown -r now

Na de herstart weer connecten:

bluetoothctl connect 30:C0:1B:C5:25:DD

Na de herstart testen we de Radio Stream.

ffplay http://sc6.radiocaroline.net:8040

Als het goed is hoor je nu Radio Caroline. Volgende keer gaan we een logo op het display toveren.

Experimenteren met de Raspberry Pi Zero – Een USB Bus en een Display (deel – 5)

Het OTG kabeltje is niet echt makkelijk en daarom heb ik besloten een USB aansluiting op de Raspberry Pi Zero te maken. Hier doen we de USB Stick in waarop het OS is geïnstalleerd. Voor dit projectje hebben we een USB Bus deel nodig. Op E-Bay of op een radio onderdelen markt zijn deze wel te krijgen.

USB Bus

Allereerst solderen we 4 draadjes aan de BUS. Vervolgens plakken we met een lijmpistool de bus op de achterkant van de Raspberry Pi. Leg eerst een dun laagje lijm op de Raspberry Pi als isolatie en druk de bus daar in. De buitenste rode en blauwe draad zijn de + en de -. De middelste rode en groene draad zijn de + en de – van de data.

Bedrading

Nu buigen we voorzichtig de draden naar de soldeer veldjes en strippen de uiteinde van de draden blank. Soldeer de draden volgens onderstaande afbeelding vast.

USB Bus

Ik heb ook nog een behuizing en (met open achterkant) en pennetjes gemonteerd. Op de pennen kan ik een display aansluiten. Let op, de eerste mini USB bus is voor de voedingsspanning.

Display

Het eindresultaat ziet er als bovenstaande afbeelding uit.

Volgende keer gaan we Bluetooth configureren zodat we er ook geluid uit kunnen krijgen.

Experimenteren met de Raspberry Pi Zero – Een bestand aanmaken en bewerken (deel – 4)

In het vierde deel van Experimenteren met de Raspberry Pi Zero gaan we een bestandje aanmaken en aanpassen. Ik werk zelf het liefst met de editor nano. Uiteraard zijn er meerdere editors voor handen zoals vi (spreek uit als fie aai).

Nano

Met het commando nano gevolgd door de file naam kun je een bestand aanmaken of aanpassen. Je kunt hier ook weer een <path> aangeven, b.v. nano /etc/test

Maar we beginnen in onze eigen directory met nano test.

We kunnen hier een paar dummy regels aanmaken. Met <CTRL G> roep je de help file op en zie je dat er de nodige “short cuts” in de editor aanwezig zijn. Ik heb in mijn test file wat “shortcuts” neer gezet die ik zelf veel gebruik.

Nano

ALs we nu met <CTRL X> afsluiten en vervolgens op Y drukken dan is ons bestand opgeslagen.

Met het commando CAT kun je het bestand inzien. CAT is een afkorting voor “concatenate” wat letterlij vertaald betekend: aaneengeschakeld. We gebruiken dus CAT om een bestand in te zien.

cat test

Cat

Soms wil je alleen de laatste 10 regels van een file inkijken. Dit kun je doen met tail. Dit commando laat de laatste 10 regels van een file zien. Dit is b.v. handig om logfiles te bekijken.

tail /var/log/syslog

Op deze manier kunnen we de laatste 10 regels van de syslog file bekijken.

tail syslog

Als we een file willen copyeren gebruiken we het commando cp (Copy). Achter cp zetten we het bestand wat we willen copieeren en daarachter de bestandsnaam waarheen we het willen copieeren. Je kunt hier ook weer een path aangeven.

cp test /tmp/testcopy

Met rm verwijder je een bestand. (Remove)

rm /tmp/testcopy

Copy Remove

Een file renamen kun je doen met mv (Move).

mv test testnieuw

Als laatste tip de pijltjes toets <omhoog> en <omlaag> op je toetsenbord. Hiermee kun je snel navigeren door je laatste commando’s. Je kunt op deze manier snel commando’s herhalen.

We gaan het systeem nu herstarten of uitzetten. Dat doen we met shutdown.

Shutdown

In bovenstaand scherm zie je dat je als gebruiker pi niet zo maar een shutdown mag geven. Dit mag wel als Super User. Dus we doen sudo shutdown. Een shutdoen wordt ingepland. We moeten dus ook een tijd aangeven. Het wordt dan:

sudo shutdown now

Wil je een hetstart geven dan wordt het:

sudo shutdown -r now

Dit commando is beter dan een reboot omdat een reboot erg hard is. Een shutdown sluit zaken nog netjes af.

Volgende keer ga ik mijn hardware van de Raspberry Pi aanpassen met een normale USB aansluiting en er een display op zetten. Er moet ook nog geluid uit kunnen komen dat gaan we doen met Bluetooth.

Experimenteren met de Raspberry Pi Zero – Navigeren en Up to Date houden (deel – 3)

In de tekst worden sommige commando’s weergegeven met hoofdletters. Linux is hoofdletter gevoelig, leer jezelf aan om alle commando’s zoveel mogelijk met kleine letters in te geven. De hoofdletters in de tekst zijn om de tekst te verduidelijken.

Nu we weten wie we zijn willen we ook graag weten waar we zijn. Met het commando PWD kun je opvragen waar je bent.

pwd

PWD staat voor “Print Working Directory“. Het geeft weer in welke directory of map we zijn. Op een Linux systeem kunnen meerdere gebruikers tegelijkertijd inloggen en ieder kan er zijn ding doen. Iedere user heeft ook zijn eigen directory. Wij zijn de user pi en hebben in de home directory de directory pi.

CD staat voor “Change Directory“. Met het commando cd .. kun je 1 mapje terug in de directory boom. Let hier op de spatie tussen cd en de puntjes. Vervolgens kunnen we met pwd weer opvragen waar je bent.

Met cd keer je weer terug naar je eigen directory. Ben je dus verdwaalt dan type je cd en ben je weer thuis in je home directory. Met cd / ga je naar de hoofd directory. Let op de spatie tussen cd en /. Dit noemen we ook wel de Root.

LS staat voor “List“. Met ls kun je opvragen welke files en directory’s er in de directory aanwezig zijn.

Navigeren

Wil je de files en directory’s netjes in een lijstje zien dan dan kun je -l toevoegen aan ls. Je krijgt dan het commando ls -l. Let weer op de spatie naar de letter L. Een extra h maakt de grote van de bestande wat beter leesbaar. ls -lh, en een extra -a zorgt er voor dat je ook de verborgen bestanden ziet, ls -alh. die ga je vaak gebruiken.

ls -alh

Wil je weten welke toevoegingen er allemaal zijn voor ls type dan ls –help.

We maken nu ons scherm schoon. Dit doe je met clear en we keren terug naar onze home directory. Dit doen we met cd.

Je kunt nu ook direct naar een ander directory springen. Als we naar de directory etc in root willen zijn doe je cd /etc.

Als het goed is moet je nu begrijpen wat er in het voorbeeld hieronder gebeurd.

Navigeren

Dit was in vogelvlucht een kort stukje uitleg hoe je kan navigeren in Linux. We gaan nu het systeem updaten en upgraden.

Updaten en Upgraden

We gaan nu de Raspberry Pi updaten en upgraden. Dit kun je het beste direct na een nieuwe installatie doen. Een update of upgrade kun je alleen als Root of als Super User uitvoeren. We weten dat we lid zijn van de Super User groep dus we gaan zeggen Super User Doe een update. Echter sudo update werkt niet.

We gaan een APT update doen. APT staat voor “Advanced Package Tool“. Deze tool gaan we gebruiken voor het onderhoud van het systeem. Linux bestaat uit allemaal pakketten en we we gaan de pakketten updaten. Dus eerst gaan we zorgen dat alle pakketten up to date zijn.

sudo apt update

Update

Vervolgens gaan we de upgrade uitvoeren. Dit doen we met het commando sudo apt full-upgrade. We doen een volledige upgrade omdat dan ook eventuele afhankelijkheden in het systeem worden ge-upgrade.

sudo apt full-upgrade

Deze upgrade duurt even en vergeet niet Yes in te voeren zodat hij begint met upgraden.

Upgrade

na de update hebben we weer behoorlijk wat files ge-upload en geïnstalleerd. De installatie files kun je hierna opruimen. Zo hou je je systeem netjes. De installatie files staan in de directory /var/cache/apt/archives. Je kunt daar een kijkje nemen. cd /var/cache/apt/archives en dan ls -alh.

DF staat voor “Disk Free”. Met het comando df -h kun je zien hoe vol je USB stick is. -h zorgt er weer voor dat het in leesbare text staat. de h staat voor “human readable” oftewel leesbaar voor mensen.

Het opruimen van de installatie files doe je met sudo apt-get clean.

Clean up

Dus een upgrade bestaat uit 3 comando’s

sudo apt update

sudo apt full-upgrade

sudo apt-get clean

Volgende keer gaan we files aanmaken en bewerken.