Otto DIY
En este artículo se detallan las piezas hardware, software e información conveniente para montar y poner en marcha el robot Otto.
Enlaces¶
-
OttoDIY:
-
OttoDIY+:
Componentes¶
OttoDIY¶
- Cable de pin hembra-hembra
- Pulsador ON/OFF
- Portapilas AAx4
- Shield Arduino Nano
- Módulo sensor Ultrasonidos HC-SR04
- Servo SG90: 4 unidades
- Zumbador 5V
- Arduino Nano 328p
OttoDIY+¶
Montaje¶
Los STLs de las piezas impresas se encuentran en el repositorio GitHub dentro del directorio 3D print.
Para el montaje seguir el PDF incluido en la raíz del repositorio GitHub (en el momento de escribir este artículo era la versión 07).
Calibración¶
Cargar el siguiente programa para averiguar los ajustes de trim para cuadrar el robot:
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 | |
Por medio de ensayo/error identificar los valores de TRIM_RR, TRIM_RL, TRIM_YR y TRIM_YL que hacen que las cuatro articulaciones queden perfectamente cuadradas. Cuando se consiga, descomentar la línea que contiene el comando Otto.saveTrimsOnEEPROM(); y ejecutar una vez más para que se almacenen los valores en la EEPROM. A partir de entonces, todos los sketches que utilicen la librería Otto y que inicialicen ese objeto por medio de la función init poniendo true en el quinto argumento, cargarán estos valores de la calibración de la EEPROM y por tanto comenzarán con el robot bien encuadrado.
En el repositorio hay sketches que no se basan en la librería Otto sino que gestionan los servos directamente. En estos casos la gestión del trim también se hará directamente, ya que desafortunadamente las posiciones de los trim en la EEPROM no coinciden con los que hace la librería Otto, para evitar tener que regrabar sus valores en la EEPROM cada vez que pasemos de un tipo a otro de sketch. Por ejemplo en el sketch Otto_smooth_criminal, que no utiliza la librería Otto, los trim se leen de la EEPROM en orden inverso. Por tanto, será mejor desactivar su lectura y escribir los valores de trim directamente en el código. Así:
1 2 3 4 5 6 | |
Programación¶
De entre los varios sketches de ejemplo que vienen en el repositorio, el más práctico para empezar a hacer una programación personalizada de Otto es el Otto_BASIC. En los comentarios que hay al principio se describen las funciones básicas de la librería Otto:
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 | |
En setup se hace una inicialización básica de la librería Otto y se emite un sonido por el buzzer. Luego en el loop se ha programado una sencilla función para que Otto camine hacia delante hasta que localice un obstáculo a menos de 15cm y dé unos pasos hacia atrás y gire.
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Es útil aprovechar la funcionalidad del sensor de distancia para disparar el comportamiento de Otto que queremos programar. En otro caso todo lo que programemos dentro de la función loop se ejecutará sin parar. Así por ejemplo, imitando la función obstacleMode, un ejemplo de loop en el que haremos que cuando pongamos la mano delante, Otto avance un par de pasos, haga el moonwalk hacia la derecha, dé un pequeño salto y se detenga ejecutando el gesto de victoria sería:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |