Բովանդակություն:

ԱՐԴՈINԻՆՈՅԻING
ԱՐԴՈINԻՆՈՅԻING

Video: ԱՐԴՈINԻՆՈՅԻING

Video: ԱՐԴՈINԻՆՈՅԻING
Video: Как спрятать данные в ячейках Excel? 2024, Հուլիսի
Anonim
ԱՐԴՈINԻՆՈԻ ՕԳՏԱԳՈՐՄԱՆ ԴԵՄՔԻ Հետապնդում !!!
ԱՐԴՈINԻՆՈԻ ՕԳՏԱԳՈՐՄԱՆ ԴԵՄՔԻ Հետապնդում !!!

Նախորդ հրահանգում ես կիսվեցի, թե ինչպես կարող եք հաղորդակցվել Arduino- ի և Python- ի միջև ՝ օգտագործելով «պիզերիալ» մոդուլը և վերահսկել լուսադիոդը: Եթե դեռ չեք տեսել, ստուգեք այստեղ ՝ ARDUINO & PYTHON- ի ԿԱՊ:

Եվ ինչպես կարող եք հայտնաբերել օբյեկտի գույնը և հետևել այն էկրանին: Ստուգեք այստեղ ՝ ԳՈLՅՆԻ ՀԱՅՏՆՈԹՅՈՆ ՕԳՆՈVԹՅԱՆ ԵՎ ԹԱԹՈՆԻ ՕԳՏԱԳՈՐՈՄ:

Այս Ուղեցույցում ես ձեզ ցույց կտամ, թե ինչպես կարելի է հետևել դեմքերին Arduino & Python- ի միջոցով և ստիպել տեսախցիկին հետևել դեմքին: Սա կարող է դժվար թվալ, բայց հավատացեք ինձ, դա այդպես չէ: Ձեզ անհրաժեշտ է միայն Arduino- ի և Python- ի հիմնական իմացությունը:

Այսպիսով, եկեք սկսենք…

Քայլ 1: Այն, ինչ ձեզ հարկավոր կլինի

Ձեզ անհրաժեշտ բաներ
Ձեզ անհրաժեշտ բաներ
Ձեզ անհրաժեշտ բաներ
Ձեզ անհրաժեշտ բաներ
Ձեզ անհրաժեշտ բաներ
Ձեզ անհրաժեշտ բաներ

Պահանջները նվազագույն են: Այստեղ ես տրամադրել եմ այն ամենի մասի ցանկը, ինչ ձեզ հարկավոր է.

Սարքավորման պահանջ

  • Arduino UNO (Amazon ԱՄՆ / Amazon ԵՄ)
  • Վեբ տեսախցիկ (Amazon ԱՄՆ / Amazon ԵՄ)
  • Servos x 2 (Amazon ԱՄՆ / Amazon ԵՄ)
  • Breadboard (Amazon ԱՄՆ / Amazon ԵՄ)
  • Servo Pan Tilt Kit (Amazon ԱՄՆ / Amazon ԵՄ)

Softwareրագրային ապահովման պահանջ

  1. Python 2.7 (Պետք է տեղադրել, Linux OS- ն սովորաբար այն նախապես տեղադրված է)
  2. OpenCV (Դուք կարող եք այն ներբեռնել առանձին կամ տեղադրել ՝ օգտագործելով «pip install» - ը ՝ բացատրված լրացուցիչ)
  3. պիզերալ (կարող է տեղադրվել pip- ով)
  4. թմրած
  5. Հարկասկադ.

Ամեն ինչ հավաքելուց հետո կարող ենք անցնել Տեղադրման քայլին…

Քայլ 2: Python միջավայրի կարգավորում

Python միջավայրի կարգավորում
Python միջավայրի կարգավորում
Python միջավայրի կարգավորում
Python միջավայրի կարգավորում
Python միջավայրի կարգավորում
Python միջավայրի կարգավորում

Python- ի տեղադրում

Այսպիսով, նախ մեզ անհրաժեշտ է Python 2.7 գործարկումը: Դա անելու համար նախ ներբեռնեք և տեղադրեք python 2.7.14: Ստուգելու համար, թե արդյոք այն ճիշտ տեղադրված է Գնացեք. Windows Search >> Մուտքագրեք «IDLE» >> Կտտացրեք Enter: Python Shell- ը պետք է հայտնվի:

ԿԱՄ

Որոնման մեջ մուտքագրեք «CMD» և սեղմեք enter ՝ հրամանի տողը բացելու համար: CMD- ում մուտքագրեք >> python և սեղմեք enter, Python ինտերֆեյսը պետք է ցուցադրվի:

Եթե CMD- ում սխալ եք տեսնում, մի՛ խուճապի մատնվեք, հավանաբար անհրաժեշտ է սահմանել միջավայրի փոփոխական: Շրջակա միջավայրի փոփոխական ստեղծելու համար կարող եք հետևել այս ձեռնարկին:

Python- ում տեղադրելով «pyserial», «OpenCV» և «numpy» ՝

Այս մոդուլները տեղադրելու համար մենք կօգտագործենք pip install, Նախ բացեք CMD- ը և մուտքագրեք հետևյալ ծածկագրերը.

pip տեղադրման սերիա

pip install opencv-python> pip install numpy

այս հրամանները կտեղադրեն անհրաժեշտ մոդուլները: Այժմ մենք կարող ենք անցնել ծածկագրման հատվածին…

Քայլ 3: Python Script:

Python Script
Python Script

Նախքան ծածկագիր գրելն սկսելն առաջին հերթին պետք է պատրաստել նոր թղթապանակ, քանի որ ամբողջ ծածկագիրը պետք է պահվի նույն թղթապանակում: Այսպիսով, ստեղծեք նոր թղթապանակ, անվանեք այն, ինչ ցանկանում եք: և ներքևից ներբեռնեք «Haarcascade» - ը և տեղադրեք այն թղթապանակում:

Այժմ բացեք նոթատետրը և գրեք ստորև տրված սցենարը: Պահեք այն որպես 'face.py' նույն պանակում, ինչպես haarcascade- ը: (Դուք կարող եք ներբեռնել իմ տրամադրած կոդը ստորև բերված ֆայլը).

#ներմուծել բոլոր անհրաժեշտ մոդուլները

import numpy as np ներմուծում սերիական ներմուծման ժամանակ ներմուծում sys ներմուծում cv2 #Կարգավորում arduino- ի հաղորդակցության ուղի («COM5» - ի փոխարեն դրեք այն նավահանգիստը, որին միացված է ձեր arduino) arduino = սերիա: (2) տպել («Միացված է arduino- ին…») #ներմուծել Haarcascade ՝ դեմքի հայտնաբերման համար face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Տեսախցիկից վիդեո հոսքը գրավելու համար: cap = cv2. VideoCapture (0) #Կարդացեք գրավված պատկերը, փոխակերպեք այն մոխրագույն պատկերի և գտեք դեմքեր, մինչդեռ 1: ret, img = cap.read () cv2.resizeWindow ('img', 500, 500) cv2.line (img, (500, 250), (0, 250), (0, 255, 0), 1) cv2.line (img, (250, 0), (250, 500), (0, 255, 0), 1) cv2.circle (img, (250, 250), 5, (255, 255, 255), -1) մոխրագույն = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) դեմքեր = face_cascade.detectMultiScale (մոխրագույն, 1.3) # հայտնաբերեք դեմքը և դրա շուրջ ուղղանկյուն կազմեք: (x, y, w, h) դեմքերի համար. cv2. ուղղանկյուն (img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = մոխրագույն [y: y+h, x: x+w] roi_color = img [y: y+h, x: x+w] arr = {y: y+h, x: x+w} տպել (arr) տպել ('X: '+str (x)) տպել (' Y: '+str (y)) տպել (' x+w: '+str (x+w)) տպել (' y+h: '+str (y+h)) # Roi կենտրոն (ուղղանկյուն) xx = int (x+(x+h))/2 yy = int (y+(y+w))/2 տպել (xx) տպել (yy) կենտրոն = (xx, yy) # տվյալների փոխանցում arduino print- ին («Ուղղանկյան կենտրոնն է.», կենտրոն) տվյալները = "X {0: d} Y {1: d} Z".ֆորմատ (xx, yy) տպագիր ("output = '" +տվյալներ + "'") arduino.write (data) #ispուցադրել հոսքը: cv2.imshow ('img', img) #Հարվածել 'Esc' `կատարումը դադարեցնելու համար k = cv2.waitKey (30) & 0xff, եթե k == 27: ընդմիջում

Երբ դա արվի, շարունակեք գրել arduino- ի կոդը…

Քայլ 4: Arduino կոդ

Arduino կոդ
Arduino կոդ

Պիտոնի սցենարը պատրաստ լինելուց հետո մեզ անհրաժեշտ է arduino ուրվագիծ ՝ սերվոն վերահսկելու համար: Տեղադրեք ստորև բերված կոդը, տեղադրեք այն Arduino IDE- ում և պահեք այն որպես 'servo.ino' նույն պանակում, ինչպես face.py և haarcascade: վերբեռնեք կոդը և անցեք հաջորդ քայլին ՝ կապեր հաստատելու համար:

(Ներբեռնվող ֆայլը տրված է ստորև)

#ներառում

Servo servoVer; // Ուղղահայաց Servo Servo servoHor; // Հորիզոնական Servo int x; int y; int prevX; int prevY; void setup () {Serial.begin (9600); servoVer.attach (5); // Կցել ուղղահայաց Servo- ին Pin 5 servoHor.attach (6); // Կցել հորիզոնական Servo- ին Pin 6 servoVer.write (90); servoHor.write (90); } void Pos () {if (prevX! = x || prevY! = y) {int servoX = քարտեզ (x, 600, 0, 70, 179); int servoY = քարտեզ (y, 450, 0, 179, 95); servoX = րոպե (servoX, 179); servoX = առավելագույնը (servoX, 70); servoY = րոպե (servoY, 179); servoY = առավելագույնը (servoY, 95); servoHor.write (servoX); servoVer.write (servoY); }} void loop () {if (Serial.available ()> 0) {if (Serial.read () == 'X') {x = Serial.parseInt (); if (Serial.read () == 'Y') {y = Serial.parseInt (); Pos (); }} while (Serial.available ()> 0) {Serial.read (); }}}

Քայլ 5. Pan-Tilt մեխանիզմ

Pan-Tilt մեխանիզմ
Pan-Tilt մեխանիզմ
Pan-Tilt մեխանիզմ
Pan-Tilt մեխանիզմ

Ես օգտագործել եմ Pan-Tilt- ի համար մատչելի մատչելի հավաքածու: Եթե ցանկանում եք, կարող եք ինքներդ պատրաստել փայտե/պլաստմասե կամ նույնիսկ 3D տպիչով:

Իմ օգտագործածը բավականին էժան է, և հավաքելը շատ հեշտ է: Այնուամենայնիվ, եթե ցանկանում եք հրահանգներ, թե ինչպես դա անել, կարող եք գտնել այստեղ:

Քայլ 6: Կապեր հաստատելը

Կապեր հաստատելը
Կապեր հաստատելը
Կապեր հաստատելը
Կապեր հաստատելը

The Circuit- ը բավականին պարզ է: Պարզապես երկու սերվո կցեք arduino- ին:

  1. Ուղղահայաց դեպի կապում 5
  2. Հորիզոնական դեպի կապ 6
  3. Հզորությունը +5 Վ -ից
  4. Ground to GND

Տեղեկատվության համար ստուգեք սխեմայի սխեման:

Քայլ 7: ԹԵՍՏՈՄ

  • Ամեն ինչ անելուց հետո վերջին բանը, որ պետք է անել, ստուգելն է, արդյոք այն աշխատում է: Փորձարկելու համար նախ համոզվեք, որ սերվոները պատշաճ կերպով կապված են arduino- ի հետ, և ուրվագիծը բեռնված է:
  • Էսքիզը վերբեռնելուց հետո համոզվեք, որ փակեք IDE- ն, որպեսզի նավահանգիստը ազատ լինի պիթոնին միանալու համար:
  • Այժմ բացեք 'face.py' Python IDLE- ով և սեղմեք 'F5' ՝ կոդը գործարկելու համար: Արդուինոյին միանալու համար կպահանջվի մի քանի վայրկյան, այնուհետև դուք պետք է կարողանաք տեսնել վեբ տեսախցիկը հոսող պատուհան: Այժմ ծածկագիրը կբացահայտի ձեր դեմքը, և սպասարկողները կհետևեն դրան ՝ դրան հետևելու համար:
  • Servo- ն պետք է շարժվի, երբ տեղափոխում եք օբյեկտը: Այժմ պարզապես ամրացրեք տեսախցիկը սերվոներին, որպեսզի այն շարժվի սերվոների հետ միասին:

Շնորհակալություն.