sábado, 29 de mayo de 2021

Control de un servo por voz

Se recuerda que este Blog esta realizado con fines educativos y, a medida que vaya creciendo, se explicará con más detalle los pasos realizados por medio de guías dedicadas, actualizaciones y nuevas entradas.

Todos programas realizados pueden ser descargados y compartidos con referencia al autor.

Pincha AQUÍ para descargar todos los programas de esta entrada.

Objetivo:

Mostrar como poder controlar un servo por voz mediante una Raspberry Pi 4 y un ESP8266.

Programas utilizados:

- Arduino IDE 1.8.12 (Enlace de descarga)
- Python3 (Enlace de descarga)

Programación del ESP8266:

El ESP8266 será quien controle el servomotor y atenderá a la suscripción del broker MQTT publicada desde la Raspberry Pi 4. Como se ha expuesto en entradas anteriores, el servomotor requiere de cierta calibración para responder con mejor precisión al ángulo introducido, y eso se aplicará en los siguientes programas mostrados.

El primer programa, "servo.ino" utiliza una ecuación lineal para su calibración, esta proviene de la siguiente tabla obtenida de la calibración mostrada en la Figura 1 (Línea amarilla - Aproximación).
Figura 1: "Ecuación de calibración"


Esta ecuación se transcribe en la programación de la forma mostrada en la Figura 2.


Figura 2: "Aplicación de la ecuación en el programa"


El segundo programa, "servo2.ino" utiliza una aproximación por partes, esta proviene de una sencilla agrupación en función de la desviación lineal obtenida. La Figura 1 (Línea azul - Aproximación2) muestra cómo se realiza el ajuste manual aproximándose a la curva característica del motor. Cabe destacar que cuanto más fina se haga, mejor será el reajuste y por lo tanto, más fiel será su salida respecto de la entrada introducida.

Para transcribir esta aproximación por partes, se hace una sentencia condicional para discretizar el ángulo introducido y aplicar un reajuste directo. Como se aprecia en la Figura 3, el reajuste seleccionado para los ángulos introducidos de 0 a 21º es de 7 grados, mientras que para los ángulos introducidos de 21 a 25º es de 5 grados.




Figura 3: "Aplicación de la aproximación 2 en el programa"


Adicionalmente, para el uso de cualquiera de los programas se deberán modificar las siguientes líneas de código mostradas en la Figura 4.


Figura 4: "Cambio de configuración para la conexión Wifi"

Programación de Python3:

El programa de Python3 se ubicará en una Raspberry Pi 4 donde se conectará el sensor de ultrasonidos a los pines:

TRIGGER    GPIO 25    PIN 22
ECHO          GPIO 7      PIN 26

El programa "Ultrasonidos2.py" es una función dedicada al programa principal "Control_Servo2.py" desde el cual, se le llama para realizar una medición y registrar el resultado.
La diferencia con "Ultrasonidos.py" y "Control_Servo.py" es que, en esta ocasión, ambos se ejecutan individualmente sin la necesidad de disponer de dos terminales abiertos.
La información viaja por el broker MQTT, puede ser capturada en un Dashboard de Node-RED, donde se puede ver la información de la medición y el ángulo introducido. (Se agregará próximamente).

Ultima revisión 30/05/2021



No hay comentarios:

Publicar un comentario

Fabricación de PCB con CNC

  Se recuerda que este Blog esta realizado con fines educativos y, a medida que vaya creciendo, se explicará con más detalle los pasos reali...