Search Code

Les 25/31: Slimme auto Car-3 ontwijkt obstakels met behulp van infraroodsensoren | SunFounder Robojax

Les 25/31: Slimme auto Car-3 ontwijkt obstakels met behulp van infraroodsensoren | SunFounder Robojax

Dit project transformeert jouw SunFounder 3-in-1 Arduino slimme auto in een autonoom voertuig dat obstakels vermijdt. Door twee infrarood (IR) sensoren te monteren—één aan de linkerkant en één aan de rechterkant—kan de auto objecten in zijn pad detecteren en in een fractie van een seconde beslissingen nemen om eromheen te sturen. Dit is een fundamentele stap in de robotica, waarbij je leert hoe je sensorinput combineert met motorregellogica om een reactieve, zelfrijdende machine te creëren. De principes die je hier leert, zijn toepasbaar op een breed scala aan praktijktoepassingen, waaronder:

  • Het bouwen van een robotische stofzuiger die door een kamer navigeert zonder tegen meubels aan te botsen.
  • Het creëren van een lijnvolgende of doolhofoplossende robot voor wedstrijden of educatieve projecten.
  • Het ontwikkelen van een geautomatiseerde beveiligingspatrouillebot die een perimeter kan verkennen en muren kan vermijden.
  • Het ontwerpen van een slim speelgoedautootje dat zelfstandig kan spelen zonder vast te lopen.

Deze gids bouwt direct voort op eerdere lessen waarin je leerde de motoren van de auto te besturen en te begrijpen hoe IR-sensoren werken. Hier combineren we die vaardigheden om een eenvoudig maar effectief algoritme voor het vermijden van obstakels te implementeren.

Hoe de logica voor het vermijden van obstakels werkt

Het kernidee is eenvoudig: de auto gebruikt twee IR-sensoren om te controleren op obstakels aan de linker- en rechterkant. Elke sensor geeft een digitaal signaal: LOW (0) wanneer hij een object binnen zijn bereik detecteert (ongeveer 20 cm) en HIGH (1) wanneer het pad vrij is. De logica bepaalt vervolgens de actie van de auto op basis van de sensortoestanden (in video op 02:35):

  • Obstakel links, rechts vrij: De auto draait naar rechts om het te vermijden.
  • Obstakel rechts, links vrij: De auto draait naar links.
  • Obstakels aan beide kanten: De auto rijdt achteruit om aan een mogelijke doodlopende weg te ontsnappen.
  • Geen obstakels: De auto rijdt vooruit.

Deze reactieve benadering is een klassiek voorbeeld van een eindige-toestandsmachine, waarbij het gedrag van de auto een directe reactie is op de huidige sensorinputs.

Sunfounder-Smartcar-Obstacle-avoideance-1

Hardwarecomponenten

Om dit project te voltooien, heb je de volgende componenten nodig, die allemaal zijn inbegrepen in de SunFounder 3-in-1 Arduino-kit:

  • 1x SunFounder 3-in-1 Arduino Smart Car Kit (of gelijkwaardige onderdelen)
  • 2x infrarood obstakelvermijdingssensoren
  • 1x Arduino Uno (of compatibel bord)
  • 1x motorstuurmodule/bord
  • jumperdraden

Bedradingsgids

Een correcte uitlijning van de sensoren is cruciaal voor dit project. De IR-sensoren moeten naar voren en iets naar buiten gericht zijn, omdat ze obstakels aan de zijkanten van de auto detecteren (in video op 02:07). Het volgende bedradingsschema laat zien hoe je de sensoren op de Arduino aansluit. Houd er rekening mee dat de instructeur een specifiek stroomverdelingspunt op het breadboard van de auto gebruikte, maar de verbindingen met de Arduino zijn wat er echt toe doet.

Sunfounder-Smartcar-Obstacle-avoideance-wiring

De bedradingsverbindingen zijn als volgt (in video op 03:47):

  • Voeding (VCC): Verbind de VCC-pin van beide IR-sensoren met de 5V-uitgang op de Arduino of de stroomrail van de auto.
  • Aarde (GND): Verbind de GND-pin van beide IR-sensoren met een gemeenschappelijke aarde op de Arduino of de aardrail van de auto.
  • Uitgang rechtersensor (OUT): Verbind de digitale uitgangspin van de rechter IR-sensor met digitale pin 7 op de Arduino.
  • Uitgang linkersensor (OUT): Verbind de digitale uitgangspin van de linker IR-sensor met digitale pin 8 op de Arduino.

De motorstuurverbindingen voor de linker- en rechtermotoren zijn hetzelfde als die in de vorige les over motorregeling.

Code-uitleg

De code voor dit project is eenvoudig. Het hoofdprogramma is hieronder bij het artikel beschikbaar om te downloaden. Hier richten we ons op de door de gebruiker configureerbare delen die je kunt aanpassen voor je eigen auto.

const int A_1B = 5;
const int A_1A = 6;
const int B_1B = 9;
const int B_1A = 10;

const int rightIR = 7;
const int leftIR = 8;

Deze regels definiëren de pinnen die worden gebruikt voor de motorstuurmodule en de IR-sensoren. De motorpinnen (A_1B, A_1A, B_1B, B_1A) regelen de snelheid en richting van de twee motoren. De rightIR- en leftIR-pinnen zijn waar je de signaaldraden van je sensoren aansluit. Als je andere pinnen hebt gebruikt, wijzig je deze waarden hier.

int speed = 150;

Deze variabele stelt de basissnelheid van de auto in. De waarde kan variëren van 0 tot 255, waarbij 255 de maximale snelheid is. Een waarde van 150 is een goed startpunt om te leren, omdat het snel genoeg is om interessant te zijn, maar langzaam genoeg om reactietijd mogelijk te maken (in video op 07:10). Je kunt dit aanpassen om je auto sneller of langzamer te maken.

De rest van de code definieert de logica in de loop()-functie. Het leest de status van de linker- en rechtersensoren en roept vervolgens de juiste bewegingsfunctie aan (moveForward(), moveBackward(), backLeft(), backRight()). Deze functies zijn vooraf gedefinieerd en sturen de motordriver aan om de gewenste beweging te bereiken. De instructeur voegde ook een stop()-functie toe in een latere wijziging om de auto na een ontwijkingsmanoeuvre kort te laten pauzeren, waardoor de bewegingen doelbewuster worden (in video op 10:29).

Live Projectdemonstratie

In de video demonstreert de instructeur eerst de logica met behulp van de Seriële Monitor. Door een doos bij de sensoren te plaatsen, zie je de bijbehorende berichten zoals "Go Left", "Go Right" of "Go Backward" op het scherm verschijnen, wat bevestigt dat de sensoruitlezingen en de logica correct zijn (in video op 09:11).

Na het verifiëren van de logica voegt de instructeur een cruciale verbetering toe: een stop()-functie. Deze functie brengt de auto gedurende een bepaalde periode (bijv. 1 seconde) volledig tot stilstand nadat deze een bocht maakt of achteruitrijdt, waardoor schokkerige bewegingen worden voorkomen en de auto zijn omgeving opnieuw kan evalueren (in video op 10:29).

Tot slot wordt de auto op de vloer getest met een reeks obstakels. De video toont hoe de auto succesvol om dozen heen navigeert, naar links en rechts draait en indien nodig achteruitrijdt om een vrije weg te vinden, wat de praktische toepassing van dit obstakelvermijdingsalgoritme demonstreert (in video op 12:13).

Hoofdstukken

  • [00:00] Inleiding tot obstakelvermijding met IR-sensoren
  • [01:24] Vereisten en projectoverzicht
  • [02:35] Hoe de obstakelvermijdingslogica werkt
  • [03:47] Bedrading van de IR-sensoren en motoren
  • [05:40] Openen en uitleggen van de code
  • [09:11] Testen van de logica met de Seriële Monitor
  • [10:29] Toevoegen van een stopfunctie voor vloeiendere navigatie
  • [11:42] Testen van de stopfunctie
  • [12:13] Laatste praktijktest op de vloer

Afbeeldingen

Sunfounder-Smartcar-Obstacle-avoideance-1
Sunfounder-Smartcar-Obstacle-avoideance-1
Sunfounder-Smartcar-Obstacle-avoideance-wiring
Sunfounder-Smartcar-Obstacle-avoideance-wiring
894-Lesson 25: SunFounder's 3-in-1 Arduino kit Car-3 Smart Car Avoids Obstacle Using Infrared Sensors
Taal: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Hulpmiddelen en referenties

Bestanden📁

Arduino-bibliotheken (zip)