Geplaatst op Geef een reactie

Lichtgevoelige weerstand met Raspberry Pi

Raspberry Pi photo-resistor light sensor

In deze tutorial gebruiken we een lichtsensor. Ontdek het met een Python-script op je Raspberry Pi, 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.

Wat je nodig hebt voor deze tutorial

Allereerst moet je een Raspberry Pi 3 hebben die op de nieuwste versie van Raspbian 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 “Eerste Python programma op de Raspberry Pi” en “Starten met GPIO op de Raspberry Pi” voor een snelle introductie.

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)

Raspberry Pi GPIO discovery kit  

Indien je dingen zou missen, aarzel dan niet om onze shop te bezoeken. We hebben een goed bedachte kit die alle nodige componenten bevat .

 

De lightsensor module

Light sensor 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 & gt; instelpunt: uitgang = laag
  • lichtintensiteit & lt; 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.

Het hardware gedeelte opzetten

Voordat je begint met het aansluiten van kabels 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!

Raspberry Pi GPIO light sensor

 

  • 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)
Raspberry Pi light sensor fritzing

De code schrijven

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 vindt Thonny onder 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 invoerpin
  • lOld = 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 komen
  • while 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 status
  • if GPIO.input(LIGHT_PIN):als de sensorpen hoog is, is de lichtintensiteit laag = & gt; donker
  • print ('\u263e') geef het maansymbool (ASCII-code) weer, voel je vrij om de ASCII-code te veranderen in een tekst naar keuze
  • print ('\u263c') geef het zonsymbool (ASCII-code) weer
  • lOld = GPIO.input(LIGHT_PIN) we bewaren de laatst gemeten status in de lOld variabele
  • time.sleep(0.2) We wachten 0,2 seconden vooraleer we verder gaan met de loop

 

Python script for light sensor

  Als je klaar bent met de code, klik 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 afgedrukt. 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 gloeilamp wil sturen. Nog veel plezier ermee!