Hvordan lage Arduino-basert håndbevegelseskontroll av datamaskinen din?

Hand Gesture Control er ikke en ny ting. Vi har sett mange roboter som styres av håndbevegelser. Teknologien beveger seg så fort at alt vi tenker på allerede er til stede i markedet. Et veldig interessant prosjekt er å kontrollere din personlige datamaskin eller den bærbare datamaskinen ved hjelp av et lite mikrokontrollerkort som heter Arduino Uno. Ved å bruke en Arduino kan vi utføre noen enkle funksjoner ved å bare vinke hånden i stedet for å bruke en mus eller tastaturet. Disse funksjonene inkluderer å skyve bilder, bla opp og ned på sidene, bytte mellom fanene i en nettleser, spille av eller sette en video på pause, bytte mellom stasjonære applikasjoner osv.

Hvordan utføre forskjellige operasjoner på PC ved hjelp av håndbevegelser?

Nå som vi vet sammendraget av prosjektet, la oss gå videre og samle forskjellig informasjon for å begynne å jobbe. Vi vil først lage en liste over komponentene, deretter studere dem kort og deretter sette sammen alle komponentene for å lage et fungerende system.

Trinn 1: Samle komponentene

Den beste tilnærmingen for å starte et prosjekt er å lage en liste over komponenter og gå gjennom en kort studie av disse komponentene, fordi ingen vil holde seg midt i et prosjekt bare på grunn av en manglende komponent. En liste over komponenter som vi skal bruke i dette prosjektet er gitt nedenfor:

Trinn 2: Studere komponentene

Siden vi har en komplett liste over alle komponentene. La oss gå videre og gå gjennom en kort studie av hvordan komponentene fungerer.

Arduino Nano er et mikrokontrollerkort som utfører forskjellige operasjoner i forskjellige kretser. Det krever en C-kode som forteller styret hvilke oppgaver som skal utføres og hvordan. Den har 13 digitale I / O-pinner som betyr at vi kan betjene 13 forskjellige enheter. Arduino Nano har nøyaktig samme funksjonalitet som Arduino Uno, men i ganske liten størrelse. Mikrokontrolleren på Arduino Nano-kortet er ATmega328p.Hvis du vil kontrollere mer enn 13 enheter, bruk Arduino Mega.

HC-SR04-kort er en ultralydssensor som brukes til å bestemme avstanden mellom to objekter. Den består av en sender og en mottaker. Senderen konverterer det elektriske signalet til et ultralydssignal og mottakeren konverterer ultralydsignalet tilbake til det elektriske signalet. Når senderen sender en ultralydbølge, reflekteres den etter kollisjon med en bestemt gjenstand. Avstanden beregnes ved å bruke tiden det tar for ultralydsignalet å gå fra senderen og komme tilbake til mottakeren.

Trinn 3: Montere komponentene

Nå som vi vet hovedarbeidet til komponentene vi skal bruke. La oss begynne å montere komponentene for å lage et sluttprodukt.

  1. Koble Vcc og bakken Pins på begge ultralydsensorene til 5V og bakken på Arduino Nano-kortet. Triggen og ekkopinnen til den første ultralydsensoren er koblet til henholdsvis pin11 og pin10 av Arduino Nano. Triggen og ekkopinnen til den andre ultralydssensoren er koblet til henholdsvis pin6 og pin5 på Arduino nano.
  2. Fest Arduino nano-kortet på baksiden av skjermbåndet til den bærbare datamaskinen. Begge ultralydsensorene blir festet til begge de øverste hjørnene på den bærbare datamaskinen.

Trinn 4: Komme i gang med Arduino

Hvis du ikke allerede er kjent med Arduino IDE, ikke bekymre deg fordi en trinnvis prosedyre for å sette opp og bruke Arduino IDE med et mikrokontrollerkort er forklart nedenfor.

  1. Last ned den nyeste versjonen av Arduino IDE fra Arduino.
  2. Koble Arduino Nano-kortet til den bærbare datamaskinen og åpne kontrollpanelet. Klikk deretter på Maskinvare og lyd. Nå klikker du på Enheter og skrivere.Her finner du porten som mikrokontrollerkortet er koblet til. I mitt tilfelle er det COM14men det er forskjellig på forskjellige datamaskiner.
  3. Klikk på Verktøy-menyen og sett tavlen til Arduino Nano fra rullegardinmenyen.
  4. I samme Verktøy-meny, sett porten til portnummeret du observerte før i Enheter og skrivere.
  5. I samme verktøymeny, sett prosessoren til ATmega328P (gammel bootloader).
  6. Last ned koden som er vedlagt nedenfor, og lim den inn i Arduino IDE. Klikk på laste opp -knappen for å brenne koden på mikrokontrollerkortet.

Klikk her for å laste ned koden.

Trinn 5: Angi bevegelser

Vi ønsker å skrive en kode som vil oppdage og konvertere avstanden til en passende kommando for å utføre en oppgave.

la oss først lage en liste over alle oppgavene vi ønsker å utføre ved hjelp av bevegelser. Følgende er listen over alle disse oppgavene.

  1. Bytt til neste fane eller forrige fane i nettleseren.
  2. Rull opp og ned på websiden.
  3. Spill av og pause videoer i VLC Player.
  4. Øk og senk volumet.
  5. Bytt mellom to oppgaver.

Vi vil nå sette bevegelser for å utføre alle disse operasjonene.

  1. Gest 1: Plasser hånden din foran den høyre ultralydssensoren mellom 15 og 30 cm. Trekk hånden bort etter en liten periode. Dette vil rulle nedover på websiden og redusere volumet.
  2. Gest 2: Plasser hånden din foran den høyre ultralydssensoren mellom 15 og 30 cm. Etter litt tid skyver du hånden mot ultralydsensoren. Dette vil rulle opp websiden og øke volumet.
  3. Gest 3: For å gå til neste fane, sveip hånden foran høyre ultralydsensor.
  4. Gest 4: For å gå til forrige fane, sveip hånden foran venstre ultralydssensor. Dette vil også spille av / pause videoen din på VLC-spilleren.
  5. Gest 5: For å bytte mellom to oppgaver, sveip hånden over begge sensorene.

Vi har skrevet koden og gjort alle forholdene basert på gestene ovenfor. Og det skal bemerkes at vi bruker Google Chrome som vår nettleser og VLC Media Player som vår mediasøknad.

Trinn 6: Forstå Arduino-koden

Vi har skrevet en kode som konverterer 5 bevegelser til en digital kommando. denne kommandoen sendes til den serielle porten. Vi vil skrive et pythonprogram for å tolke disse kommandoene og utføre noen tastaturfunksjoner for å utføre forskjellige oppgaver.

1. I starten initialiseres alle pinnene som vi vil koble til sensorene. Forskjellige variabler initialiseres også for å lagre data for beregning av tid og avstand.

const int trigPin1 = 11; // trigger utgangsstift (sensor 1) const int echoPin1 = 10; // ekkoinngangsstift (sensor 1) const int trigPin2 = 6; // trigger utgangsstift (sensor 2) const int echoPin2 = 5; // ekkoinngangsstift (sensor 2) // variabler som brukes til avstandsberegning med lang varighet; int avstand1, avstand2; flyte r; usignert lang temp = 0; int temp1 = 0; int l = 0;

2. Vi har skrevet en funksjon, ugyldig find_distance (ugyldig) for å beregne avstanden til begge ultralydsensorene. Det er bedre å ikke utløse begge ultralydsensorene samtidig fordi det kan forårsake forstyrrelser. Denne funksjonen vil returnere avstanden i cm.

void find_distance (void) {digitalWrite (trigPin1, LOW); delayMicroseconds (2); digitalWrite (trigPin1, HIGH); delayMicroseconds (10); digitalWrite (trigPin1, LOW); varighet = pulseIn (echoPin1, HIGH, 5000); r = 3,4 * varighet / 2; // beregning for å få målingen i cm ved hjelp av tiden som returneres av pulsein-funksjonen. avstand1 = r / 100,00; digitalWrite (trigPin2, LOW); delayMicroseconds (2); digitalWrite (trigPin2, HIGH); delayMicroseconds (10); digitalWrite (trigPin2, LOW); varighet = pulseIn (echoPin2, HIGH, 5000); r = 3,4 * varighet / 2; avstand2 = r / 100,00; forsinkelse (100); }

3. ugyldig oppsett () er en funksjon som initialiserer alle pinnene som skal brukes som INNGANG eller UTGANG. Baudrate er også angitt i denne funksjonen. Baud Rate er hastigheten som mikrokontrollerkortet kommuniserer med tilkoblede sensorer.

ugyldig oppsett () {Serial.begin (9600); pinMode (trigPin1, OUTPUT); // initialisere utløseren og ekkopinnene til både sensoren som inngang og utgang: pinMode (echoPin1, INPUT); pinMode (trigPin2, OUTPUT); pinMode (echoPin2, INPUT); forsinkelse (1000); }

4. ugyldig sløyfe ()er en funksjon som går gjentatte ganger i en løkke. I denne sløyfen beregner vi avstanden i mange tilfeller og bruker forhold for å oppdage gesten.

ugyldig sløyfe () {find_distance (); hvis (avstand2 <= 35 && avstand2> = 15) {temp = millis (); mens (millis () <= (temp + 300)) find_distance (); hvis (avstand2 <= 35 && avstand2> = 15) {temp = avstand2; mens (distance2 <= 50 || distance2 == 0) {find_distance (); hvis ((temp + 6)avstand2) {Serial.println ("opp"); }}} annet {Serial.println ("neste"); }} annet hvis (avstand1 <= 35 && avstand1> = 15) {temp = millis (); mens (millis () <= (temp + 300)) {find_distance (); if (distance2 <= 35 && distance2> = 15) {Serial.println ("endre"); l = 1; gå i stykker; }} hvis (l == 0) {Serial.println ("forrige"); mens (distance1 <= 35 && distance1> = 15) find_distance (); } l = 0; }}

Trinn 7: Python-programmering

Vi installerer PyAutoGUIog påkalle forskjellige tastaturkommandoer ved å lese innkommende serielle data. Med dette programmet kan vi etterligne mange musoperasjoner og tastaturoperasjoner som venstre eller høyreklikk på musen eller tastetrykk.

Først installerer vi PIP på våre vinduer. Det er en enkel prosedyre. Klikk her for å åpne videoveiledningen for å installere pip på datamaskinen. Etter å ha installert PIP på datamaskinen vår, vil vi gå videre og installere pyAutoGUI. For å gjøre det, skriv inn følgende kommando i ledeteksten

python -m pip installere pyautogui

Denne kommandoen vil installere puAutoGUI på datamaskinen din. Hvis alt går bra til nå, la oss gå videre og skrive et pythonprogram for å påkalle forskjellige tastaturkommandoer. Da vi mottar 5 forskjellige kommandoer i den serielle inngangen av Arduino-koden, kan Python-kode konvertere disse kommandoene til visse tastaturkommandoer som følger.

  • Data: “neste” —–> Handling: “Ctrl + PgDn”
  • Data: “forrige” —–> Handling: “Ctrl + PgUp”
  • Data: “ned” —–> Handling: “Pil ned”
  • Data: “opp” —–> Handling: “Pil opp”
  • Data: “endre” —–> Handling: “Alt + Tab”

Python kan brukes til å programmere enArduino, ganske enkelt ved å importere pyfirmata, som kan grensesnitt Arduino med Python. Følgende er Python-koden som kreves for å kjøre prosjektet:

import serial # add Serial library for serial communication import pyautogui # add pyautogui library for programmatisk kontroll av mus og tastatur. Arduino_Serial = serial.Serial ('com12', 9600) # Initialiser seriell og opprett serieportobjekt kalt Arduino_Serial mens 1: incoming_data = str (Arduino_Serial.readline ()) # les seriedataene og skriv ut som linjeprint innkommende seriedata hvis 'neste' i innkommende data: # hvis innkommende data er 'neste' pyautogui.hotkey ('ctrl', 'pgdn') # utfør "ctrl + pgdn" -operasjon som går til neste fane hvis 'forrige' i innkommende data : # hvis innkommende data er 'forrige' pyautogui.hotkey ('ctrl', 'pgup') # utfør "ctrl + pgup" -operasjon som flytter til forrige fane hvis 'ned' i innkommende_data: # hvis innkommende data er 'nede' # pyautogui.press ('ned') # utfører "pil ned" som ruller nedover siden pyautogui.scroll (-100) hvis 'opp' i innkommende data: # hvis innkommende dat a er 'opp' # pyautogui.press ('opp') # utfører "pil opp" -operasjon som ruller opp siden pyautogui.scroll (100) hvis 'endring' i innkommende_data: # hvis innkommende data er 'endre' pyautogui.keyDown ('alt') # utfører "alt + tab" -operasjon som bytter fane pyautogui.press ('tab') pyautogui.keyUp ('alt') innkommende_data = ""; # tømmer dataene

Det var den enkleste måten å kontrollere PC-en din ved å bruke håndbevegelser. Følg alle trinnene som er nevnt ovenfor, og nyt å kontrollere PC-en din med hånden i stedet for et tastatur og en mus.

Facebook Twitter Google Plus Pinterest