Spisu treści:

Machnij ręką, aby kontrolować ramię robota OWI Bez zobowiązań: 10 kroków (ze zdjęciami)
Machnij ręką, aby kontrolować ramię robota OWI Bez zobowiązań: 10 kroków (ze zdjęciami)

Wideo: Machnij ręką, aby kontrolować ramię robota OWI Bez zobowiązań: 10 kroków (ze zdjęciami)

Wideo: Machnij ręką, aby kontrolować ramię robota OWI Bez zobowiązań: 10 kroków (ze zdjęciami)
Wideo: Part 3 - Ann Veronica Audiobook by H. G. Wells (Chs 08 -10) 2024, Listopad
Anonim
Image
Image
Części
Części

POMYSŁ:

Istnieją co najmniej 4 inne projekty na Instructables.com (stan na 13 maja 2015 r.) dotyczące modyfikowania lub kontrolowania ramienia robota OWI. Nic dziwnego, ponieważ jest to świetny i niedrogi zestaw robota do zabawy. Ten projekt jest podobny w duchu (tzn. sterowanie ramieniem robota za pomocą Arduino), ale inny w podejściu. [wideo]

Chodzi o to, aby móc bezprzewodowo sterować ramieniem robota za pomocą gestów. Ponadto starałem się ograniczyć modyfikacje ramienia robota do minimum, aby nadal mogło być używane z oryginalnym kontrolerem.

Brzmi prosto.

Ostatecznie powstał projekt składający się z trzech części:

  1. Rękawica wyposażona w wystarczającą ilość czujników do sterowania diodą LED i 5 silnikami
  2. Nadajnik oparty na Arduino Nano, który przyjmuje polecenia sterujące z rękawicy i wysyła je bezprzewodowo do kontrolera ramienia
  3. Odbiornik bezprzewodowy oparty na Arduino Uno i urządzenie sterujące silnikiem podłączone do ramienia robota OWI

CECHY

  1. Obsługa wszystkich 5 stopni swobody (DOF) i diody LED
  2. Duży czerwony przycisk - natychmiastowe zatrzymanie silników na ramieniu zapobiegające uszkodzeniom
  3. Przenośna konstrukcja modułowa

Dla użytkowników mobilnych: „film promocyjny” tego projektu jest na YouTube tutaj.

Krok 1: Części

RĘKAWICA:

Do zbudowania kontrolera rękawic będziesz potrzebować:

  1. Elastyczne szyte rękawice Isotoner Smartouch Tech (lub podobne) - na Amazon.com
  2. Czujnik Spectra Symboflex 2,2" - na Amazon.com
  3. GY-521 6DOF MPU6050 3-osiowy żyroskop + moduł akcelerometru - na Fasttech.com
  4. NAGŁÓWEK 2X5 BOX PROSTY - na Phoenixent.com
  5. GNIAZDO-GNIAZDO IDC 2X5 - na Phoenixent.com
  6. KABEL PŁASKI TAŚMOWY 10 żyłowy o rozstawie.050" - na Phoenixent.com
  7. 2 x 5mm diody LED - zielony i żółty
  8. 2 x małe przyciski
  9. Rezystory, przewody, igła, czarna nić, pistolet do klejenia, pistolet lutowniczy, lut itp.

SKRZYNKA NA TAŚMĘ PRZEKŁADNI:

  1. Zgodna z Arduino płytka Nano v3.0 ATmega328P-20AU - na Fasttech.com
  2. Bezprzewodowy nadajnik-odbiornik nRF24L01+ 2,4 GHz kompatybilny z Arduino - na Amazon.com
  3. Gymboss OPASKA NA NADGARSTEK - na Amazon.com
  4. Pojemnik na baterie 9V z przełącznikiem ON/OFF z przewodem - na Amazon.com
  5. NAGŁÓWEK 2X5 BOX PROSTY - na Phoenixent.com
  6. Bateria 9V
  7. Kondensator 47uF (50v)
  8. Rezystory, przewody, pistolet do kleju, pistolet lutowniczy, lut itp.

OWI SKRZYNKA STEROWNIKA RAMIENIA ROBOTYCZNEGO:

  1. Płytka rozwojowa Uno R3 Rev3 kompatybilna z Arduino - na Fasttech.com
  2. Prototype Shield DIY KIT dla Arduino (lub podobnego) - na Amazon.com
  3. Bezprzewodowy nadajnik-odbiornik nRF24L01+ 2,4 GHz kompatybilny z Arduino - na Amazon.com
  4. 3 x 16-pinowy sterownik silnika IC z układem scalonym L293D - na Fasttech.com
  5. 1 x SN74HC595 74HC595 8-bitowy rejestr przesuwny z 3-stanowymi rejestrami wyjściowymi DIP16 - na Amazon.com
  6. Kondensator 47uF (50v)
  7. Pudełko na Arduino - na Amazon.com
  8. Przełącznik włącz / wyłącz
  9. 2 przyciski 13 mm (jedna czerwona i jedna zielona nasadka)
  10. 2 x 2X7 BOX HEADER PROSTY - tak samo jak powyżej na Phoenixent.com
  11. KABEL PŁASKI TAŚMOWY 14-żyłowy Rozstaw.050" - taki sam jak powyżej na Phoenixent.com
  12. Bateria 9v + złącze zatrzaskowe
  13. Rezystory, przewody, pistolet do klejenia, pistolet lutowniczy, lut itp.

… i oczywiście:

OWI Robotic Arm Edge - Ramię robota - OWI-535 - na Adafruit.com

Krok 2: PROTOTYPOWANIE

PROTOTYPOWANIE
PROTOTYPOWANIE
PROTOTYPOWANIE
PROTOTYPOWANIE

Gorąco sugeruję wykonanie prototypu każdego z urządzeń kontrolera przed wlutowaniem wszystkich elementów razem.

Ten projekt wykorzystuje kilka wymagających elementów sprzętowych:

nRF24L01

Zajęło mi trochę czasu, aby dwa nRF24 porozmawiały ze sobą. Najwyraźniej ani Nano, ani Uno nie zapewniają wystarczającej stabilizowanej mocy 3,3 V, aby moduły działały konsekwentnie. Rozwiązaniem w moim przypadku był kondensator 47uF na pinach zasilania na obu modułach nRF24. Istnieje również kilka dziwactw związanych z używaniem biblioteki RF24 w trybach IRQ i non-IRQ, więc polecam bardzo dokładnie przestudiować przykłady.

Kilka świetnych zasobów:

nRF24L01 Ultra niska moc 2.4GHz RF Transceiver IC Strona produktu

Strona biblioteki sterowników RF24

Samo wyszukanie w Google nRF24 + arduino wygeneruje mnóstwo linków. Warto zbadać

74HC595 REJESTR ZMIANY

Nic dziwnego, że mając do sterowania 5 silników, diodę LED, dwa przyciski i moduł bezprzewodowy, dość szybko skończyły mi się piny w Uno. Dobrze znanym sposobem na „rozszerzenie” liczby pinów jest użycie rejestru przesuwnego. Ponieważ nRF24 używał już interfejsu SPI, zdecydowałem się użyć SPI również do programowania rejestru przesuwnego (dla prędkości i zapisywania pinów) zamiast funkcji shiftout(). Ku mojemu zdziwieniu od pierwszego razu zadziałał jak czar. Możesz to sprawdzić w przypisaniu pinów i w szkicach.

Płytka do krojenia chleba i przewody połączeniowe to Twoi przyjaciele.

Krok 3: RĘKAWICA

RĘKAWICA
RĘKAWICA
RĘKAWICA
RĘKAWICA
RĘKAWICA
RĘKAWICA
RĘKAWICA
RĘKAWICA

Ramię robota OWI ma 6 elementów do kontrolowania (zdjęcie krawędzi ramienia robota OWI)

  1. Dioda LED umieszczona na CHWYTAKU urządzenia
  2. CHWYTAK
  3. NADGARSTEK
  4. ŁOKIEĆ - to część ramienia robota przymocowana do NADGARSTKA
  5. RAMIĘ to część ramienia robota przymocowana do PODSTAWY
  6. BAZA

Rękawica jest przeznaczona do sterowania diodą LED ramienia robota i wszystkimi 5 silnikami (stopni swobody).

Mam poszczególne czujniki zaznaczone na zdjęciach oraz opis poniżej:

  1. GRIPPER jest sterowany za pomocą przycisków znajdujących się na środkowym palcu i małym palcu. Chwytak zamyka się poprzez ściśnięcie razem palca wskazującego i środkowego. Chwytak jest otwierany przez naciśnięcie razem pierścienia i małego palca.
  2. Nadgarstek jest kontrolowany przez elastyczny rezystor na szukaczu indeksu. Podwinięcie palca do połowy powoduje, że nadgarstek opada, a podkręcenie go do końca powoduje podniesienie nadgarstka. Trzymanie palca wskazującego prosto zatrzymuje nadgarstek.
  3. ŁOKIEĆ jest kontrolowane przez akcelerometr - przechylanie dłoni w górę i w dół przesuwa łokieć odpowiednio w górę i w dół
  4. RAMIĘ jest kontrolowane przez akcelerometr - przechylanie dłoni w prawo i w lewo (choć nie do góry nogami!) przesuwa ramię odpowiednio w górę i w dół
  5. BAZA jest również kontrolowana przez akcelerometr, podobnie jak bark - przechylanie dłoni w prawo i w lewo do góry nogami (dłonią skierowaną do góry) przesuwa podstawę odpowiednio w prawo i lewo
  6. Dioda LED na chwytaku jest włączana/wyłączana poprzez jednoczesne naciśnięcie obu przycisków sterowania chwytakiem.

Wszystkie reakcje przycisków są opóźnione o 1/4 sekundy, aby uniknąć drgań.

Złożenie rękawicy wymaga trochę lutowania i dużo szycia. Zasadniczo jest to po prostu przymocowanie 2 przycisków, elastycznego rezystora, modułu Accel/Gyro do tkaniny rękawicy i poprowadzenie przewodów do puszki złączy.

Dwie diody LED na skrzynce przyłączeniowej to:

  1. ZIELONY - zasilanie włączone
  2. ŻÓŁTY - miga, gdy dane są przesyłane do skrzynki kontrolnej ramienia.

Krok 4: SKRZYNKA NADAJNIKA

SKRZYNKA NADAJNIKA
SKRZYNKA NADAJNIKA
SKRZYNKA NADAJNIKA
SKRZYNKA NADAJNIKA
SKRZYNKA NADAJNIKA
SKRZYNKA NADAJNIKA

Skrzynka nadajnika to zasadniczo Arduino Nano, moduł bezprzewodowy nRF24, elastyczne złącze przewodu i 3 rezystory: 2 rezystory pull-down 10 kOhm dla przycisków sterowania chwytakiem na rękawicy i rezystor podziału napięcia 20 kOhm dla elastycznego czujnika sterującego nadgarstkiem.

Wszystko jest zlutowane na płytce vero. Zauważ, że nRF24 "wisi" nad Nano. Obawiałem się, że to może powodować zakłócenia, ale to działa.

Korzystanie z baterii 9v powoduje, że część z paskiem jest nieco nieporęczna, ale nie chciałem zadzierać z bateriami LiPo. Może później.

Proszę zapoznać się z krokiem przypisania pinów, aby uzyskać instrukcje lutowania

Krok 5: SKRZYNKA KONTROLNA RAMIENIA

SKRZYNKA KONTROLNA RAMIENIA
SKRZYNKA KONTROLNA RAMIENIA
SKRZYNKA KONTROLNA RAMIENIA
SKRZYNKA KONTROLNA RAMIENIA
SKRZYNKA KONTROLNA RAMIENIA
SKRZYNKA KONTROLNA RAMIENIA
SKRZYNKA KONTROLNA RAMIENIA
SKRZYNKA KONTROLNA RAMIENIA

Skrzynka kontrolna ramienia oparta jest na Arduino Uno. Odbiera polecenia z rękawicy bezprzewodowo za pośrednictwem modułu nRF24 i steruje ramieniem OWI Robotoc za pomocą 3 chipów sterownika L293D.

Ponieważ wykorzystano prawie wszystkie piny Uno, w pudełku jest dużo przewodów - ledwo się zamyka!

Zgodnie z projektem, pudełko uruchamia się w trybie OFF (jak po naciśnięciu przycisku czerwonego stopu), dając operatorowi czas na założenie rękawicy i przygotowanie się. Po przygotowaniu operator naciska zielony przycisk, a połączenie między rękawicą a skrzynką kontrolną powinno zostać natychmiast nawiązane (co wskazuje żółta dioda LED na rękawicy i czerwona dioda LED na skrzynce kontrolnej).

PODŁĄCZANIE DO OWI

Połączenie z ramieniem robota odbywa się za pomocą 14-stykowego złącza dwurzędowego (zgodnie z powyższym zdjęciem) za pomocą 14-żyłowego kabla płaskiego.

  • Połączenia LED są do wspólnej masy (-) i arduino pin A0 przez rezystor 220 Ohm
  • Wszystkie przewody silnika są podłączone do styków L293D 3/6 lub 11/14 (odpowiednio +/-). Każdy L293D obsługuje 2 silniki, a więc dwie pary pinów.
  • Linie zasilania OWI są skrajnie lewe (+6v) i skrajne prawe (GND) piny 7-stykowego złącza z tyłu żółtego blatu. (Możesz zobaczyć podłączone przewody na powyższym obrazku). Te dwa są podłączone do pinów 8 (+) i 4, 5, 12, 13 (GND) we wszystkich trzech L293D.

Zapoznaj się z resztą przypisania pinów w następnym kroku

Krok 6: PRZYPISANIE PINÓW

PRZYDZIELENIE PINU
PRZYDZIELENIE PINU
PRZYDZIELENIE PINU
PRZYDZIELENIE PINU
PRZYDZIELENIE PINU
PRZYDZIELENIE PINU

NANO:

  • Układ 3.3v - 3.3v do nRF24L01 (pin 2)
  • 5 v - 5 v do płyty akcelerometru, przycisków, elastycznego czujnika
  • a0 - wejście rezystora elastycznego
  • a1 - żółta dioda "komunikacyjna";
  • a4 - SDA do akcelerometru
  • a5 - SCL do akcelerometru
  • d02 - chip nRF24L01 Pin przerwania (pin 8)
  • d03 - wejście przycisku otwierania chwytaka
  • d04 - wejście przycisku zamykania chwytaka
  • d09 - pin SPI CSN do układu nRF24L01 (pin 4)
  • d10 - pin SPI CS do układu nRF24L01 (pin 3)
  • d11 - układ SPI MOSI na nRF24L01 (pin 6)
  • d12 - układ SPI MISO do nRF24L01 (pin 7)
  • d13 - SPI SCK do układu nRF24L01 (pin 5)
  • Vin - 9v +
  • GND - wspólna masa

ONZ:

  • Układ 3.3v - 3.3v do nRF24L01 (pin 2)
  • 5v - 5v do przycisków
  • Vin - 9v +
  • GND - wspólna masa
  • a0 - Dioda LED na nadgarstku +
  • a1 - pin SPI SS dla rejestru przesuwnego Wybierz - do pinu 12 w rejestrze przesuwnym
  • a2 - Wejście CZERWONEGO przycisku
  • a3 - wejście ZIELONEGO przycisku
  • a4 - kierunek podstawy w prawo - pin 15 na L293D
  • a5 - dioda komunikacji
  • d02 - nRF24L01 wejście IRQ (pin 8)
  • d03 - włącz podstawowe serwo (pwm) pin 1 lub 9 na L293D
  • d04 - kierunek podstawy w lewo - pin 10 na odpowiednim L293D
  • d05 - włącz serwomechanizm naramienny (pwm) pin 1 lub 9 na L293D
  • d06 - włącz serwo kolankowe (pwm) pin 1 lub 9 na L293D
  • d07 - pin SPI CSN do układu nRF24L01 (pin 4)
  • d08 - pin SPI CS do układu nRF24L01 (pin 3)
  • d09 - włącz serwomechanizm nadgarstka (pwm) pin 1 lub 9 na L293D
  • d10 - włącz serwo chwytaka (pwm) pin 1 lub 9 na L293D
  • d11 - SPI MOSI do układu nRF24L01 (pin 6) i pin 14 w rejestrze przesuwnym
  • d12 - układ SPI MISO do nRF24L01 (pin 7)
  • d13 - SPI SCK do układu nRF24L01 (pin 5) i pin 11 w rejestrze przesuwnym

REJESTR ZMIANY I L293D:

  • pin QA (15) 74HC595 do pinu 2 L293D #1
  • pin QB (1) 74HC595 do pinu 7 L293D #1
  • pin QC (2) 74HC595 do pinu 10 L293D #1
  • pin QD (3) 74HC595 do pinu 15 L293D #1
  • pin QE (4) 74HC595 do pinu 2 L293D #2
  • pin QF (5) 74HC595 do pinu 7 L293D #2
  • pin QG (6) 74HC595 do pinu 10 L293D #2
  • pin QH (7) 74HC595 do pinu 15 L293D #2

Krok 7: KOMUNIKACJA

KOMUNIKACJA
KOMUNIKACJA

Rękawica wysyła 2 bajty danych do skrzynki kontrolnej 10 razy na sekundę lub za każdym razem, gdy odbierany jest sygnał z jednego z czujników.

2 bajty wystarczą na 6 kontrolek, ponieważ wystarczy wysłać:

  • ON/OFF dla LED (1 bit) - właściwie użyłem 2 bitów, aby być zgodnym z silnikami, ale jeden wystarczy
  • OFF/RIGHT/LEFT dla 5 silników: 2 bity każdy = 10 bitów

Suma 11 lub 12 bitów jest wystarczająca.

Kody kierunku:

  • WYŁ: 00
  • PRAWO: 01
  • W LEWO: 10

Słowo kontrolne wygląda tak (bitowo):

Bajt 2 ---------------- Bajt 1----------------

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 LED-- M5-- M4-- M3-- M2-- M1--

  • M1 - chwytak
  • M2 - nadgarstek
  • M3 - kolanko
  • M4 - ramię
  • M5 - podstawa

Bajt 1 można wygodnie wprowadzić bezpośrednio do rejestru przesuwnego, ponieważ steruje on kierunkiem silników od 1 do 4 w prawo/w lewo.

Limit czasu komunikacji wynosi 2 sekundy. W przypadku przekroczenia limitu czasu wszystkie silniki są zatrzymywane tak, jakby naciśnięto CZERWONY przycisk.

Krok 8: SZKICÓW i nie tylko…

SZKICÓW i nie tylko…
SZKICÓW i nie tylko…

RĘKAWICA

Szkic rękawicy korzysta z następujących bibliotek:

  • DirectIO - dostępne na Github
  • I2Cdev - dostępny na Github
  • Drut - część Arduino IDE
  • MPU6050 - dostępny na Github
  • SPI - część Arduino IDE
  • RF24 - dostępny na Github

oraz trzy opracowane przeze mnie biblioteki:

  • AvgFilter - dostępny na Github
  • DhpFilter - dostępny na Github
  • TaskScheduler - dostępny na Github

Szkic rękawic jest dostępny tutaj: Szkic rękawic v1.3

SKRZYNKA KONTROLNA RAMIENIA

Szkic ramienia korzysta z następujących bibliotek:

  • DirectIO - dostępne na Github
  • PinChangeInt - dostępny na Github
  • SPI - część Arduino IDE
  • RF24 - dostępny na Github

oraz opracowana przeze mnie biblioteka:

TaskScheduler - dostępny na Github

Szkic ramienia jest dostępny tutaj: Szkic ramienia v1.3

Arkusze danych dotyczących używanego sprzętu

  • Rejestr przesuwny 74HC595 - karta katalogowa
  • Sterownik silnika L293D - karta katalogowa
  • Moduł bezprzewodowy nRF24 - karta katalogowa
  • Moduł akcelerometru/żyroskopu MPU6050 - karta katalogowa

AKTUALIZACJA z 31 maja 2015 r.:

Nowa wersja szkiców skrzynek kontrolnych rękawic i ramion jest dostępna tutaj: Szkice rękawic i ramion v1.5

Znajdują się one również na githubie tutaj.

Zmiany

  • Dodano dwa dodatkowe bajty do struktury komunikacyjnej, aby wysłać żądaną prędkość silnika dla silników nadgarstka, łokcia, barku i podstawy jako wartość 5-bitową (0..31) z rękawicy proporcjonalną do kąta gestu sterowania (patrz poniżej). Skrzynka kontrolna ramienia mapuje wartości [0.. 31] na odpowiednie wartości PWM dla każdego z silników. Umożliwia to stopniową kontrolę prędkości przez operatora i bardziej precyzyjną obsługę ramienia.
  • Nowy zestaw gestów:

1. LED: Przyciski sterujące LED - przycisk środkowy palec - ON, przycisk małego palca - OFF

2. CHWYTAK: Elastyczne sterowanie paskami Chwytak - palec zgięty do połowy - OTWÓRZ, palec zgięty całkowicie - ZAMKNIJ

3. NADGARSTEK: Nadgarstek jest kontrolowany przez przechylanie dłoni z pozycji całkowicie poziomej odpowiednio W GÓRĘ i W DÓŁ. Większe przechylenie daje większą prędkość

4. RAMIĘ: Ramię jest kontrolowane przez przechylenie dłoni z pozycji całkowicie poziomej W LEWO i W PRAWO. Większe przechylenie daje większą prędkość

5. RAMIĘ: Ramię kontroluje się obracając dłonią W PRAWO i W LEWO od dłoni skierowanej prosto w górę. Dłoń obraca się wzdłuż osi łokcia (podobnie jak machanie ręką)

6. PODSTAWA: Podstawa jest kontrolowana w taki sam sposób jak ramię z dłonią skierowaną prosto w dół.

Krok 9: CO JESZCZE?

CO JESZCZE?
CO JESZCZE?

WYOBRAŹNIA W PRACY

Jak zwykle w przypadku takich systemów, można je zaprogramować tak, aby robiły znacznie więcej.

Na przykład obecny projekt zawiera już dodatkowe możliwości, które nie są możliwe w przypadku standardowego pilota:

  • Stopniowy wzrost prędkości: każdy ruch silnika jest inicjowany z określoną prędkością minimalną, która jest stopniowo zwiększana co 1 sekundę, aż do osiągnięcia prędkości maksymalnej. Pozwala to na bardziej precyzyjną kontrolę każdego z silników (zwłaszcza nadgarstka i chwytaka)
  • Szybsze anulowanie ruchu: po otrzymaniu polecenia zatrzymania silnika przez moduł Arm Box, silnik ten na chwilę odwraca silnik na około 50 ms, „przerywając” ruch i umożliwiając bardziej precyzyjną kontrolę.

CO JESZCZE?

Być może można by zaimplementować bardziej skomplikowane gesty sterujące. Lub jednoczesne gesty mogą być używane do skomplikowanych kontroli. Czy ramię może tańczyć?

Jeśli masz pomysł na przeprogramowanie rękawicy lub masz wersję szkicu, który chcesz żebym przetestował - daj mi znać: [email protected]

Krok 10: *** WYGRALIŚMY !!! ***

*** WYGRALIŚMY !!! ***
*** WYGRALIŚMY !!! ***

Ten projekt zdobył pierwszą nagrodę w konkursie Coded Creations sponsorowanym przez Microsoft.

Sprawdź to! WOO-HOO!!!

Zakodowane kreacje
Zakodowane kreacje
Zakodowane kreacje
Zakodowane kreacje

Druga nagroda w kategorii Zakodowane kreacje

Zalecana: