Sadržaj:

Robotski automobil koji izbjegava prepreke: 9 koraka
Robotski automobil koji izbjegava prepreke: 9 koraka

Video: Robotski automobil koji izbjegava prepreke: 9 koraka

Video: Robotski automobil koji izbjegava prepreke: 9 koraka
Video: Дэнис Хонг: О создании автомобиля для слепых 2024, Juli
Anonim
Robotski automobil koji izbjegava prepreke
Robotski automobil koji izbjegava prepreke
Robotski automobil koji izbjegava prepreke
Robotski automobil koji izbjegava prepreke

Kako izgraditi robota koji izbjegava prepreke

Korak 1: Crna kutija

Black Box
Black Box

prvi korak sam koristio crnu kutiju kao bazu za svog robota.

Korak 2: Arduino

Arduino
Arduino

Arduino je mozak cijelog sistema i orkestrira naše motore

Korak 3: Priključivanje Arduina na Blackbox

Priključivanje Arduina na Blackbox
Priključivanje Arduina na Blackbox

Priključio sam arduino na crnu kutiju vrućim ljepilom

Korak 4: Ultrazvučni senzor

Ultrazvučni senzor
Ultrazvučni senzor

Da bismo napravili robota koji se može sam kretati, potrebna nam je neka vrsta ulaza, senzora koji odgovara našem cilju. Ultrazvučni senzor je instrument koji mjeri udaljenost do objekta pomoću ultrazvučnih zvučnih valova. Ultrazvučni senzor koristi pretvarač za slanje i primanje ultrazvučnih impulsa koji prenose povratne informacije o blizini objekta

Korak 5: Povezivanje senzora na Arduino na matičnoj ploči

Povezivanje senzora na matičnu ploču s Arduinom
Povezivanje senzora na matičnu ploču s Arduinom
Povezivanje senzora na matičnu ploču s Arduinom
Povezivanje senzora na matičnu ploču s Arduinom

Koristio sam žice da povežem vezu između matične ploče i arduina.

Obratite pažnju da vaš ping senzor može imati drugačiji raspored pinova, ali bi trebao imati pin napona, uzemljenje, okidač i eho pin.

Korak 6: Štit motora

Motorni štit
Motorni štit

Arduino ploče ne mogu same upravljati istosmjernim motorima, jer su struje koje generiraju preniske. Za rješavanje ovog problema koristimo štitove motora. Štitnik motora ima 2 kanala, što omogućava kontrolu dva istosmjerna motora, ili 1 koračni motor. … Adresiranjem ovih pinova možete odabrati kanal motora za pokretanje, odrediti smjer motora (polaritet), postaviti brzinu motora (PWM), zaustaviti i pokrenuti motor i pratiti trenutnu apsorpciju svakog kanala

Korak 7: Povezivanje štita motora s Arduinom

Povezivanje štita motora s Arduinom
Povezivanje štita motora s Arduinom

Jednostavno pričvrstite štitnik motora na arduino sa zgužvanim žicama senzora

Korak 8: Spajanje 4 motora i baterija na štit

Spajanje 4 motora i baterija na štit
Spajanje 4 motora i baterija na štit

Svaki motorni štit ima (najmanje) dva kanala, jedan za motore, a jedan za izvor napajanja, povežite ih međusobno

Korak 9: Programirajte robota

pokrenite ovaj kod

#include #include

NewPing sonar (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DCMotor motora1 (1, MOTOR12_1KHZ); AF_DCMotor motora2 (2, MOTOR12_1KHZ); AF_DCMotor motora3 (3, MOTOR34_1KHZ); AF_DCMotorni motor4 (4, MOTOR34_1KHZ); Servo myservo;

#define TRIG_PIN A2 #define ECHO_PIN A3 #define MAX_DISTANCE 150 #define MAX_SPEED 100 #define MAX_SPEED_OFFSET 10

boolean goesForward = false; int udaljenost = 80; int speedSet = 0;

void setup () {

myservo.attach (10); myservo.write (115); kašnjenje (2000); distance = readPing (); kašnjenje (100); distance = readPing (); kašnjenje (100); distance = readPing (); kašnjenje (100); distance = readPing (); kašnjenje (100); }

void loop () {int distanceR = 0; int udaljenostL = 0; kašnjenje (40); if (udaljenost <= 15) {moveStop (); kašnjenje (50); moveBackward (); kašnjenje (150); moveStop (); kašnjenje (100); distanceR = lookRight (); kašnjenje (100); distanceL = lookLeft (); kašnjenje (100);

if (distanceR> = distanceL) {turnRight (); moveStop (); } else {turnLeft (); moveStop (); }} else {moveForward (); } distance = readPing (); }

int lookRight () {myservo.write (50); kašnjenje (250); int udaljenost = readPing (); kašnjenje (50); myservo.write (100); povratna udaljenost; }

int lookLeft () {myservo.write (120); kašnjenje (300); int udaljenost = readPing (); kašnjenje (100); myservo.write (115); povratna udaljenost; kašnjenje (100); }

int readPing () {kašnjenje (70); int cm = sonar.ping_cm (); ako (cm == 0) {cm = 200; } return cm; }

void moveStop () {motor1.run (RELEASE); motor2.run (RELEASE); motor3.run (RELEASE); motor4.run (RELEASE); } void moveForward () {

if (! goesForward) {goesForward = true; motor1.run (NAPRIJED); motor2.run (NAPRIJED); motor3.run (NAPRIJED); motor4.run (NAPRIJED); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); kašnjenje (5); }}}

void moveBackward () {goesForward = false; motor1.run (NAZAD); motor2.run (NAZAD); motor3.run (NAZAD); motor4.run (NAZAD); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); kašnjenje (5); } void turnLeft () {motor1.run (NAZAD); motor2.run (NAZAD); motor3.run (NAPRIJED); motor4.run (NAPRIJED); kašnjenje (500); motor1.run (NAPRIJED); motor2.run (NAPRIJED); motor3.run (NAPRIJED); motor4.run (NAPRIJED); }

void turnLeft () {motor1.run (NAZAD); motor2.run (NAZAD); motor3.run (NAPRIJED); motor4.run (NAPRIJED); kašnjenje (500); motor1.run (NAPRIJED); motor2.run (NAPRIJED); motor3.run (NAPRIJED); motor4.run (NAPRIJED); }

Preporučuje se: