Turinys:

Kaip padaryti „pasidaryk pats“„Arduino“kliūtį išvengti roboto namuose: 4 žingsniai
Kaip padaryti „pasidaryk pats“„Arduino“kliūtį išvengti roboto namuose: 4 žingsniai

Video: Kaip padaryti „pasidaryk pats“„Arduino“kliūtį išvengti roboto namuose: 4 žingsniai

Video: Kaip padaryti „pasidaryk pats“„Arduino“kliūtį išvengti roboto namuose: 4 žingsniai
Video: VU Vaikų universiteto paskaita MANO DRAUGUŽIS - ROBOTAS (8-11 metų moksleiviams) 2024, Lapkritis
Anonim
Image
Image

Sveiki vaikinai, šioje instrukcijoje jūs padarysite kliūtį išvengdami roboto. Ši instrukcija apima roboto su ultragarso jutikliu kūrimą, kuris gali aptikti netoliese esančius objektus ir pakeisti jų kryptį, kad išvengtų šių objektų. Ultragarsinis jutiklis bus pritvirtintas prie servo variklio, kuris nuolat nuskaito kairę ir dešinę, ieškodamas kelyje esančių objektų.

Taigi, nedvejodami, pradėkime!

1 žingsnis: ko jums reikia šiame projekte:

Ko jums reikia šiame projekte
Ko jums reikia šiame projekte
Ko jums reikia šiame projekte
Ko jums reikia šiame projekte

Štai dalių sąrašas:

1) „Arduino Uno“

2) Variklio vairuotojo skydas

3) Pavarų variklis, rėmas ir ratai

4) Servo variklis

5) Ultragarsinis jutiklis

6) Ličio jonų baterija (2x)

7) Akumuliatoriaus laikiklis

8) Vyriškas ir moteriškas megztinis

9) Lituoklis

10) Įkroviklis

2 žingsnis: grandinės schema

Grandinės schema
Grandinės schema

Darbas:

Prieš pradėdami dirbti su projektu, svarbu suprasti, kaip veikia ultragarso jutiklis. Pagrindinis ultragarso jutiklio veikimo principas yra toks:

Naudojant išorinį trigerio signalą, ultragarso jutiklio „Trig“kaištis yra padidintas bent 10 µs. Iš siųstuvo modulio siunčiamas garsinis pliūpsnis. Jį sudaro 8 40KHz impulsai.

Po smūgio į paviršių signalai grįžta atgal ir imtuvas aptinka šį signalą. Echo kaištis yra aukštas nuo signalo išsiuntimo ir jo priėmimo momento. Šį laiką galima konvertuoti į atstumą naudojant atitinkamus skaičiavimus.

Šio projekto tikslas - įgyvendinti kliūtis, išvengiančias roboto, naudojant ultragarso jutiklį ir „Arduino“. Visos jungtys atliekamos pagal schemą. Toliau aprašomas projekto veikimas.

Kai robotas įjungiamas, abu roboto varikliai veiks normaliai, o robotas juda į priekį. Per šį laiką ultragarso jutiklis nuolat skaičiuoja atstumą tarp roboto ir atspindinčio paviršiaus.

Šią informaciją tvarko „Arduino“. Jei atstumas tarp roboto ir kliūties yra mažesnis nei 15 cm, robotas sustoja ir nuskaito į kairę ir į dešinę naujas atstumus naudodamas servo variklį ir ultragarsinį jutiklį. Jei atstumas į kairę pusę yra didesnis nei dešinės pusės, robotas ruošiasi posūkiui į kairę. Tačiau pirmiausia jis šiek tiek sukuria atsarginę kopiją, o paskui įjungia kairiojo rato variklį atbuline kryptimi.

Panašiai, jei dešinysis atstumas yra didesnis nei kairiojo, Robotas paruošia sukimąsi į dešinę. Šis procesas tęsiasi amžinai, o robotas juda be kliūčių.

3 žingsnis: „Arduino UNO“programavimas

#įtraukti

#įtraukti

#įtraukti

# apibrėžti TRIG_PIN A1

# define ECHO_PIN A0

# apibrėžti MAX_DISTANCE 200

# define MAX_SPEED 255 // nustato nuolatinės srovės variklių greitį

# define MAX_SPEED_OFFSET 20

„NewPing“sonaras (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DCMotorinis variklis3 (3, MOTOR34_1KHZ);

AF_DCMotorinis variklis4 (4, MOTOR34_1KHZ); Servo myservo;

loginis einaForward = false;

int atstumas = 100; int speedSet = 0;

void setup () {

myservo.attach (10);

myservo.write (115); vėlavimas (2000 m.); atstumas = skaitytiPing (); vėlavimas (100); atstumas = skaitytiPing (); vėlavimas (100); atstumas = skaitytiPing (); vėlavimas (100); atstumas = skaitytiPing (); vėlavimas (100); }

void loop () {

int atstumasR = 0; int atstumasL = 0; vėlavimas (40);

if (atstumas <= 15) {moveStop (); vėlavimas (100); Judėk atgal(); vėlavimas (300); moveStop (); vėlavimas (200); atstumasR = lookRight (); vėlavimas (200); atstumasL = lookLeft (); vėlavimas (200);

jei (atstumasR> = atstumasL) {

Pasukite į dešinę(); moveStop (); } else {turnLeft (); moveStop (); }} else {moveForward (); } atstumas = skaitytiPing (); }

int lookRight () {

myservo.write (50); vėlavimas (500); int atstumas = skaitytiPing (); vėlavimas (100); myservo.write (115); grįžimo atstumas; }

int lookLeft () {

myservo.write (170); vėlavimas (500); int atstumas = skaitytiPing (); vėlavimas (100); myservo.write (115); grįžimo atstumas; vėlavimas (100); }

int readPing () {

vėlavimas (70); int cm = sonar.ping_cm (); jei (cm == 0) {cm = 250; } grįžti cm; }

void moveStop () {

motor3.run (RELEASE);

motor4.run (RELEASE); }

void moveForward () {

jei (! eina pirmyn) {

eina pirmyn = tiesa;

motor3.run (į priekį);

motor4.run (į priekį); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) // lėtai didinkite greitį, kad baterijos nebūtų kraunamos per greitai {

motor3.setSpeed (speedSet);

motor4.setSpeed (speedSet); vėlavimas (5); }}}

void moveBackward () {

eina pirmyn = klaidinga;

motor3.run (BACKWARD);

motor4.run (BACKWARD); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) // lėtai didinkite greitį, kad akumuliatoriai nebūtų kraunami per greitai {

motor3.setSpeed (speedSet);

motor4.setSpeed (speedSet); vėlavimas (5); }}

void turnRight () {

motor3.run (į priekį);

motor4.run (BACKWARD); vėlavimas (500);

motor3.run (į priekį);

motor4.run (į priekį); }

void turnLeft () {

motor3.run (BACKWARD);

motor4.run (į priekį); vėlavimas (500);

motor3.run (į priekį);

motor4.run (į priekį); }

1) Atsisiųskite ir įdiekite „Arduino Desktop IDE“

  • langai -
  • „Mac OS X“-
  • „Linux“-

2) Atsisiųskite ir įklijuokite „NewPing“bibliotekos (ultragarso jutiklių funkcijų bibliotekos) failą į „Arduino“bibliotekų aplanką.

  1. Atsisiųskite „NewPing.rar“žemiau
  2. Ištraukite jį į kelią - C: / Arduino / bibliotekos

3) Įkelkite kodą į „Arduino“plokštę naudodami USB kabelį

Atsisiuntimo kodas:

4 žingsnis: Puiku

Dabar jūsų robotas yra pasirengęs išvengti bet kokių kliūčių …

Aš mielai atsakysiu į visus jūsų klausimus

Paštas: [email protected]

Svetainė:

Prenumeruokite mano „YouTube“kanalą:

Instagram:

„Facebook“:

Ačiū:)

Rekomenduojamas: