Мазмуну:

ARDUINO КОЛДОНУУ ЖҮЗҮНӨ ТАРТУУ !!!: 7 кадам
ARDUINO КОЛДОНУУ ЖҮЗҮНӨ ТАРТУУ !!!: 7 кадам

Video: ARDUINO КОЛДОНУУ ЖҮЗҮНӨ ТАРТУУ !!!: 7 кадам

Video: ARDUINO КОЛДОНУУ ЖҮЗҮНӨ ТАРТУУ !!!: 7 кадам
Video: Использование Melexis MLX90614 Инфракрасный термометр с Arduino 2024, Июль
Anonim
ARDUINO КОЛДОНУУ ЖҮЗҮНӨ ТАРТУУ !!!
ARDUINO КОЛДОНУУ ЖҮЗҮНӨ ТАРТУУ !!!

Мурунку көрсөтмөлөрдө мен "pyserial" модулу аркылуу Arduino менен Python ортосунда кантип байланышып, LEDди башкара алаарыңды айтып бергем. Эгер көрө элек болсоңуз, бул жерден текшериңиз: ARDUINO & PYTHON БАЙЛАНЫШЫ!

Жана кантип объекттин түсүн аныктап, аны экранда көзөмөлдөй аласыз, бул жерден текшериңиз: OPENCV ЖАНА ПИТОНДУ КОЛДОНГОН ТҮСТӨРДҮ аныктоо.

Бул Нускамада мен сизге Arduino & Python аркылуу жүздөрдү кантип байкоо керектигин жана Камеранын жүздү ээрчүүсүн көрсөтөм. Бул кыйын көрүнүшү мүмкүн, бирок мага ишениңиз, андай эмес, сизге болгону Arduino жана Python боюнча негизги билим керек.

Андыктан баштайлы…

1 -кадам: Сизге керектүү нерселер:

Сизге керектүү нерселер
Сизге керектүү нерселер
Сизге керектүү нерселер
Сизге керектүү нерселер
Сизге керектүү нерселер
Сизге керектүү нерселер

Талаптар минималдуу. Бул жерде мен сизге керектүү нерселердин тизмесин бердим:

Аппараттык талап:

  • Arduino UNO (Amazon US / Amazon EU)
  • Web Cam (Amazon US / Amazon EU)
  • Servos x 2 (Amazon US / Amazon EU)
  • Нан тактасы (Amazon US / Amazon EU)
  • Servo Pan Tilt Kit (Amazon US / Amazon EU)

Программалык камсыздоо талабы:

  1. Python 2.7 (Орнотулушу керек, Linux OS көбүнчө аны алдын ала орнотуп алган)
  2. OpenCV (Аны өзүнчө жүктөп алсаңыз болот же "pip install" аркылуу орнотсоңуз болот)
  3. pyserial (пип менен орнотсо болот)
  4. numpy.
  5. Haarcascade.

Баары чогултулгандан кийин, орнотуу кадамына өтүшүбүз мүмкүн …

2-кадам: Python чөйрөсүн орнотуу:

Python чөйрөсүн орнотуу
Python чөйрөсүн орнотуу
Python чөйрөсүн орнотуу
Python чөйрөсүн орнотуу
Python чөйрөсүн орнотуу
Python чөйрөсүн орнотуу

Python орнотуу:

Ошентип, адегенде бизге Python 2.7 иштеп, иштеши керек. Бул үчүн алгач python 2.7.14 жүктөп алып, орнотуңуз. Туура орнотулганын текшерүү үчүн Goto: Windows Издөө >> "IDLE" териңиз >> Enter баскычын басыңыз. Python Shell калкып чыгышы керек.

ЖЕ

Издөөдө 'CMD' териңиз жана Enter баскычын басып, Command Prompt ачыңыз. CMD түрүндө >> python жана enter басканда, Python интерфейси көрсөтүлүшү керек.

Эгерде сиз CMDде ката көрсөңүз, дүрбөлөңгө түшпөңүз, балким чөйрөнүн өзгөрмөсүн орнотушуңуз керек. Сиз бул үйрөткүчтү ээрчип, бул жерде айлана -чөйрөнүн өзгөрмөсүн орното аласыз.

Pythonдо 'pyserial', 'OpenCV' жана 'numpy' орнотуу:

Бул модулдарды орнотуу үчүн биз pip install колдонобуз, Адегенде CMD ачыңыз жана төмөнкү коддорду териңиз:-

pip орнотуу сериялык

pip install opencv-python> pip орнотуу numpy

бул буйруктар керектүү модулдарды орнотот. Эми биз коддоо бөлүгүнө өтө алабыз …

3 -кадам: Python Script:

Python Script
Python Script

Код жазууну баштоодон мурун, жаңы папканы жасоо керек, анткени бардык коддор ошол папкада сакталууга тийиш. Ошентип, жаңы папка түзүңүз, ага каалаган нерсеңизди коюңуз. жана астынан 'Haarcascade'ди жүктөп алып, папкага чаптаңыз.

Эми блокнотту ачып, төмөндө берилген сценарийди жазыңыз, аны "face.py" катары haarcascade менен бир папкага сактаңыз. (Мен берген файлды төмөндөгү файлды жүктөп алсаңыз болот):

#бардык керектүү модулдарды импорттоо

np импорттоо катары сериялык импорт убактысы импорт cv2 импорт cv2 #Орнотуу arduino үчүн байланыш жолу ('COM5' ордуна сиздин ардуино туташкан портуңузду коюңуз) arduino = serial. Serial ('COM5', 9600) time.sleep (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.rectangle (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} print (arr) print ('X: '+str (x)) print (' Y: '+str (y)) print (' x+w: '+str (x+w)) print (' y+h: '+str (y+h))) # ROI борбору (Тик бурчтук) xx = int (x+(x+h))/2 yy = int (y+(y+w))/2 print (xx) print (yy) center = (xx, yy) # маалыматтарды arduino printке жөнөтүү ("Тик бурчтуктун борбору:", борбор) data = "X {0: d} Y {1: d} Z".формат (xx, yy) басып чыгаруу ("output = '" +data + "'") arduino.write (маалымат) #Агымды көрсөтүү. cv2.imshow ('img', img) #Аткарууну токтотуу үчүн "Esc" баскычын басыңыз k = cv2.waitKey (30) & 0xff if k == 27: break

Бул бүткөндөн кийин, arduino кодун жазууга өтүңүз …

4 -кадам: Arduino коду:

Arduino коду
Arduino коду

Питон скрипти даяр болгондон кийин, сервону көзөмөлдөө үчүн бизге arduino эскизи керек. Төмөндөгү кодду колдонуп, Arduino IDEге чаптаңыз жана face.py жана haarcascade папкасында "servo.ino" катары сактаңыз. кодду жүктөп, туташуу үчүн кийинки кадамга өтүңүз.

(Төмөндө жүктөлүп алынган файл)

#кошуу

Servo servoVer; // Vertical Servo Servo servoHor; // Horizontal Servo int x; int y; int prevX; int prevY; void setup () {Serial.begin (9600); servoVer.attach (5); // Vertical Servo тиркөө 5 pino servoHor.attach (6); // Горизонталдуу Сервону 6 пинге бекитүү servoVer.write (90); servoHor.write (90); } void Pos () {if (prevX! = x || prevY! = y) {int servoX = map (x, 600, 0, 70, 179); int servoY = карта (y, 450, 0, 179, 95); servoX = min (servoX, 179); servoX = max (servoX, 70); servoY = min (servoY, 179); servoY = max (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 -кадам: Байланыштарды түзүү:

Кабыл алуу Байланыш
Кабыл алуу Байланыш
Кабыл алуу Байланыш
Кабыл алуу Байланыш

Circuit абдан жөнөкөй. Жөн гана arduinoго эки сервону тиркеңиз.

  1. 5 -пинге тигинен
  2. 6 -пинге горизонталдуу
  3. Күч +5V
  4. GND үчүн негиз

Маалымдама үчүн райондук схеманы текшериңиз.

7 -кадам: СЫНОО:

  • Баары бүткөндөн кийин, акыркы нерсе - анын иштээрин текшерүү. Сыноо үчүн, биринчи кезекте, серверлердин arduino менен туура туташканын жана эскиз жүктөлгөнүн текшериңиз.
  • Эскиз жүктөлгөндөн кийин IDEди жабууну тактаңыз, андыктан порт pythonго туташуу бекер.
  • Эми Python IDLE менен 'face.py' ачыңыз жана кодду иштетүү үчүн 'F5' басыңыз. Ардуиного туташуу үчүн бир нече секунд талап кылынат, андан кийин сиз веб -камераны агып жаткан терезени көрө алышыңыз керек. Эми код сиздин жүзүңүздү аныктайт жана сервос аны көзөмөлдөйт.
  • Серво объектти жылдырган сайын жылышы керек. Эми жөн гана камераны сервоприводдорго бекиңиз, ошондо ал сервопростор менен бирге жылат.

Рахмат.

Сунушталууда: