Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Smartphone gestuurde muis

Componenten en benodigdheden

Arduino UNO
× 1
HC-05 Bluetooth-module
× 1
Jumperdraden (algemeen)
× 1

Apps en online services

Arduino IDE
IDLE(Python GUI)
MIT App Inventor Bluetooth-muisbediening

Over dit project

Dit project is vergelijkbaar met mijn vorige werk waarbij ik een joystick heb gebruikt om een ​​pc-cursor te besturen. Het belangrijkste verschil is dat ik een smartphone-applicatie heb gemaakt die 2 virtuele joysticks bevat om de cursor te verplaatsen en over het scherm te scrollen en ook links en rechts klikken, net als een gewoon trackpad.

Werken

Het project omvat een smartphone-applicatie die de x- en y-asgegevens van de joystick, de scrollstatus, de linker- en rechterklikstatus via bluetooth naar de Arduino Uno stuurt die is aangesloten op de HC-05 bluetooth-module. Deze gegevens worden bij ontvangst naar de Arduino gemanipuleerd om wijzigingen aan te brengen in de positie van de huidige cursor om een ​​nieuwe positie te verkrijgen. De resulterende gegevens samen met de scroll- en knopstatus worden vervolgens afgedrukt als de uitvoer die wordt herkend als gelezen door de Python-schets. De Python-schets is gemaakt om muisacties uit te voeren met behulp van de muismodule.

Over de applicatie

De smartphone-applicatie is gemaakt met behulp van de MIT-App Inventor. Het maken van de app is eenvoudig, omdat u alleen de gewenste blokken hoeft toe te voegen om uw vereiste toepassing te bouwen. Ik heb verwezen naar de zelfstudie over robotica op tafel om ze te maken. Het hoofdscherm van de applicatie is als volgt-

Voordat de hoofdinformatie naar de HC-05-module wordt verzonden, verzendt de toepassing eerst een nummer van één byte (255) om het begin van de informatie aan te geven. De volgorde van gegevensoverdracht is als volgt-

1. Stuur '255' om start aan te geven

2. Stuur 1 byte joystick x-as waarde

3. Stuur 1 byte joystick y-as waarde

4. Verzend de status van links klikken, rechts klikken en scroll status (1 byte).

De gegevens van de applicatie worden elke 20 milliseconden naar de Arduino UNO gestuurd.

Arduino's kant

De databytes van de applicatie worden door de Arduino ontvangen met behulp van de HC-05 Bluetooth-module. De Arduino bevat de huidige coördinaten van de cursor waarbij de x-coördinaten variëren van 0 tot 1279 en de y-coördinaten van 0 tot 799. Ik heb deze extreme coördinaten verkregen uit de python-functie mouse.get_position() die de coördinaten retourneert wanneer de cursor wordt verplaatst (niet gebruikt in de hoofdschets).

Op basis van de gegevens die worden ontvangen bij het bewegen van de joystick, wordt de huidige cursorpositie (x- en y-coördinaten) vervolgens opgeteld/afgetrokken bij de gegevens die door de toepassing zijn ontvangen om de cursor naar de nieuwe gewenste coördinaat te verplaatsen. De definitieve gegevens worden vervolgens in de onderstaande volgorde op de seriële monitor afgedrukt.

De volgende gegevensreeks wordt uiteindelijk gelezen door het python-programma om het uit te voeren. Hiervoor moeten we extra modules downloaden, namelijk muis en pyserial in de onderstaande stappen.

Python-programmering

De gebruiker moet python 3 op zijn laptop/computer hebben geïnstalleerd. Het kan hier worden gedownload.

(Voor Windows)

Kopieer na de installatie het pad van de locatie van het python-bestand.

De volgende stappen moeten worden uitgevoerd op de opdrachtprompt. Open de opdrachtprompt en voer het volgende in-

1. cd

2. py –m pip install –-upgrade pip

3. py –m pip muis installeren

4. py -m pip install pyserial

De muis module wordt gebruikt om muisacties en pyserial . uit te voeren module wordt gebruikt om gegevens van de arduino te verzenden/ontvangen. Ik had de benodigde modules al geïnstalleerd, dus ik heb dit

Uitvoering

Installeer de Bluetooth Mouse Control-app op uw smartphoneapparaat.

Upload de Arduino-schets naar je Arduino UNO en volg het circuit zoals aangegeven in het schema.

Python-kant -

1. Kopieer en plak de python-code in een Kladblok-bestand. Wijzig de COM-poort in de COM-poort van uw Arduino UNO en sla deze op als '.py'.

2. Open de python IDLE en open het Kladblok-bestand ervan.

3. Voer de schets uit.

U wordt dan teruggeleid naar het scherm in fig 2.2.

Open de smartphone-applicatie en maak verbinding met de bluetooth-module en u zult de cursorbeweging opmerken wanneer u de richting van de joystick verandert.

Code

  • Arduino-code
  • Python-code
Arduino-codeArduino
int datareceived[5] {0,0,0,0}; // Om byte van phoneint op te slaan in_byte =0;int array_index =0;int l_prev=0,r_prev=0; // vorige status van muis linker en rechter muisklik void setup() {Serial.begin (9600); // start de seriële monitor} int height=0,width=0;void loop() {int clicks=0; int gevoeligheid=20; // u kunt de gevoeligheid aanpassen int xpos=0,ypos=0;if (Serial.available()> 0) { // byte ontvangen van telefoon in_byte=Serial.read (); //opslaan in byte in een variabele if (in_byte ==(255)) { // als de variabele 0 is, stel de array in op 0. array_index =0; } datareceived[array_index] =in_byte; // winkel nummer in array array_index =array_index +1; if(datareceived[1]>=110)xpos=map(datareceived[1],110,172,0,gevoeligheid); // Wanneer naar rechts verplaatstif(datareceived[1]<=70)xpos=map(datareceived[1],60,1,0,-gevoeligheid); // Wanneer naar links verplaatstif(datareceived[2]>=110)ypos=map(datareceived[2],110,255,0,gevoeligheid); // Wanneer naar beneden verplaatstif(datareceived[2]<=60)ypos=map(datareceived[2],70,1,0,-gevoeligheid); // Wanneer omhoog verplaatstif(datareceived[3]==1 &&l_prev==0) // OM een enkele druk op de knop te herkennen clicks=1;else if(datareceived[3]==2 &&r_prev==0)clicks=2;else if(datareceived[3]==3 || datareceived[3]==4)clicks=datareceived[3]; // scrolll_prev=datareceived[3];r_prev=datareceived[3];if(xpos!=0 or ypos!=0 or clicks!=0) // wanneer een van de joysticks wordt bewogen of de knop wordt ingedrukt of gescrolld{ hoogte=hoogte+ypos;breedte=breedte+xpos;if(hoogte>=799)hoogte=799;if(hoogte<=0)hoogte=0;if(breedte>=1279)breedte=1279;if(breedte<=0)width=0;Serial.print(breedte);Serial.print(":");Serial.print(height);Serial.print(":");Serial.println(klikken);clicks=0;} }}
PythoncodePython
import mouse, sysimport time import serialmouse.FAILSAFE=FalseArduinoSerial=serial.Serial('com3',9600) #Specificeer de juiste COM-porttime.sleep(1) #vertraging van 1 secondewhile 1:data=str(ArduinoSerial.readline ().decode('ascii')) (x,y,z)=data.split(":") # lees de x- en y-asgegevens (x,y)=(int(x),int(y) ) # converteer naar int mouse.move(x,y) # verplaats de cursor naar de gewenste coördinaten als '1' in z:mouse.click(button="left") #clicks mouse button elif '2' in z:mouse. click(button="right") elif '3' in z:mouse.wheel(delta=-1) # Scroll naar beneden elif '4' in z:mouse.wheel(delta=1) # Scroll naar boven 

Schema's


Productieproces

  1. Raspberry Pi-robot bestuurd via Bluetooth
  2. Gebaargestuurde interactieve tafellamp
  3. DIY voltmeter met Arduino en smartphone
  4. Alexa gestuurde LED's via Raspberry Pi
  5. Met joystick bestuurde RC-auto
  6. Arduino met Bluetooth om een ​​LED te bedienen!
  7. Nunchuk-gestuurde robotarm (met Arduino)
  8. Spraakgestuurde robot
  9. MobBob:doe-het-zelf Arduino-robot bestuurd door Android-smartphone
  10. Bluetooth spraakgestuurde apparaten met OK Google
  11. Arduino-gestuurde pianorobot:PiBot