- Pré-requisitos:
- Conceito por trás do projeto:
- Diagrama de circuito:
- Programando seu Arduino:
- Programando seu Python:
- Computador controlado por gestos em ação:
Recentemente, laptops ou computadores controlados por gestos estão ficando muito famosos. Essa técnica é chamada de movimento de salto, que nos permite controlar certas funções em nosso computador / laptop simplesmente acenando com a mão na frente dele. É muito legal e divertido fazer isso, mas esses laptops custam muito caro. Portanto, neste projeto, vamos tentar construir nosso próprio laptop / computador de controle de gestos combinando o poder do Arduino e do Python.
Usaremos dois sensores ultrassônicos para determinar a posição de nossa mão e controlar um media player (VLC) com base na posição. Eu usei isso para demonstração, mas uma vez que você entendeu o projeto, você pode fazer qualquer coisa mudando apenas algumas linhas de código e controlar seu aplicativo favorito da sua maneira favorita.
Pré-requisitos:
Já cobrimos alguns projetos que combinam Arduino com Python. Portanto, presumo que você já tenha instalado o Python e sua biblioteca serial e tenha experimentado alguns projetos básicos, como LED piscando. Do contrário, não se preocupe, você pode recorrer a este tutorial de Controle Led do Arduino-Python e seguir em frente. Portanto, certifique-se de ter instalado o Python e a biblioteca pyserial antes de prosseguir.
Conceito por trás do projeto:
O conceito por trás do projeto é muito simples. Colocaremos dois sensores ultrassônicos (US) em cima de nosso monitor e leremos a distância entre o monitor e nossa mão usando o Arduino, com base neste valor de distância realizaremos determinadas ações. Para realizar ações em nosso computador, usamos a biblioteca Python pyautogui. Os comandos do Arduino são enviados ao computador por meio da porta serial (USB). Esses dados serão lidos pelo python que está sendo executado no computador e, com base nos dados lidos, uma ação será executada.
Diagrama de circuito:
Para controlar o PC com Gestos com as Mãos, basta conectar os dois sensores ultrassônicos com o Arduino. Sabemos que o sensor norte-americano funciona com 5V e, portanto, eles são alimentados pelo regulador de tensão integrado do Arduino. O Arduino pode ser conectado ao PC / Laptop para alimentar o módulo e também para comunicação serial. Assim que as conexões forem feitas, coloque-as no monitor conforme mostrado abaixo. Usei uma fita dupla-face para colar no meu monitor, mas você pode usar sua própria criatividade. Depois de prendê-lo em um local podemos prosseguir com a Programação.
Programando seu Arduino:
O Arduino deve ser programado para ler a distância da mão do sensor dos EUA. O programa completo é fornecido no final desta página; logo abaixo, dei a explicação do programa. Se você é novo no sensor ultrassônico, basta passar pelo Arduino & Medição de distância baseada em sensor ultrassônico.
Ao ler o valor da distância, podemos chegar a certas ações a serem controladas com gestos, por exemplo neste programa programei 5 ações como uma demonstração.
Ação 1: quando ambas as mãos são colocadas antes do sensor a uma distância particular, o vídeo no player VLC deve reproduzir / pausar.
Ação 2: quando a mão direita é colocada diante do sensor a uma distância particular, o vídeo deve avançar um passo.
Ação 3: quando a mão esquerda é colocada diante do sensor a uma distância particular, o vídeo deve retroceder um passo.
Ação 4: quando a mão direita é colocada diante do sensor a uma distância próxima específica e, em seguida, se movida em direção ao sensor, o vídeo deve avançar rapidamente e se for movido para longe, o vídeo deve retroceder.
Ação 5: Quando a mão esquerda é colocada diante do sensor a uma distância particular próxima e, em seguida, se movida em direção ao sensor, o volume do vídeo deve aumentar e se for movido o volume deve diminuir.
Vamos ver como o programa foi escrito para realizar as ações acima. Portanto, como todos os programas, começamos definindo os pinos de I / O conforme mostrado abaixo. Os dois sensores US são conectados aos pinos digitais 2,3,4 e 5 e são alimentados pelo pino de + 5V. Os pinos de disparo são pinos de saída e os pinos de eco são pinos de entrada.
A comunicação serial entre o Arduino e o python ocorre a uma taxa de transmissão de 9600.
const int trigger1 = 2; // Trigger pin do 1º Sesnor const int echo1 = 3; // Echo pin do 1º Sesnor const int trigger2 = 4; // Trigger pin do 2º Sesnor const int echo2 = 5; // Echo pin do 2º Sesnor void setup () {Serial.begin (9600); pinMode (trigger1, OUTPUT); pinMode (echo1, INPUT); pinMode (trigger2, OUTPUT); pinMode (echo2, INPUT); }
Precisamos calcular a distância entre o sensor e a mão a cada vez antes de concluir qualquer ação. Portanto, temos que fazer isso muitas vezes, o que significa que esse código deve ser usado como uma função. Escrevemos uma função chamada calcular_distância () que nos retornará a distância entre o sensor e a mão.
/ * ### Função para calcular a distância ### * / void describe_distance (int trigger, int echo) {digitalWrite (trigger, LOW); atrasoMicrosegundos (2); digitalWrite (disparador, HIGH); delayMicroseconds (10); digitalWrite (disparador, LOW); time_taken = pulseIn (eco, HIGH); dist = time_taken * 0,034 / 2; se (dist> 50) dist = 50; }
Dentro de nosso loop principal, verificamos o valor da distância e executamos as ações mencionadas acima. Antes disso, usamos duas variáveis distL e distR que são atualizadas com o valor da distância atual.
calcule_distância (disparador1, echo1); distL = dist; // obtém a distância do sensor esquerdo calcule_distância (trigger2, echo2); distR = dist; // obter distância do sensor certo
Como sabemos a distância entre os dois sensores, podemos agora compará-la com valores predefinidos e chegar a certas ações. Por exemplo, se ambas as mãos são colocadas a uma distância de 40 mc, reproduzimos / pausamos o vídeo. Aqui, a palavra “Play / Pause” será enviada através da porta serial
if ((distL> 40 && distR> 40) && (distL <50 && distR <50)) // Detecta ambas as mãos {Serial.println ("Play / Pause"); atraso (500);}
Se apenas a mão direita for colocada antes do módulo, avançamos o vídeo um passo e se for a esquerda retrocedemos um passo. Com base na ação, aqui a palavra “Rewind” ou “Forward” será enviada através da porta serial
if ((distL> 40 && distL <50) && (distR == 50)) // Detectar a mão esquerda {Serial.println ("Rewind"); delay (500);} if ((distR> 40 && distR <50) && (distL == 50)) // Detectar mão direita {Serial.println ("Avançar"); atraso (500);}
Para o controle detalhado de volume e trilha, usamos uma metodologia diferente de modo a prevenir falsos gatilhos. Para controlar o volume, devemos posicionar a mão esquerda aprox. A uma distância de 15 cm, você pode movê-lo em direção ao sensor para diminuir o volume ou movê-lo para longe do sensor para aumentar o volume. O código para o mesmo é mostrado abaixo. Com base na ação, aqui a palavra “Vup” ou “Vdown” será enviada pela porta serial
// Bloquear à esquerda - Modo de controle if (distL> = 13 && distL <= 17) {delay (100); // Tempo de espera da mão calcule_distance (trigger1, echo1); distL = dist; if (distL> = 13 && distL <= 17) {Serial.println ("Bloqueado à esquerda"); while (distL <= 40) {calcular distância_ (gatilho1, eco1); distL = dist; if (distL <10) // Empurrado manualmente em {Serial.println ("Vup"); delay (300);} if (distL> 20) // Retirado manualmente {Serial.println ("Vdown"); atraso (300);}}}}
Podemos usar o mesmo método para o sensor do lado direito também, para controlar a trilha do vídeo. Ou seja, se movermos a mão direita em direção ao sensor, ele avançará o filme e se você afastá-lo do sensor, ele retrocederá o filme. Com base na ação, aqui a palavra “Rewind” ou “Forward” será enviada através da porta serial
Agora você pode ler o código completo para este PC controlado por gestos fornecido no final da página e tentar subestimá-lo como um todo e, em seguida, copiá-lo para o seu Arduino IDE.
Programando seu Python:
O programa python para este projeto é muito simples. Precisamos apenas estabelecer uma comunicação serial com o Arduino por meio da taxa de transmissão correta e, em seguida, realizar algumas ações básicas no teclado. A primeira etapa com o python seria instalar o módulo p yautogui . Certifique-se de seguir esta etapa porque o programa não funcionará sem o módulo pyautogui.
Instalando o módulo pyautogui para Windows:
Siga as etapas abaixo para instalar o pyautogui para Windows. Se você estiver usando outras plataformas, as etapas também serão mais ou menos semelhantes. Certifique-se de que seu computador / laptop esteja conectado à internet e prossiga com as etapas abaixo
Etapa 1: Abra o prompt de comando do Windows e mude o diretório para a pasta onde você instalou o python. Por padrão, o comando deve ser
cd C: \ Python27
Etapa 2: dentro do diretório python, use o comando python –m pip install –upgrade pip para atualizar seu pip. Pip é uma ferramenta em Python que nos ajuda a instalar módulos Python facilmente. Assim que este módulo for atualizado (conforme mostrado na imagem abaixo), prossiga para a próxima etapa.
python –m pip install –upgrade pip
Etapa 3: use o comando “ python –m pip install pyautogui ” para instalar o módulo pyautogui. Assim que o processo for bem-sucedido, você deverá ver uma tela semelhante a esta abaixo.
python –m pip install –upgrade pip
Agora que o módulo pyautogui e o módulo pyserial (instalados no tutorial anterior) foram instalados com sucesso com o python, podemos prosseguir com o programa python. O código Python completo é fornecido no final do tutorial, mas a explicação para o mesmo é a seguinte.
Vamos importar todos os três módulos necessários para este projeto. Eles são pyautogui, python serial e tempo.
import serial #Serial importado para comunicação serial import time #Required to use delay functions import pyautogui
Em seguida, estabelecemos a conexão com o Arduino por meio da porta COM. No meu computador, o Arduino está conectado ao COM 18. Use o gerenciador de dispositivos para descobrir a qual porta COM o seu Arduino está conectado e corrija a seguinte linha de acordo.
ArduinoSerial = serial.Serial ('com18', 9600) #Create Objeto de porta serial chamado arduinoSerialData time.sleep (2) # aguarde 2 segundos para que a comunicação seja estabelecida
Dentro do infinito enquanto loop, que repetidamente ouvir a porta COM e comparar as palavras-chave com quaisquer obras pré-desafiado e fazer teclas pressionadas bordo em conformidade.
enquanto 1: entrando = str (ArduinoSerial.readline ()) # leia os dados seriais e imprima-os como impressão de linha entrando se 'Reproduzir / Pausa' em entrada: pyautogui.typewrite (, 0.2) se 'Retroceder' em entrada: pyautogui. tecla de atalho ('ctrl', 'esquerda') se 'Avançar' na entrada: pyautogui.hotkey ('ctrl', 'direita') se 'Vup' na entrada: pyautogui.hotkey ('ctrl', 'para baixo') se ' Vdown 'na entrada: pyautogui.hotkey (' ctrl ',' up ')
Como você pode ver, para pressionar uma tecla basta usar o comando “pyautogui.typewrite (, 0.2)” que pressionará o espaço da tecla por 0,2seg. Se você precisa de teclas de atalho como ctrl + S, você pode usar o comando de tecla de atalho “pyautogui.hotkey ('ctrl', 's')”.
Eu usei essas combinações porque elas funcionam no VLC media player, você pode ajustá-las da maneira que quiser para criar seus próprios aplicativos para controlar qualquer coisa no computador com gestos.
Computador controlado por gestos em ação:
Faça as conexões conforme definido acima e carregue o código Arduino em sua placa Arduino. Em seguida, use o script Python abaixo e execute o programa em seu laptop / computador.
Agora você pode reproduzir qualquer filme em seu computador usando o media player VLC e usar sua mão para controlar o filme, conforme mostrado no vídeo abaixo.
Espero que você tenha entendido o projeto e gostado de brincar com ele. Esta é apenas uma demonstração e você pode usar sua criatividade para construir muito mais coisas legais controladas por gestos em torno disso. Deixe-me saber se isso foi útil e o que você criará usando isso na seção de comentários e ficarei feliz em saber.