Hoe maak je een obstakel? Robot vermijden met Arduino?

De wereld beweegt snel, en de technologie beweegt ook mee op het gebied van robotica. De toepassingen van robotica zijn overal ter wereld te zien. Het concept van mobiele of autonome robots die zonder externe hulp bewegen, is het meest meeslepende onderzoeksgebied. Er zijn zoveel soorten mobiele robots, bijvoorbeeld Self Localization and Mapping (SLAM) -tolken, Line Following, Sumo Bots, enz. Een robot die obstakels ontwijkt, is er een van. Het gebruikt een techniek om het pad te veranderen als het een obstakel op zijn weg detecteert.

In dit project is een op Arduino gebaseerde obstakelvermijdende robot ontworpen die een ultrasone sensor zal gebruiken om alle obstakels op zijn pad te detecteren.

Hoe obstakels te vermijden met een ultrasone sensor?

Laten we, aangezien we de samenvatting van ons project kennen, een stap verder gaan en wat informatie verzamelen om het project te starten.

Stap 1: de componenten verzamelen

De beste benadering om een ​​project te starten, is door aan het begin een lijst met complete componenten te maken en een korte studie van elk onderdeel te doorlopen. Dit helpt ons om de ongemakken midden in het project te vermijden. Een volledige lijst van alle componenten die in dit project worden gebruikt, wordt hieronder gegeven.

Stap 2: de componenten bestuderen

Nu we een volledige lijst van alle componenten hebben, gaan we een stap voorwaarts en gaan we door een korte studie van de werking van elk onderdeel.

Arduino nano is een breadboard-vriendelijke microcontroller-kaart die wordt gebruikt om verschillende taken in een circuit aan te sturen of uit te voeren. We verbranden een C-code op Arduino Nano om het microcontrollerbord te vertellen hoe en welke bewerkingen moeten worden uitgevoerd. Arduino Nano heeft exact dezelfde functionaliteit als Arduino Uno, maar dan in een vrij klein formaat. De microcontroller op het Arduino Nano-bord is ATmega328p.

De L298N is een geïntegreerde schakeling met hoge stroom en hoge spanning. Het is een dubbele full-bridge die is ontworpen om standaard TTL-logica te accepteren. Het heeft twee activeringsingangen waarmee het apparaat onafhankelijk kan werken. Twee motoren kunnen tegelijkertijd worden aangesloten en bediend. De snelheid van de motoren wordt gevarieerd via de PWM-pinnen. Pulsbreedtemodulatie (PWM) is een techniek waarbij de stroom van spanning in elk elektronisch onderdeel kan worden gecontroleerd. Deze module heeft een H-brug die verantwoordelijk is voor de regeling van de draairichting van de motoren door de stroomrichting om te keren. De Enable-pin A en Enable-pin B worden gebruikt om de snelheid van beide motoren te wijzigen. Deze module kan werken tussen 5 en 35V en een piekstroom tot 2A. De Input Pin1 en Input Pin2 en voor de eerste motor en de Input Pin3 en Input Pin4 zijn voor de tweede motor.

HC-SR04-bord is een ultrasone sensor die wordt gebruikt om de afstand tussen twee objecten te bepalen. Het bestaat uit een zender en een ontvanger. De zender zet het elektrische signaal om in een ultrasoon signaal en de ontvanger zet het ultrasone signaal weer om in het elektrische signaal. Wanneer de zender een ultrasone golf uitzendt, reflecteert deze na een botsing met een bepaald object. De afstand wordt berekend door gebruik te maken van de tijd die het ultrasone signaal nodig heeft om van de zender te gaan en terug te komen naar de ontvanger.

Stap 3: De componenten monteren

Nu we nu de werking van de meeste gebruikte componenten kennen, laten we beginnen met het samenstellen van alle componenten en een robot maken die obstakels vermijdt.

  1. Pak een auto-wielkasten en plak er een breadboard op. Monteer de ultrasone sensor aan de voorkant van de chasses en een batterijklepje achter de chasses.
  2. Bevestig het Arduino Nano-bord op het breadboard en bevestig de motoraandrijving direct achter het breadboard, op de chasses. Verbind de Enable-pinnen van beide motoren met de Pin6 en Pin9 van Arduino nano. De In1, In2, In3 en In4 pinnen van de motor driver module zijn respectievelijk verbonden met pin2, pin3, pin4 en pin5 van de Arduino nano.
  3. De trig- en echopin van de ultrasone sensor zijn respectievelijk verbonden met pin11 en in10 van de Arduino nano. De Vcc en aardingspin van de ultrasone sensor zijn verbonden met de 5V en aarde van de Arduino Nano.
  4. De motorcontrollermodule wordt gevoed door de batterij. Het Arduino Nano-bord krijgt de stroom van de 5V-poort van de motordriver-module en de ultrasone sensor krijgt zijn stroom van het Arduino-nano-bord. het gewicht en de energie van de batterijen kunnen de bepalende factor worden voor hun prestaties.
  5. Zorg ervoor dat uw aansluitingen hetzelfde zijn als hieronder in het schakelschema.

Stap 4: Aan de slag met Arduino

Als u nog niet bekend bent met de Arduino IDE, hoeft u zich geen zorgen te maken, want hieronder wordt een stapsgewijze procedure voor het instellen en gebruiken van de Arduino IDE met een microcontrollerbord uitgelegd.

  1. Download de nieuwste versie van Arduino IDE van Arduino.
  2. Sluit je Arduino Nano-bord aan op je laptop en open het configuratiescherm. klik in het configuratiescherm opHardware en geluid. Klik nu opApparaten en printers.Zoek hier de poort waarop uw microcontroller-kaart is aangesloten. In mijn geval wel COM14maar het is anders op verschillende computers.
  3. Klik op het menu Tool. en zet het bord op Arduino Nano uit het vervolgkeuzemenu.
  4. Stel in hetzelfde Tool-menu de poort in op het poortnummer dat u eerder in het Apparaten en printers.
  5. Stel in hetzelfde toolmenu de processor in op ATmega328P (oude bootloader).
  6. Download de onderstaande code en plak deze in uw Arduino IDE. Klik op de uploaden knop om de code op uw microcontroller-bord te branden.

Klik hier om de code te downloaden.

Stap 5: de code begrijpen

De code is goed becommentarieerd en spreekt voor zich. Maar toch wordt het hieronder uitgelegd

1. Aan het begin van de code worden alle pinnen van het Arduino Nano-bord die zijn aangesloten op de ultrasone sensor en de motorbesturingsmodule geïnitialiseerd. Pin6 en Pin9 zijn PWM-pinnen die de stroom van spanning kunnen variëren om de snelheid van de robot te variëren. Twee variabelen, looptijd, en afstandworden geïnitialiseerd om gegevens op te slaan die later zullen worden gebruikt om de afstand van de ultrasone sensor en het obstakel te berekenen.

int enable1pin = 6; // Pinnen voor eerste motor int motor1pin1 = 2; int motor1pin2 = 3; int enable2pin = 9; // Pins voor tweede motor int motor2pin1 = 4; int motor2pin2 = 5; const int trigPin = 11; // Trigger Pin Of Ultrasonic Sesnor const int echoPin = 10; // Echo Pin Of Ultrasonic Sesnor lange duur; // variabelen om de zwevende afstand van de afstand te berekenen; 

2. leegte setup ()is een functie die wordt gebruikt om alle gebruikte pinnen in te stellen, zoals INVOER en UITGANG.De baudrate wordt in deze functie gedefinieerd. Baudrate is de communicatiesnelheid waarmee het microcontrollerboard communiceert met de sensoren die ermee zijn geïntegreerd.

leegte setup () {Serial.begin (9600); pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); pinMode (enable1pin, OUTPUT); pinMode (enable2pin, OUTPUT); pinMode (motor1pin1, OUTPUT); pinMode (motor1pin2, OUTPUT); pinMode (motor2pin1, UITGANG); pinMode (motor2pin2, OUTPUT); }

3. leegte lus ()is een functie die herhaaldelijk in een cyclus wordt uitgevoerd. In deze functie vertellen we de microcontroller-kaart hoe en welke bewerkingen moeten worden uitgevoerd. Hier wordt eerst de triggerpin ingesteld om een ​​signaal te verzenden dat wordt gedetecteerd door de echopin. Vervolgens wordt de tijd die het ultrasone signaal nodig heeft om van en terug naar de sensor te reizen, berekend en opgeslagen in de variabele looptijd. Vervolgens wordt deze tijd gebruikt in een formule om de afstand van het obstakel en de ultrasone sensor te berekenen. Vervolgens wordt als voorwaarde gesteld dat als de afstand meer dan 5 cm is, de robot in een rechte lijn vooruit zal rijden en als de afstand kleiner is dan 50 cm, de robot een scherpe bocht naar rechts zal maken.

void loop () {digitalWrite (trigPin, LOW); // Verzenden en detecteren van de ultrasone signaalvertragingMicroseconden (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); duur = pulseIn (echoPin, HIGH); // Berekenen van de tijd die de ultrasone golf nodig heeft om de afstand terug te reflecteren = 0,034 * (duur / 2); // Berekenen van de afstand tussen de week van de robbot en het obstakel. if (afstand> 50) // Vooruit gaan als de afstand groter is dan 50 cm {digitalWrite (enable1pin, HIGH); digitalWrite (enable2pin, HIGH); digitalWrite (motor1pin1, HIGH); digitalWrite (motor1pin2, LOW); digitalWrite (motor2pin1, HIGH); digitalWrite (motor2pin2, LOW); } else if (afstand <50) // Scherpe bocht naar rechts als de afstand minder is dan 50 cm {digitalWrite (enable1pin, HIGH); digitalWrite (enable2pin, HIGH); digitalWrite (motor1pin1, HIGH); digitalWrite (motor1pin2, LOW); digitalWrite (motor2pin1, LOW); digitalWrite (motor2pin2, LOW); } vertraging (300); }

Toepassingen

Dus hier was de procedure om een ​​obstakel vermijdende robot te maken. Deze technologie om obstakels te vermijden kan ook in andere toepassingen worden aangeklaagd. Enkele van deze toepassingen zijn als volgt.

  1. Volgsysteem.
  2. Doeleinden van afstandsmeting.
  3. Dit kan worden gebruikt in automatische stofzuigrobots.
  4. Dit kan worden gebruikt in Sticks voor blinden.
Facebook Twitter Google Plus Pinterest