Sadržaj:

Kako napraviti robota za izbjegavanje prepreka od Arduina kod kuće: 4 koraka
Kako napraviti robota za izbjegavanje prepreka od Arduina kod kuće: 4 koraka
Anonim
Image
Image

Pozdrav dečki, u ovom Instructableu učinit ćete prepreku izbjegavajući robota. Ovaj Instructable uključuje izgradnju robota s ultrazvučnim senzorom koji može detektirati obližnje objekte i promijeniti njihov smjer kako bi se ti objekti izbjegli. Ultrazvučni senzor bit će pričvršćen na servo motor koji stalno skenira lijevo i desno tražeći predmete na svom putu.

Dakle, bez daljnjih odlaganja, počnimo!

Korak 1: Ono što vam treba u ovom projektu:

Što trebate u ovom projektu
Što trebate u ovom projektu
Što trebate u ovom projektu
Što trebate u ovom projektu

Evo popisa dijelova:

1) Arduino Uno

2) Štit vozača motora

3) Motor zupčanika, okvir i kotači

4) Servo motor

5) Ultrazvučni senzor

6) Li-ion baterija (2x)

7) Držač baterije

8) Muška i ženska žica kratkospojnika

9) Lemilica

10) Punjač

Korak 2: Dijagram kruga

Kružni dijagram
Kružni dijagram

Rad:

Prije nego što krenete raditi na projektu, važno je razumjeti kako ultrazvučni senzor radi. Osnovni princip rada ultrazvučnog senzora je sljedeći:

Koristeći vanjski signal okidača, okidač na ultrazvučnom senzoru postaje logički visok najmanje 10 μs. Šalje se zvučni signal iz odašiljačkog modula. Sastoji se od 8 impulsa od 40KHz.

Signali se vraćaju natrag nakon udarca u površinu i prijemnik detektira ovaj signal. Echo pin je visok od trenutka slanja signala i primanja. Ovo se vrijeme može pretvoriti u udaljenost pomoću odgovarajućih izračuna.

Cilj ovog projekta je implementirati robota koji izbjegava prepreke pomoću ultrazvučnog senzora i Arduina. Svi spojevi izvedeni su prema shemi kola. U nastavku se objašnjava rad projekta.

Kad je robot uključen, oba motora robota će raditi normalno i robot će se kretati naprijed. Za to vrijeme ultrazvučni senzor neprestano izračunava udaljenost između robota i reflektirajuće površine.

Ove podatke obrađuje Arduino. Ako je udaljenost između robota i prepreke manja od 15 cm, Robot se zaustavlja i skenira u lijevom i desnom smjeru za novu udaljenost pomoću Servo motora i ultrazvučnog senzora. Ako je udaljenost prema lijevoj strani veća od udaljenosti desne strane, robot će se pripremiti za skretanje ulijevo. No, prvo se malo sigurnosno kopira, a zatim aktivira motor lijevog kotača u obrnutom smjeru.

Slično, ako je desna udaljenost veća od udaljenosti lijeve udaljenosti, Robot priprema rotaciju udesno. Taj se proces nastavlja zauvijek, a robot se nastavlja kretati bez udarca u bilo koju prepreku.

Korak 3: Programiranje Arduino UNO

#uključi

#uključi

#uključi

# definirajte TRIG_PIN A1

# definirajte ECHO_PIN A0

# definirajte MAX_DISTANCE 200

# define MAX_SPEED 255 // postavlja brzinu istosmjernih motora

# define MAX_SPEED_OFFSET 20

Sonar NewPing (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DCMotor motora3 (3, MOTOR34_1KHZ);

AF_DCMotor motora4 (4, MOTOR34_1KHZ); Servo myservo;

boolean goesForward = false;

int udaljenost = 100; int speedSet = 0;

void setup () {

myservo.attach (10);

myservo.write (115); odgoda (2000); udaljenost = readPing (); kašnjenje (100); udaljenost = readPing (); kašnjenje (100); udaljenost = readPing (); kašnjenje (100); udaljenost = readPing (); kašnjenje (100); }

void loop () {{100} {101}

int udaljenostR = 0; int udaljenostL = 0; kašnjenje (40);

if (udaljenost <= 15) {moveStop (); kašnjenje (100); moveBackward (); kašnjenje (300); moveStop (); kašnjenje (200); distanceR = lookRight (); kašnjenje (200); udaljenostL = lookLeft (); kašnjenje (200);

if (udaljenostR> = udaljenostL) {

skrenuti desno(); moveStop (); } else {turnLeft (); moveStop (); }} else {moveForward (); } udaljenost = readPing (); }

int lookRight () {

myservo.write (50); kašnjenje (500); int udaljenost = readPing (); kašnjenje (100); myservo.write (115); povratna udaljenost; }

int lookLeft () {

myservo.write (170); kašnjenje (500); 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 = 250; } return cm; }

void moveStop () {

motor3.run (RELEASE);

motor4.run (RELEASE); }

void moveForward () {

if (! ide naprijed) {

ide naprijed = istina;

motor3.run (NAPRIJED);

motor4.run (NAPRIJED); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) // polako povećavajte brzinu kako biste izbjegli prebrzo punjenje baterija {

motor3.setSpeed (speedSet);

motor4.setSpeed (speedSet); kašnjenje (5); }}}

void moveBackward () {

ideForward = false;

motor3.run (NAZAD);

motor4.run (NAZAD); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) // polako povećavajte brzinu kako biste izbjegli prebrzo punjenje baterija {

motor3.setSpeed (speedSet);

motor4.setSpeed (speedSet); kašnjenje (5); }}

void turnRight () {

motor3.run (NAPRIJED);

motor4.run (NAZAD); kašnjenje (500);

motor3.run (NAPRIJED);

motor4.run (NAPRIJED); }

void turnLeft () {

motor3.run (NAZAD);

motor4.run (NAPRIJED); kašnjenje (500);

motor3.run (NAPRIJED);

motor4.run (NAPRIJED); }

1) Preuzmite i instalirajte Arduino Desktop IDE

  • Windows -
  • Mac OS X -
  • Linux -

2) Preuzmite i zalijepite datoteku knjižnice NewPing (biblioteka funkcija ultrazvučnog senzora) u mapu Arduino knjižnice.

  1. U nastavku preuzmite NewPing.rar
  2. Raspakirajte ga na stazu - C: / Arduino / libraries

3) Prenesite kôd na Arduino ploču putem USB kabela

Kod za preuzimanje:

Korak 4: Odlično

Sada je vaš robot spreman izbjeći svaku prepreku …

Rado ću odgovoriti na sva vaša pitanja

Pošalji mi e -poštu: [email protected]

Web stranica:

Pretplatite se na moj YouTube kanal:

Instagram:

Facebook:

Hvala vam:)

Preporučeni: