Este proyecto es un sistema integrado que permite controlar motores físicos a través de comandos de voz. La aplicación graba tu voz, la procesa utilizando la API de Gemini 2.0, y traduce las instrucciones verbales en comandos para motores Arduino.
El sistema consta de tres componentes principales:
- Una aplicación de Python para grabar y procesar audio
- Un backend de procesamiento de lenguaje natural con Gemini AI
- Un sketch de Arduino para controlar los motores físicos
- Grabación de voz en tiempo real
- Procesamiento mediante Gemini AI
- Control de motores dual (A y B)
- Instrucciones de dirección (izquierda/derecha)
- Control de duración para cada movimiento
- Placa Arduino
- 2 motores DC con controlador (L298N o similar)
- Cables de conexión
- Micrófono para PC
- Python 3.8+
- Arduino IDE
- Bibliotecas necesarias (ver instalación)
git clone https://github.com/J-unx/Using-Gemini-to-Control-Arduino.gitpython -m venv venv
venv\Scripts\activatepython3 -m venv venv
source venv/bin/activatepip install -r requirements.txt- Abrir Arduino IDE
- Cargar el archivo
Arduino_comandos_motor.ino - Seleccionar la placa y puerto correctos
- Subir el código a la placa
- Obtén una clave API de Gemini en Google AI Studio
- Reemplaza la clave en el archivo
main.py:self.cliente = genai.Client(api_key="TU_CLAVE_API_AQUI")
- Conecta tu Arduino al puerto USB
- Asegúrate de que el puerto COM en
main.pysea el correcto:ser = serial.Serial("COM3", 9600, timeout=1) # Ajusta según tu sistema
- Ejecuta la aplicación:
python main.py
- Presiona el botón "Iniciar Grabación" y habla claramente
- Presiona "Detener Grabación" para procesar tu comando
- "Mueve el motor A a la izquierda durante 5 segundos"
- "Motor B a la derecha por 2 segundos"
- "Motor A y B a la izquierda por 3 segundos"
Instala los paquetes del archivo requirements.txt :
pip install -r requirements.txt El código está configurado para usar los siguientes pines en Arduino:
- Motor A: Pines 22, 23
- Motor B: Pines 24, 25
Puedes modificar esta configuración en el archivo Arduino_comandos_motor.ino:
const int motorPins[numMotores][pinsPorMotor] = {
{22, 23}, // Motor A
{24, 25} // Motor B
};El archivo Arduino_comandos_motor.ino fue generado completamente con IA.
- Error de puerto COM: Asegúrate de usar el puerto correcto en la línea
ser = serial.Serial("COM3", 9600, timeout=1) - No se detecta el micrófono: Verifica la configuración de audio de tu sistema
- Error de API: Verifica que la clave de API sea válida y esté correctamente configurada
Las contribuciones son bienvenidas. Por favor, abre un issue para discutir cualquier cambio que te gustaría realizar (O propuesta de implementacion de este proyecto).