¿Cómo hacer un control de gestos de mano basado en Arduino de su computadora?

El control de gestos con las manos no es algo nuevo. Hemos visto muchos robots que se controlan mediante gestos con las manos. La tecnología avanza tan rápido que todo lo que pensamos ya está presente en el mercado. Un proyecto muy interesante es controlar su computadora personal o la computadora portátil usando una pequeña placa de microcontrolador llamada Arduino Uno. Al usar un Arduino, podemos realizar algunas funciones simples simplemente agitando nuestra mano en lugar de usar un mouse o el teclado. Estas funciones incluyen Deslizar imágenes, Desplazarse hacia arriba y hacia abajo en las páginas, cambiar entre las pestañas de un navegador web, reproducir o pausar un video, cambiar entre aplicaciones de escritorio, etc.

Diagrama de circuito



¿Cómo realizar diferentes operaciones en la PC con gestos con las manos?

Ahora que conocemos el resumen del proyecto, avancemos y recopilemos información diferente para comenzar a trabajar. Primero haremos una lista de los componentes, luego los estudiaremos brevemente y luego ensamblaremos todos los componentes para hacer un sistema que funcione.



Paso 1: recopilar los componentes

El mejor enfoque para iniciar cualquier proyecto es hacer una lista de componentes y hacer un breve estudio de estos componentes porque nadie querrá quedarse en medio de un proyecto solo porque falta un componente. A continuación se muestra una lista de componentes que vamos a utilizar en este proyecto:

  • Cables de puente macho / hembra

Paso 2: estudiar los componentes

Pues tenemos una lista completa de todos los componentes. Sigamos adelante y revisemos un breve estudio del funcionamiento de todos los componentes.



Arduino Nano es una placa microcontroladora que realiza diversas operaciones en diferentes circuitos. Requiere un Código C que le dice al tablero qué tareas realizar y cómo. Tiene 13 pines de E / S digitales, lo que significa que podemos operar 13 dispositivos diferentes. Arduino Nano tiene exactamente la misma funcionalidad que Arduino Uno pero en un tamaño bastante pequeño. El microcontrolador de la placa Arduino Nano es ATmega328p. Si desea controlar más de 13 dispositivos, use Arduino Mega.

Arduino Nano

La placa HC-SR04 es un sensor ultrasónico que se utiliza para determinar la distancia entre dos objetos. Consta de un transmisor y un receptor. El transmisor convierte la señal eléctrica en una señal ultrasónica y el receptor convierte la señal ultrasónica nuevamente en la señal eléctrica. Cuando el transmisor envía una onda ultrasónica, se refleja después de chocar con cierto objeto. La distancia se calcula utilizando el tiempo que tarda la señal ultrasónica en ir desde el transmisor y regresar al receptor.



Sensor ultrasónico

Paso 3: ensamblar los componentes

Ahora como conocemos el funcionamiento principal de los componentes que vamos a utilizar. Comencemos a ensamblar los componentes para hacer un producto de trabajo final.

  1. Conecte los pines Vcc y de tierra de ambos sensores ultrasónicos a los 5V y tierra de la placa Arduino Nano. El pin de disparo y eco del primer sensor ultrasónico está conectado al pin11 y al pin10 de Arduino Nano respectivamente. El pin de disparo y eco del segundo sensor ultrasónico está conectado al pin6 y pin5 del Arduino nano respectivamente.
  2. Coloque la placa Arduino nano en la parte posterior de la cinta adhesiva de la pantalla del portátil. Ambos sensores ultrasónicos se conectarán a ambas esquinas superiores de la computadora portátil.

Paso 4: Empezando con Arduino

Si aún no está familiarizado con Arduino IDE, no se preocupe porque a continuación se explica un procedimiento paso a paso para configurar y usar Arduino IDE con una placa de microcontrolador.

  1. Descargue la última versión de Arduino IDE de Arduino.
  2. Conecte su placa Arduino Nano a su computadora portátil y abra el panel de control. Luego, haga clic en Hardware y sonido . Ahora, haga clic en Dispositivos e impresoras. Aquí, busque el puerto al que está conectada su placa de microcontrolador. En mi caso es COM14 pero es diferente en diferentes computadoras.

    Encontrar puerto

  3. Haga clic en el menú Herramientas y configure la placa para Arduino Nano en el menú desplegable.

    Tablero de ajuste

  4. En el mismo menú de herramientas, establezca el puerto en el número de puerto que observó antes en el Dispositivos e impresoras .

    Puerto de configuración

  5. En el mismo menú de herramientas, configure el procesador ATmega328P (antiguo cargador de arranque).

    Procesador

  6. Descargue el código adjunto a continuación y péguelo en su IDE de Arduino. Clickea en el subir para grabar el código en la placa del microcontrolador.

    Subir

Para descargar el código, haga clic aquí.

Paso 5: Configurar los gestos

Queremos escribir un código que detecte y convierta la distancia en un comando apropiado para realizar una tarea.

Primero hagamos una lista de todas las tareas que queremos realizar usando gestos. A continuación se muestra la lista de todas esas tareas.

  1. Cambie a la pestaña siguiente o la pestaña anterior en el navegador web.
  2. Desplácese hacia arriba y hacia abajo en la página web.
  3. Reproducir y pausar videos en VLC Player.
  4. Sube y baja el volumen.
  5. Cambiar entre dos tareas.

Ahora configuraremos gestos para realizar todas estas operaciones.

  1. Gesto 1: Coloque su mano frente al sensor ultrasónico derecho entre aproximadamente 15 cm y 30 cm. Después de un breve período de tiempo, retire la mano. Esto se desplazará hacia abajo en la página web y disminuirá el volumen.
  2. Gesto 2: Coloque su mano frente al sensor ultrasónico derecho entre aproximadamente 15 cm y 30 cm. Después de un breve período de tiempo, empuje su mano hacia el sensor ultrasónico. Esto se desplazará hacia arriba en la página web y aumentará el volumen.
  3. Gesto 3: Para pasar a la siguiente pestaña, pase la mano por delante del sensor ultrasónico derecho.
  4. Gesto 4: Para pasar a la pestaña anterior, pase la mano por delante del sensor ultrasónico izquierdo. Esto también reproducirá / pausará su video en el reproductor VLC.
  5. Gesto 5: Para alternar entre dos tareas, pase la mano por ambos sensores.

Hemos escrito el código y realizado todas las condiciones en función de los gestos anteriores. Y debe tenerse en cuenta que estamos usando Google Chrome como nuestro navegador web y Reproductor de multimedia VLC como nuestra aplicación de medios.

Paso 6: comprensión del código Arduino

Hemos escrito un código que convierte 5 gestos en un comando digital. este comando se envía al puerto serie. Escribiremos un programa en Python para interpretar estos comandos y realizar algunas funciones del teclado para realizar varias tareas.

1. Al principio, se inicializan todos los pines que queremos conectar con los sensores. También se inicializan diferentes variables para almacenar datos para el cálculo de tiempo y distancia.

const int trigPin1 = 11; // pin de salida de disparo (sensor 1) const int echoPin1 = 10; // pin de entrada de eco (sensor 1) const int trigPin2 = 6; // pin de salida de disparo (sensor 2) const int echoPin2 = 5; // pin de entrada de eco (sensor 2) // variables utilizadas para el cálculo de la distancia de larga duración; int distancia1, distancia2; flotar r; unsigned long temp = 0; int temp1 = 0; int l = 0;

2. Hemos escrito una función, vacío find_distance (vacío) para calcular la distancia de ambos sensores ultrasónicos. Es mejor no activar ambos sensores ultrasónicos al mismo tiempo porque puede causar alguna interferencia. Esta función devolverá la distancia en cm.

anular find_distance (vacío) {digitalWrite (trigPin1, LOW); delayMicroseconds (2); digitalWrite (trigPin1, HIGH); delayMicroseconds (10); digitalWrite (trigPin1, LOW); duración = pulseIn (echoPin1, HIGH, 5000); r = 3,4 * duración / 2; // cálculo para obtener la medida en cm utilizando el tiempo devuelto por la función pulsein. distancia1 = r / 100,00; digitalWrite (trigPin2, BAJO); delayMicroseconds (2); digitalWrite (trigPin2, ALTO); delayMicroseconds (10); digitalWrite (trigPin2, BAJO); duración = pulseIn (echoPin2, HIGH, 5000); r = 3,4 * duración / 2; distancia2 = r / 100,00; retraso (100); }

3. configuración vacía () es una función que inicializa todos los pines para ser usados ​​como ENTRADA o SALIDA. La velocidad en baudios también se configura en esta función. La tasa de baudios es la velocidad a la que la placa del microcontrolador se comunica con los sensores conectados.

configuración vacía () {Serial.begin (9600); pinMode (trigPin1, SALIDA); // inicializa los pines de disparo y eco del sensor como entrada y salida: pinMode (echoPin1, INPUT); pinMode (trigPin2, SALIDA); pinMode (echoPin2, ENTRADA); retraso (1000); }

4. bucle vacío () es una función que se ejecuta repetidamente en un bucle. En este ciclo, calculamos la distancia en muchos casos y aplicamos condiciones para detectar el gesto.

bucle vacío () {encontrar_distancia (); si (distancia2 = 15) {temp = milis (); mientras (millis ()<=(temp+300)) find_distance(); if(distance2=15) { temp=distance2; while(distance2<=50 || distance2==0) { find_distance(); if((temp+6)distance2) { Serial.println('up'); } } } else { Serial.println('next'); } } else if(distance1=15) { temp=millis(); while(millis()<=(temp+300)) { find_distance(); if(distance2=15) { Serial.println('change'); l=1; break; } } if(l==0) { Serial.println('previous'); while(distance1=15) find_distance(); } l=0; } }

Paso 7: programación en Python

Nosotros instalaremos PyAutoGUI e invocar varios comandos del teclado simplemente leyendo datos seriales entrantes. Con este programa, podemos imitar muchas operaciones del mouse y del teclado, como hacer clic con el botón izquierdo o derecho en el mouse o presionar cualquier tecla del teclado.

Primero, instalaremos PIP en nuestras ventanas. Es un procedimiento sencillo. haga clic aquí para abrir la guía de video para instalar pip en su computadora. Después de instalar PIP en nuestra computadora, avanzaremos e instalaremos pyAutoGUI. Para hacerlo, escriba el siguiente comando en el símbolo del sistema

python -m pip instalar pyautogui

Este comando instalará puAutoGUI en su computadora. Si todo va bien hasta ahora, sigamos adelante y escribamos un programa en Python para invocar diferentes comandos de teclado. Como estamos recibiendo 5 comandos diferentes en la entrada en serie por el código Arduino, el código Python puede convertir estos comandos en ciertos comandos de teclado de la siguiente manera.

  • Datos: 'siguiente' —–> Acción: 'Ctrl + PgDn'
  • Datos: 'anterior' —–> Acción: 'Ctrl + Re Pág'
  • Datos: 'abajo' —–> Acción: 'Flecha abajo'
  • Datos: 'arriba' —–> Acción: 'Flecha arriba'
  • Datos: 'cambiar' —–> Acción: 'Alt + Tab'

Python se puede utilizar para programar un Arduino , simplemente importando pyfirmata, que puede interconectar Arduino con Python. A continuación, se muestra el código de Python que será necesario para ejecutar el proyecto:

import serial # agregar biblioteca serial para comunicación serial import pyautogui # agregar biblioteca pyautogui para controlar programáticamente el mouse y el teclado. Arduino_Serial = serial.Serial ('com12