0% encontró este documento útil (0 votos)
18 vistas15 páginas

Control de Motor DC con App Inventor

ARDUINO PYTHON Y APP VENTOR

Cargado por

dereck camino
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
18 vistas15 páginas

Control de Motor DC con App Inventor

ARDUINO PYTHON Y APP VENTOR

Cargado por

dereck camino
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD TÉCNICA DE AMBATO

Facultad de Ingeniería en Sistemas, Electrónica e Industrial Carrera de


Telecomunicaciones
Módulo de Programación Avanzada
Tema: Control de un Motor DC Arduino-Python-App Inventor
Nivel y Paralelo: Tercer Semestre “A”
Integrantes: Camino Villalba Dennis Isaias
Tutor: Ing. Freddy Robalino P, Mg.

Introducción
Esta guía detalla los pasos necesarios para crear un sistema de control de un robot seguidor de
línea utilizando una interfaz gráfica desarrollada en Python y un Arduino Uno. El robot será
capaz de avanzar, retroceder, girar a la izquierda y girar a la derecha.

Link de video de funcionamiento


[Link]

Materiales Necesarios
Arduino Uno.
Motor driver: L298N o similar para controlar los motores del robot.
Motores: Motores DC o servomotores.
Cables y protoboard: Para realizar las conexiones necesarias.
Batería: Para alimentar el robot.
Software: Arduino IDE, Python 3, y la biblioteca Tkinter para la interfaz gráfica.
Instalación del Entorno
Instala Arduino IDE: Descárgalo desde [Link].
Instala Python 3: Asegúrate de tener Python 3 instalado. Puedes descargarlo desde [Link].
Instala la biblioteca PySerial: Necesaria para la comunicación entre Arduino y Python.
pip install pyserial
Tkinter: Tkinter está incluido con Python, no requiere instalación adicional.

Conexión de los Componentes


Conecta el motor driver y los motores a tu Arduino Uno siguiendo este esquema:

Motor A: Conecta el motor A a los pines de salida del motor driver.


Motor B: Conecta el motor B a los pines de salida del motor driver.
IN1 e IN2: Conecta los pines IN1 e IN2 del motor driver a los pines digitales 4 y 5 del Arduino.
IN3 e IN4: Conecta los pines IN3 e IN4 del motor driver a los pines digitales 6 y 7 del Arduino.
VCC y GND: Conecta los pines VCC y GND del motor driver a la fuente de alimentación y a
tierra, respectivamente.

CODIGO ARDUINO
Declaración de variables y conexiones en el Arduino

En el código, se definen los pines para diferentes componentes del sistema, incluyendo
motores, sensores y el módulo Bluetooth. Uno de los puntos clave es la conexión del
módulo Bluetooth HC-05 al Arduino.

Configuración del módulo Bluetooth

El módulo Bluetooth utiliza la comunicación serial para enviar y recibir datos. Como el
Arduino ya tiene un puerto serial dedicado (pines 0 y 1, Serial), usamos la librería
SoftwareSerial para definir un puerto serial alternativo, permitiendo conectar el
módulo Bluetooth sin interferir con la comunicación del puerto USB.

bluetooth(2, 12): Aquí declaramos los pines que usaremos para la comunicación serial:

Pin 2: RX (recepción) en el Arduino.

Pin 12: TX (transmisión) en el Arduino.

Conexión entre el módulo Bluetooth HC-05 y Arduino

• El módulo Bluetooth también tiene pines RX y TX para la comunicación serial.


Para establecer la conexión, se deben cruzar los pines entre el Arduino y el
módulo Bluetooth:
• RX del módulo Bluetooth al TX del Arduino (pin 12).
• TX del módulo Bluetooth al RX del Arduino (pin 2).

Esto es necesario porque:


• TX (transmisión) de un dispositivo debe conectarse al RX (recepción) del otro, y
viceversa.
• El módulo Bluetooth envía datos por su TX y los recibe por su RX, mientras que
el Arduino hace lo mismo con sus respectivos pines.

Declaración de variables como entrada o salida


Configura los pines de los motores y claxon como salidas.
Inicializa la comunicación serial tanto para el monitor (USB) como para el Bluetooth.

. Lógica principal (loop)

Verifica continuamente si hay datos entrantes desde el módulo Bluetooth

Procesamiento de comandos

La función procesarComando maneja los comandos recibidos desde el Bluetooth. Los


comandos posibles incluyen:

Movimiento:

"adelante": Hace avanzar los motores.

"atras": Hace retroceder los motores.

"izquierda": Gira hacia la izquierda.

"derecha": Gira hacia la derecha.

"parar": Detiene los motores.

Claxon:
"claxon": Activa el buzzer.

Velocidad:

"1", "2", ..., "5": Ajusta la velocidad del motor con base en un nivel predeterminado.
CODIGO PYTHON
Este código controla un carrito conectado a un Arduino a través de una interfaz gráfica
desarrollada con Tkinter, utilizando un puerto serial para enviar comandos. A
continuación, explico detalladamente cada parte:

Importación de módulos

• tkinter y ttk: Librerías de Python para crear interfaces gráficas. ttk provee
widgets más estilizados.
• serial: Permite la comunicación serial (puerto COM) con el Arduino.
• time: Usado para manejar retrasos (ej. inicialización del Arduino).
• El objeto [Link] configura la conexión con el Arduino. Se especifican:
• Puerto (COM7): El puerto donde está conectado el Arduino.
• Baudrate (9600): Velocidad de comunicación serial.
• Timeout (1): Tiempo en segundos antes de dar por concluida la lectura si no
recibe datos.
• [Link](2) espera a que el Arduino termine su inicialización antes de enviarle
datos.

Funciones para enviar comandos

• enviar_comando(comando):

o Convierte el comando en una cadena de texto codificada a UTF-8, añade un


salto de línea (\n) y lo envía al Arduino usando [Link]().
o Muestra el comando enviado en consola para depuración.

• Funciones específicas de acción:


o mover_adelante(), mover_atras(), mover_derecha(), mover_izquierda(),
detener():
▪ Envía comandos predefinidos como "adelante", "atras", etc., que el
Arduino interpreta.
o activar_claxon() y activar_musica():
▪ Envía los comandos "claxon" y "musica".
o Control_velicidad_1 y control velocidad_2:
▪ Envía los comandos "vel1 y vel2 "comandados por los sliders.
o enviar_palabra_habla
▪ Envía los comandos "adelante", "atrás", etc., que el Arduino interpreta
que son hablados por el micrófono .

Eventos de teclado
• Detecta las teclas presionadas y las asocia con acciones específicas.
• Ejemplo: Presionar W llama a mover_adelante().
Interfaz gráfica con Tkinter

Estructura básica

Se utiliza [Link]() para crear la ventana principal con un título.


Componentes y diseño
Etiqueta principal:
Muestra el texto "Control del Carrito" en la parte superior.

Botones de dirección:

Se organizan en un marco (frame_direcciones) y se disponen en un grid para imitar una cruz:


Adelante en el centro superior.
Atrás en el centro inferior.
Izquierda y Derecha en los costados.
Botón Parar en el centro.
Cada botón tiene su comando asociado (ej. mover_adelante()).
Botones extra:
Botones para el claxon (Claxon) y música (Musica), alineados verticalmente debajo del marco
de dirección.
Control de velocidad:
Un deslizador horizontal ([Link]) ajusta la velocidad entre valores de 1 a 5. Envía el nuevo
valor al Arduino al modificarse.

CODIGO App inventor


Este código controla un carrito conectado a un Arduino a través de una interfaz gráfica
desarrollada App inventor, utilizando un puerto serial para enviar comandos. A
continuación, explico detalladamente cada parte:

Funciones para enviar comandos

• enviar_comando(comando):

o Convierte el comando en una cadena de texto codificada a UTF-8, añade un


salto de línea (\n) y lo envía al Arduino usando [Link]().
o Muestra el comando enviado en consola para depuración.
• Funciones específicas de acción:
o mover_adelante(), mover_atras(), mover_derecha(), mover_izquierda(),
detener():
▪ Envía comandos predefinidos como "adelante", "atras", etc., que el
Arduino interpreta.
o activar_claxon() y activar_musica():
▪ Envía los comandos "claxon" y "musica".
o Control_velicidad_1 y control velocidad_2:
▪ Envía los comandos "vel1 y vel2 "comandados por los sliders.
o enviar_palabra_habla
▪ Envía los comandos "adelante", "atrás", etc., que el Arduino interpreta
que son hablados por el micrófono .
Interfaz gráfica con App inventor

Estructura básica

Se utiliza [Link]() para crear la ventana principal con un título.


Componentes y diseño
Etiqueta principal:

Muestra el texto "Control del Carrito" en la parte superior

Botones de dirección:

Se organizan en un marco (frame_direcciones) y se disponen en un grid para imitar una cruz:


Adelante en el centro superior.
Atrás en el centro inferior.
Izquierda y Derecha en los costados.
Botón Parar en el centro.
Cada botón tiene su comando asociado (ej. mover_adelante()).
Botones extra:
Botones para el claxon (Claxon) y música (Musica), alineados verticalmente debajo del marco
de dirección.
Control de velocidad:
Un deslizador horizontal ([Link]) ajusta la velocidad entre valores de 1 a 5. Envía el nuevo
valor al Arduino al modificarse.
IMAGEN DE RESULTADOS
Conclusión

El programa combina una interfaz gráfica, comunicación serial y control en tiempo real para
manejar un carrito conectado a un Arduino. Gracias al uso de Tkinter, se logra un control
intuitivo mediante botones, sliders y teclas, permitiendo acciones como mover el carrito,
detenerlo, ajustar la velocidad y activar funciones como claxon o música.

Además, la implementación es flexible y fácil de adaptar a diferentes configuraciones, ya que


los comandos enviados al Arduino pueden personalizarse según las necesidades. La integración
de eventos de teclado asegura un control más dinámico, replicando una experiencia cercana a
videojuegos o controladores remotos.
En conclusión, este código es una solución funcional y bien estructurada para controlar un
carrito robótico, y sirve como base para desarrollar proyectos más complejos de robótica o
domótica, donde la interacción entre hardware y software es fundamental.

También podría gustarte