Índice:
- Suprimentos
- Etapa 1: Interface do acelerômetro com Raspberry Pi
- Etapa 2: interface de botão de pressão com Raspberry Pi
- Etapa 3: desenvolvendo script Python para controlar serialmente o ponteiro do mouse
- Etapa 4: desenvolvendo script Python para controlar o ponteiro do mouse via Bluetooth
- Etapa 5: Incorporação de acelerômetro e botão na luva
Vídeo: [Mouse portátil] Controlador de mouse portátil baseado em Bluetooth para Windows 10 e Linux: 5 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
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
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
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:
- pyautogui.move (0, 200, 2) # move o mouse para baixo 200 pixels em 2 segundos
- 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
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:
- Crie uma porta COM Bluetooth de entrada.
- Emparelhe o Bluetooth do Pi com o Bluetooth do laptop tornando o Pi detectável.
- Instale Python no Windows.
- Instale o pip no Windows. Pip é usado para instalar bibliotecas em uma máquina Linux ou Windows.
- Instale o pyautogui no Windows usando: pip install pyautogui
- 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.
-
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,
- Baixe e execute o "Visual Studio Installer":
-
Instale "Visual Studio Build Tools 2017", marque "Visual C ++ build tools" e "Universal Windows Platform build tools"
- git clone
- cd pybluez
python setup.py install
- 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.
- 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:
- Instale PyBluez no Pi
- 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
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:
Mapeamento do controlador de jogo para PC (Linux e Windows): 5 etapas
Mapeamento do controlador de jogos para PC (Linux e Windows): se você está começando no campo de jogos em um computador pessoal, pode ser necessário seguir algumas etapas para chegar lá. Hoje, vou mostrar a vocês como usar um controlador de jogo USB até mesmo com os jogos mais antigos para PC, gratuitamente. A técnica
Controle remoto IR baseado em Arduino automático baseado em temperatura: 7 etapas
Controle remoto IR baseado em Arduino automático baseado em temperatura: Ei, e aí, pessoal! Akarsh aqui da CETech. Cansado de acordar no meio de um sono profundo só porque a temperatura ambiente está muito baixa ou muito alta por causa do seu AC mudo. Então este projeto é para você. Neste projeto, vamos fazer o nosso
Controlador de jogo DIY baseado em Arduino - Controlador de jogo Arduino PS2 - Jogando Tekken com gamepad Arduino DIY: 7 etapas
Controlador de jogo DIY baseado em Arduino | Controlador de jogo Arduino PS2 | Jogando Tekken com DIY Arduino Gamepad: Olá pessoal, jogar é sempre divertido, mas jogar com seu próprio controlador de jogo DIY personalizado é mais divertido. Portanto, faremos um controlador de jogo usando arduino pro micro neste instructables
Termômetro infravermelho sem contato baseado em Arduino - Termômetro baseado em IR usando Arduino: 4 etapas
Termômetro infravermelho sem contato baseado em Arduino | Termômetro baseado em IR usando Arduino: Olá pessoal, neste instructables faremos um termômetro sem contato usando arduino. Já que às vezes a temperatura do líquido / sólido é muito alta ou muito baixa e então é difícil fazer contato com ele e ler sua temperatura então naquele cenário
Controlador de partida DOL baseado em IOT para conjunto de bombas de irrigação: 6 etapas
Controlador de partida DOL baseado em IOT para conjunto de bombas de irrigação: Olá, amigos. Este instrutivo é sobre como monitorar e controlar remotamente um conjunto de bomba de irrigação pela Internet. História: Na minha fazenda, recebo energia da rede local apenas por cerca de 6 horas por dia. Os horários não são regulares, disponibilidade de po