جدول المحتويات:

NAIN 1.0 - الإنسان الآلي الأساسي باستخدام Arduino: 6 خطوات
NAIN 1.0 - الإنسان الآلي الأساسي باستخدام Arduino: 6 خطوات

فيديو: NAIN 1.0 - الإنسان الآلي الأساسي باستخدام Arduino: 6 خطوات

فيديو: NAIN 1.0 - الإنسان الآلي الأساسي باستخدام Arduino: 6 خطوات
فيديو: #Shorts مستوى مساحة الحالي خلال رمضان 💪🏼🔥 2024, شهر نوفمبر
Anonim
NAIN 1.0 - الإنسان الآلي الأساسي باستخدام Arduino
NAIN 1.0 - الإنسان الآلي الأساسي باستخدام Arduino

سوف يحتوي Nain 1.0 بشكل أساسي على 5 وحدات قابلة للفصل-

1) الذراع - والتي يمكن التحكم فيها عن طريق الماكينات.

2) العجلات - التي يمكن التحكم فيها بمحركات التيار المستمر.

3) الساق - سيتمكن Nain من التبديل بين العجلات أو الأرجل للحركة.

4) الرأس - يمكن التحكم في رأسه لإيماءات مختلفة.

5) وحدة الكاميرا - التي يمكن ربطها للوصول إلى التعرف على الوجوه.

إلى جانب هذا ، سيكون NAIN قادرًا على التحدث والتفاعل مع المستخدمين ويمكنه إظهار الوقت لك من خلال ساعته المدمجة. سيكون لها تحكم لاسلكي باستخدام Wi-fi / Bluetooth.

الخطوة 1: المكونات المطلوبة

المكونات المطلوبة
المكونات المطلوبة
المكونات المطلوبة
المكونات المطلوبة
المكونات المطلوبة
المكونات المطلوبة
  1. محركات مؤازرة -4
  2. اردوينو ميجا - 1
  3. Raspberry Pi - 1
  4. كاميرا USB -1
  5. المتحدث -1
  6. DC موتورز -2
  7. L293D -1
  8. حزمة البطارية - 1
  9. عجلات -2
  10. عجلات الخروع - 2

بالإضافة إلى ذلك ، ستحتاج إلى شرائط مربعة من الألومنيوم لصنع الجسم والأشكال والصواميل لتناسبها بشكل صحيح.

الخطوة 2: بنية الجسم

بنية الجسم
بنية الجسم

يتكون هيكل الجسم من قضبان مربعة من الألومنيوم خفيفة الوزن تساعد في تجميعه بسهولة.

اعتبارًا من الآن قم بتجميعهم كما هو موضح في الشكل وقم أيضًا بقطع المساحات المناسبة لمحركات المؤازرة ليتم تثبيتها في الذراعين.

إرفاق قاعدة خشبية سداسية في الجزء السفلي.

أسفل القاعدة الخشبية ، قم بإرفاق محركات وعجلات DC كما نفعل في أي روبوت تابع للخطوط.

ومن المثير للاهتمام ، إضافة عجلتين من العجلات - واحدة في الأمام والأخرى في الجزء الخلفي من الروبوت.

الخطوة 3: الأسلاك والترميز

الأسلاك والترميز
الأسلاك والترميز
الأسلاك والترميز
الأسلاك والترميز

لتوصيل الوحدات المختلفة ، راجع الرموز المرفقة في هذا الجزء.

أولاً ، اختبرنا كل وحدة باستخدام أكواد قائمة بذاتها ثم قمنا بدمجها جميعًا في واحدة وتحكمنا في حركة العجلات والأذرع باستخدام وحدة بلوتوث.

الخطوة 4: Raspberry Pi والتعرف على الصور

Raspberry Pi والتعرف على الصور
Raspberry Pi والتعرف على الصور
Raspberry Pi والتعرف على الصور
Raspberry Pi والتعرف على الصور

يتم التعرف على الصور باستخدام كاميرا USB و Raspberry Pi.

لذلك ، ستحتاج إلى تثبيت مكتبة OPEN CV على Pi الخاص بك.

يمكنك القيام بذلك من هنا -

ثم سوف تحتاج إلى إجراء التعرف على الصور باستخدام haar cascade.

يمكنك القيام بذلك من هنا -

بعد دراسة الرابط أعلاه وبعد ذلك ، أجريت بعض التغييرات في الكود النهائي الذي استخدمته وألصقه أدناه -

مولد مجموعة البيانات:

استيراد

cam = cv2. VideoCapture (0)

detector = cv2. CascadeClassifier ('المصنفات / face.xml')

أنا = 0

الإزاحة = 50

name = raw_input ('أدخل معرفك')

احيانا صحيح:

ret، im = cam.read ()

الرمادي = cv2.cvtColor (im ، cv2. COLOR_BGR2GRAY)

الوجوه = detector.detectMultiScale (رمادي ، scaleFactor = 1.2 ، min الجيران = 5 ، minSize = (100 ، 100) ، الأعلام = cv2. CASCADE_SCALE_IMAGE)

لـ (س ، ص ، ث ، ح) في الوجوه:

أنا = أنا + 1

cv2.imwrite ("dataSet / face." + name + '.' + str (i) + ".jpg" ، رمادي [y-offset: y + h + offset ، x-offset: x + w + offset])

مستطيل cv2. (im ، (x-50 ، y-50) ، (x + w + 50 ، y + h + 50) ، (225 ، 0 ، 0) ، 2)

cv2.imshow ('im'، im [y-offset: y + h + offset، x-offset: x + w + offset])

إذا كان cv2.waitKey (100) & 0xFF == ord ('q'):

استراحة

# فاصل إذا كان رقم العينة أكثر من 20

إليف (أنا> 20):

استراحة

cam.release ()

cv2.destroyAllWindows ()

سيتم إنشاء مجموعة بيانات من صورك التي سيتم استخدامها للمصادقة.

مدرب:

importcv2 ، نظام التشغيل

استيراد numpy كـ np

من استيراد صورة PIL

أداة التعرف = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "مصنفات / face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath) ؛

المسار = "مجموعة البيانات"

def get_images_and_labels (المسار):

image_paths = [os.path.join (مسار ، و) لـ f في os.listdir (مسار)]

ستحتوي # صورة على صور للوجه

الصور =

# ستحتوي على التسمية التي تم تعيينها للصورة

تسميات =

لـ image_path في image_paths:

# اقرأ الصورة وتحويلها إلى تدرج الرمادي

image_pil = Image.open (image_path). تحويل ('L')

# تحويل تنسيق الصورة إلى مصفوفة numpy

image = np.array (image_pil، 'uint8')

# احصل على ملصق الصورة

nbr = int (os.path.split (image_path) [- 1].split (".") [1].replace ("face-"، ""))

# nbr = int (''. انضم (str (ord (c)) لـ c في nbr))

طباعة nbr

# كشف الوجه في الصورة

الوجوه = faceCascade.detectMultiScale (صورة)

# إذا تم اكتشاف الوجه ، فقم بإلحاق الوجه بالصور والتسمية بالملصقات

لـ (س ، ص ، ث ، ح) في الوجوه:

images.append (صورة [y: y + h ، x: x + w])

labels.append (nbr)

cv2.imshow ("إضافة الوجوه إلى مجموعة التدريب …" ، الصورة [y: y + h ، x: x + w])

cv2.waitKey (10)

# إرجاع قائمة الصور وقائمة التسميات

إرجاع الصور والتسميات

الصور ، الملصقات = get_images_and_labels (المسار)

cv2.imshow ('test'، images [0])

cv2.waitKey (1)

أداة التعرف. القطار (الصور ، np.array (التسميات))

Recognizer.save ("trainer / trainer.yml")

cv2.destroyAllWindows ()

كاشف

استيراد

استيراد numpy كـ np

استيراد نظام التشغيل

ج = 0

أداة التعرف = cv2.face.createLBPHFaceRecognizer ()

Recognizer.load ("trainer / trainer.yml")

cascadePath = "مصنفات / face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath) ؛

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

fontscale = 1

لون الخط = (255 ، 255 ، 255)

احيانا صحيح:

ret، im = cam.read ()

الرمادي = cv2.cvtColor (im ، cv2. COLOR_BGR2GRAY)

الوجوه = faceCascade.detectMultiScale (رمادي ، 1.2 ، 5)

لـ (س ، ص ، ث ، ح) في الوجوه:

مستطيل cv2. (im ، (x-50 ، y-50) ، (x + w + 50 ، y + h + 50) ، (225 ، 0 ، 0) ، 2)

المعرّف = Recognizer.predict (رمادي [y: y + h، x: x + w])

إذا (معرف <70):

إذا (المعرف == 1):

المعرف = "شاشانك"

إليف (المعرف == 2):

إذا (ج == 0):

المعرف = "شيفام"

ج = ج + 1

os.system ("تم منح وصول Shivam الترحيبي من espeak '")

آخر:

المعرف = "شيفام"

آخر:

المعرف = "غير معروف"

cv2.putText (im، str (Id)، (x، y + h)، fontface، fontscale، fontcolor)

cv2.imshow ('im'، im)

إذا كان cv2.waitKey (10) & 0xFF == ord ('q'):

استراحة

cam.release ()

cv2.destroyAllWindows ()

الخطوة 5: شاشة LCD ومكبر الصوت

لقد استخدمت أيضًا شاشة I2C LED ومكبر صوت.

يتم التحكم في مؤشر LED عبر Arduino Mega ويرد الرمز الخاص به في الكود النهائي.

بالنسبة لمكبر الصوت ، فهو متصل بـ Raspberry Pi ويستخدم eSpeak Utility.

يمكنك العثور على مرجعها هنا -

الخطوة السادسة: الخطوات النهائية

اجمع كل شيء واستعد للانفجار.

موصى به: