Afstandssensor
Een ultrasone afstandssensor meet hoe ver iets weg is door geluidsgolven te sturen en te kijken hoe lang ze erover doen om terug te komen. Wij gebruiken de RCWL-1601.
Materiaal
- Nano op het shieldArduino Nano RP2040 Connect op het Leaphy Murphy Shield
- AfstandssensorType RCWL-1601
De sensor heeft vier pinnen: VCC, Trig, Echo en GND.
Controlevraag
Wat doet de Trig-pin?
Antwoord
Via Trig stuurt de microcontroller een kort signaaltje. Daardoor zendt de sensor een geluidspuls uit. Via Echo komt het antwoord terug.
Aansluiten

Op het shield heeft elke pin van de Nano een eigen rijtje van drie pinnen. De binnenste, naast de Nano, is de pin zelf (bijvoorbeeld D7). De middelste is 3V3 en de buitenste is GND. Sluit een onderdeel aan op het rijtje van zijn pin: dan zitten signaal, 3V3 en GND naast elkaar, en past er een stekker van drie pinnen op. In het schema zegt de legenda welke draad op welke pin komt.
Op het rijtje van D8:
- Echo op de binnenste rij, de pin D8
- VCC in het midden, 3V3
- GND op de buitenste rij, GND
En Trig met een losse draad aan de pin D7 (binnenste rij). Die draad kruist Echo en GND: op de sensor zit Trig links van Echo, op het shield zit D7 rechts van D8.
Kies voor Trig en Echo een gewone D-pin. D18 en D19 (de pinnen A4 en A5) werken niet: in MicroPython lopen die via de wifi-chip, en dat is te traag om de echo te timen. Bovendien zijn ze nodig voor I2C, als je een TOF of OLED-scherm gebruikt.
Code
from time import sleep
from leaphymicropython.sensors.sonar import read_distance
while True:
print(read_distance("D7", "D8"))
sleep(1)
Je krijgt nu elke seconde de afstand in centimeters in de Shell te zien.
Uitleg
read_distance("D7", "D8")
- Eerste naam: de pin van Trig (
D7). - Tweede naam: de pin van Echo (
D8). - Schrijf de namen tussen aanhalingstekens. Een kaal getal als
7betekent voor MicroPython iets anders: het nummer van een aansluiting op de chip (GPIO7), en dat is hier de pin D11.
Komt er geen echo terug, omdat er niets voor de sensor staat of een draad los
zit, dan geeft read_distance het getal 1313.0. Dat is geen afstand van
13 meter, maar een teken dat de meting mislukte.
Opdracht: lampje bij obstakel
Laat het ingebouwde rode lampje LED_RED branden zodra een obstakel binnen 10 cm komt.
Tip
Bij de ingebouwde RGB-LED is value(0) aan en value(1) uit. Gebruik een if-statement met < 10.
Oplossing
from time import sleep
from machine import Pin
from leaphymicropython.sensors.sonar import read_distance
led = Pin('LED_RED', Pin.OUT)
while True:
afstand = read_distance("D7", "D8")
if afstand < 10:
led.value(0) # AAN
else:
led.value(1) # UIT
sleep(0.1)