Blog
GPIO vochtsensor instellen
Op een Raspberry Pi kun je verschillende sensoren aansluiten op de pinnetjes van het bord. Een leuke en ook praktische sensor om te gebruiken is de vocht sensor. Deze kan je informatie geven of iets vochtig is of droog. Op deze pagina wordt uitgelegd hoe een een eenvoudige vochtsensor aansluit op een Raspberry Pi.

Wat je nodig hebt is een
- Raspberry Pi
- Een vocht sensor
Een vocht meter geeft aan of een hij vocht meet of niet. Digitaal vertaald kun je zeggen dat het 0 of 1 is.
Met een kort python3 script kun je dit makkelijk digitaal zichtbaar maken, maar het begint bij het correct aansluiten van de sensor aan je Raspberry Pi.
Je gebruikt bij de vochtsensor de volgende pins
- Een 5 volt pin.
- Een ground (aarde) pin.
- Een GPIO pin.

Er zijn verschillende Raspberry Pi versies waarbij mogelijk de pins anders kunnen zijn dan hoe het vermeld staat op dit plaatje. Het idee blijft altijd wel hetzelfde dat de sensor altijd stroom, aarde en een GPIO in nodig heeft. Om een beeld te krijgen hoe het bij jou Pi bordje is ingedeeld kun je in de terminal op je Raspberry Pi het volgende invoeren:
pinout
Het python script
In het volgende python3 script maken we gebruik van de GPIO 21 pin. In de variabel pinnr benoemen we dan ook het juiste pinnummer.
GPIO.input() geeft aan of de sensor vocht detecteert of niet. Deze geeft het weer in de waarde 0 (vochtig) of 1 (droog)
#!/usr/bin/python3
import RPi.GPIO as GPIO
from time import sleep
pinnr = 21
GPIO.setmode(GPIO.BCM)
GPIO.setup(pinnr, GPIO.IN)
def waterdetectie(pinnr):
status = int(GPIO.input(pinnr))
if status == 0:
print("Water gedetecteerd in de bloempot.")
sleep(300)
elif status == 1:
print("Droogte gedetecteerd in de bloempot.")
sleep(300)
while True:
waterdetectie(pinnr)
Bash bestanden
Als je steeds een reeks commando’s wilt uitvoeren kan het handig zijn om deze in een bash bestand uit te voeren.
Het grote voordeel is:
- Je hoeft niet telkens een boel tekst in te voeren.
- Het bash bestand kun je gebruiken bij andere toepassingen.
- Je kunt ook gebruikers invoer toepassen.
Een voorbeeld is het updaten van een linux systeem. Meestal gevolgd door 3 commando’s wat vereenvoudigd kan worden tot 1 bestand.
#!/bin/bash
sudo apt update
sudo apt upgrade
sudo apt autoremove
Het hoeft niet maar de regel start met #!/bin/bash zodat het systeem direct snapt dat dit een bash bestand is. Je kunt de tekst in een tekst editor opslaan als een .sh bestand. Dit bestand kun je uitvoeren op verschillende manieren.
sh bashbestand.sh
bash bashbestand.sh
./bashbestand.sh
Door een bashbestand voorafgaande uit te voeren met sh wordt deze op een eenvoudige wijze uitgevoerd. De andere opties hebben net wat meer mogelijkheden. Je zult hiernaast ook zien dat de uitvoering van een bash bestand ook anders kan zijn.
Probeer bijvoorbeeld maar eens het volgende uit te voeren op de 3 verschillende manieren.
printf "hallo\n dit is een regel met printf.\n\n"
echo "hallo\n dit is een regel met echo.\n\n"
Om ./bashbestand.sh uit te voeren moet je deze eerst uitvoerbaar maken. Dit kun je doen door het volgende in te voeren.
chmod +x bashbestand.sh
#!/bin/bash
printf "1. Menu optie 1\n2. Menu optie 2\n3. Menu optie 3\n\n"
read -p "Keuze: " VAR
if [ $VAR -eq 1 ];then
Typ hier een terminal commando
elif [ $VAR -eq 2 ];then
Typ hier een terminal commando
elif [ $VAR -eq 3 ];then
Typ hier een terminal commando
fi
Terminal achtergrond proces starten
Als je een script wil uitvoeren in een terminal stopt de script als je de terminal sluit. Dit gebeurd ook als je via een ssh een script uitvoert.
In sommige gevallen is het wenselijk om de terminal of ssh sessie te willen sluiten, maar dat je script op de achtergrond blijft door werken.
Denk hierbij bijvoorbeeld aan een python scripts die een sensor aan de praat moet houden.
Dan hoef je niet telkens de terminal te zien. Ook als je op een Rasberry Pi een lite versie draait zonder desktop omgeving.
Gelukkig kennen we bij de meeste Linux distributies hier een goede en ook een makkelijke oplossing voor.
Door de volgende regel in te voeren start je als het ware je script in de achtergrond.
setsid ./script.py
Als je dit invoert zie je in de eerste instantie niets gebeuren. In de terminal sessie ga je gewoon naar de volgende regel, echter op de achtergrond is er een aparte sessie begonnen waar je script ./script.py uitgevoerd wordt.
Dat deze script uitgevoerd wordt kun je zien door het volgende in te voeren
top -U gebruikersnaam
Je ziet nu alles wat deze gebruiker uitvoert. Je ziet als het goed is ook de naam van het script die je gestart hebt.
onder de kolom PID zie je een nummer wat gekoppeld is aan het programma of script wat op dit moment loopt.
Dit nummer kun kun je weer gebruiken om het script weer te stoppen. Gebruik hiervoor het kill commando.
kill PID-nummer
Bijvoorbeeld:
kill 12345
Samba gebruikers aanmaken
Bestanden delen in een Linux omgeving is als een dans. De benodigdheden om dit te doen, zijn vernoemd naar een heilige Nigeriaanse dans genaamd Samba. Andrew Tridgell heeft de eerste versie hiervan ontwikkeld in 1991. Wanneer je achter de computer zit, wil je soms een bestand laten ‘dansen’ van de ene computer naar de andere. Tot op de dag van vandaag maken we nog steeds gebruik van deze software op alle gangbare systemen.
Het is altijd verstandig om niet zomaar iedereen toegang te geven wanneer je bestanden of mappen wilt delen via het netwerk. Je zou kunnen verwachten dat je met je systeemgebruikersnaam en wachtwoord toegang kunt krijgen tot een gedeelde map. Echter, als je Samba gebruikt, werkt dit niet op die manier. Samba heeft zijn eigen gebruikers, die je zelf nog even moet introduceren. Je kunt toegang verlenen door een unieke gebruikersnaam en wachtwoord aan te maken.
Om een Samba-gebruiker aan te maken, kun je het volgende commando gebruiken:
sudo smbpasswd -a {gebruikersnaam}
Met de optie -a kun je een Samba-gebruiker toevoegen. Vervang {gebruikersnaam} door de nieuwe gebruikersnaam die je wilt aanmaken. Het systeem zal je vragen om een nieuw wachtwoord in te voeren, en dit wachtwoord wordt vervolgens opgeslagen.
Nu je een gebruikersnaam en wachtwoord hebt aangemaakt, kun je toegang krijgen tot de gedeelde map.
Youtube filmpjes downloaden
Youtube is een goede plek om video’s te bekijken, maar het is niet gegarandeerd dat een video altijd beschikbaar blijft. Als je geen abonnement hebt op Youtube, zul je vaak reclameadvertenties moeten bekijken. Je kunt een browserextensie installeren om advertenties te vermijden, maar als je een video echt wilt bewaren, is het handig om deze op je computer op te slaan. De meeste plugins om video’s van Youtube te downloaden werken niet meer vanwege regelgeving. Daarom is het tijd om op zoek te gaan naar een goed alternatief.
Een goede manier om youtube filmpjes te downloaden is om gebruik te maken van het programma yt-dlp.
Het ging bij mij in de eerste instantie niet meteen goed, maar na een paar verschillende pogingen was dit de manier wat werkt.
Geeft het volgende in in de terminal:
snap install yt-dlp
Na een korte installatie kun je het programma al uitvoeren. Belangrijk is wel om het uit te voeren in je home directory.
cd ~
yt-dlp https://youtu.be/AIa0dj9MXn8
Dit programma accepteert:
- Alle youtube filmpjes
- Youtube playlists
- Archive.org filmpjes
Er zijn waarschijnlijk ook andere videodiensten beschikbaar waar dit mee werkt, maar ik heb in ieder geval goede ervaringen met dit lijstje. Hopelijk kun je op dezelfde manier je favoriete filmpjes downloaden en ben je niet afhankelijk van anderen.
Systeem verbeteren zonder beeldscherm
Als je een Linux systeem hebt die je alleen maar op afstand gebruikt, is het onnodig om aan de computerkast een monitor te verbinden.
Dit wordt ook wel een headless-systemen genoemd. Toch als je zo de monitor afschakelt zul je bemerken dat de computer erg traag reageert. Dit komt omdat het systeem is ingesteld om met een monitor te werken, maar die is er niet.
Als je systeem traag reageert kun je dit makkelijk oplossen door een aanpassing te maken in de videokaart instellingen.
Je voegt dan een virtueel beeldscherm toe zodat je systeem niet steeds issues heeft om een daadwerkelijk beeldscherm te zoeken.
Door een virtuele videodriver te gebruiken, kan systeembronnen worden bespaard, omdat er geen grafische interface of videokaart nodig is.
Voer als eerste het volgende uit in de terminal
sudo apt-get install xserver-xorg-video-dummy
Hierna kun je een aanpassing maken in het xorg.conf bestand. Dit bestand zou je moeten kunnen vinden onder de volgende mappen:
- /usr/share/X11/xorg.conf.d/
- /etc/X11/
Als je dit niet kunt vinden, maakt je een nieuw bestand aan onder /usr/share/X11/xorg.conf.d die je dus xorg.conf noemt.
Dit kun je doen via een tekstverwerker of via een terminal omgeving.
sudo nano /usr/share/X11/xorg.conf.d/xorg.conf
Als het bestand al bestond kun je de inhoud vervangen door het onderstaande. Het gaat er om dat het bestand alleen de volgende tekst bevat.
Section "Device"
Identifier "Configured Video Device"
Driver "dummy"
# Default is 4MiB, this sets it to 16MiB
VideoRam 16384
EndSection
Section "Monitor"
Identifier "Configured Monitor"
HorizSync 31.5-48.5
VertRefresh 50-70
EndSection
Section "Screen"
Identifier "Default Screen"
Monitor "Configured Monitor"
Device "Configured Video Device"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1024x800"
EndSubSection
EndSection
Sla het bestand op en start het systeem opnieuw op. Als het goed is kun je nu een wezenlijk verschil bemerken op de reactie tijd van je systeem als de computer opnieuw opgestart is.