Mouse controlado por smartphone
Componentes e suprimentos
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Aplicativos e serviços online
| ||||
| ||||
|
Sobre este projeto
Este projeto é semelhante ao meu trabalho anterior, em que usei um joystick para controlar um cursor de PC. A principal diferença é que criei um aplicativo para smartphone que contém 2 joysticks virtuais para mover o cursor, bem como rolar a tela e também clicar com o botão esquerdo e direito como um trackpad normal.
Trabalhando
O projeto envolve um aplicativo de smartphone que envia os dados dos eixos xey do joystick, status de rolagem, status do clique esquerdo e direito usando bluetooth para o Arduino Uno conectado ao módulo bluetooth HC-05. Esses dados na recepção ao Arduino são manipulados para fazer alterações na posição atual do cursor para obter uma nova posição. Os dados resultantes junto com a rolagem e o status do botão são impressos como a saída que é reconhecida para ser lida pelo esboço do Python. O esboço Python é feito para executar ações do mouse usando o módulo do mouse.
Sobre o aplicativo
O aplicativo do smartphone é criado usando o MIT-App Inventor. Criar o aplicativo é simples, pois você só precisa adicionar os blocos desejados para construir seu aplicativo necessário. Eu me referi ao tutorial de robótica de mesa para fazê-los. A tela principal do aplicativo é a seguinte-
Antes de enviar as informações principais para o módulo HC-05, o aplicativo primeiro envia um número de um byte (255) para denotar o início das informações. A sequência de transferência de dados é a seguinte-
1. Envie '255' para denotar o início
2. Envie o valor do eixo x do joystick de 1 byte
3. Envie o valor do eixo y do joystick de 1 byte
4. Enviar status de clique esquerdo, botão direito e status de rolagem (1 byte).
Os dados do aplicativo são enviados a cada 20 milissegundos para o Arduino UNO.
Lado do Arduino
Os bytes de dados do Aplicativo são recebidos pelo Arduino com a ajuda do módulo HC-05 Bluetooth. O Arduino contém as coordenadas atuais do cursor onde as coordenadas x variam de 0 a 1279 e as coordenadas y variam de 0 a 799. Obtive essas coordenadas extremas da função python
mouse.get_position ()
que retorna as coordenadas quando o cursor é movido (não usado no esboço principal). Com base nos dados recebidos ao mover o joystick, a posição atual do cursor (coordenadas xey) é então adicionada / subtraída com os dados recebidos pelo aplicativo para mover o cursor para a nova coordenada desejada. Os dados finais são então impressos no monitor serial na seqüência fornecida abaixo.
A sequência de dados a seguir é finalmente lida pelo programa python para executá-la. Para isso, precisaremos baixar módulos adicionais, ou seja, mouse e pyserial nas etapas fornecidas a seguir.
Programação Python
O usuário deve ter o python 3 instalado em seu laptop / computador. Ele pode ser baixado aqui.
(Para Windows)
Após a instalação, copie o caminho do local do arquivo python.
As etapas a seguir devem ser executadas no prompt de comando. Abra o prompt de comando e digite o seguinte-
1.
cd
2.
py –m pip install –- atualizar pip
3.
py –m pip install mouse
4.
py -m pip install pyserial
O mouse módulo é usado para realizar ações do mouse e pyserial módulo é usado para enviar / receber dados do arduino. Eu já tinha instalado os módulos necessários, então peguei este
Execução
Instale o aplicativo Bluetooth Mouse Control em seu smartphone.
Faça upload do esboço do Arduino para o seu Arduino UNO e siga o circuito conforme mostrado no esquema.
Lado Python -
1. Copie e cole o código python em um arquivo do bloco de notas. Mude a porta COM para a porta COM do seu Arduino UNO e salve-a como '.py'.
2. Abra o python IDLE e abra o arquivo notepad dele.
3. Execute o Sketch.
Você será direcionado de volta à tela da fig 2.2.
Abra o aplicativo do smartphone e conecte-se ao módulo bluetooth e você notará o movimento do cursor ao mudar a direção do joystick.
Código
- Código Arduino
- Código Python
Código Arduino Arduino
int datar recebido [5] {0,0,0,0}; // Para armazenar byte de phoneint in_byte =0; int array_index =0; int l_prev =0, r_prev =0; // status anterior do clique esquerdo e direito do mouse void setup () {Serial.begin (9600); // inicia o monitor serial} int height =0, width =0; void loop () {int clicks =0; sensibilidade interna =20; // você pode ajustar a sensibilidade int xpos =0, ypos =0; if (Serial.available ()> 0) {// receber byte do telefone in_byte =Serial.read (); // armazena um byte em uma variável if (in_byte ==(255)) {// se a variável é 0 redefina o array aumentado para 0. array_index =0; } dados recebidos [índice_matriz] =in_byte; // armazena o número na matriz array_index =array_index +1; if (datarecebido [1]> =110) xpos =mapa (datarecebido [1], 110,172,0, sensibilidade); // Quando movido para a direitaif (datarecebido [1] <=70) xpos =map (datarecebido [1], 60,1,0, -sensibilidade); // Quando movido para a esquerdaif (datareceived [2]> =110) ypos =map (datareceived [2], 110,255,0, sensibilidade); // Quando movido para baixoif (datareceived [2] <=60) ypos =map (datareceived [2], 70,1,0, -sensibilidade); // Quando movido para cimaif (datareceived [3] ==1 &&l_prev ==0) // PARA reconhecer cliques de um único botão pressionado =1; else if (datareceived [3] ==2 &&r_prev ==0) cliques =2; senão se (datarecebido [3] ==3 || datarecebido [3] ==4) cliques =datarecebido [3]; // scrolll_prev =datareceived [3]; r_prev =datareceived [3]; if (xpos! =0 ou ypos! =0 ou clica! =0) // quando qualquer um dos joysticks é movido ou o botão é pressionado ou rolado { altura =altura + ypos; largura =largura + xpos; se (altura> =799) altura =799; se (altura <=0) altura =0; se (largura> =1279) largura =1279; se (largura <=0) largura =0; Serial.print (largura); Serial.print (":"); Serial.print (altura); Serial.print (":"); Serial.println (cliques); cliques =0;} }}
Código Python Python
import mouse, sysimport time import serialmouse.FAILSAFE =FalseArduinoSerial =serial.Serial ('com3', 9600) #Especifique o COM porttime.sleep (1) #delay of 1 secondwhile 1:data =str (ArduinoSerial.readline () .decode ('ascii')) (x, y, z) =data.split (":") # leia os dados do eixo xey (x, y) =(int (x), int (y) ) # converter para int mouse.move (x, y) # mover o cursor para as coordenadas desejadas se '1' em z:mouse.click (botão ="esquerdo") #clicks botão do mouse elif '2' em z:mouse. click (button ="right") elif '3' em z:mouse.wheel (delta =-1) # Scroll down elif '4' in z:mouse.wheel (delta =1) # Scroll up
Esquemas
Processo de manufatura
- Robô Raspberry Pi controlado por Bluetooth
- Luz da mesa interativa controlada por gestos
- Faça você mesmo voltímetro usando Arduino e Smartphone
- LEDs controlados por Alexa através do Raspberry Pi
- Carro RC controlado por joystick
- Arduino com Bluetooth para controlar um LED!
- Braço robótico controlado por Nunchuk (com Arduino)
- Robô controlado por fala
- MobBob:DIY Arduino Robot Controlado por Smartphone Android
- Dispositivos Bluetooth controlados por voz com OK Google