Spisu treści:

OAREE - Druk 3D - Robot unikający przeszkód do edukacji inżynierskiej (OAREE) Z Arduino: 5 kroków (ze zdjęciami)
OAREE - Druk 3D - Robot unikający przeszkód do edukacji inżynierskiej (OAREE) Z Arduino: 5 kroków (ze zdjęciami)

Wideo: OAREE - Druk 3D - Robot unikający przeszkód do edukacji inżynierskiej (OAREE) Z Arduino: 5 kroków (ze zdjęciami)

Wideo: OAREE - Druk 3D - Robot unikający przeszkód do edukacji inżynierskiej (OAREE) Z Arduino: 5 kroków (ze zdjęciami)
Wideo: Прохождение The Last of Us part 2 (Одни из нас 2)#1 Постаревшая Элли в снегах 2024, Czerwiec
Anonim
Image
Image
OAREE - Druk 3D - Robot unikający przeszkód do edukacji inżynierskiej (OAREE) z Arduino
OAREE - Druk 3D - Robot unikający przeszkód do edukacji inżynierskiej (OAREE) z Arduino
OAREE - Druk 3D - Robot unikający przeszkód do edukacji inżynierskiej (OAREE) z Arduino
OAREE - Druk 3D - Robot unikający przeszkód do edukacji inżynierskiej (OAREE) z Arduino

OAREE (Robot Unikający Przeszkód do Edukacji Inżynierskiej)

Projekt: Celem tego instruktażu było zaprojektowanie robota OAR (Robot Unikający Przeszkód), który byłby prosty/kompaktowy, nadający się do druku 3D, łatwy w montażu, wykorzystujący do ruchu serwomechanizmy o ciągłym obrocie i mający jak najmniej zakupionych części. Wierzę, że udało mi się stworzyć tego niesamowitego robota i nazwałem go OAREE (Robot Unikający Przeszkód w Edukacji Inżynierskiej). Ten robot wykryje przeszkody, zatrzyma się, spojrzy w lewo iw prawo, a następnie skręci w niezakłóconym kierunku i pojedzie dalej.

Tło: Internet ma wiele przeszkód w unikaniu robotów, ale większość z nich jest nieporęczna, trudna w montażu i droga. Wiele z tych robotów ma dostarczony kod Arduino, ale trudno było znaleźć dobrze przemyślany, działający przykład. Chciałem też zastosować do kół serwomechanizmów o ciągłym obrocie (zamiast silników prądu stałego), co jeszcze nie zostało zrobione. Wyruszyłem więc z misją opracowania kompaktowego, pomysłowego robota OAR, którym mógłbym dzielić się ze światem.

Dalszy rozwój: Ten robot może być dalej rozwijany w celu uzyskania lepszej dokładności pingowania, dodając czujniki podczerwieni umożliwiające śledzenie linii, ekran LCD do wyświetlania odległości przeszkody i wiele więcej.

Kieszonkowe dzieci

  • 1x Arduino Uno -
  • 1x Osłona czujnika V5 -
  • 1x uchwyt baterii 4xAA z włącznikiem/wyłącznikiem -
  • 1x Serwo SG90 -
  • 2x Serwa o ciągłym obrocie -
  • 1x kabel zasilający do baterii 9V dla Arduino (OPCJA) -
  • 1x czujnik ultradźwiękowy HC-SR04 -
  • 4x przewody połączeniowe żeńsko-żeńskie -
  • 2x gumki
  • 1x bateria 9 V (OPCJONALNIE)
  • 4x baterie AA
  • 4x małe śruby (4 x 1/2 lub coś podobnego)
  • Śrubokręt krzyżakowy
  • Klej do mocowania gumek do kół

Krok 1: Wydruk 3D: korpus, koła, marmurowe kółko, śruba/nakrętka 6 mm i mocowanie czujnika ultradźwiękowego

Druk 3D: korpus, koła, marmurowe kółko, śruba/nakrętka 6 mm i mocowanie czujnika ultradźwiękowego
Druk 3D: korpus, koła, marmurowe kółko, śruba/nakrętka 6 mm i mocowanie czujnika ultradźwiękowego
Druk 3D: korpus, koła, marmurowe kółko, śruba/nakrętka 6 mm i mocowanie czujnika ultradźwiękowego
Druk 3D: korpus, koła, marmurowe kółko, śruba/nakrętka 6 mm i mocowanie czujnika ultradźwiękowego
Druk 3D: korpus, koła, marmurowe kółko, śruba/nakrętka 6 mm i mocowanie czujnika ultradźwiękowego
Druk 3D: korpus, koła, marmurowe kółko, śruba/nakrętka 6 mm i mocowanie czujnika ultradźwiękowego

Do wydruku 3D jest 5 części.

  1. Ciało
  2. Koła
  3. Marmur Caster
  4. Śruba/nakrętka 6 mm (opcjonalnie można zastąpić metalową nakrętkę/śrubę)
  5. Mocowanie czujnika ultradźwiękowego

Wszystkie wymagane pliki. STL są zawarte w tej instrukcji, a także w plikach Sketchup. Zalecane wypełnienie 40%.

Krok 2: Zaprogramuj Arduino

Image
Image
Złóż robota
Złóż robota

Wyślij kod do Arduino UNO: Za pomocą środowiska Arduino IDE wyślij kod (w załączonym pliku) do modułu Arduino. Będziesz musiał pobrać i dołączyć do tego szkicu biblioteki servo.hi newping.h.

Kod jest dokładnie skomentowany, dzięki czemu możesz zobaczyć, co robi każde polecenie. W razie potrzeby można łatwo zmienić odległość czujnika ultradźwiękowego na większą lub mniejszą. Jest to wstępny kod, który ma zostać rozszerzony i wykorzystany do dalszego rozwoju projektu.

// ROBOT UNIKAJĄCY PRZESZKODY// [email protected], [email protected], University of TN at Chattanooga, Electrical Engineering, jesień 2019 // Wymagane materiały: // 1) Arduiino UNO, 2) Servo Sensor Shield v5.0, 3)HCSR04 Czujnik ultradźwiękowy, 4)Serwo FS90 (do czujnika ultradźwiękowego) // 5&6) 2x SERWA OBROTÓW CIĄGŁYCH do kół // 7) Marmur 16mm na tylne kółka, 8&9) 2 gumki do kół // 10- 15) 1x (4xAA) Uchwyt baterii z włącznikiem/wyłącznikiem, 16&17) Bateria 9V ze złączem do zasilania Arduino UNO // DRUK 3D: // 18) Korpus ROBOTA, 19&20) 2x Koła, 21) Kółko do marmuru, 22) Czujnik ultradźwiękowy Mocowanie i śruba 6mm (patrz załączone pliki) //------------------------------------------ -------------------------------------------------- ----------------------------------------- #include // Dołącz bibliotekę serwo #include // Dołącz bibliotekę do tworzenia nowych wersji //----------------------------------------------- -------------------------------------------------- ------------------------------------ #define TRIGGER_PIN 1 2 // Wyzwalacz US do pinu 12 na Arduino #define ECHO_PIN 13 // Echo US do pinu 13 na Arduino #define MAX_DISTANCE 250 // Odległość do pingu (max to 250) int distance = 100; //------------------------------------------------ -------------------------------------------------- ------------------------------- Serwo US_Servo; // Serwo czujnika ultradźwiękowego Left_Servo; // Serwo lewego koła Serwo Right_Servo; // Prawe koło serwo sonar NewPing (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing ustawienie pinów i maksymalna odległość. //------------------------------------------------ -------------------------------------------------- ------------------------------- void setup() // WEJŚCIA/WYJŚCIA, GDZIE DOŁĄCZYĆ, USTAWIĆ POCZĄTKOWĄ POZYCJĘ/RUCH { pinMode(12, WYJŚCIE); // pin wyzwalający ustawiony jako wyjście pinMode(13, INPUT); // Echo pin ustawiony jako wejście US_Servo.attach(11); // US Servo ustawione na pin 11 US_Servo.write(90); // SERWO USA WYGLĄDA W PRZYSZŁOŚĆ

Left_Servo.attach(9); // Serwo lewego koła do pinu 9

Left_Servo.write(90); // SERWO LEWE KOŁA ustawione na STOP

Right_Servo.attach(10); // Serwo prawego koła ustawione na pin 10

Right_Servo.write(90); // SERWO PRAWEGO KOŁA ustawione na opóźnienie STOP(2000); // Poczekaj 2 sekundy dystans = readPing(); // Uzyskaj odległość pingu przy opóźnieniu pozycji na wprost (100); // Czekaj na 100 ms moveForward(); // ROBOT RUSZA DO PRZODU } //------------------------------------------- -------------------------------------------------- ------------------------------------- void loop() { int distanceRight = 0; // Zainicjuj odległość US do prawej przy 0 int distanceLeft = 0; // Zainicjuj odległość US w lewo na 0 //US_Servo.write(90); // Wyśrodkuj amerykańskie serwo //delay(50); // US_Servo.write(70); // Spójrz lekko w prawo // delay(250); // US_Servo.write(110); // Spójrz lekko w lewo // delay(250); // US_Servo.write(90); // Szukaj w centrum

if (odległość <= 20) // Robot porusza się DO PRZODU { moveStop(); // Robot ZATRZYMUJE SIĘ w odległości = distanceLeft) // Zdecyduj, w którym kierunku skręcić { turnRight(); // Prawa strona ma największą odległość, ROBOT OBRACA W PRAWO przez 0,3 s opóźnienia (500); // To opóźnienie określa długość skrętu moveStop(); // Robot ZATRZYMUJE SIĘ } else { turnLeft(); // Lewa strona największa odległość, ROBOT SKRĘCA W LEWO przez 0,3 s opóźnienia (500); // To opóźnienie określa długość skrętu moveStop(); // Robot ZATRZYMUJE SIĘ } } else { moveForward(); // Robot PRZESUWA SIĘ DO PRZODU } dystans = readPing(); // USA ODCZYTUJĄ NOWY PING dla nowego kierunku jazdy } //----------------------------------- -------------------------------------------------- -------------------------------------------- int lookRight() // Czujnik ultradźwiękowy WYGLĄDAJ POPRAWNIE FUNKCJA { US_Servo.write(30); // Serwo USA PRZESUWA SIĘ W PRAWO do kąta opóźnienia (500); int dystans = readPing(); // Ustaw wartość ping dla prawego opóźnienia (100); US_Servo.write(90); // US serwo PRZESUWA SIĘ DO CENTRUM odległość powrotu; // Odległość jest ustawiona } //----------------------------------------------- -------------------------------------------------- ------------------------------------- int lookLeft() // Czujnik ultradźwiękowy SPÓJRZ W LEWO FUNKCJA { US_Servo.zapis(150); // Serwo USA PRZESUWA SIĘ W LEWO do kąta opóźnienia (500); int dystans = readPing(); // Ustaw wartość ping dla lewego opóźnienia (100); US_Servo.write(90); // US serwo PRZESUWA SIĘ DO CENTRUM odległość powrotu; // Odległość jest ustawiona } //----------------------------------------------- -------------------------------------------------- ------------------------------------- int readPing() // Funkcja odczytu ping dla czujnika ultradźwiękowego. { opóźnienie (100); // 100 ms między pingami (min. czas pingu = 0,29 ms) int cm = sonar.ping_cm(); // Odległość PING jest zbierana i ustawiana w cm if (cm==0) { cm=250; } powrót cm; } //--------------------------------------------------------------- -------------------------------------------------- -------------------------------- void moveStop() // ROBOT STOP { Left_Servo.write(90); // LeftServo 180 do przodu, 0 do tyłu Right_Servo.write(90); // RightServo 0 do przodu, 180 do tyłu } //----------------------------------------------------- -------------------------------------------------- ---------------------------------------- void moveForward() // ROBOT FORWARD { Left_Servo.zapis(180); // LeftServo 180 do przodu, 0 do tyłu Right_Servo.write(0); // RightServo 0 do przodu, 180 do tyłu } //----------------------------------------------------- -------------------------------------------------- ---------------------------------------- void moveBackward() // ROBOT BACKWARD { Left_Servo.write(0); // LeftServo 180 do przodu, 0 do tyłu Right_Servo.write(180); // RightServo 0 do przodu, 180 do tyłu } //----------------------------------------------------- -------------------------------------------------- ---------------------------------------- void turnRight() // ROBOT RIGHT { Left_Servo.zapis(180); // LeftServo 180 do przodu, 0 do tyłu Right_Servo.write(90); // RightServo 0 do przodu, 180 do tyłu } //----------------------------------------------------- -------------------------------------------------- ---------------------------------------- void turnLeft() // ROBOT LEFT { Left_Servo.zapis(90); // LeftServo 180 do przodu, 0 do tyłu Right_Servo.write(0); // RightServo 0 do przodu, 180 do tyłu } //----------------------------------------------------- -------------------------------------------------- ----------------------------------------

Krok 3: Złóż robota

Image
Image
Złóż robota
Złóż robota
Złóż robota
Złóż robota

Teraz nadszedł czas, aby złożyć robota. Kroki są wymienione poniżej.

1) Przymocuj okrągłą tarczę serwo i gumki do kół: Wszystkie serwa są dostarczane z plastikowym osprzętem montażowym i śrubami. Znajdź okrągłe tarcze i wkręć je w dwa otwory po płaskiej stronie kół. Gumki pasują do koła, aby zapewnić przyczepność. Możesz dodać trochę kleju, aby utrzymać gumki na miejscu.

2) Mocowanie marmurowego kółka: Użyj dwóch małych śrub, aby przymocować marmurowe kółko do dwóch trójkątów z tyłu. Kółko z marmuru jest prostym zamiennikiem tylnego koła i zapewnia tylny punkt obrotu.

3) Włóż serwa do gniazd (bez śrub): Umieść serwo FS90 (dla czujnika ultradźwiękowego) w przednim gnieździe korpusu. Dwa serwa o ciągłym obrocie wsuwają się w lewą i prawą szczelinę. Gniazda są zaprojektowane tak, aby pasowały ciasno, dzięki czemu do utrzymywania serw na miejscu nie są potrzebne żadne śruby. Upewnij się, że przewody serwomechanizmu biegną przez rowki w otworach, tak aby były skierowane w stronę tyłu ciała.

4) Umieszczenie baterii 9 V (OPCJONALNIE): Umieść baterię 9 V + złącze zasilania Arduino za przednim serwomechanizmem.

5) Zespół montażowy czujnika ultradźwiękowego: Użyj dwóch małych śrub, aby przymocować jeden z dołączonych białych plastikowych mocowań serwomechanizmu do dolnej części płyty montażowej czujnika ultradźwiękowego. Następnie użyj wydrukowanej w 3D śruby/nakrętki 6 mm (lub zastąp ją metalową śrubą/nakrętką), aby przymocować obudowę czujnika ultradźwiękowego do płyty montażowej. Na koniec umieść czujnik w obudowie bolcami skierowanymi do góry i zatrzaśnij z tyłu obudowy.

6) Pojemnik na 4 baterie AA: Umieść pojemnik na baterie AA w dużym, prostokątnym obszarze, z włącznikiem/wyłącznikiem skierowanym do tyłu.

7) Arduino Uno + V5 Sensor Shield: Przymocuj osłonę do Arduino i umieść na uchwytach nad obudową baterii. Złącze zasilania powinno być skierowane w lewo.

Twój robot jest zbudowany! Co zostało? Programowanie Arduino i podłączanie przewodów połączeniowych: serwa, czujnik ultradźwiękowy i zasilacz.

Krok 4: Podłącz przewody czujnika

Image
Image
Skończone!!! Podłącz zasilacz Arduino 9 V, włącz akumulator i zacznij omijać przeszkody za pomocą OAREE
Skończone!!! Podłącz zasilacz Arduino 9 V, włącz akumulator i zacznij omijać przeszkody za pomocą OAREE

Podłącz przewody Servo do V5 Shield:

  1. Lewy serwo ciągłych obrotów podłącza się do PIN 9
  2. Prawe serwo obrotów ciągłych podłącza się do PIN 10
  3. Przednie serwo FS90 podłącza się do PIN 11

Podłącz styki czujnika ultradźwiękowego (przez 4 x żeńskie do żeńskich przewodów połączeniowych) do osłony V5:

  1. Wyzwalanie na PIN 12
  2. Echo do PINu 13
  3. VCC do dowolnego pinu oznaczonego „V”
  4. Uziemić z dowolnym kołkiem oznaczonym literą „G”

Podłącz pojemnik na baterie AA do osłony V5:

  1. Podłącz dodatni czerwony przewód do złącza VCC
  2. Podłącz ujemny, czarny przewód do uziemienia;

Krok 5: Zakończony!!! Podłącz zasilacz Arduino 9 V, włącz akumulator i zacznij omijać przeszkody za pomocą OAREE

Image
Image
Skończone!!! Podłącz zasilacz Arduino 9 V, włącz akumulator i zacznij unikać przeszkód za pomocą OAREE
Skończone!!! Podłącz zasilacz Arduino 9 V, włącz akumulator i zacznij unikać przeszkód za pomocą OAREE

Skończone!

1) Podłącz zasilanie Arduino 9 V (opcjonalnie)

2) Włącz akumulator

3) Zacznij omijać przeszkody z OAREE!!!

Jestem pewien, że polubisz swojego nowego przyjaciela, OAREE, gdy zobaczysz, jak wyczuwa przeszkodę, cofa się i zmienia kierunek. OAREE działa najlepiej z dużymi obiektami, od których czujnik ultradźwiękowy może odbić się (np. ściany). Ze względu na małą powierzchnię i narożniki trudno mu pingować małe przedmioty, takie jak nogi krzeseł. Udostępniaj, rozwijaj i daj mi znać o wszelkich potrzebnych korektach lub błędach. To było wspaniałe doświadczenie edukacyjne i mam nadzieję, że tworzenie tego projektu będzie dla Ciebie równie zabawne, jak ja!

Konkurs robotyki
Konkurs robotyki
Konkurs robotyki
Konkurs robotyki

Drugie miejsce w konkursie robotyki

Zalecana: