Projekt od našeho čtenáře Antonína P. - Robotická ruka
Vždy mě zajímala robotika a automatizace strojů a zařízení a proto jsem si pořídil Arduino Uno.
Pak nastala ale otázka co si mám postavit, na internetu je plno zajímavých projektů, ale vybrat si ten správný je obtížné. Nakonec zvítězil jeden z několika a to robotická ruka, ono totiž co se více té automatizace týče, na ní jsem vždy obdivoval ty rozmanité možnosti. A tak jsem se rozhodl že jednu takovou ruku postavím i doma, samozřejmě, že ve zmenšeném měřítku.
Na internetu jsem si našel model robotické ruky a ten jsem si převedl do programu SolidEdge ST8 tak, aby bylo možné následně nechat vytisknout na 3D tiskárně díly k sestavení.
Vyrenderovaný model Robotické ruky
Vytisknuté díly na školní 3D tiskárně
To jednodušší je převést všechny soubory a sestavit model tak, aby vše do sebe zapadlo a vše fungovalo správně.
Složitější věc přišla hned na to a to napsat správně program.
Simulované zapojení v programu Autodesk Circuits
V stránkách Autodesk Circuits jsem si nejdříve vyzkoušel jak vše bude fungovat a také jsem si tam upravil původní program, který jsem našel na internetu (odkaz na původní program a zapojení servo motorku: http://learningwitharduino.blogspot.cz/2012/12/first-project-servo-and-ir-receiver.html ).
Toto je však pouze program pro jeden servo motorek, já jsem však potřeboval pro 3 další serva. Tak mi nezbývalo nic jiného než si program přizpůsobit podle sebe, protože program, co tu je vidět, tak to není jeho finální verze a může se ještě nadále měnit, ale jeho podstata už je daná.
Program je uveden níže.
// // The Unnamed Circuit // // Made by antonin pavel // License: CC-BY-SA 3.0 // Downloaded from: https://circuits.io/circuits/3010944-the-unnamed-circuit #include <Servo.h> #include <IRremote.h> unsigned long Value1 = 0xFD08F7; // where XXXXXXXX is on our your remote's values(1servo) unsigned long Value2 = 0xFD8877; // where XXXXXXXX is another button on your remote(1servo) unsigned long Value3 = 0xFD48B7; // where XXXXXXXX is on our your remote's values(2servo) unsigned long Value4 = 0xFD28D7; // where XXXXXXXX is another button on your remote(2servo) unsigned long Value5 = 0xFDA857; // where XXXXXXXX is on our your remote's values(3servo) unsigned long Value6 = 0xFD6897; // where XXXXXXXX is another button on your remote(3servo) unsigned long Value7 = 0xFD18E7; // where XXXXXXXX is on our your remote's values(4servo) unsigned long Value8 = 0xFD9867; // where XXXXXXXX is another button on your remote(4servo) int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results; Servo servo1; Servo servo2; Servo servo3; Servo servo4; // the setup routine runs once when you press reset: void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver // initialize the digital pin as an output. servo1.attach(10);// attack servo to digital pin 10 servo2.attach(9); servo3.attach(8); servo4.attach(7); } // the loop routine runs over and over again forever: void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); irrecv.resume(); // Receive the next value } if(results.value == Value1) { servo1.write(160);//PIN10 } else if (results.value == Value2){ servo1.write(75);//PIN10 } if(results.value == Value3) { servo2.write(160);//PIN9 } else if (results.value == Value4){ servo2.write(75);//PIN9 } if(results.value == Value5) { servo3.write(160);//PIN8 } else if (results.value == Value6){ servo3.write(75); //PIN8 } if(results.value == Value7) { servo4.write(160);//PIN7 } else if (results.value == Value8){ servo4.write(75);//PIN7 } }
Projekt je prozatím ještě rozpracován, ale jakmile bude hotový, tak Vám pošlu dodatečné video, jak ruka funguje.
Vše zatím funguje jak má a pak podle toho, jaké pozice mi dovolí nastavit konstrukce, tak bude nutno pouze změnit rozsah pohybů servo motorků. Napájení bude řešeno externím napájecím zdrojem nebo 5V z USB podle potřeby. Ruka bude řízena dálkovým ovladačem nebo odpovídajícím programem napsaným v programu Arduino IDE.
Seznam použitých komponent
http://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
http://dratek.cz/arduino/897-arduino-servo-motor-1420669476.html
http://dratek.cz/arduino/1433-nepajive-kontaktni-pole-zy-103-1475273073.html