- Edellytykset:
- Projektin taustalla oleva konsepti:
- Piirikaavio:
- Arduinon ohjelmointi:
- Pythonin ohjelmointi:
- Eleohjattu tietokone toiminnassa:
Äskettäin eleohjatut kannettavat tietokoneet tai tietokoneet ovat tulossa erittäin tunnetuiksi. Tätä tekniikkaa kutsutaan harppausliikkeeksi, jonka avulla voimme hallita tiettyjä tietokoneemme / kannettavan tietokoneen toimintoja yksinkertaisesti heiluttamalla kättä sen edessä. On erittäin siistiä ja hauskaa tehdä se, mutta nämä kannettavat tietokoneet ovat todella hinnoiteltuja erittäin korkeiksi. Joten yritetään tässä projektissa rakentaa oma eleohjauskannettava / tietokone yhdistämällä Arduinon ja Pythonin voima.
Käytämme kahta ultraäänianturia käden asennon määrittämiseen ja mediasoittimen (VLC) ohjaamiseen sijainnin perusteella. Olen käyttänyt tätä esittelyyn, mutta kun olet ymmärtänyt projektin, voit tehdä mitä tahansa muuttamalla vain muutaman koodirivin ja ohjaamalla suosikkisovellustasi suosikkitapallasi.
Edellytykset:
Olemme jo käsitelleet muutamia projekteja, joissa Arduino ja Python yhdistyvät. Joten oletan, että olet jo asentanut Pythonin ja sen sarjakirjaston ja kokeillut onnistuneesti muutamia perusprojekteja, kuten vilkkuva LED. Jos ei, älä huoli, voit palata tähän Arduino-Python Led Controlling -opetusohjelmaan ja tulla toimeen sen kanssa. Joten varmista, että olet asentanut Pythonin ja pyserial-kirjaston ennen jatkamista.
Projektin taustalla oleva konsepti:
Projektin taustalla oleva käsite on hyvin yksinkertainen. Sijoitamme kaksi ultraääni-anturia monitorimme päälle ja luemme etäisyyden näytön ja kätemme välillä Arduinolla, tämän etäisyyden arvon perusteella teemme tiettyjä toimintoja. Suorittamaan toimintoja tietokoneellamme käytämme Python pyautogui -kirjastoa. Arduinon komennot lähetetään tietokoneelle sarjaportin (USB) kautta. Tämän jälkeen tietokoneessa käynnissä oleva python lukee nämä tiedot ja lukutietojen perusteella suoritetaan toiminto.
Piirikaavio:
Jos haluat hallita tietokonetta käsieleillä, liitä vain kaksi ultraäänianturia Arduinoon. Tiedämme, että Yhdysvaltojen anturit toimivat 5 V: n kanssa, ja siksi ne saavat virtansa Arduinon sisäisestä jännitesäätimestä. Arduino voidaan liittää tietokoneeseen / kannettavaan moduulin virran saamiseksi ja myös sarjaliikennettä varten. Kun liitännät on tehty, aseta ne näyttöön alla olevan kuvan mukaisesti. Olen käyttänyt kaksinkertaista sivunauhaa kiinnittääksesi sen monitorilleni, mutta voit käyttää omaa luovuuttasi. Kun se on kiinnitetty paikkaan, voimme jatkaa ohjelmointia.
Arduinon ohjelmointi:
Arduino tulisi ohjelmoida lukemaan käden etäisyys Yhdysvaltain anturista. Täydellinen ohjelma annetaan lopussa tämän sivun; hieman alla olen antanut selityksen ohjelmalle. Jos olet uusi ultraäänianturi, käy vain Arduino- ja ultraäänianturipohjaisen etäisyyden mittauksen läpi.
Lukemalla etäisyyden arvon voimme saavuttaa tiettyjä toimintoja, joita ohjataan eleillä, esimerkiksi tässä ohjelmassa olen ohjelmoinut 5 toimintoa demona.
Toimi 1: Kun molemmat kädet asetetaan anturin eteen tietylle etäisyydelle, VLC-soittimen videon pitäisi toistaa / keskeyttää.
Toimi 2: Kun oikea käsi asetetaan anturin eteen tietylle etäisyydelle, videon pitäisi siirtyä eteenpäin yhden askeleen verran.
Toimi 3: Kun vasen käsi asetetaan anturin eteen tietylle etäisyydelle, videon tulisi kelata taaksepäin yksi askel.
Toimi 4: Kun oikea käsi asetetaan anturin eteen tietylle lähietäisyydelle ja sitten, kun sitä siirretään kohti anturia, videon tulisi siirtyä eteenpäin ja videon pitäisi kelata taaksepäin.
Toimi 5: Kun vasen käsi asetetaan anturin eteen tietylle lähietäisyydelle ja sitten siirretään kohti sensoria, videon äänenvoimakkuuden tulisi kasvaa ja jos siirretään kauemmas, äänenvoimakkuuden tulisi laskea.
Katsotaanpa, miten ohjelma on kirjoitettu suorittamaan yllä olevat toimet. Joten, kuten kaikki ohjelmat, aloitamme määrittämällä I / O-nastat alla esitetyllä tavalla. Kaksi yhdysvaltalaista anturia on kytketty digitaalisiin nastoihin 2, 3, 4 ja 5, ja ne saavat virtansa + 5 V: n nastasta. Liipaisunastat ovat lähtönastoja ja kaiunastat ovat syöttönastoja.
Sarjayhteys Arduinon ja pythonin välillä tapahtuu 9600: n baudinopeudella.
const int-liipaisin1 = 2; // 1. Sesnor-komponentin liipaisintappi const int echo1 = 3; // 1. Sesnorin kaiku-nasta const int trigger2 = 4; // Toisen Sesnorin käynnistysnasta const int echo2 = 5; // Toisen Sesnorin kaiku-nasta void setup () {Serial.begin (9600); pinMode (liipaisin1, OUTPUT); pinMode (echo1, INPUT); pinMode (liipaisin2, OUTPUT); pinMode (echo2, INPUT); }
Meidän on laskettava etäisyys anturin ja käden välillä joka kerta, ennen kuin päätämme mistä tahansa toiminnasta. Joten meidän on tehtävä se monta kertaa, mikä tarkoittaa, että tätä koodia tulisi käyttää funktiona. Olemme kirjoittaneet funktion nimeltä Laske_etäisyys (), joka palauttaa anturin ja käden välisen etäisyyden.
/ * ### Toiminto etäisyyden laskemiseen ### * / void calc_distance (int-liipaisin, int echo) {digitalWrite (liipaisin, LOW); viive mikrosekuntia (2); digitalWrite (liipaisin, HIGH); viive mikrosekuntia (10); digitalWrite (liipaisin, LOW); time_taken = pulssi (kaiku, KORKEA); dist = käytetty aika * 0,034 / 2; jos (dist> 50) dist = 50; }
Sisällä tärkein lenkki me tarkistaa arvon etäisyyden ja suorittaa toimia edellä. Ennen sitä käytämme kahta muuttujaa distL ja distR, jotka päivitetään nykyisellä etäisyysarvolla.
Laske etäisyys (laukaista1, kaiku1); distL = dist; // saada vasemman anturin etäisyys Laske etäisyys (liipaisin2, kaiku2); distR = dist; // saada oikean anturin etäisyys
Koska tiedämme kummankin anturin välisen etäisyyden, voimme nyt verrata sitä ennalta määritettyihin arvoihin ja saavuttaa tiettyjä toimintoja. Esimerkiksi jos molemmat kädet asetetaan 40 mc: n etäisyydelle, toistamme / keskeytämme videon. Täällä sana ”Toista / Tauko” lähetetään sarjaportin kautta
if ((distL> 40 && distR> 40) && (distL <50 && distR <50)) // Tunnista molemmat kädet {Serial.println ("Toista / Tauko"); viive (500);}
Jos pelkästään oikea käsi asetetaan moduulin eteen, eteenpäin videota kelataan eteenpäin yhdellä askeleella ja vasemmalla kädellä kelataan taaksepäin yhdellä askeleella. Toiminnon perusteella tässä sana ”Rewind” tai “Forward” lähetetään sarjaportin kautta
if ((distL> 40 && distL <50) && (distR == 50)) // Tunnista vasen käsi {Serial.println ("Kelaa taaksepäin"); delay (500);} if ((distR> 40 && distR <50) && (distL == 50)) // Tunnista oikea käsi {Serial.println ("eteenpäin"); viive (500);}
Vihollisen äänenvoimakkuuden ja raidan yksityiskohtainen hallinta käytämme eri menetelmää estääkseen vääriä laukaisimia. Voit säätää äänenvoimakkuutta meidän täytyy asettaa vasemmalla kädellä noin. 15 cm: n etäisyydellä voit joko siirtää sitä anturia kohti vähentääksesi äänenvoimakkuutta siirtääksesi sitä anturista äänenvoimakkuuden lisäämiseksi. Saman koodi näkyy alla. Toiminnon perusteella tässä sana ”Vup” tai “Vdown” lähetetään sarjaportin kautta
// Lukitse vasen - ohjaustila, jos (distL> = 13 && distL <= 17) {viive (100); // Käden pidon ajan laskenta-etäisyys (liipaisin1, kaiku1); distL = dist; if (distL> = 13 && distL <= 17) {Sarja.println ("Vasen lukittu"); while (distL <= 40) {Laske etäisyys (liipaisin1, kaiku1); distL = dist; if (distL <10) // Käsi työnnetty sisään {Sarja.println ("Vup"); delay (300);} if (distL> 20) // Käsi vedetty ulos {Serial.println ("Vdown"); viive (300);}}}}
Voimme käyttää samaa menetelmää myös oikeanpuoleisella tunnistimella videon raidan ohjaamiseen. Eli jos liikutamme oikeaa kättä kohti sensoria, se vie elokuvan eteenpäin ja jos siirrät sen pois anturista, se kelaa elokuvaa takaisin. Toiminnon perusteella tässä sana ”Rewind” tai “Forward” lähetetään sarjaportin kautta
Voit nyt lukea sivun lopussa olevan tämän eleohjatun tietokoneen koko koodin ja yrittää ymmärtää sen kokonaisuutena ja kopioida sen sitten Arduino IDE -laitteeseesi.
Pythonin ohjelmointi:
Tämän projektin python-ohjelma on hyvin yksinkertainen. Meidän on vain luotava sarjaliikenne Arduinon kanssa oikean siirtonopeuden avulla ja suoritettava sitten joitain näppäimistön perustoimintoja. Ensimmäinen vaihe pythonin kanssa olisi asentaa p yautogui -moduuli. Varmista, että noudatat tätä vaihetta, koska ohjelma ei toimi ilman pyautogui-moduulia.
Pyautogui-moduulin asentaminen Windowsille:
Asenna pyautogui Windowsille noudattamalla seuraavia ohjeita. Jos käytät muita alustoja, vaiheet ovat myös enemmän tai vähemmän samanlaisia. Varmista, että tietokoneesi / kannettava tietokoneesi on yhteydessä Internetiin, ja jatka seuraavien ohjeiden mukaisesti
Vaihe 1: Avaa Windowsin komentokehote ja vaihda hakemisto kansioon, johon olet asentanut pythonin. Oletuksena komennon tulisi olla
cd C: \ Python27
Vaihe 2: Python-hakemistosi sisällä päivitä komento python –m pip install –upgrade pip. Pip on python-työkalu, joka auttaa meitä asentamaan python-moduulit helposti. Kun tämä moduuli on päivitetty (kuten alla olevassa kuvassa näkyy), siirry seuraavaan vaiheeseen.
python –m pip install –päivitä pip
Vaihe 3: Asenna pyautogui-moduuli komennolla “ python –m pip install pyautogui ”. Kun prosessi on onnistunut, sinun pitäisi nähdä alla olevan kaltainen näyttö.
python –m pip install –päivitä pip
Nyt kun pyautogui- moduuli ja pyserial- moduuli (asennettu edelliseen opetusohjelmaan) on onnistuneesti asennettu pythonin kanssa, voimme jatkaa python-ohjelmaa. Täydellinen Python-koodi annetaan lopussa opetusohjelman mutta selitys sama on seuraava.
Tuo kaikki tämän projektin vaaditut moduulit. Ne ovat pyautogui, sarjapython ja aika.
tuo sarja # Sarja tuotu sarjaviestinnän tuontiaikaa varten # Edellyttää viivetoimintojen käyttöä tuonti pyautogui
Seuraavaksi muodostamme yhteyden Arduinoon COM-portin kautta. Tietokoneessani Arduino on kytketty COM 18: een. Laitehallinnalla voit selvittää, mihin COM-porttiin Arduino on kytketty, ja korjaa seuraava rivi vastaavasti.
ArduinoSerial = serial.Serial ('com18', 9600) #Create sarjaporttiobjekti nimeltä arduinoSerialData time.sleep (2) #odota 2 sekuntia, kunnes tiedonsiirto muodostuu
Infinite while -silmukan sisällä kuuntelemme toistuvasti COM-porttia ja verrataan avainsanoja kaikkiin ennalta defied-teoksiin ja painamme näppäimistöjä vastaavasti.
kun taas 1: sisääntuleva = str (ArduinoSerial.readline ()) #lue sarjatiedot ja tulosta ne tulosteena rivinjulkaisuna, jos saapuvassa 'Toista / Tauko': pyautogui.typewrite (, 0,2) jos 'Kelaa taaksepäin' sisääntulossa: pyautogui. pikanäppäin ('ctrl', 'vasen'), jos 'eteenpäin' saapuvassa: pyautogui.hotkey ('ctrl', 'oikea'), jos 'Vup' saapuvassa: pyautogui.hotkey ('ctrl', 'alas') jos ' Vdown 'sisääntulossa: pyautogui.hotkey (' ctrl ',' ylös ')
Kuten näette, näppäimen painamiseksi meidän on yksinkertaisesti käytettävä komentoa "pyautogui.typewrite (, 0.2)", joka painaa näppäintilaa 0,2 sekunnin ajan. Jos tarvitset pikanäppäimiä, kuten ctrl + S, voit käyttää pikanäppäinkomentoa "pyautogui.hotkey ('ctrl', 's')".
Olen käyttänyt näitä yhdistelmiä, koska ne toimivat VLC-mediasoittimella. Voit säätää niitä millä tahansa tavalla luomalla omia sovelluksiasi hallitsemaan mitä tahansa tietokonetta eleillä.
Eleohjattu tietokone toiminnassa:
Muodosta yhteydet yllä määritellyllä tavalla ja lataa Arduino-koodi Arduino-levyllesi. Käytä sitten alla olevaa python-komentosarjaa ja käynnistä ohjelma kannettavalla tietokoneella.
Nyt voit toistaa mitä tahansa elokuvaa tietokoneellasi VLC-mediasoittimen avulla ja hallita elokuvaa kädelläsi alla olevan videon mukaisesti.
Toivottavasti ymmärrät projektin ja nautit siitä leikkimisestä. Tämä on vain esittely, ja voit käyttää luovuuttasi rakentaa paljon enemmän hienoja eleohjattuja juttuja tämän ympärille. Kerro minulle, jos tämä oli hyödyllistä ja mitä aiot luoda tällä kommenttiosassa, ja olen iloinen siitä.