TRABAJO DE LABORATORIO FINAL Docente: Matias Loiseau Alumnos: Christian Boullon Nicolas Morsolin Matias Ramirez Carrera: Ingeniería en Informática Universidad Nacional de Avellaneda ÍNDICE 1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pág.2 2. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pág.2 3. Componentes utilizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pág.2 3.1. EDU-CIAA-NXP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pág.2-4 3.2. Servo motor SG-90 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pág.4-6 3.3. Módulo Joystick doble . . . . . . . . . . . . . . . . . . . . . . . . . . . . pág.7-8 3.4. Objetos de Secuencia . . . . . . . . . . . . . . . . . . . . . . . . . . . pág.8-9 4. Desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pág.10-12 4.1. Conexión de los componentes . . . . . . . . . . . . . . . . . . . . . . pág.11 4.2. Secuencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pág.11-12 4.3. Armado del brazo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pág.12 4.4. Programación del código en la EDU-CIAA . . . . . . . . . . . . . . pág.12 4.4.1. Identificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pág.12 4.4.2. Configuración de la placa . . . . . . . . . . . . . . . . . . . . . . . . pág.12 4.4.3. Configuración de los servos . . . . . . . . . . . . . . . . . . . . . . . pág.13 4.4.4. Conversor de señal analógica a digital . . . . . . . . . . . . . . . pág.13 4.4.5. Inicialización de los botones de los joysticks . . . . . . . . . . pág.13 4.4.6. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pág.13 4.4.7. Lectura de las señales analógicas . . . . . . . . . . . . . . . . . . pág.14 4.4.8. Selector de modalidad . . . . . . . . . . . . . . . . . . . . . . . . . pág.14 4.4.9. Implementación del modo manual . . . . . . . . . . . . . . pág.14-16 4.4.10. Implementación del modo secuencial . . . . . . . . . . . . pág.16-19 4.4.11. Leds identificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . pág.20 5. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pág.20 6. Mejoras a desarrollar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pág.20 7. Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pág.21 1 1. Objetivo En este Trabajo de Laboratorio Final se diseñará un Brazo Robot que pueda ser capaz de recrear distintas secuencias de movimiento y además poder ser controlado manualmente por el usuario. Para ello: Con el uso de un Módulo Joystick doble, controlaremos los movimientos del brazo de forma manual. A partir de los pulsadores integrados de la EDU-CIAA, se configurarán dos secuencias de movimiento automáticas, las cuales podrán identificarse gracias al encendido de los LEDS de la placa. 2. Introducción El presente Trabajo de Laboratorio se desarrolla en la materia de Arquitectura de Sistemas de Elaboración de Datos II y corresponde al Trabajo de Laboratorio final. Haremos uso de la placa EDU-CIAA-NXP, la cual será el núcleo del sistema y se encargará de controlar los servomotores que mueven el brazo, así como también recibir los datos analógicos enviados por nuestro modulo joystick doble al ejecutar el modo manual. Para desarrollar el código con el que trabajará la placa utilizaremos el Embedded IDE, el cual nos permite la programación en lenguaje C. También utilizaremos la librería SAPI, que nos incluye un gran número de funciones para facilitarnos la programación. El movimiento del brazo será controlado por 4 servomotores SG-90 de la siguiente forma: • • • • Servo Servo Servo Servo base: permite que el brazo se mueva hacia izquierda y derecha. hombro: mueve el brazo hacia adelante y hacia atrás. codo: mueve el brazo hacia arriba y hacia abajo. mano: abre y cierra la mano o pinza. 3. Componentes utilizados Antes de meternos de lleno con el código desarrollado para este trabajo, es importante conocer que componentes utilizaremos para realizar esta práctica. 3.1 EDU-CIAA-NXP Este componente es el núcleo de nuestro sistema embebido, al cual conectaremos el resto de los componentes y se encargará de realizar lo solicitado. La EDU-CIAA-NXP es una versión de bajo costo de la CIAA-NXP 1 pensada para la enseñanza universitaria, terciaria y secundaria. Al igual que su versión industrial, ésta también consta del microcontrolador LPC4337 (dual core ARM Cortex-M4F y Cortex-M0). 2 Los datos más importantes a resaltar de este microcontrolador son: Frecuencia de trabajo: 204 MHz Memoria en chip o Hasta 1 MB de memoria flash de doble banco en chip con acelerador flash. o Memoria de datos EEPROM de 16 kB. o 136 kB SRAM para código y uso de datos. o Múltiples bloques SRAM con acceso de bus separado. Dos bloques SRAM pueden ser apagado individualmente. o ROM de 64 kB que contiene el código de arranque y los controladores de software en el chip. o 64 bit + 256 bit de memoria programable única (OTP) para uso general. Un DAC de 10 bits compatible con DMA y una tasa de conversión de datos de 400 kSamples/s. Hasta ocho canales de entrada por ADC. Oscilador de cristal con un rango de operación de 1 MHz a 25 MHz. Oscilador RC interno de 12 MHz ajustado al 3 % de precisión sobre la temperatura y tensión (1,5 % de precisión para T. ambiente = 0 °C a 85 °C). La placa EDU-CIAA-NXP cuenta con los siguientes módulos: • • • • • 2 4 4 1 2 puertos micro-USB (uno para aplicaciones y debugging, otro para alimentación). salidas digitales implementadas con leds RGB. entradas digitales con pulsadores. puerto de comunicaciones RS 485 con bornera. conectores de expansión: o P1: 3 entradas analógicas (ADC0_1,2y3), 1 salida analógica (DAC0), 1 puerto I2C, 1 puerto asincrónico full duplex (para RS-232). 1 puerto CAN, 1 conexión para un teclado de 3×4, o P2: 1 puerto Ethernet, 1 puerto SPI, 1 puerto para Display LCD con 4 bits de datos, Enable y RS. 9 pines genéricos de I/O. 1 La CIAA-NXP es la primer CIAA (Computadora Industrial Abierta Argentina) en ser diseñada, probada y producida en serie. Pensada para utilizarse en (pero no limitada a) equipos de automatización industrial. 3 Para una mejor visualización podemos chequearlo con el diagrama en bloques de la Figura 1. Figura 1 Utilizaremos un entorno de desarrollo integrado (Embedded IDE) para programar las funciones necesarias para el correcto funcionamiento del vehículo. Este editor de código cuenta con varias herramientas que permite una buena organización de los proyectos que se creen. Nos permite programar en lenguaje C haciendo que los códigos tengan mayor portabilidad. El repositorio de dicho IDE se encuentra en GitHub [2]. Antes de comenzar con el código se requerirá instalar dependencias y bajar la librería SAPI que está presente en IDE. Vamos a explicar en qué consiste esta librería a continuación. Dicha biblioteca implementa una API (Application Programming Interface) la cual actúa como un HAL (Hardware Abstraction Layer) para la programación de microcontroladores. La misma surge de la necesidad de manejar los periféricos directamente desde una VM de Java para el desarrollo de Java sobre la CIAA y corresponde a la parte de bajo nivel de las clases de periféricos en Java que básicamente bindea a funciones escritas en C. Luego se extendió la misma para facilitar el uso de la EDU-CIAA-NXP a personas no expertas en la arquitectura del LPC4337 facilitando el uso de esta plataforma [3]. 3.2 Servo motor SG-90 Primeramente, debemos conocer de qué hablamos cuando mencionamos un servo motor, los cuales utilizaremos para controlar el movimiento del brazo. Un servomotor es un actuador rotativo o motor que permite un control preciso en términos de posición angular, aceleración y velocidad. Constan de una combinación de piezas específicas, 4 que incluyen un motor de corriente continua o alterna, y son adecuados para su uso en un sistema de control de bucle cerrado. La señal de control es la entrada, ya sea analógica o digital, que representa el comando de posición final para el eje. Por otro lado, el codificador o encoder sirve como sensor, proporcionando retroalimentación de velocidad y posición. En la mayoría de los casos, sólo se informa de la posición. La posición final se informa al controlador y se compara con la entrada de posición inicial, y luego, si hay una discrepancia, se mueve el motor para llegar a la posición correcta. Los servomotores se controlan enviando un pulso eléctrico de ancho variable, o modulación de ancho de pulso (PWM), a través del cable de control. Hay un pulso mínimo, un pulso máximo y una frecuencia de repetición. Por lo general, un servomotor sólo puede girar 90° en cualquier dirección para un movimiento total de 180° (aunque también los hay de 360°). La posición neutra del motor se define como la posición en la que el servo tiene la misma cantidad de rotación potencial tanto en el sentido de las agujas del reloj como en el sentido contrario. El PWM enviado al motor determina la posición del eje, y se basa en la duración del pulso enviado a través del cable de control; el rotor girará a la posición deseada. El servomotor espera ver un pulso cada 20 milisegundos (ms) y la longitud del pulso determinará hasta dónde gira el motor. Por ejemplo, un pulso de 1.5ms hará que el motor gire a la posición de 90°.Si el tiempo es inferior a 1,5 ms, se mueve en sentido contrario a las agujas del reloj hacia la posición de 0°, y si el tiempo es superior a 1,5 ms, el servo girará en sentido de las agujas del reloj hacia la posición de 180°. Cuando se les ordena a los servos que se muevan, estos se moverán a la posición y mantendrán esa posición. Si una fuerza externa empuja contra el servo mientras el servo mantiene una posición, el servo se resistirá a salir de esa posición. La cantidad máxima de fuerza que puede ejercer el servo se denomina par de torsión del servo. Sin embargo, los servos no mantendrán su posición para siempre; el pulso de posición debe repetirse para indicar al servo que se mantenga en posición. Los servos incluyen tres componentes principales: un motor, un variador (también conocido como amplificador) y un mecanismo de retroalimentación. También se incluye típicamente una fuente de alimentación y un servocontrolador capaz de controlar un solo eje o coordinar el movimiento de varios ejes. Todos ellos se aprecian en la Figura 2: 5 Figura 2 Los servomotores pueden ser de tipo CA o CC, siendo los servomotores CA los más adecuados para aplicaciones de velocidad constante y los servomotores CC para aplicaciones de velocidad variable. El servo controlador (también conocido como controlador de movimiento) puede ser considerado como el cerebro del sistema del servomotor. Aquí es donde reside el perfil de movimiento, incluyendo la aceleración, velocidad y deceleración deseadas. En nuestro caso, el modelo que utilizaremos será el SG-90. En la Figura 3, se puede observar la función de cada uno de los cables que posee: Figura 3 6 3.3 Módulo Joystick doble En el modo manual, controlaremos el brazo con un módulo doble stick, de esta manera podemos usar el eje X y el eje Y de cada stick (4 ejes en total) para controlar cada uno de los cuatro servomotores. Para hablar de este módulo tengamos en cuenta que, tal cual lo indica el nombre se trata de dos Módulos KY-023 Joystick. Por ende, para explicar el funcionamiento hablemos de manera individual mencionando sus funciones y características. El módulo KY-023 cuenta con un posicionamiento de eje dado por valores entre 0 a 1023 y conforme lo movamos su valor ira variando y dando las coordenadas de cada eje, este valor lo podemos imprimir en el monitor serial. Por lo cual su posición de reposo será en 512 (espere pequeñas variaciones debido a pequeñas imprecisiones de los resortes y el mecanismo). Cuando mueva el joystick, verá que los valores cambian de 0 a 1023 dependiendo de su posición. A continuación, se plasma dicha explicación de forma gráfica, en la Figura 4, para mejor entendimiento del lector: Figura 4 Joystick en Reposo (central): X = 512 (Salida 2.5V) Y = 512 (Salida 2.5V) Joystick hacia arriba: X = 1023 (Salida 5V) Y = 512 (Salida 2.5V) Joystick hacia abajo: 7 X = 0 (Salida 0V) Y = 512 (Salida 2.5V) Joystick hacia la Derecha: X = 512 (Salida 2.5V) Y = 1023 (Salida 5V) Joystick hacia la Izquierda: X = 512 (Salida 2.5V) Y = 0 (Salida 0V) Volviendo a lo que vamos a utilizar en nuestro trabajo, las características del módulo doble stick son: • • • • • • • • • Tamaño: 91 x 51 x 32 mm Agujeros de montaje: 3 mm Agujero: 2000 * 1600mil (50.8 * 40.64mm) Voltaje: 3.3V, 5V Puerto: cada balancín 2 voltaje analógico nivel 1 digital Plataforma: Arduino, MCU, ARM, Raspberry Pi Salida X, Y-axis como dos potenciómetros, el ángulo de desviación puede ser leído por el convertidor AD Se aplica a dos grados de libertad, u otro control remoto proporcional de control de PTZ Dos módulos de joystick a bordo, adecuados para el desarrollo y prueba de plataformas móviles 3.4 Objetos de secuencia En esta sección se explicará los objetos que utilizaremos para que nuestro brazo pueda realizar las distintas secuencias. Los objetos utilizados serán un recipiente, al estilo de vaso o cubilete y 3 cubos de cartón corrugado. Elegimos este material ya que es flexible y sobre todo liviano, un 8 punto clave debido a la limitación de tener servos que no posean mucha potencia. Los cubos fueron diseñados por nosotros en base a un template. Lo que se quiere lograr es que el brazo agarre dichos cubos, que se encuentran en una posición inicial y los desplace hacia otra posición. 9 4. Desarrollo El desarrollo se dividirá en cuatro subsecciones: • • • • En la primera mostraremos las conexiones entre la EDU-CIAA y los distintos componentes empleados, los cuales son: los servos colocados en el brazo para permitir el movimiento de las distintas partes y el módulo doble stick que permite controlar el brazo en el modo manual. En la segunda indicamos en qué consistes las secuencias que implementamos en el modo automático. En la tercera explicamos como fue diseñada la estructura del brazo, comentando los materiales utilizados. En la cuarta mostramos el desarrollo del código que programamos en el software Embedded-IDE para que el sistema cumpla con lo solicitado. 4.1 Conexión de los componentes Vamos a ver y a contar brevemente del conexionado de cada componente con la placa EDUCIAA. Empecemos por cada uno de los servomotores, los cuales se pueden apreciar en la Figura 5. Figura 5 Para el conexionado de los servos utilizamos una plaqueta armada por nosotros, en la cual tenemos identificada las conexiones para cada una de las partes del brazo. Los 4 servos serán 10 alimentados con una fuente de PC a la cual le conectaremos los VCC y las GND de cada uno de ellos. A esta ultimas también las conectaremos a la EDU-CIAA para que todos los componentes compartan la misma tierra. Finalmente, los cables naranjas (que reciben la señal de control) estarán conectados como se indica a continuación: Servo Servo Servo Servo base T_FIL1 hombro T_COL0 codo T_FIL2 mano T_FIL3 En lo que respecta al módulo joystick doble hay que considerar que cada stick presenta 4 pines: la alimentación, la tierra, el eje X, el eje Y, como también el eje K (el cual hace referencia al pulsador del stick). Como se puede apreciar en la Figura 6, los VCC de ambos sticks estarán conectados a los 5V de la EDU-CIAA, los GND se comparten entre sí con la tierra de la placa, los pines S-X y S-Y del primer stick y el S-X del segundo stick; se conectan a los pines analógicos CH1, CH2 y CH3, respectivamente. Los pines S-K de ambos sticks van a estar conectados a los GPIO1 y GPIO2, con estos dos pulsadores controlamos la apertura y el cierra de la pinza. Esto lo hacemos de esta forma debido a que falta una cuarta entrada analógica para conectar los cuatro ejes del doble stick. Figura 6 4.2 Secuencias El brazo, en su modo automático, nos permitirá realizar dos secuencias de movimiento. Los objetos que intervendrán en ambas, serán los cubos que explicamos en la sección de objetos de secuencias. De forma resumida, vamos a explicar en qué consisten dichas secuencias que desarrollamos. 11 Secuencia 1 El brazo comenzará en una posición inicial definida en el código. Los cubos estarán ubicados equidistantes en el sector derecho de la base. El brazo tomará cada uno de estos cubos y los moverá al otro extremo de la base. Secuencia 2 El brazo comenzará, como en el caso anterior, en una posición inicial. Los cubos se situarán también en el sector derecho de la base. El brazo deberá tomar cada uno de estos cubos, desplazarlos hacia el lado izquierdo y guardarlos dentro de un recipiente. 4.3 Armado del brazo Para realizar el diseño de nuestro brazo, nos basamos en un modelo de internet (de instructables.com). En nuestro caso, el material que utilizamos para armar cada una de las piezas es el chapadur, que es el nombre comercial de un tablero duro de fibras, internacionalmente conocido como Hardboard, cuya densidad está comprendida entre 0.90 y 1.10g/cm3, elaborado en base a fibra de madera de Eucaliptus [9] . Al ser un material resistente y liviano, nos daba la posibilidad de armar una estructura compacta. Para unir cada una de las piezas utilizamos tornillos M3 de diferentes medidas y tuercas. 4.4 Programación del código en la EDU-CIAA En esta sección vamos a explicar, paso a paso, el desarrollo del código que ejecutará nuestro sistema. Tal cual hicimos en los trabajos anteriores, comenzamos incluyendo las librerías necesarias para trabajar, la cual es la librería sapi. 4.4.1 Identificadores Luego de esto, definimos los identificadores para facilitarnos el código: Definimos los servos en función a la pieza del brazo que moverá y los pines de entradas según correspondan el eje de cada analógico. 12 4.4.2 Configuración de la placa Para inicializar y configurar la EDU-CIAA, utilizamos la siguiente función: Ésta evalúa la configuración del reloj, calcula el reloj central actual, y los puertos GPIO que utilizaremos que son los pulsadores como entrada y los leds como salida. 4.4.3 Configuración de los servos Ahora creamos una función para habilitar e inicializar los servos como salida a los pines que definimos previamente. 4.4.4 Conversor de señal analógica a digital Ahora habitamos la configuración ADC ya que trabajamos con entradas analógicas, esta función activa el periférico ADC con una resolución de 10 bits, por lo que la entrada tomara valores desde 0 hasta 1023. 4.4.5 Inicialización de los botones de los joysticks El botón que tiene incorporado cada joystick es digital, por lo que lo conectaremos en el GPIO1 y GPIO2 que lo definimos como entrada. Como ya mencionamos en el apartado de las conexiones, estas entradas controlaran la mano de nuestro brazo. 4.4.6 Variables 13 La variable modoManual estará por defecto en true para entrar primero a esta modalidad. 4.4.7 Lectura de las señales analógicas Ya dentro del ciclo, con la función adcRead le pasamos al parámetro el pin de entrada analógica que retornara un valor digital (0-1023), y la guardara en la variable correspondiente. 4.4.8 Selector de modalidad Con los pulsadores incorporados en el EDU-CIAA (TEC1 y TEC2) cambiaremos el valor de la variable modoManual para poder seleccionar la modalidad del brazo, dentro del if negaremos la condición ya que dichos pulsadores son PULL-UP ósea que establece un estado HIGH por defecto y negándolo estará en LOW, y por último pondremos un anti-rebote para una mejor respuesta en los pulsadores. Ahora en función del valor que seleccionemos en la variable modoManual entraremos en alguna de las 2 modalidades. 4.4.9 Implementación del modo manual Para estas funciones usaremos las variables en donde guardamos los valores analógicos convertidas a digital y dependiendo del valor que este tenga sumaremos o restaremos el Angulo al servo mediante las variables que inicializamos antes y los ángulos que determinamos mediante las pruebas con el brazo. La implantación queda de la siguiente manera: 14 Si el valor leído por el periférico ADC es menor a 200 irá restando de a uno el ángulo de la base para escribirlo en el servo, en caso de que sea mayor a 800 ira sumando, y será lo mismo para las demás piezas. 15 En el caso de la mano, lo hará de manera automática cuando pulsemos algunos de los pulsadores del joystick. Estas funciones simplemente le asignan un ángulo de 100° al servo que maneja las pinzas para abrirla, y de 145° para cerrarla. 4.4.10 Implementación del modo secuencial El modo secuencia es la modalidad en la cual el brazo realiza movimientos de forma automática. Ésta la hemos configurado previamente. Con los pulsadores TEC3 y TEC4 de la EDU-CIAA podremos elegir entre las 2 secuencias que hemos programado, también con su anti-rebote. 16 Para cada una de las secuencias crearemos 2 funciones en el cual le pasaremos un Angulo inicial y otro final, un delay y el servo que queremos modificar, esto lo que hace es aumentar o disminuir en Angulo del servo secuencialmente. Entonces de acuerdo a lo que queremos que haga el brazo iremos usando estas 2 funciones con diferentes ángulos, piezas y delay. Estas son las secuencias que hemos implementado: 17 18 19 4.4.11 Leds identificadores Para finalizar el código, prenderemos los leds de la EDU-CIAA que estén cerca del pulsador correspondiente, para identificar rápidamente si estamos en el modo manual o en el modo secuencia. Si nos encontramos en el modo manual se prendera el led verde, en cambio sí estamos en el modo secuencia estará prendido el LED1 y junto con dicho led se encontrará también prendido el LED2 si está en la secuencia 1 o el LED3 si está en la secuencia 2. 5. Conclusiones En principio cuando alimentamos el brazo con los 5V de la EDU-CIAA este no suministraba la suficiente corriente para que realice los movimientos correctamente, esto lo hemos solucionado alimentando los servos del brazo con una fuente de PC. En modo automático, el brazo realiza las secuencias de forma correcta cuando los objetos que el brazo debe mover están colocados en la posición exacta en la que estaban cuando se configuraron los movimientos del brazo. De no ser así, es probable que falle al querer tomar un objeto. 20 En modo manual al principio no realizaba los movimientos correctamente, de hecho, se movía solo sin que nadie estuviera manejando el joystick. Esto se debía a que asumimos que cuando el stick estaba en reposo, el valor analógico que leería la EDU-CIAA luego de convertirlo a digital sería el valor intermedio entre 0 y 1023, es decir aproximadamente 512. Pero no era así, el valor que leía la placa era cercano a 700. Luego de considerar este valor como intermedio el brazo comenzó a responder de forma correcta. 6. Mejoras a desarrollar Una de las mejores que podría realizarse es el intercambio de los servos SG-90 por servos más potentes, para lograr tener un brazo que sea capaz de mover o agarrar objetos de mayor peso (para ello obviamente habría que modificar su estructura). Otra mejora es adicionar un display LCD 16x2 que notifique en que modalidad se encuentra el brazo robótico, y que en el caso de que sea el modo secuencial indique en cual de las 2 secuencias que implementamos se encuentra. 7. Bibliografía [1] Epernia, (2020). Obtenido de: https://github.com/martinribelotta/embedded-ide. Consultado el 20 de abril de 2022. [2] Epernia, (2017). Obtenido de: https://github.com/epernia/sAPI/blob/master/documentation/docs/assets/pdf/sAPI-01Introducci%C3%B3n.pdf. Consultado el 20 de abril de 2022. [3] Módulo KY-023 Sensor JoyStick, Obtenido de: https://uelectronics.com/producto/moduloky-023-sensor-joystick/ . Consultado el 20 de junio de 2022. [4] CONFIGURACIÓN DEL MÓDULO BLUETOOTH HC-05 USANDO COMANDOS AT, Obtenido de: https://naylampmechatronics.com/blog/24_configuracion-del-modulo-bluetooth-hc-05usando-comandos-at.html . Consultado el 14 de mayo de 2022. [5] Pinout HC-05, especificaciones, hoja de datos y conexión Arduino HC05, (2021). Obtenido de: https://www.etechnophiles.com/hc-05-pinout-specifications-datasheet/ . Consultado el 14 de mayo de 2022. [6] Qué es un Servomotor y para qué sirve, Obtenido de: https://www.cursosaula21.com/quees-un-servomotor/ . Consultado el 20 de junio de 2022. [7] Epernia, (2017). Obtenido de: https://github.com/epernia/sAPI/blob/master/documentation/docs/assets/pdf/sAPI-03-API.pdf. Consultado el 20 de abril de 2022. [8] Phenoptix. Obtenido de: https://www.instructables.com/Pocket-Sized-Robot-Arm-meArmV04/ . Consultado el 25 de junio de 2022. [9] Fiplasto, (2018). Obtenido de: http://fiplasto.com.ar/productos/chapadur/ . Consultado el 25 de junio de 2022. 21