
In deze tutorial gebruiken we een lichtsensor. Samen met een Python-script op je Raspberry Pi, ga je na of hat al dan niet donker is. Wanneer je deze tutorial hebt voltooid, kan je via de GPIO-pinnen een lichtsensormodule met een digitale uitgang aansluiten op je Pi. Je hebt ook de basiscode om het outputsignaal van de sensor om te zetten naar bruikbare informatie in je Python-script.
Je Raspberry Pi voorbereiden
Allereerst dien je een Raspberry Pi te hebben die op de nieuwste versie van Raspberry Pi OS draait. Deze versie bevat “Thonny”. We zullen deze gebruiksvriendelijke IDE gebruiken om onze Python-code te schrijven. Als je niet bekend bent met Python of met Thonny en de GPIO-pinnen, raad ik je aan onze volgende tutorials te bekijken “Hoe je eerste Python programma op de Raspberry Pi schrijven” en “Hoe de GPIO pinnen van de Raspberry Pi gebruiken” voor een snelle introductie.
De extra hardware voorbereiden
Vervolgens heb je wat extra hardware nodig:
- een breadboard (we gebruiken een breadboard van 400 punten)
- een lichtsensor-module met een lichtgevoelige weerstand en een digitale uitgang
- Dupont jumper kabels
- een T-cobbler (optioneel)
- een 40 pins GPIO-kabel (optioneel)
Indien je dingen zou missen, aarzel dan niet om onze shop te bezoeken. We hebben een goed bedachte kit die alle nodige componenten bevat .
Maak kennis met de lightsensor module

De lichtsensormodule is uitgerust met een LDR (Light Dependent Resistor). De LDR heeft een variabele weerstand die verandert met de lichtintensiteit die erop valt. Hierdoor kan deze de intensiteit van het omgevingslicht meten. De weerstand van de LDR neemt af wanneer de intensiteit van het licht toeneemt. Het resulteert in een analoog signaal dat niet geschikt is voor de GPIO-pinnen van onze Raspberry Pi. Om deze reden gebruiken we een module die is uitgerust met de LDR, maar ook met een spanningsvergelijker en een potentiometer. Met deze componenten hebben we een digitale uitgang met een instelbare drempel.
- lichtintensiteit > instelpunt: uitgang = laag
- lichtintensiteit < instelpunt: uitgang = hoog
Het uitgangssignaal van de “DO” -pin kan rechtstreeks op een GPIO-pin van onze Raspberry Pi worden aangesloten. De bedrijfsspanning van de module is 3.3V of 5V.
Sommige lichtmodules hebben een vierde pin, dit is de analoge uitgang (linker pin op de foto). Dit uitgangssignaal kan niet rechtstreeks op de GPIO-pinnen van de Raspberry Pi worden aangesloten. Het heeft een meer complexe schakeling of een ander type bord nodig dat in staat is om analoge signalen te lezen.
En ten slotte is de module uitgerust met 2 LED’s: om aan te geven dat de module voeding krijgt en om de gemeten toestand van het omgevingslicht aan te geven.
Stel de hardware op
Let op! Voordat je begint met het aansluiten van draden op de GPIO-pinnen van je Raspberry Pi, dien je ervoor te zorgen dat je de Pi goed afsluit en de voedingskabel van het bordje hebt verwijderd!

- sluit de 40-pins kabel op de GPIO-pinnen van je Pi aan (verwijder indien nodig eerst het deksel van je Pi)
- sluit de T-cobbler op het breadboard aan zoals wordt weergegeven in de afbeelding hierboven of hieronder
- sluit het andere uiteinde van de 40-pins kabel aan op de T-cobbler
- verbind de VCC pin van de sensor met de 5V pin (rode kabel)
- verbind de DO pin van de sensor met pin 23 (gele kabel)
- verbind de GND van de sensor met een GPIO GND pin (zwarte kabel)

Schrijf de code
Het doel van deze tutorial is om een heel eenvoudige Python-script te schrijven dat ons in staat stelt om te visualiseren wanneer er de module donker of licht detecteerd.
Om de code te schrijven, gebruiken we de Thonny IDE. Je kan Thonny vinden in het applicatiemenu van je Raspberry Pi.
Schrijf of plak de volgende code in de IDE:
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) LIGHT_PIN = 23 GPIO.setup(LIGHT_PIN, GPIO.IN) lOld = not GPIO.input(LIGHT_PIN) print('Starting up the LIGHT Module (click on STOP to exit)') time.sleep(0.5) while True: if GPIO.input(LIGHT_PIN) != lOld: if GPIO.input(LIGHT_PIN): print ('\u263e') else: print ('\u263c') lOld = GPIO.input(LIGHT_PIN) time.sleep(0.2)
Wat verklaringen over de code:
GPIO.setmode (GPIO.BCM)
: De GPIO.BCM-optie betekent dat we naar de pinnen verwijzen via het “Broadcom SOC-kanaal” -nummer, dit zijn de cijfers na “GPIO”GPIO.setwarnings (False)
: we gebruiken deze coderegel om waarschuwingsberichten te vermijden.GPIO.setup(LIGHT_PIN, GPIO.IN)
: We definiëren de lichtsensor-pin (= 23) als een invoerpinlOld = not GPIO.input(LIGHT_PIN)
: We gebruiken een variabele “lOld” om de laatste sensorstatus te bewaren. Hierdoor kunnen we de laatst gemeten waarde vergelijken met de vorige en alleen op het scherm weergeven wanneer de waarde wijzigt. Om er zeker van te zijn dat de status wordt weergegeven bij het starten van het script, kennen we de tegenovergestelde waarde van de lichtsensor aan deze variabele toe.time.sleep(0.5)
We wachten een halve seconde zodat de sensor tot rust kan komenwhile True:
is een oneindige loop (tot het programma onderbroken wordt)- Wees voorzichtig, Python is witruimte gevoelig. Verwijder de “tab” niet voor de regel die na de “while” opdracht volgt
if GPIO.input(LIGHT_PIN) != lOld:
als de waarde van de lichtsensor verschillend is dan de vorige gemeten statusif GPIO.input(LIGHT_PIN):
als de sensorpen hoog is, is de lichtintensiteit laag = & gt; donkerprint ('\u263e')
geef het maansymbool (ASCII-code) weer, voel je vrij om de ASCII-code te veranderen in een tekst naar keuzeprint ('\u263c')
geef het zonsymbool (ASCII-code) weerlOld = GPIO.input(LIGHT_PIN)
we bewaren de laatst gemeten status in de lOld variabeletime.sleep(0.2)
We wachten 0,2 seconden vooraleer we verder gaan met de loop
Voer het script uit
Vooraleer je het programma laat uitvoeren, dien je het een naam te geven en op te slaan.

Eens opgeslagen, klik je op de knop Uitvoeren. Je ziet de status van de lichtintensiteit op het scherm verschijnen. Als de lichtintensiteit wijzigt, boven of onder het instelpunt, wordt de nieuwe status op het scherm weergegeven. Je kan de potentiometer op de module aanpassen om het instelpunt aan te passen.
Om het programma te stoppen, klikt je gewoon op de STOP knop.
Gefeliciteerd! Met deze opstelling kan je de lichtintensiteit bepalen. Je kan het script verder gebruiken om het resultaat in een toepassing te verwerken waar je bijvoorbeeld een lamp wil sturen. Nog veel plezier ermee!