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