Kazalo:

OAREE - 3D natisnjeno - Robot za preprečevanje ovir za inženirsko izobraževanje (OAREE) z Arduinom: 5 korakov (s slikami)
OAREE - 3D natisnjeno - Robot za preprečevanje ovir za inženirsko izobraževanje (OAREE) z Arduinom: 5 korakov (s slikami)

Video: OAREE - 3D natisnjeno - Robot za preprečevanje ovir za inženirsko izobraževanje (OAREE) z Arduinom: 5 korakov (s slikami)

Video: OAREE - 3D natisnjeno - Robot za preprečevanje ovir za inženirsko izobraževanje (OAREE) z Arduinom: 5 korakov (s slikami)
Video: The Choice is Ours (2016) Official Full Version 2024, September
Anonim
Image
Image
OAREE - 3D natisnjeno - Robot za preprečevanje ovir za inženirsko izobraževanje (OAREE) z Arduinom
OAREE - 3D natisnjeno - Robot za preprečevanje ovir za inženirsko izobraževanje (OAREE) z Arduinom
OAREE - 3D natisnjeno - Robot za preprečevanje ovir za inženirsko izobraževanje (OAREE) z Arduinom
OAREE - 3D natisnjeno - Robot za preprečevanje ovir za inženirsko izobraževanje (OAREE) z Arduinom

OAREE (Robot, ki se izogiba oviram za inženirsko izobraževanje)

Oblikovanje: Cilj tega poučevanja je bil oblikovati robota OAR (Robot za preprečevanje ovir), ki je bil preprost/kompakten, 3D natisnjen, enostaven za sestavljanje, za premikanje uporablja servomotorje z neprekinjenim vrtenjem in ima čim manj kupljenih delov. Verjamem, da mi je uspelo ustvariti tega čudovitega robota in sem ga poimenoval OAREE (Robot za preprečevanje ovir za inženirsko izobraževanje). Ta robot bo zaznal ovire, se ustavil, pogledal levo in desno, nato se obrnil v neovirano smer in nadaljeval naprej.

Ozadje: Internet ima številne ovire pri izogibanju robotom, vendar je večina velikih, težkih za sestavljanje in dragih. Mnogi od teh robotov imajo dobavljeno kodo Arduino, vendar je bilo težko najti dobro premišljen, delujoč primer. Prav tako sem hotel uporabiti servomotorje za neprekinjeno vrtenje koles (namesto enosmernih motorjev), kar še ni bilo storjeno. Zato sem se odpravil na misijo, da bi razvil kompaktnega, iznajdljivega robota OAR, ki bi ga delil s svetom.

Nadaljnji razvoj: Ta robot je mogoče dodatno razviti za večjo natančnost pinganja, dodati IR senzorje za zmožnost sledenja liniji, LCD zaslon za prikaz razdalje ovir in še veliko več.

Zaloge

  • 1x Arduino Uno -
  • 1x senzorski ščit V5 -
  • 1x držalo baterije 4xAA s stikalom za vklop/izklop -
  • 1x Servo SG90 -
  • 2x servomotorji z neprekinjeno rotacijo -
  • 1x 9V napajalni kabel za Arduino (NEOBVEZNO) -
  • 1x ultrazvočni senzor HC -SR04 -
  • 4x Žensko-ženska skakalna žica-https://www.amazon.com/RGBZONE-120 kosov- Večbarvna…
  • 2x gumijasti trakovi
  • 1x 9V baterija (neobvezno)
  • 4x AA baterije
  • 4x majhni vijaki (4 x 1/2 ali kaj podobnega)
  • Phillips izvijač
  • Lepilo za pritrditev gumijastih trakov na kolesa

1. korak: 3D tiskanje: ohišje, kolesa, marmorni kolesci, 6 mm vijak/matica in ultrazvočni nosilec senzorja

3D tiskanje: ohišje, kolesa, marmorni kolesci, 6 mm vijak/matica in ultrazvočni nosilec senzorja
3D tiskanje: ohišje, kolesa, marmorni kolesci, 6 mm vijak/matica in ultrazvočni nosilec senzorja
3D tiskanje: ohišje, kolesa, marmorni kolesci, 6 mm vijak/matica in ultrazvočni nosilec senzorja
3D tiskanje: ohišje, kolesa, marmorni kolesci, 6 mm vijak/matica in ultrazvočni nosilec senzorja
3D tiskanje: ohišje, kolesa, marmorni kolesci, 6 mm vijak/matica in ultrazvočni nosilec senzorja
3D tiskanje: ohišje, kolesa, marmorni kolesci, 6 mm vijak/matica in ultrazvočni nosilec senzorja

Za 3D tiskanje je 5 delov.

  1. Telo
  2. Kolesa
  3. Marmorni kolesalec
  4. 6 mm vijak/matica (neobvezno, lahko zamenjate kovinsko matico/vijak)
  5. Nosilec ultrazvočnega senzorja

Vse potrebne datoteke. STL so vključene v ta navodila in datoteke Sketchup. Priporočeno polnjenje 40%.

2. korak: Programirajte Arduino

Image
Image
Sestavite robota
Sestavite robota

Pošlji kodo na Arduino UNO: Z uporabo Arduino IDE pošljite kodo (v priloženi datoteki) v svoj modul Arduino. S to skico boste morali prenesti knjižnice servo.h in newping.h.

Koda je temeljito komentirana, tako da lahko vidite, kaj počne vsak ukaz. Po želji lahko razdaljo ultrazvočnega senzorja enostavno spremenite na večjo ali manjšo vrednost. To je začetna koda, ki naj bi jo razširili in uporabili za nadaljnji razvoj projektov.

// OMEJITEV, KI SE IZBEGAJO ROBOTU // [email protected], [email protected], Univerza v TN v Chattanoogi, elektrotehnika, FALL 2019 // Potrebni materiali: // 1) Arduiino UNO, 2) Servo Sensor Shield v5.0, 3) Ultrazvočni senzor HCSR04, 4) Servo FS90 (za ultrazvočni senzor) // 5 in 6) 2x STORITVE ZA NEPREKRETNE ROTACIJE za kolesa // 7) 16 mm Marmor za zadnjo kolesce, 8 in 9) 2 gumijasta traku za kolesa // 10- 15) 1x (4xAA) Nosilec baterije s stikalom za vklop/izklop, 16 in 17) 9V baterija s priključkom za napajanje Arduino UNO // 3D PRINT: // 18) Ohišje ROBOT, 19 & 20) 2x Kolesa, 21) Marmorni kolešček, 22) Ultrazvočni senzor Nosilec in 6 mm vijak (glej priložene datoteke) // -------------------------------------- -------------------------------------------------- ----------------------------------------- #include // Vključi servo knjižnico #include // Vključi knjižnico Newping // ------------------------------------------- -------------------------------------------------- ------------------------------------ #določi TRIGGER_PIN 1 2 // US sprožilec na pin 12 na Arduinu #define ECHO_PIN 13 // US Echo na pin 13 na Arduino #define MAX_DISTANCE 250 // Razdalja do pinga (največ 250) int distance = 100; // ------------------------------------------------ -------------------------------------------------- ------------------------------- Servo US_Servo; // Ultrazvočni senzorski servo servo Levo_Servo; // Servo servo za levo kolo Desno_Servo; // Servo desnega kolesa NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing nastavitev zatičev in največje razdalje. // ------------------------------------------------ -------------------------------------------------- ------------------------------- void setup () // VHOD/IZHODI, KJE NA PRILOGA, NASTAVITI ZAČETNI POLOŽAJ/GIBANJE {pinMode (12, OUTPUT); // Sprožilni pin nastavljen kot izhodni pinMode (13, INPUT); // Echo pin nastavljen kot vhod US_Servo.attach (11); // US Servo nastavljen na pin 11 US_Servo.write (90); // US SERVO GLEDA NAPREJ

Levi_Servo.priključek (9); // Servo levega kolesa na pin 9

Left_Servo.write (90); // SERVO LEVEGA KOLA nastavljeno na STOP

Right_Servo.attach (10); // Servo desnega kolesa nastavljen na pin 10

Right_Servo.write (90); // SERVO DESNEGA KOLESA nastavljeno na zakasnitev STOP (2000); // Počakajte 2 sekundi razdalje = readPing (); // Pridobite razdaljo Ping pri zakasnitvi naravnost naprej (100); // Počakajte 100 ms moveForward (); // ROBOT PREMIKA NAPREJ} // ------------------------------------------ -------------------------------------------------- ------------------------------------- void loop () {int distanceRight = 0; // Zagon razdalje ZDA proti desni pri 0 int distanceLeft = 0; // Zagon razdalje ZDA do leve pri 0 //US_Servo.write(90); // Center US servo // zakasnitev (50); // US_Servo.write (70); // Poglej rahlo desno // zamuda (250); // US_Servo.write (110); // Poglej rahlo levo // zakasnitev (250); // US_Servo.write (90); // Poglej Center

if (razdalja <= 20) // Robot se premika naprej {moveStop (); // Robot STOPS na razdalji = distanceLeft) // Odločite se, v katero smer zavijete {turnRight (); // Desna stran ima največjo razdaljo, ROBOT OBRNI DESNO za 0,3 s zamude (500); // Ta zamuda določa dolžino zavoja moveStop (); // Robot STOPS} else {turnLeft (); // Največja razdalja na levi strani, ROBOT SE ZAVRTI LEVO za 0,3 s zamude (500); // Ta zamuda določa dolžino zavoja moveStop (); // Robot STOPS}} else {moveForward (); // Robot se premika naprej} distance = readPing (); // ZDA BRATE NOVI PING za novo smer potovanja} // ----------------------------------- -------------------------------------------------- -------------------------------------------- int lookRight () // Ultrazvočni senzor POGLEDAJ DESNO FUNKCIJA {US_Servo.write (30); // US servo se premika DESNO do zakasnitve kota (500); int distance = readPing (); // Nastavi vrednost pinga za desno zakasnitev (100); US_Servo.write (90); // US servo se premakne v sredino povratne razdalje; // Razdalja je nastavljena} // ------------------------------------------ -------------------------------------------------- ------------------------------------- int lookLeft () // Ultrazvočni senzor LOOK LEFT FUNKCIJA {US_Servo.piši (150); // US servo se premakne v levo do zamika kota (500); int distance = readPing (); // Nastavi vrednost pinga za levo zakasnitev (100); US_Servo.write (90); // US servo se premakne v sredino povratne razdalje; // Razdalja je nastavljena} // ------------------------------------------ -------------------------------------------------- ------------------------------------- int readPing () // Funkcija branja pinga za ultrazvočni senzor. {zamuda (100); // 100 ms med pingi (min. Čas pinga = 0,29 ms) int cm = sonar.ping_cm (); // Razdalja PING se zbere in nastavi v cm, če (cm == 0) {cm = 250; } vrnitev cm; } // ----------------------------------------------- -------------------------------------------------- -------------------------------- void moveStop () // ROBOT STOP {Left_Servo.write (90); // LevoServo 180 naprej, 0 nazaj Desno_Servo.write (90); // DesnoServo 0 naprej, 180 nazaj} // --------------------------------------- -------------------------------------------------- ---------------------------------------- void moveForward () // ROBOT NAPREJ {Left_Servo.piši (180); // LevoServo 180 naprej, 0 nazaj Desno_Servo.write (0); // DesnoServo 0 naprej, 180 nazaj} // --------------------------------------- -------------------------------------------------- ---------------------------------------- void moveBackward () // ROBOT BACKWARD {Left_Servo.pisati (0); // LevoServo 180 naprej, 0 nazaj Desno_Servo.write (180); // DesnoServo 0 naprej, 180 nazaj} // --------------------------------------- -------------------------------------------------- ---------------------------------------- void turnRight () // ROBOT DESNO {Left_Servo.piši (180); // LevoServo 180 naprej, 0 nazaj Desno_Servo.write (90); // DesnoServo 0 naprej, 180 nazaj} // --------------------------------------- -------------------------------------------------- ---------------------------------------- void turnLeft () // ROBOT LEFT {Left_Servo.pisati (90); // LevoServo 180 naprej, 0 nazaj Desno_Servo.write (0); // DesnoServo 0 naprej, 180 nazaj} // --------------------------------------- -------------------------------------------------- ----------------------------------------

3. korak: Sestavite robota

Image
Image
Sestavite robota
Sestavite robota
Sestavite robota
Sestavite robota

Zdaj je čas, da svojega robota sestavite. Koraki so navedeni spodaj.

1) Pritrdite okrogle servo diske in gumijaste trakove na kolesa: Vsi servomotorji so opremljeni s plastično montažno opremo in vijaki. Poiščite okrogle diske in jih privijte v dve luknji na ravni strani koles. Gumijasti trakovi se pritrdijo okoli kolesa, da zagotovijo oprijem. Morda boste želeli dodati malo lepila, da gumijasti trakovi ostanejo na svojem mestu.

2) Pritrditev marmorja: Uporabite dva majhna vijaka za pritrditev marmorja na dva trikotnika na zadnji strani. Marmorni kolešček je preprosta zamenjava zadnjega kolesa in zagotavlja zadnjo vrtilno točko.

3) Vstavite servomotorje v reže (vijaki niso potrebni): Servo FS90 (za ultrazvočni senzor) vstavite v sprednjo režo ohišja. Dva servomotorja z neprekinjenim vrtenjem drsita v levo in desno režo. Reže so oblikovane tako, da tesno prilegajo, tako da za pritrditev servomotorjev niso potrebni nobeni vijaki. Poskrbite, da bodo servo žice speljane skozi utore v režah tako, da bodo obrnjene proti zadnjemu delu telesa.

4) Postavitev 9V baterije (NEOBVEZNO): 9V baterijo + priključek za napajanje Arduino postavite za sprednji servo.

5) Montaža ultrazvočnega senzorja: Z dvema majhnima vijakoma pritrdite enega od priloženih servo nastavkov iz bele plastike na dno montažne plošče ultrazvočnega senzorja. Nato s 3D -natisnjenim 6 mm vijakom/matico (ali zamenjajte kovinski vijak/matico) pritrdite ohišje ultrazvočnega senzorja na montažno ploščo. Na koncu senzor postavite v ohišje z zatiči navzgor in ga zaskočite na zadnji strani ohišja.

6) Ohišje baterije 4x AA: Ohišje baterije AA postavite v veliko pravokotno površino s stikalom za vklop/izklop obrnjenim nazaj.

7) Ščit senzorja Arduino Uno + V5: Ščit pritrdite na Arduino in ga namestite na nosilce nad ohišjem baterije. Priključek za napajanje mora biti obrnjen proti levi.

Vaš robot je zgrajen! Kaj je ostalo? Programiranje Arduino in priključnih mostičnih žic: servomotorji, ultrazvočni senzor in napajalnik.

4. korak: Pritrdite senzorske žice

Image
Image
Dokončano!!! Priključite 9V napajalnik Arduino, vklopite baterijo in se z OAREE začnite izogibati oviram
Dokončano!!! Priključite 9V napajalnik Arduino, vklopite baterijo in se z OAREE začnite izogibati oviram

Servo žice priključite na V5 Shield:

  1. Levi servo za neprekinjeno vrtenje se priključi na PIN 9
  2. Desno servo za neprekinjeno vrtenje se pritrdi na PIN 10
  3. Sprednji servo FS90 se pritrdi na PIN 11

Priključite ultrazvočne senzorske zatiče (preko 4 -krat žic ženski na ženski mostiček) na ščit V5:

  1. Sprožilec na PIN 12
  2. Odmev na PIN 13
  3. VCC do katerega koli zatiča, označenega z 'V'
  4. Ozemljite na kateri koli zatič, označen z "G"

Ohišje baterije AA priključite na ščit V5:

  1. Priključite pozitivno rdečo žico na priključek VCC
  2. Negativno, črno žico pritrdite na ozemljitveni priključek

5. korak: Končano !!! Priključite 9V napajalnik Arduino, vklopite baterijo in se z OAREE začnite izogibati oviram

Image
Image
Dokončano!!! Priključite 9V napajalnik Arduino, vklopite baterijo in se z OAREE začnite izogibati oviram
Dokončano!!! Priključite 9V napajalnik Arduino, vklopite baterijo in se z OAREE začnite izogibati oviram

Dokončano!!

1) Priključite 9V napajanje Arduino (neobvezno)

2) Vklopite baterijo

3) Začnite se izogibati oviram z OAREE !!!

Prepričan sem, da vam bo novi prijatelj, OAREE, všeč, potem ko boste opazili, da zazna oviro, naredili varnostno kopijo in spremenili smer. OAREE najbolje deluje z velikimi predmeti, s katerih lahko ultrazvočni senzor odstreli (na primer stene). Zaradi majhne površine in vogalov težko pinguje majhne predmete, kot so noge stolov. Prosimo, delite, razvijajte naprej in mi sporočite vse potrebne prilagoditve ali napake. To je bila odlična učna izkušnja in upam, da se boste tako zabavali pri ustvarjanju tega projekta kot jaz!

Natečaj robotike
Natečaj robotike
Natečaj robotike
Natečaj robotike

Podprvak na tekmovanju v robotiki

Priporočena: