Mục lục:

NAIN 1.0 - Robot hình người cơ bản sử dụng Arduino: 6 bước
NAIN 1.0 - Robot hình người cơ bản sử dụng Arduino: 6 bước

Video: NAIN 1.0 - Robot hình người cơ bản sử dụng Arduino: 6 bước

Video: NAIN 1.0 - Robot hình người cơ bản sử dụng Arduino: 6 bước
Video: 🔴 Arduino #2 | Hướng Dẫn Download Cài Đặt Và Sử Dụng Phần Mềm Arduino IDE Bản Mới Nhất 2024, Tháng mười một
Anonim
NAIN 1.0 - Robot hình người cơ bản sử dụng Arduino
NAIN 1.0 - Robot hình người cơ bản sử dụng Arduino

Nain 1.0 về cơ bản sẽ có 5 mô-đun có thể tháo rời-

1) Cánh tay - có thể được điều khiển thông qua Servos.

2) Bánh xe - có thể được điều khiển bằng động cơ một chiều.

3) Chân - Nain sẽ có thể chuyển đổi giữa các bánh xe hoặc chân để di chuyển.

4) Đầu - Đầu của nó có thể được điều khiển theo nhiều kiểu gật đầu khác nhau.

5) Mô-đun máy ảnh- có thể được giao diện để Truy cập nhận dạng khuôn mặt.

Cùng với NAIN này sẽ có thể nói chuyện và tương tác với người dùng và có thể hiển thị cho bạn thời gian bằng đồng hồ có sẵn của nó. Nó sẽ có một điều khiển không dây bằng Wi-fi / Bluetooth.

Bước 1: Các thành phần cần thiết

Các thành phần cần thiết
Các thành phần cần thiết
Các thành phần cần thiết
Các thành phần cần thiết
Các thành phần cần thiết
Các thành phần cần thiết
  1. Động cơ Servo -4
  2. Arduino Mega - 1
  3. Raspberry Pi - 1
  4. Usb Camera -1
  5. Loa -1
  6. Động cơ DC -2
  7. L293D -1
  8. Bộ pin - 1
  9. Bánh xe -2
  10. Bánh xe thầu dầu - 2

Cùng với những thứ này, bạn sẽ cần các dải nhôm vuông để làm thân và các vít và đai ốc để lắp chúng đúng cách.

Bước 2: Cấu trúc cơ thể

Cấu trúc cơ thể
Cấu trúc cơ thể

Cấu trúc thân xe sẽ được làm bằng các thanh nhôm vuông nhẹ giúp lắp ráp dễ dàng.

Hiện tại, hãy lắp ráp chúng như thể hiện trong hình và cũng cắt ra không gian thích hợp để gắn các động cơ servo vào trong các cánh tay.

Gắn một đế gỗ hình lục giác ở phía dưới.

Bên dưới đế gỗ, gắn động cơ DC và bánh xe như chúng tôi làm trong bất kỳ robot theo dòng nào.

Điều thú vị là Thêm hai bánh xe thầu dầu - một ở phía trước và một ở phía sau của robot.

Bước 3: Đấu dây và mã hóa

Hệ thống dây điện và mã hóa
Hệ thống dây điện và mã hóa
Hệ thống dây điện và mã hóa
Hệ thống dây điện và mã hóa

Để kết nối các mô-đun khác nhau, hãy tham khảo mã đính kèm trong phần này.

Đầu tiên, chúng tôi đã thử nghiệm từng mô-đun bằng cách sử dụng mã độc lập và sau đó chúng tôi kết hợp tất cả chúng thành một và điều khiển chuyển động của bánh xe và Cánh tay bằng mô-đun bluetooth.

Bước 4: Raspberry Pi và nhận dạng hình ảnh

Raspberry Pi và Nhận dạng hình ảnh
Raspberry Pi và Nhận dạng hình ảnh
Raspberry Pi và Nhận dạng hình ảnh
Raspberry Pi và Nhận dạng hình ảnh

Nhận dạng hình ảnh được thực hiện bằng Máy ảnh USB và Raspberry Pi.

Để làm được điều đó, bạn sẽ cần cài đặt thư viện OPEN CV trên Pi của mình.

Bạn có thể làm điều đó từ đây -

Sau đó, bạn sẽ cần thực hiện nhận dạng hình ảnh bằng cách sử dụng thác haar.

Bạn có thể làm điều đó từ đây -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Sau khi nghiên cứu liên kết ở trên và làm theo liên kết đó, tôi đã thực hiện một số thay đổi trong mã cuối cùng mà tôi đã sử dụng mà tôi đang dán bên dưới -

MÁY PHÁT ĐIỆN DATASET:

importcv2

cam = cv2. VideoCapture (0)

detector = cv2. CascadeClassifier ('Bộ phân loại / face.xml')

i = 0

bù đắp = 50

name = raw_input ('nhập id của bạn')

trong khi Đúng:

ret, im = cam.read ()

màu xám = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

face = detector.detectMultiScale (xám, scaleFactor = 1.2, minNeighbors = 5, minSize = (100, 100), flags = cv2. CASCADE_SCALE_IMAGE)

for (x, y, w, h) in the face:

i = i + 1

cv2.imwrite ("dataSet / face." + name + '.' + str (i) + ".jpg", gray [y-offset: y + h + offset, x-offset: x + w + offset])

cv2.rectangle (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])

if cv2.waitKey (100) & 0xFF == ord ('q'):

nghỉ

# break nếu số lượng mẫu nhiều hơn 20

elif (i> 20):

nghỉ

cam.release ()

cv2.destroyAllWindows ()

Nó sẽ tạo ra một tập hợp các bức ảnh của bạn sẽ được sử dụng để xác thực.

TRAINER:

importcv2, hệ điều hành

nhập numpy dưới dạng np

từ Hình ảnh nhập PIL

Recogzer = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Phân loại / face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

path = 'dataSet'

def get_images_and_labels (đường dẫn):

image_paths = [os.path.join (path, f) for f in os.listdir (path)]

# hình ảnh sẽ chứa hình ảnh khuôn mặt

hình ảnh =

# nhãn sẽ chứa nhãn được gán cho hình ảnh

nhãn =

cho image_path trong image_paths:

# Đọc hình ảnh và chuyển đổi sang thang độ xám

image_pil = Image.open (image_path).convert ('L')

# Chuyển đổi định dạng hình ảnh thành mảng numpy

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

# Lấy nhãn của hình ảnh

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

# nbr = int (''. join (str (ord (c)) for c in nbr))

in nbr

# Phát hiện khuôn mặt trong ảnh

face = faceCascade.detectMultiScale (hình ảnh)

# Nếu khuôn mặt được phát hiện, hãy nối khuôn mặt vào hình ảnh và nhãn vào nhãn

for (x, y, w, h) in the face:

images.append (hình ảnh [y: y + h, x: x + w])

label.append (nbr)

cv2.imshow ("Thêm khuôn mặt vào tập trang …", hình ảnh [y: y + h, x: x + w])

cv2.waitKey (10)

# return danh sách hình ảnh và danh sách nhãn

trả lại hình ảnh, nhãn

hình ảnh, nhãn = get_images_and_labels (đường dẫn)

cv2.imshow ('test', hình ảnh [0])

cv2.waitKey (1)

Recogzer.train (hình ảnh, np.array (nhãn))

Recogzer.save ('trainer / trainr.yml')

cv2.destroyAllWindows ()

NGƯỜI PHÁT HIỆN

importcv2

nhập numpy dưới dạng np

nhập hệ điều hành

c = 0

Recogzer = cv2.face.createLBPHFaceRecognizer ()

Recogzer.load ('trainer / trainr.yml')

cascadePath = "Phân loại / face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

fontcale = 1

fontcolor = (255, 255, 255)

trong khi Đúng:

ret, im = cam.read ()

màu xám = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

face = faceCascade.detectMultiScale (xám, 1,2, 5)

for (x, y, w, h) in the face:

cv2.rectangle (im, (x-50, y-50), (x + w + 50, y + h + 50), (225, 0, 0), 2)

Id = Recogzer.p Dự đoán (xám [y: y + h, x: x + w])

nếu (Id <70):

nếu (Id == 1):

Id = "Shashank"

elif (Id == 2):

if (c == 0):

Id = "Shivam"

c = c + 1

os.system ("đặc biệt 'Chào mừng bạn đã được cấp quyền truy cập Shivam'")

khác:

Id = "Shivam"

khác:

Id = "Không xác định"

cv2.putText (im, str (Id), (x, y + h), fontface, fontcale, fontcolor)

cv2.imshow ('im', im)

if cv2.waitKey (10) & 0xFF == ord ('q'):

nghỉ

cam.release ()

cv2.destroyAllWindows ()

Bước 5: Màn hình LCD và loa

Tôi cũng đã sử dụng Màn hình LED I2C và loa.

Đèn LED được điều khiển thông qua Arduino Mega và mã của nó được đưa ra trong mã cuối cùng.

Đối với Loa, nó được kết nối với Raspberry Pi và sử dụng Tiện ích eSpeak.

Bạn có thể tìm tài liệu tham khảo của nó tại đây -

Bước 6: Các bước cuối cùng

Lắp ráp mọi thứ và sẵn sàng cho vụ nổ.

Đề xuất: