Hoe maak je op Arduino gebaseerde handgebaarbesturing van je computer?
Handgebarenbediening is niets nieuws. We hebben veel robots gezien die worden bestuurd met handgebaren. De technologie gaat zo snel dat alles wat we bedenken al op de markt aanwezig is. Een zeer interessant project is om uw pc of laptop te besturen met behulp van een klein microcontrollerbord genaamd Arduino Uno. Door een Arduino te gebruiken, kunnen we enkele eenvoudige functies uitvoeren door gewoon met onze hand te zwaaien in plaats van een muis of het toetsenbord te gebruiken. Deze functies omvatten het schuiven van afbeeldingen, omhoog en omlaag bladeren in de pagina's, schakelen tussen de tabbladen van een webbrowser, een video afspelen of pauzeren, schakelen tussen desktopapplicaties, enz.
Hoe verschillende bewerkingen op pc uitvoeren met handgebaren?
Nu we de samenvatting van het project kennen, laten we verder gaan en verschillende informatie verzamelen om aan het werk te gaan. We zullen eerst een lijst maken van de componenten, ze dan kort bestuderen, en dan alle componenten assembleren om een werkend systeem te maken.
Stap 1: Verzamelen van de componenten
De beste benadering om een project te starten, is door een lijst met componenten te maken en deze componenten kort te bestuderen, omdat niemand midden in een project wil blijven staan alleen omdat er een component ontbreekt. Een lijst met componenten die we in dit project gaan gebruiken, wordt hieronder gegeven:
Stap 2: de componenten bestuderen
Omdat we een volledige lijst hebben van alle componenten. Laten we verder gaan en een korte studie van de werking van alle componenten doornemen.
Arduino Nano is een microcontrollerbord dat verschillende bewerkingen in verschillende circuits uitvoert. Het vereist een C-code dat vertelt het bestuur welke taken het moet uitvoeren en hoe. Het heeft 13 digitale I / O-pinnen, wat betekent dat we 13 verschillende apparaten kunnen bedienen. Arduino Nano heeft exact dezelfde functionaliteit als Arduino Uno, maar dan in een vrij klein formaat. De microcontroller op het Arduino Nano-bord is ATmega328p.Gebruik Arduino Mega als je meer dan 13 apparaten wilt bedienen.
Het HC-SR04-bord is een ultrasone sensor die wordt gebruikt om de afstand tussen twee objecten te bepalen. Het bestaat uit een zender en een ontvanger. De zender zet het elektrische signaal om in een ultrasoon signaal en de ontvanger zet het ultrasone signaal weer om in het elektrische signaal. Wanneer de zender een ultrasone golf uitzendt, reflecteert deze na een botsing met een bepaald object. De afstand wordt berekend door gebruik te maken van de tijd die het ultrasone signaal nodig heeft om van de zender naar de ontvanger terug te gaan.
Stap 3: De componenten monteren
Nu weten we de belangrijkste werking van de componenten die we gaan gebruiken. Laten we beginnen met het samenstellen van de componenten om een werkproduct te maken.
- Verbind de Vcc- en aardingspennen van beide ultrasone sensoren met de 5V en aarde van het Arduino Nano-bord. De triggering en de echopin van de eerste ultrasone sensor zijn respectievelijk verbonden met pin11 en pin10 van Arduino Nano. De triggering en de echopin van de tweede ultrasone sensor zijn respectievelijk verbonden met pin6 en pin5 van de Arduino nano.
- Bevestig het Arduino-nano-bord aan de achterkant van de plakband van het laptopscherm. Beide ultrasone sensoren worden aan beide bovenhoeken van de laptop bevestigd.
Stap 4: Aan de slag met Arduino
Als u nog niet bekend bent met de Arduino IDE, hoeft u zich geen zorgen te maken, want hieronder wordt een stapsgewijze procedure voor het instellen en gebruiken van de Arduino IDE met een microcontrollerbord uitgelegd.
- Download de nieuwste versie van Arduino IDE van Arduino.
- Sluit je Arduino Nano-bord aan op je laptop en open het configuratiescherm. Klik vervolgens op Hardware en geluid. Klik nu op Apparaten en printers.Zoek hier de poort waarop uw microcontroller-kaart is aangesloten. In mijn geval wel COM14maar het is anders op verschillende computers.
- Klik op het menu Tool en zet het bord op Arduino Nano uit het vervolgkeuzemenu.
- Stel in hetzelfde Tool-menu de poort in op het poortnummer dat u eerder in het Apparaten en printers.
- Stel in hetzelfde toolmenu de processor in op ATmega328P (Oude Bootloader).
- Download de onderstaande code en plak deze in uw Arduino IDE. Klik op de uploaden knop om de code op uw microcontroller-bord te branden.
Klik hier om de code te downloaden.
Stap 5: de gebaren instellen
We willen een code schrijven die de afstand detecteert en omzet in een geschikt commando om een taak uit te voeren.
laten we eerst een lijst maken van alle taken die we met gebaren willen uitvoeren. Hieronder volgt de lijst met al die taken.
- Schakel over naar het volgende tabblad of het vorige tabblad in de webbrowser.
- Scroll omhoog en omlaag op de webpagina.
- Speel en pauzeer video's in VLC Player.
- Verhoog en verlaag het volume.
- Schakel tussen twee taken.
We gaan nu gebaren instellen om al deze bewerkingen uit te voeren.
- Gebaar 1: Plaats uw hand voor de rechter ultrasone sensor tussen ongeveer 15 cm - 30 cm. Trek na een korte tijd uw hand weg. Dit zal naar beneden scrollen op de webpagina en het volume verlagen.
- Gebaar 2: Plaats uw hand voor de rechter ultrasone sensor tussen ongeveer 15 cm - 30 cm. Duw na een korte tijd uw hand in de richting van de ultrasone sensor. Dit zal omhoog scrollen op de webpagina en het volume verhogen.
- Gebaar 3: Om naar het volgende tabblad te gaan, veegt u met uw hand voor de rechter ultrasone sensor.
- Gebaar 4: Om naar het vorige tabblad te gaan, veeg je met je hand voor de linker ultrasone sensor. Hiermee wordt uw video ook op de VLC-speler afgespeeld / gepauzeerd.
- Gebaar 5: Om tussen twee taken te wisselen, veegt u met uw hand over beide sensoren.
We hebben de code geschreven en alle voorwaarden gemaakt op basis van de bovenstaande gebaren. En het moet worden opgemerkt dat we gebruiken Google Chrome als onze webbrowser en VLC Media Speler als onze mediatoepassing.
Stap 6: de Arduino-code begrijpen
We hebben een code geschreven die 5 gebaren omzet in een digitaal commando. dit commando wordt naar de seriële poort gestuurd. We zullen een python-programma schrijven om deze opdrachten te interpreteren en enkele toetsenbordfuncties uit te voeren om verschillende taken uit te voeren.
1. In het begin worden alle pinnen geïnitialiseerd die we met de sensoren willen verbinden. Er worden ook verschillende variabelen geïnitialiseerd om gegevens op te slaan voor de berekening van tijd en afstand.
const int trigPin1 = 11; // trigger output pin (sensor 1) const int echoPin1 = 10; // echo-invoerpen (sensor 1) const int trigPin2 = 6; // trigger output pin (sensor 2) const int echoPin2 = 5; // echo-invoerpen (sensor 2) // variabelen die worden gebruikt voor lange afstandsberekeningen; int afstand1, afstand2; zweven r; unsigned long temp=0; int temp1 = 0; int l = 0;
2. We hebben een functie geschreven, void find_distance (ongeldig) om de afstand van beide ultrasone sensoren te berekenen. Het is beter om niet beide ultrasone sensoren tegelijkertijd te activeren, omdat dit enige storing kan veroorzaken. Deze functie retourneert de afstand in cm.
void find_distance (void) {digitalWrite (trigPin1, LOW); delayMicroseconds (2); digitalWrite (trigPin1, HIGH); delayMicroseconds (10); digitalWrite (trigPin1, LOW); duur = pulseIn (echoPin1, HIGH, 5000); r = 3,4 * duur / 2; // berekening om de meting in cm te krijgen met behulp van de tijd die wordt geretourneerd door de pulsein-functie. afstand1 = r / 100,00; digitalWrite (trigPin2, LOW); delayMicroseconds (2); digitalWrite (trigPin2, HIGH); delayMicroseconds (10); digitalWrite (trigPin2, LOW); duur = pulseIn (echoPin2, HIGH, 5000); r = 3,4 * duur / 2; afstand2 = r / 100,00; vertraging (100); }
3. leegte setup () is een functie die alle pinnen initialiseert die als INPUT of OUTPUT moeten worden gebruikt. In deze functie wordt ook de baudrate ingesteld. Baudrate is de snelheid waarmee de microcontrollerkaart communiceert met de aangesloten sensoren.
leegte setup () {Serial.begin (9600); pinMode (trigPin1, OUTPUT); // initialiseer de trigger- en echopinnen van zowel de sensor als de invoer en uitvoer: pinMode (echoPin1, INPUT); pinMode (trigPin2, OUTPUT); pinMode (echoPin2, INPUT); vertraging (1000); }
4. leegte lus ()is een functie die herhaaldelijk in een lus wordt uitgevoerd. In deze lus berekenen we in veel gevallen de afstand en passen we voorwaarden toe om het gebaar te detecteren.
void loop () {find_distance (); if (afstand2 <= 35 && afstand2> = 15) {temp = millis (); while (millis () <= (temp + 300)) find_distance (); if (afstand2 <= 35 && afstand2> = 15) {temp = afstand2; while (distance2 <= 50 || distance2 == 0) {find_distance (); als ((temp + 6)afstand2) {Serial.println ("omhoog"); }}} anders {Serial.println ("volgende"); }} else if (afstand1 <= 35 && afstand1> = 15) {temp = millis (); while (millis () <= (temp + 300)) {find_distance (); if (distance2 <= 35 && distance2> = 15) {Serial.println ("change"); l=1; breken; } } if(l==0) { Serial.println("vorige"); while (distance1 <= 35 && distance1> = 15) find_distance (); } l=0; }}
Stap 7: Python-programmering
We zullen installeren PyAutoGUIen roept verschillende toetsenbordopdrachten op door eenvoudig inkomende seriële gegevens te lezen. Met dit programma kunnen we veel muisbewerkingen en toetsenbordbewerkingen nabootsen, zoals links- of rechtsklikken met de muis of een willekeurige toetsaanslag op het toetsenbord.
Eerst zullen we PIP op onze vensters installeren. Het is een simpele procedure. Klik hier om de videogids te openen om pip op uw computer te installeren. Nadat we PIP op onze computer hebben geïnstalleerd, gaan we verder en installeren we pyAutoGUI. Typ hiervoor de volgende opdracht in de opdrachtprompt:
python -m pip pyautogui installeren
Met deze opdracht wordt puAutoGUI op uw computer geïnstalleerd. Als alles tot nu toe goed gaat, laten we doorgaan en een python-programma schrijven om verschillende toetsenbordopdrachten op te roepen. Omdat we 5 verschillende opdrachten ontvangen in de seriële invoer door de Arduino-code, kan Python-code deze opdrachten als volgt omzetten in bepaalde toetsenbordopdrachten.
- Gegevens: "volgende" —–> Actie: "Ctrl + PgDn"
- Gegevens: "vorige" —–> Actie: "Ctrl + PgUp"
- Gegevens: "omlaag" --–> Actie: "Pijl omlaag"
- Gegevens: "omhoog" --> Actie: "Pijl omhoog"
- Gegevens: "wijzigen" --–> Actie: "Alt + Tab"
Python kan worden gebruikt om eenArduino, simpelweg door pyfirmata te importeren, die de Arduino kan koppelen aan Python. Hieronder volgt de Python-code die nodig is om het project uit te voeren:
import serienummer # add seriële bibliotheek voor seriële communicatie import pyautogui # voeg pyautogui bibliotheek toe voor het programmatisch besturen van de muis en het toetsenbord. Arduino_Serial = serial.Serial ('com12', 9600) # Initialiseer serieel en maak een seriële poort-object genaamd Arduino_Serial terwijl 1: incoming_data = str (Arduino_Serial.readline ()) # lees de seriële gegevens en druk deze af als regel print incoming_data # print the inkomende seriële gegevens if 'volgende' in inkomende_data: # als inkomende gegevens 'volgende' pyautogui.hotkey ('ctrl', 'pgdn') # voer de "ctrl + pgdn" -bewerking uit die naar het volgende tabblad gaat als 'vorige' in inkomende_gegevens : # als inkomende gegevens 'vorige' pyautogui.hotkey zijn ('ctrl', 'pgup') # voer de "ctrl + pgup" -bewerking uit die naar het vorige tabblad gaat als 'omlaag' in inkomende_gegevens: # als inkomende gegevens 'omlaag' zijn # pyautogui.press ('omlaag') # voert de "pijl omlaag" -bewerking uit die naar beneden scrolt op de pagina pyautogui.scroll (-100) als 'omhoog' in inkomende_gegevens: # als inkomende dat a is 'up' # pyautogui.press ('up') # voert de "pijl omhoog" -bewerking uit die de pagina omhoog scrolt pyautogui.scroll (100) als 'verandering' in inkomende_gegevens: # als inkomende gegevens 'veranderen' pyautogui.keyDown ('alt') # voert de "alt + tab" -bewerking uit die de tab pyautogui.press ('tab') pyautogui.keyUp ('alt') incoming_data = ""; # wist de gegevens
Dat was de eenvoudigste manier om uw pc te bedienen met handgebaren. Volg alle hierboven genoemde stappen en geniet van het bedienen van uw pc met uw hand in plaats van met een toetsenbord en muis.