Orodha ya maudhui:

USO KUFUATILIA KUTUMIA ARDUINO !!!: Hatua 7
USO KUFUATILIA KUTUMIA ARDUINO !!!: Hatua 7

Video: USO KUFUATILIA KUTUMIA ARDUINO !!!: Hatua 7

Video: USO KUFUATILIA KUTUMIA ARDUINO !!!: Hatua 7
Video: Lesson 22: Using Seven Segment Display with Arduino and Electronic Dice | SunFounder Robojax 2024, Novemba
Anonim
USO KUFUATILIA KUTUMIA ARDUINO !!!
USO KUFUATILIA KUTUMIA ARDUINO !!!

Katika mafunzo ya awali nilishiriki jinsi unaweza kuwasiliana kati ya Arduino na Python ukitumia moduli ya 'pyserial' na kudhibiti LED. Ikiwa haujaiona itazame hapa: MAWASILIANO KATI YA ARDUINO & PYTHON!

Na jinsi unavyoweza kugundua rangi ya kitu na kukifuatilia kwenye skrini, Angalia hapo nje: UTAFITI WA RANGI KUTUMIA OPENCV NA PYTHON.

Katika hii Inayoweza kufundishwa nitakuonyesha jinsi ya kufuatilia nyuso ukitumia Arduino & Python na uifanye Kamera ifuate uso. Hii inaweza kuonekana kuwa ngumu lakini niamini sio, Unachohitaji ni ujuzi wa kimsingi wa Arduino na Python.

Basi lets kuanza …

Hatua ya 1: Vitu Utakavyohitaji:

Vitu Utakavyohitaji
Vitu Utakavyohitaji
Vitu Utakavyohitaji
Vitu Utakavyohitaji
Vitu Utakavyohitaji
Vitu Utakavyohitaji

Mahitaji ni ya chini. Hapa nimetoa orodha ya sehemu ya kila kitu unachohitaji:

Mahitaji ya vifaa:

  • Arduino UNO (Amazon US / Amazon EU)
  • Web Cam (Amazon US / Amazon EU)
  • Servos x 2 (Amazon US / Amazon EU)
  • Bodi ya mkate (Amazon US / Amazon EU)
  • Kitanda cha Servo Pan Tilt (Amazon US / Amazon EU)

Mahitaji ya Programu:

  1. Python 2.7 (Inapaswa kusanikishwa, Linux OS kawaida huwa imewekwa mapema)
  2. OpenCV (Unaweza kuipakua kando au kusanikisha ukitumia 'pip install' Imeelezewa zaidi)
  3. pyserial (Inaweza kusanikishwa na bomba)
  4. numpy.
  5. Haarcascade.

Baada ya kila kitu kukusanywa tunaweza kuendelea na Hatua ya Usakinishaji…

Hatua ya 2: Kuweka Mazingira ya Python:

Kuweka Mazingira ya Python
Kuweka Mazingira ya Python
Kuweka Mazingira ya Python
Kuweka Mazingira ya Python
Kuweka Mazingira ya Python
Kuweka Mazingira ya Python

Kuweka Python:

Kwa hivyo kwanza tunahitaji Python 2.7 juu na inayoendesha. Ili kufanya kwanza kupakua na kusakinisha chatu 2.7.14. Kuangalia ikiwa imewekwa kwa usahihi Goto: Utafutaji wa Windows >> Aina "IDLE" >> Piga Enter. Ganda la Chatu linapaswa kutokea.

AU

Katika aina ya utaftaji 'CMD' na hit Enter kufungua Amri ya Kuhamasisha. Katika aina ya CMD >> chatu na hit Enter, interface ya Python inapaswa kuonyesha.

Ukiona kosa katika CMD, Usiogope labda unahitaji kuweka kutofautisha kwa mazingira. Unaweza kufuata mafunzo haya Hapa ili kuanzisha Mazingira yanayobadilika.

Kuweka 'pyserial', 'OpenCV "na" numpy "katika chatu:

Kuweka moduli hizi tutatumia pip install, Kwanza wazi CMD na andika nambari zifuatazo: -

bomba funga mfululizo

pip install opencv-python> pip install numpy

amri hizi zitaweka moduli zinazohitajika. Sasa tunaweza kuhamia kwenye sehemu ya usimbuaji…

Hatua ya 3: Hati ya Python:

Hati ya Python
Hati ya Python

Kabla ya kuanza kuandika nambari ya kwanza kufanya ni kutengeneza folda mpya kwani nambari zote zinahitajika kuhifadhiwa kwenye folda moja. Kwa hivyo tengeneza folda mpya, itaje kitu chochote unachotaka. na pakua 'Haarcascade' kutoka chini na ubandike kwenye folda.

Sasa fungua daftari na andika hati iliyopewa hapa chini, Ihifadhi kama 'face.py' kwenye folda sawa na haarcascade. (Unaweza kupakua nambari ambayo nimetoa faili hapa chini):

#mport moduli zote zinazohitajika

kuagiza numpy kama np kuagiza muda wa kuingiza serial sys kuagiza cv2 #Setup Mawasiliano njia ya arduino (Badala ya 'COM5' weka bandari ambayo arduino yako imeunganishwa) arduino = serial. Serial ('COM5', 9600) muda. lala (2) chapa ("Imeunganishwa na arduino…") #kuhamisha Haarcascade kwa kugundua uso face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Kunasa mkondo wa video kutoka kwa kamera ya wavuti. cap = cv2. VideoCapture (0) #Soma picha iliyonaswa, ibadilishe kuwa Picha ya kijivu na upate sura wakati 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) kijivu = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) nyuso = face_cascade.detectMultiScale (kijivu, 1.3) # gundua uso na fanya mstatili kuizunguka. kwa (x, y, w, h) katika nyuso: cv2. mstatili (img, (x, y), (x + w, y + h), (0, 255, 0), 5) roi_gray = kijivu [y: y + h, x: x + w] roi_color = img [y: y + h, x: x + w] arr = {y: y + h, x: x + w} chapa (panga) chapisha ('X: '+ str (x)) chapa (' Y: '+ str (y)) chapa (' x + w: '+ str (x + w)) chapa (' y + h: '+ str (y + h) # Kituo cha roi (Mstatili # kutuma data kwa uchapishaji wa arduino ("Kituo cha Mstatili ni:", katikati) data = "X {0: d} Y {1: d} Z". format (xx, yy) print ("output = '" + data + "'") arduino.andika (data) #Onyesha mkondo. cv2.imshow ('img', img) # Hit 'Esc' kukomesha utekelezaji k = cv2.waitKey (30) & 0xff if k == 27: break

Mara hii ikimaliza, endelea kuandika nambari ya arduino…

Hatua ya 4: Nambari ya Arduino:

Msimbo wa Arduino
Msimbo wa Arduino

Baada ya hati ya chatu kuwa tayari tunahitaji mchoro wa arduino kudhibiti servo. Rejea nambari hapa chini, ibandike katika Arduino IDE na uihifadhi kama 'servo.ino' kwenye folda sawa na face.py na haarcascade. pakia nambari na nenda kwa hatua inayofuata ili kufanya unganisho.

(Faili inayoweza kupakuliwa iliyotolewa hapa chini)

# pamoja

ServoVer ya Servo; // Wima Servo Servo servoHor; // Servo ya usawa int x; int y; int prevX; int prevY; kuanzisha batili () {Serial.begin (9600); kiambatisho cha servoVer (5); // Ambatisha Wima Servo kwa Pini 5 servoHor.ambatanisha (6); // Ambatanisha Servo ya Usawa kwa Pini 6 servoVer. Andika (90); andika ServoHor (90); } utupu Pos () {if (prevX! = x || prevY! = y) {int servoX = ramani (x, 600, 0, 70, 179); int servoY = ramani (y, 450, 0, 179, 95); servoX = dakika (servoX, 179); servoX = max (servoX, 70); servoY = dakika (servoY, 179); servoY = kiwango cha juu (servoY, 95); andika ServoHor (servoX); andika (servoY); }} kitanzi batili () {if (Serial.available ()> 0) {if (Serial.read () == 'X') {x = Serial.parseInt (); ikiwa (Serial.read () == 'Y') {y = Serial.parseInt (); Pos (); }} wakati (Serial.available ()> 0) {Serial.read (); }}}

Hatua ya 5: Utaratibu wa Kuelekeza: -

Njia ya Kuelekeza:
Njia ya Kuelekeza:
Njia ya Kuelekeza:
Njia ya Kuelekeza:

Nimetumia kit kinachopatikana kwa urahisi kwa Pan-Tilt. Ikiwa unataka unaweza kujifanya mwenyewe ukitumia kuni / Plastiki au hata 3D chapisha moja.

Yule niliyotumia ni ya bei rahisi, na ni rahisi sana kukusanyika. Walakini ikiwa unataka maagizo ya jinsi ya kufanya hivyo, unaweza kuipata hapa.

Hatua ya 6: Kufanya Uunganisho:

Kufanya Uunganisho
Kufanya Uunganisho
Kufanya Uunganisho
Kufanya Uunganisho

Mzunguko ni rahisi sana. Ambatisha tu servos mbili kwa arduino.

  1. Wima kwa Pini 5
  2. Usawa hadi Pini 6
  3. Nguvu ya + 5V
  4. Ardhi hadi GND

Angalia mchoro wa mzunguko kwa kumbukumbu.

Hatua ya 7: KUJARIBU:

  • Baada ya kila kitu kufanywa jambo la mwisho kufanya ni kujaribu ikiwa inafanya kazi. Ili kujaribu kwanza hakikisha kwamba servos zimeunganishwa vizuri na arduino na mchoro umepakiwa.
  • Baada ya mchoro kupakiwa hakikisha umefunga IDE ili bandari iwe huru kuungana na chatu.
  • Sasa fungua 'face.py' na Python IDLE na bonyeza 'F5' kuendesha nambari. Itachukua sekunde chache kuungana na arduino na kisha unapaswa kuona dirisha linalotiririsha kamera ya wavuti. Sasa nambari itagundua uso wako na servos itaifuatilia.
  • Servo inapaswa kusonga wakati unahamisha kitu. Sasa ambatisha kamera kwenye servos kwa hivyo itaenda pamoja na servos.

Asante.

Ilipendekeza: