Projekt polega na stworzeniu robotycznej ręki wydrukowanej w technologii 3D, którą można sterować za pomocą rękawicy z czujnikiem ugięcia. Główne cele to rozwijanie umiejętności związanych z drukiem 3D, elektroniką oraz techniką mikroprocesorów, a także zademonstrowanie możliwości zastosowania takich technologii w praktycznych zastosowaniach.
- Drukarka 3D: Wydruk poszczególnych elementów ręki za pomocą drukarki 3D.
- Filament: Materiał potrzebny do drukowania 3D.
- Serwomechanizmy: Służą do napędzania ruchów poszczególnych segmentów ręki.
- Mikrokontroler (np. Arduino): Kontroluje pracę serwomechanizmów i odbiera sygnały sterujące.
- Rękawica z czujnikiem ugięcia: Umożliwia bezpośrednią komunikację między rękawicą a modelem.
- Oprogramowanie: Dedykowany program na komputer, który wysyła komendy sterujące.
- Materiały dodatkowe: Gumki i żyłki umożliwiające sprawny ruch dłoni, stelaż na serwomechanizmy, drut/kabel.
- Kabelki męsko-męskie: Umożliwiają podłączenie serwomechanizmów do mikrokontrolera
- Płytka stykowa: Do podłączenia większej liczby kabli.
- Kabel USB: Do podłączenia Arduino do komputera.
- Bateria: Do dodatkowego zasilania serwomechanizmów
Zamysłem projektu jest zrobienie modelu dłoni podążającej za ruchem dłoni osoby sterującej specjalną rękawicą.
Do realizacji, na samym początku jest potrzebny model dłoni. Używając projektu 3D znalezionego w internecie należy wydrukować wszystkie potrzebne części.
Wydruk, jak wiadomo, nie zawsze jest idealny, więc żeby zapewnić możliwie jak najbardziej płynny ruch części należy spiłować model w miejscach połączeń. Jeżeli jest pewność, że wszystko powinno już prawidłowo działać - należy połączyć części w całość.
Prawie każdy paliczek składa się z dwóch części, które powinny zostać trwale do siebie przytwierdzone. Do połączenia ich należy użyć kleju. Poza tym, paliczki między sobą muszą być połączone w taki sposób żeby umożliwiały ruch. Do tego można wykorzystać kawałki drutu miedzianego wyciągnięte z grubego przewodu.
Jeżeli model przypomina już dłoń, następnym krokiem jest zapewnienie jego ruchu. Przez otwory prowadzące przez tył palca powinna zostać przeciągnięta mocna gumka. Aby palec trzymał się prosto i po zgięciu wracał na miejsce, trzeba ją naciągnąć. Należy jednak uważać, bo jeśli gumka naciągnięta zostanie za mocno, serwomechanizmy mogą mieć problem ze zgięciem danego palca. Następnie należy przeprowadzić żyłkę przez otwory na przodzie palca. Służy ona do zginania palca.
Na tym etapie przechodzimy do elektronicznej strony projektu. Należy połączyć serwa, baterie oraz rękawicę w celu utworzenia układu (schemat dostępny w plikach projektu). Kod (również udostępniony poniżej) umożliwia ruch wszystkich pięciu palców. Rękawica używana w tym projekcie ma tylko jeden pasek ugięcia więc kod zbudowany jest tak, aby po sczytaniu danych poruszał się palec wskazujący, a za nim, z odpowiednim opóźnieniem kolejno reszta palców. Po prawidłowym połączeniu układu oraz ewntualnym dopasowaniu kodu do swoich potrzeb (np. zmianiana zakresu danych pobieranych z rękawicy lub opóźnień) mechanizm powinien działać w miarę płynnie.
Na koniec, najtrudniejszym zadaniem jest połączenie wszystkiego w całość. Należy umieścić serwomechanizny na stelażu dla zapewnienia stabilności (u nas wykonany on był z kartonu) Poza tym, trzeba jeszcze podłączyć palce do serw. Należy to wykonać przymocowując wcześniej przeciągane przez palce żyłki do ramion odpowiednich serw.
W tym momencie projekt jest już prawie gotowy. Wystarczy jeszcze tylko przetestować ruch wszystkich palców i ewentualnie coś zmienić. Możliwe jest na przykład, że niektóre palce będą za bardzo wyginać się do tyłu lub będą się opornie ruszały do przodu. Po takiej analizie i usprawnieniu modelu, można jeszcze poprawić estetykę projektu, doklejając opuszki palców, czy przycinając i doklejając odstające elementy.
#include <Servo.h>
Servo wskazujacyS; // utwórz obiekt serwomechanizmu
Servo srodkowyS;
Servo serdecznyS;
Servo malyS;
Servo kciukS;
int val;// zmienna do przechowywania wartości odczytanej z pinu
int val1;
void setup() {
Serial.begin(9600);
wskazujacyS.attach(8); // podłącz serwomechanizm do pinu
srodkowyS.attach(9);
serdecznyS.attach(10);
malyS.attach(11);
kciukS.attach(12);
}
void loop() {
val = analogRead(A1);
val1 = map(val, 800, 530, 15, 180); // przekształć wartość na zakres od 0 do 180, 710 to warto zczytywana dla prostego palca, a 500 dla zgietego
Serial.println(val1);// odczytaj wartość z pinu A1
wskazujacyS.write(val1); // ustaw kąt serwomechanizmu zgodnie z przekształconą wartością
delay(100); // odczekaj na serwomechanizm, aby dotarł do wyznaczonej pozycji
srodkowyS.write(val1);
delay(100);
serdecznyS.write(val1);
delay(100);
malyS.write(val1);
delay(100);
kciukS.write(val1);
delay(100);
https://www.viralsciencecreativity.com/post/arduino-flex-sensor-controlled-robot-hand