Índice:

[Mouse portátil] Controlador de mouse portátil baseado em Bluetooth para Windows 10 e Linux: 5 etapas
[Mouse portátil] Controlador de mouse portátil baseado em Bluetooth para Windows 10 e Linux: 5 etapas

Vídeo: [Mouse portátil] Controlador de mouse portátil baseado em Bluetooth para Windows 10 e Linux: 5 etapas

Vídeo: [Mouse portátil] Controlador de mouse portátil baseado em Bluetooth para Windows 10 e Linux: 5 etapas
Vídeo: Essa é a solução para aquele seu vizinho bom de roda! 🤣 2024, Novembro
Anonim
Image
Image
Interface do acelerômetro com Raspberry Pi
Interface do acelerômetro com Raspberry Pi

Fiz um controlador de mouse com base em Bluetooth que pode ser usado para controlar o ponteiro do mouse e realizar operações relacionadas ao mouse do PC dinamicamente, sem tocar em nenhuma superfície. O circuito eletrônico, que está embutido em uma luva, pode ser usado para rastrear os gestos das mãos por meio de um acelerômetro e pode ser traduzido no movimento do ponteiro do mouse. Este dispositivo também possui interface com um botão que replica o clique do botão esquerdo. O dispositivo pode ser conectado serialmente ao PC (via USB) ou sem fio por meio de uma conexão Bluetooth. O Bluetooth fornece uma comunicação sem fio robusta e universal entre o dispositivo host e este mouse vestível. Como o Bluetooth está amplamente disponível e vem integrado com quase todos os laptops pessoais, o caso de uso de tal dispositivo vestível é amplo. Usando Raspberry Pi, que é uma plataforma de desenvolvimento comumente usada para vários projetos, a interface de diferentes sensores e o desenvolvimento de tal dispositivo é fácil e escalonável. A luva pode ser substituída por qualquer outro wearable para tornar sua aplicação mais ampla.

Como precaução contra o COVID-19, é aconselhável evitar tocar em superfícies que possam ser compartilhadas entre diferentes pessoas, e um laptop com tela de toque ou um mouse podem estar entre essas superfícies comuns. O uso de tal dispositivo vestível ajuda a manter a higiene e manter as superfícies comumente usadas higienizadas:)

Suprimentos

  • Raspberry Pi 3 Modelo B V1.2
  • Breakout do acelerômetro de eixo triplo SparkFun - MMA8452Q
  • Fio de ligação macho para fêmea
  • Uma luva
  • Fita adesiva
  • Tesoura
  • Cabo micro USB
  • Cabo HDMI (para depuração por meio do Raspberry Pi)

Etapa 1: Interface do acelerômetro com Raspberry Pi

Interface do acelerômetro com Raspberry Pi
Interface do acelerômetro com Raspberry Pi

Eu usei um acelerômetro de eixo triplo MMA8542Q da Sparkfun que usa o protocolo de comunicação I2C para se comunicar com os pinos GPIO do Raspberry Pi e enviar os dados dos eixos. Este sensor fornece vários modos de operação com a taxa de dados configurável, modos de suspensão, faixa de aceleração, modo de filtro, etc. Achei o código do Pibits muito útil na minha configuração inicial do sensor e testei-o com meus gestos manuais. É melhor primeiro colocar o sensor em uma superfície plana e fazer inclinações determinísticas enquanto observa os valores brutos do sensor. Isso é particularmente útil para entender como esse sensor reage a vários gestos com as mãos e como podemos definir limites para nossa aplicação. Uma vez que o acelerômetro é conectado com sucesso, você pode ver os dados brutos dos eixos chegando na tela do terminal do Pi.

Etapa 2: interface de botão de pressão com Raspberry Pi

Botão de interface de interface com Raspberry Pi
Botão de interface de interface com Raspberry Pi

Neste dispositivo vestível, fiz a interface de um botão que pode funcionar como um botão esquerdo do mouse para que eu possa clicar nos ícones da tela. As 2 extremidades do botão são então conectadas a 2 pinos GPIO do Pi. Um dos pinos emite um alto lógico e o outro pino lê esse valor. Quando o botão é pressionado, o circuito se fecha e o pino de entrada é capaz de ler um valor lógico alto, que é então processado pelo script que escrevi para emular o clique com o botão esquerdo do mouse. Por causa da falta de ferro de solda, usei fita adesiva para conectar os jumpers ao botão.

Etapa 3: desenvolvendo script Python para controlar serialmente o ponteiro do mouse

Usei a biblioteca Pyautogui Python para controlar o ponteiro do mouse. A razão para usar esta biblioteca é que ela funciona tanto no Linux quanto na plataforma Windows. Para controlar o ponteiro do mouse no meu Raspberry Pi, primeiro conectei meu Pi a um monitor. Em seguida, usei as seguintes APIs fornecidas pela biblioteca para controlar o ponteiro do mouse:

  1. pyautogui.move (0, 200, 2) # move o mouse para baixo 200 pixels em 2 segundos
  2. pyautogui.click () # clique com o mouse

Para filtrar os dados de erro provenientes do acelerômetro, usei a média e outros métodos de filtragem que podem ser facilmente compreendidos por meio do código anexado. A API pyautogui.move (0, y) foi usada de forma que o ponteiro do mouse pudesse ir para cima-para baixo ou da esquerda para a direita ao mesmo tempo. Isso ocorre porque o acelerômetro informa os eixos nas direções X, Y e Z, mas a API usa apenas 2 argumentos, os eixos X e Y. Portanto, essa abordagem era muito adequada para meu acelerômetro e para mapear os gestos na tela.

Etapa 4: desenvolvendo script Python para controlar o ponteiro do mouse via Bluetooth

Desenvolvimento de script Python para controlar o ponteiro do mouse via Bluetooth
Desenvolvimento de script Python para controlar o ponteiro do mouse via Bluetooth

Esta parte é um aplicativo avançado em que qualquer laptop com recursos Bluetooth pode se comunicar com o Raspberry Pi em um modelo de comunicação servidor-cliente e transmitir dados de coordenadas do mouse sem fio. Para configurar um laptop Windows 10 de 64 bits para permitir a comunicação Bluetooth, precisamos seguir as etapas abaixo:

Windows 10:

  1. Crie uma porta COM Bluetooth de entrada.
  2. Emparelhe o Bluetooth do Pi com o Bluetooth do laptop tornando o Pi detectável.
  3. Instale Python no Windows.
  4. Instale o pip no Windows. Pip é usado para instalar bibliotecas em uma máquina Linux ou Windows.
  5. Instale o pyautogui no Windows usando: pip install pyautogui
  6. Depois que o pyautogui estiver instalado no dispositivo, instale o Pybluez no Windows usando o seguinte comando no terminal do Windows usando: pip install PyBluez-win10. PyBluez permite a comunicação Bluetooth em PCs com Windows e Linux.
  7. Para desenvolver um aplicativo em um laptop Windows 10, precisamos instalar o Microsoft Visual Studio (15-20 GB de espaço necessário) e suas ferramentas de compilação. Portanto, junto com PyBluez, precisamos seguir as instruções abaixo,

    1. Baixe e execute o "Visual Studio Installer":
    2. Instale "Visual Studio Build Tools 2017", marque "Visual C ++ build tools" e "Universal Windows Platform build tools"

    3. git clone
    4. cd pybluez
    5. python setup.py install

  8. Se as instruções acima forem seguidas corretamente, a execução do Python no terminal Windows e a importação do pyautogui e do módulo Bluetooth devem funcionar sem erros, conforme a imagem acima.
  9. Na biblioteca pybluez instalada na máquina Windows, navegue até: pybluez-master / examples / simple / rfcomm-server.py e execute usando python rfcomm-server.py. Se o terminal entrar em um estado de espera sem erros, vá para a seção abaixo para configurar o Bluetooth no Pi. Se houver erros na instalação do pybluez, consulte Problemas do GitHub para depuração.

Raspbian em Raspberry Pi:

  1. Instale PyBluez no Pi
  2. Execute o exemplo do servidor no Windows. Então, no Pi, navegue para pybluez-master / examples / simple / rfcomm-client.py e execute. Se os dois dispositivos começaram a se comunicar, o Bluetooth agora está configurado em ambos os dispositivos. Para entender mais sobre como a comunicação de soquete funciona com Python, consulte este link do MIT.

Haverá alguma análise de dados adicional necessária para enviar dados de eixos de Pi para o PC, já que os dados são enviados em bytes. Consulte o código em anexo para obter mais informações sobre a comunicação de dados do cliente e do servidor.

Etapa 5: Incorporação de acelerômetro e botão na luva

Incorporação de acelerômetro e botão na luva
Incorporação de acelerômetro e botão na luva
Incorporação de acelerômetro e botão na luva
Incorporação de acelerômetro e botão na luva

Uma vez que o acelerômetro esteja bem conectado, o esqueleto do sistema se parece com a primeira imagem nesta etapa.

Como a superfície da luva não é plana, usei um cartão de crédito falso que vem na minha caixa de correio de vez em quando. Conforme a segunda imagem nesta etapa, coloquei o cartão de crédito falso na superfície superior da minha luva com fita adesiva. Sobre o cartão, coloquei meu acelerômetro. Esta configuração foi robusta o suficiente para manter meu acelerômetro estável e capaz de rastrear meus gestos com precisão.

Recomendado: