Mundarija:
- 1 -qadam: Sizga kerak bo'lgan narsalar:
- 2-qadam: Python muhitini sozlash:
- 3 -qadam: Python skript:
- 4 -qadam: Arduino kodi:
- 5-qadam: Panjara mexanizmi:-
- 6 -qadam: Ulanishlar:
- 7 -qadam: TEST:
Video: ARDUINO dan foydalangan holda yuzni kuzatish !!!: 7 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:23
Oldingi yo'riqnomada men "pyserial" moduli yordamida Arduino va Python o'rtasida qanday muloqot qilish va LEDni boshqarish haqida gaplashdim. Agar siz uni ko'rmagan bo'lsangiz, mana bu erda ko'ring: ARDUINO & PYTHON O'rtasidagi Aloqa!
Va qanday qilib siz ob'ektning rangini aniqlay olasiz va uni ekranda kuzatib borishingiz mumkin, bu erda tekshiring: OPENCV VA PITONDAN QO'LLANGAN Rangni aniqlash.
Bu yo'riqnomada men sizga Arduino va Python yordamida yuzlarni qanday kuzatishni va kamerani yuzga kuzatishni ko'rsataman. Bu qiyin tuyulishi mumkin, lekin menga ishoning, unday emas, sizga Arduino va Python haqida asosiy bilim kerak.
Shunday qilib, boshlaylik …
1 -qadam: Sizga kerak bo'lgan narsalar:
Talablar minimal. Bu erda men sizga kerak bo'lgan narsalarning ro'yxatini taqdim etdim:
Uskuna talablari:
- Arduino UNO (Amazon AQSh / Amazon EU)
- Veb -kamera (Amazon AQSh / Amazon EU)
- Servos x 2 (Amazon AQSh / Amazon EU)
- Non paneli (Amazon AQSh / Amazon EU)
- Servo Pan Tilt to'plami (Amazon AQSh / Amazon EU)
Dastur talablari:
- Python 2.7 (O'rnatilishi kerak, odatda Linux operatsion tizimi oldindan o'rnatilgan)
- OpenCV (Siz uni alohida yuklab olishingiz yoki "pip install" yordamida o'rnatishingiz mumkin)
- Pyserial (pip bilan o'rnatilishi mumkin)
- uyqusiz
- Haarcascade.
Hamma narsa yig'ilgandan so'ng, biz o'rnatish bosqichiga o'tamiz …
2-qadam: Python muhitini sozlash:
Python -ni o'rnatish:
Shunday qilib, birinchi navbatda, biz Python 2.7 ni ishga tushiramiz. Buning uchun avval python 2.7.14 -ni yuklab oling va o'rnating. To'g'ri o'rnatilganligini tekshirish uchun Goto: Windows qidiruvi >> "IDLE" yozing >> Enter tugmasini bosing. Python Shell paydo bo'lishi kerak.
YoKI
Qidiruvga "CMD" kiriting va buyruq satrini ochish uchun "Enter" ni bosing. "Python" CMD turiga kiriting va "Enter" tugmasini bosing, Python interfeysi ko'rsatilishi kerak.
Agar siz CMD -da xato ko'rsangiz, vahima qo'ymang, ehtimol siz muhit o'zgaruvchisini o'rnatishingiz kerak bo'ladi. Atrof -muhit o'zgaruvchilarini sozlash uchun siz bu erda o'qishingiz mumkin.
Pythonda "pyserial", "OpenCV" va "numpy" ni o'rnatish:
Ushbu modullarni o'rnatish uchun biz pip install dan foydalanamiz, Avval CMD-ni oching va quyidagi kodlarni kiriting:-
pip o'rnatish ketma -ket
pip install opencv-python> pip install numpy
bu buyruqlar kerakli modullarni o'rnatadi. Endi biz kodlash qismiga o'tishimiz mumkin …
3 -qadam: Python skript:
Kod yozishni boshlashdan oldin, birinchi navbatda, yangi papkani yaratish kerak, chunki barcha kodlar bitta papkada saqlanishi kerak. Shunday qilib, yangi papka yarating, xohlagan narsangizga nom bering. va pastdan "Haarcascade" ni yuklab oling va uni papkaga joylashtiring.
Endi bloknotni oching va quyida berilgan skriptni yozing, uni haarcascade bilan bir xil papkada 'face.py' sifatida saqlang. (Siz quyidagi faylni taqdim etgan kodni yuklab olishingiz mumkin):
#barcha kerakli modullarni import qiling
import numpy sifatida np import ketma -ket import vaqti import sys import cv2 #Setup Arduino uchun aloqa yo'li ('COM5' o'rniga sizning arduino ulangan portni qo'ying) arduino = serial. Serial ('COM5', 9600) time.sleep (2) chop etish ("Arduino -ga ulangan …") #yuzni aniqlash uchun Haarcascade -ni import qilish face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Veb -kameradan video oqimini olish uchun. cap = cv2. VideoCapture (0) #Rasmni o'qing, kulrang tasvirga aylantiring va 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) kulrang = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) yuzlar = face_cascade.detectMultiScale (kulrang, 1.3) # yuzni aniqlang va uning atrofida to'rtburchaklar qiling. yuzidagi (x, y, w, h) uchun: cv2. to'rtburchak (img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = kulrang [y: y+h, x: x+w] roi_color = img [y: y+h, x: x+w] arr = {y: y+h, x: x+w} chop etish (arr) chop etish ('X: '+str (x)) chop etish (' Y: '+str (y)) chop etish (' x+w: '+str (x+w)) chop etish (' y+h: '+str (y+h))) # Roi markazi (To'rtburchak) xx = int (x+(x+h))/2 yy = int (y+(y+w))/2 bosma (xx) bosma (yy) markazi = (xx, yy) # ma'lumotlarni arduino printga yuborish ("To'rtburchak markazi:", markaz) data = "X {0: d} Y {1: d} Z". format (xx, yy) chop etish ("chiqish = '" +ma'lumotlar +) "'") arduino.write (ma'lumotlar) #Oqimni ko'rsatish. cv2.imshow ('img', img) #Ijro qilishni tugatish uchun "Esc" tugmasini bosing k = cv2.waitKey (30) & 0xff agar k == 27: tanaffus
Bu bajarilgandan so'ng, arduino kodini yozishga o'ting …
4 -qadam: Arduino kodi:
Python skripti tayyor bo'lgandan so'ng, servoni boshqarish uchun bizga arduino eskizi kerak bo'ladi. Quyidagi kodga murojaat qiling, uni Arduino IDE -ga joylashtiring va "servo.ino" sifatida saqlang. kodni yuklang va ulanish uchun keyingi bosqichga o'ting.
(Yuklab olinadigan fayl quyida keltirilgan)
#qo'shing
Servo servoVer; // Vertikal Servo Servo servoHor; // Gorizontal Servo int x; int y; int prevX; int prevY; void setup () {Serial.begin (9600); servoVer.attach (5); // Vertikal Servo pin 5 servoHor.attach (6) ga ulang; // 6 -gachasi servoVer.write -ga gorizontal Servo ulang (90); servoHor.write (90); } void Pos () {if (prevX! = x || prevY! = y) {int servoX = map (x, 600, 0, 70, 179); int servoY = xarita (y, 450, 0, 179, 95); servoX = min (servoX, 179); servoX = maksimal (servoX, 70); servoY = min (servoY, 179); servoY = maksimal (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-qadam: Panjara mexanizmi:-
Men Pan-Tilt uchun tayyor to'plamdan foydalandim. Agar xohlasangiz, uni yog'ochdan/plastmassadan yoki hatto 3D bosib chiqarishdan o'zingiz qilishingiz mumkin.
Men ishlatganim juda arzon va yig'ish juda oson. Agar siz buni qanday qilishni ko'rsatma olishni xohlasangiz, uni bu erda topishingiz mumkin.
6 -qadam: Ulanishlar:
O'chirish sxemasi juda oddiy. Arduino -ga ikkita servo ulang.
- 5 -pin uchun vertikal
- 6 -gachasi gorizontal
- Quvvat +5V gacha
- GND uchun asos
Malumot uchun elektron sxemasini tekshiring.
7 -qadam: TEST:
- Hamma narsa bajarilgandan so'ng, oxirgi narsa - uning ishlayotganligini tekshirish. Sinash uchun avval servolarning arduino -ga to'g'ri ulanganligiga va eskiz yuklanganligiga ishonch hosil qiling.
- Eskiz yuklangandan so'ng, IDE -ni yopganingizga ishonch hosil qiling, shunda port pythonga ulanishi mumkin.
- Endi "face.py" ni Python IDLE bilan oching va kodni ishlatish uchun "F5" tugmasini bosing. Arduino -ga ulanish uchun bir necha soniya kerak bo'ladi, shunda siz veb -kamera oqayotgan oynani ko'rishingiz kerak. Endi kod sizning yuzingizni aniqlaydi va servolar uni kuzatib boradi.
- Ob'ektni harakatlantirganda Servo harakatlanishi kerak. Endi kamerani servolarga ulang, shunda u servo bilan birga harakatlanadi.
Rahmat.
Tavsiya:
Arduino -dan foydalangan holda Google yordamchisi bilan nazorat uyining chiroqlari: 7 qadam
Arduino yordamida Google Assistant bilan nazorat uyining chiroqlari: (Yangilanish 2020 yil 22-avgustda: Bu ko'rsatma 2 yoshda va ba'zi uchinchi tomon ilovalariga asoslangan. Ularning tarafidagi har qanday o'zgarishlar bu loyihani ishlamaslikka olib kelishi mumkin. Bu mumkin yoki bo'lmasligi mumkin) hozir ishlayapsiz, lekin siz uni ma'lumotnoma sifatida kuzatib, o'zgartirishingiz mumkin
Arduino Mega 2560 va IoT -dan foydalangan holda yuk ko'tarish uchun dvigatellarni boshqarish tizimi: 8 qadam (rasmlar bilan)
Arduino Mega 2560 va IoT yordamida dasturlarni ko'tarish uchun dvigatellarni boshqarish tizimi: Hozirgi vaqtda IoT asosidagi mikrokontroller sanoat dasturida keng qo'llanilmoqda. Iqtisodiy jihatdan ular kompyuter o'rniga ishlatiladi. Loyihaning maqsadi bizni to'liq raqamli boshqarish, ma'lumotlarni qayd qilish va 3 fazali indüksiyon motorini monitoring qilishdir
Arduino -dan foydalangan holda uy qurilishi avtomatik suv quyish havzasi: 4 qadam
Arduino -dan foydalangan holda uy qurilishi avtomatik suv quyish havzasi: Ushbu dizaynning maqsadi, qo'lingizni cho'zish paytida cho'milish paytida, musluğun suvini to'kib tashlamasdan, musluğun ichidagi suvni to'kib tashlashdir. Buni amalga oshirish uchun OpenSurce Arduino nano -platasi ishlatiladi
NodeMCU (Arduino), Google Firebase va Laravel -dan foydalangan holda voqea haqida xabarlar: 4 qadam (rasmlar bilan)
NodeMCU (Arduino), Google Firebase va Laravel -dan foydalangan holda voqea haqida real vaqtda xabarnomalar: Agar veb -saytingizda xatti -harakatlar amalga oshirilsa, lekin sizga elektron pochta manzili to'g'ri kelmasa, sizga xabar berishni xohlaganmisiz? Har safar sotuvda ovoz yoki qo'ng'iroqni eshitishni xohlaysizmi? Yoki paydo bo'lganligi sababli darhol sizning e'tiboringizga kerak bo'ladi
Arduino Pro Mini -dan foydalangan holda "Jimikky Kammal" ohang generatori: 5 qadam
Arduino Pro Mini -dan foydalangan holda "Jimikky Kammal" ohang generatori: Bu Arduino Pro Mini -dan foydalangan holda oddiy ohang generatori loyihasi. Super xit qo'shig'ining bir qismi " Jimikki Kammal " " Velipadinte Pusthakam " filmidan. monotonik tarzda ishlab chiqilgan. Musiqiy notalar tabiatda silliq va dumaloq sinus shaklida uchraydi