Robots pedagógicos con 4 servomotores para niños controlados por arduino.
Materiales necesarios
Esquema electrónico
Piezas para imprimir
En el modelo se han empleados dos pequeños rodamientos en los pies de 13×5 y radio interior de 4mm aunque se pueden sustituir por unos impresos que se incluyen en los archivos para imprimir.
Las piezas pueden ser tratadas con una imprimación para posteriormente ser pintadas con témperas. Se incluye una ficha de vistas para el planteamiento del diseño.
Montaje
Imprimir y montar. Hay una ranura en la parte trasera de la cabeza que nos servirá para introducir el miniUSB para programarlo.
Programación
Aquí tenemos las opciones de hacerlo a través de la IDE de arduino o a través de un software por bloques de carácter educativo en Otto DIY.
Ahí encontrarás mucha información y ejemplos, así como poder descargar el software por bloques.
Lo primero de todo es calibrar los servos del robot a una posición inicial. Para ello puedes usar el software por bloques o este programa de arduino.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
//---------------------------------------------------------------- //-- Otto DIY invests time and resources providing open source code and hardware, //-- please support by purchasing kits from https://www.ottodiy.com/ //-- Make sure to have installed all libraries: https://github.com/OttoDIY/OttoDIYLib //----------------------------------------------------------------- #include <Arduino.h> #include <Wire.h> #include <SoftwareSerial.h> #include <EEPROM.h> #include <Otto.h> //-- Otto Library Otto Otto; //This is Otto! #define LeftLeg 2 #define RightLeg 3 #define LeftFoot 4 #define RightFoot 5 #define Buzzer 13 double angle_rad = PI/180.0; double angle_deg = 180.0/PI; int YL; int YR; int RL; int RR; double charRead; void setup(){ Otto.init(LeftLeg, RightLeg, LeftFoot, RightFoot, true, Buzzer); //Set the servo pins and Buzzer pin Serial.begin(9600); YL = EEPROM.read(0); if (YL > 128) YL -= 256; YR = EEPROM.read(1); if (YR > 128) YR -= 256; RL = EEPROM.read(2); if (RL > 128) RL -= 256; RR = EEPROM.read(3); if (RR > 128) RR -= 256; Otto.home(); Serial.println("OTTO CALIBRATION PROGRAM"); Serial.println("PRESS a or z for adjusting Left Leg"); Serial.println("PRESS s or x for adjusting Left Foot"); Serial.println("PRESS k or m for adjusting Right Leg"); Serial.println("PRESS j or n for adjusting Right Foot"); Serial.println(); Serial.println("PRESS f to test Otto walking"); Serial.println("PRESS h to return servos to home position"); } void loop(){ if((Serial.available()) > (0)){ charRead = Serial.read(); } if(((charRead)==('a' ))){ YL++; Otto.setTrims(YL,YR,RL,RR); calib_homePos(); Otto.saveTrimsOnEEPROM(); }else{ if(((charRead)==( 'z' ))){ YL--; Otto.setTrims(YL,YR,RL,RR); calib_homePos(); Otto.saveTrimsOnEEPROM(); }else{ if(((charRead)==( 's' ))){ RL++; Otto.setTrims(YL,YR,RL,RR); calib_homePos(); Otto.saveTrimsOnEEPROM(); }else{ if(((charRead)==( 'x' ))){ RL--; Otto.setTrims(YL,YR,RL,RR); calib_homePos(); Otto.saveTrimsOnEEPROM(); }else{ if(((charRead)==( 'k' ))){ YR++; Otto.setTrims(YL,YR,RL,RR); calib_homePos(); Otto.saveTrimsOnEEPROM(); }else{ if(((charRead)==( 'm' ))){ YR--; Otto.setTrims(YL,YR,RL,RR); calib_homePos(); Otto.saveTrimsOnEEPROM(); }else{ if(((charRead)==( 'j' ))){ RR++; Otto.setTrims(YL,YR,RL,RR); calib_homePos(); Otto.saveTrimsOnEEPROM(); }else{ if(((charRead)==( 'n' ))){ RR--; Otto.setTrims(YL,YR,RL,RR); calib_homePos(); Otto.saveTrimsOnEEPROM(); }else{ if(((charRead)==( 'f' ))){ Otto.walk(1,1000,1); }else{ if(((charRead)==( 'h' ))){ Otto.home(); }else{ } } } } } } } } } } } void calib_homePos() { int servoPos[4]; servoPos[0]=90; servoPos[1]=90; servoPos[2]=90; servoPos[3]=90; Otto._moveServos(500, servoPos); Otto.detachServos(); } |
Una vez subido el programa al robot debemos abrir el Puerto Serial e ir enviando los caracteres que se muestran para notar pequeños movimientos en los motores. El objetivo es colocar los robots en una posición inicial de firmes.
Al terminar el proceso, estos datos se almacenarán en la eeprom para ser recordados siempre.
Cuando tengas el robot erguido, es el momento de empezar a programarlo a tu antojo.
Resultado final
Aquí hay algunos modelos de los diseñados por los niños en clase.
Héctor
22 de mayo de 2023 — 15:48
Buenas, me gustaría pediros un archivo de fritzing de la entrada del blog siguiente:
https://geniero.es/control-de-soldador-con-temporizador
Soy profe de FP y me gustaría usar el diseño, pero si tenéis el archivo de fritzing para hacer el pcb adelantaría mucho trabajo.
Pero por alguna razón, se ha borrado el comentario.
Ya me diréis por favor un correo donde pueda contactaros.
Gracias y saludos.
Afelio
25 de noviembre de 2023 — 23:32
Siento la tardanza en responder.
No dispongo de los archivos que me solicitas.