Mục lục:

HackerBox 0024: Vision Quest: 11 bước
HackerBox 0024: Vision Quest: 11 bước

Video: HackerBox 0024: Vision Quest: 11 bước

Video: HackerBox 0024: Vision Quest: 11 bước
Video: HackerBox #0024: Vision Quest 2024, Tháng mười một
Anonim
HackerBox 0024: Vision Quest
HackerBox 0024: Vision Quest

Vision Quest - Tháng này, các hacker HackerBox đang thử nghiệm với Computer Vision và Servo Motion Tracking. Có thể hướng dẫn này chứa thông tin về cách làm việc với HackerBox # 0024 mà bạn có thể lấy tại đây khi nguồn cung cấp cuối cùng. Ngoài ra, nếu bạn muốn nhận được một HackerBox như thế này ngay trong hộp thư của mình mỗi tháng, hãy đăng ký tại HackerBoxes.com và tham gia cuộc cách mạng!

Các chủ đề và mục tiêu học tập cho HackerBox 0024:

  • Thử nghiệm với Thị giác máy tính
  • Thiết lập OpenCV (Thị giác máy tính)
  • Lập trình Arduino Nano từ Arduino IDE
  • Điều khiển động cơ Servo bằng Arduino Nano
  • Lắp ráp chảo cơ học và lắp ráp nghiêng
  • Điều khiển Chuyển động Xoay và Nghiêng bằng Vi điều khiển
  • Thực hiện theo dõi khuôn mặt bằng OpenCV

HackerBoxes là dịch vụ hộp đăng ký hàng tháng dành cho công nghệ máy tính và điện tử DIY. Chúng tôi là những người có sở thích, nhà sản xuất và thử nghiệm. Chúng ta là những kẻ mơ mộng. HACK KẾ HOẠCH!

Bước 1: HackerBox 0024: Nội dung hộp

HackerBox 0024: Nội dung hộp
HackerBox 0024: Nội dung hộp
  • Thẻ tham chiếu có thể thu thập được của HackerBoxes # 0024
  • Ba giá đỡ Pan và lắp ráp nghiêng
  • Hai Servos MG996R với Phụ kiện
  • Hai bộ ghép nối Servo tròn bằng nhôm
  • Arduino Nano V3 - 5V, 16MHz, MicroUSB
  • Lắp ráp máy ảnh kỹ thuật số với cáp USB
  • Ba ống kính với ngàm kẹp đa năng
  • Đèn bút kiểm tra y tế
  • Người nhảy Dupont Nam / Nữ
  • Cáp MicroUSB
  • Decal OpenCV độc quyền
  • Decal Dia de Muertos độc quyền

Một số điều khác sẽ hữu ích:

  • Phế liệu ván gỗ nhỏ làm đế máy ảnh
  • Hàn sắt, thuốc hàn và các dụng cụ hàn cơ bản
  • Máy tính để chạy các công cụ phần mềm

Quan trọng nhất, bạn sẽ cần cảm giác phiêu lưu, tinh thần tự làm và sự tò mò của hacker. Thiết bị điện tử Hardcore DIY không phải là một mục tiêu tầm thường và chúng tôi sẽ không phụ lòng bạn. Mục tiêu là sự tiến bộ, không phải sự hoàn hảo. Khi bạn kiên trì và tận hưởng cuộc phiêu lưu, bạn có thể thấy rất nhiều sự hài lòng khi học công nghệ mới và hy vọng sẽ có được một số dự án hoạt động. Chúng tôi khuyên bạn nên thực hiện từng bước một cách chậm rãi, chú ý đến các chi tiết và đừng bao giờ ngần ngại yêu cầu sự giúp đỡ.

CÂU HỎI THƯỜNG GẶP: Chúng tôi muốn yêu cầu tất cả các thành viên HackerBox một ân huệ thực sự lớn. Vui lòng dành vài phút để xem lại Câu hỏi thường gặp trên trang web HackerBoxes trước khi liên hệ với bộ phận hỗ trợ. Mặc dù chúng tôi rõ ràng muốn giúp tất cả các thành viên nhiều khi cần thiết, nhưng hầu hết các email hỗ trợ của chúng tôi đều liên quan đến các câu hỏi đơn giản được giải đáp rất rõ ràng trong Câu hỏi thường gặp. Cảm ơn bạn đa hiểu!

Bước 2: Thị giác máy tính

Tầm nhìn máy tính
Tầm nhìn máy tính

Thị giác máy tính là một lĩnh vực liên ngành giải quyết cách máy tính có được sự hiểu biết cấp cao từ các hình ảnh hoặc video kỹ thuật số. Từ góc độ kỹ thuật, thị giác máy tính tìm cách tự động hóa các nhiệm vụ mà hệ thống thị giác của con người có thể thực hiện. Là một ngành khoa học, thị giác máy tính liên quan đến lý thuyết đằng sau các hệ thống nhân tạo trích xuất thông tin từ hình ảnh. Dữ liệu hình ảnh có thể ở nhiều dạng, chẳng hạn như chuỗi video, chế độ xem từ nhiều camera hoặc dữ liệu đa chiều từ máy quét y tế. Là một ngành công nghệ, thị giác máy tính tìm cách áp dụng các lý thuyết và mô hình của nó để xây dựng các hệ thống thị giác máy tính. Các lĩnh vực phụ của thị giác máy tính bao gồm tái tạo cảnh, phát hiện sự kiện, theo dõi video, nhận dạng đối tượng, ước tính tư thế 3D, học tập, lập chỉ mục, ước tính chuyển động và phục hồi hình ảnh.

Điều thú vị cần lưu ý là thị giác máy tính có thể được coi là nghịch đảo của đồ họa máy tính.

Bước 3: Xử lý và OpenCV

Xử lý và OpenCV
Xử lý và OpenCV

Xử lý là một cuốn sách phác thảo phần mềm linh hoạt và là một ngôn ngữ để học cách viết mã trong bối cảnh của nghệ thuật thị giác. Quá trình xử lý đã thúc đẩy khả năng hiểu biết về phần mềm trong nghệ thuật thị giác và hiểu biết về thị giác trong công nghệ. Có hàng chục nghìn sinh viên, nghệ sĩ, nhà thiết kế, nhà nghiên cứu và những người có sở thích sử dụng Xử lý để học tập và tạo mẫu.

OpenCV (Open Source Computer Vision Library) là một thư viện phần mềm máy tính và thị giác máy tính mã nguồn mở. OpenCV được xây dựng để cung cấp một cơ sở hạ tầng chung cho các ứng dụng thị giác máy tính và để tăng tốc việc sử dụng cảm giác máy trong các sản phẩm thương mại. Thư viện OpenCV có hơn 2500 thuật toán được tối ưu hóa, bao gồm một tập hợp toàn diện của cả thuật toán máy tính và thị giác máy tính cổ điển và hiện đại. Các thuật toán này có thể được sử dụng để phát hiện và nhận dạng khuôn mặt, xác định đối tượng, phân loại hành động của con người trong video, theo dõi chuyển động của camera, theo dõi các đối tượng chuyển động, v.v.

Cài đặt OpenCV trong phần Xử lý từ menu Tệp> Ví dụ bằng cách chọn “Thêm ví dụ”, sau đó trong tab Thư viện cài đặt cả thư viện Video và OpenCV. Mở ví dụ LiveCamTest để theo dõi khuôn mặt cơ bản. Xem một số ví dụ OpenCV khác để xử lý tại đây.

Nhiêu tai nguyên hơn:

Bắt đầu với Thị giác Máy tính là một dự án sách cung cấp một điểm khởi đầu dễ dàng để thử nghiệm sáng tạo với Thị giác máy tính. Nó giới thiệu mã và các khái niệm cần thiết để xây dựng các dự án thị giác máy tính.

Lập trình Thị giác Máy tính với Python là một cuốn sách của O'Reilly trên PCV, một mô-đun Python mã nguồn mở dành cho thị giác máy tính.

Học OpenCV

Thị giác máy tính: Thuật toán và ứng dụng

Thành thạo OpenCV

Khóa học Stanford CS231n Mạng thần kinh chuyển đổi để nhận dạng hình ảnh (16 video)

Chris Urmson TED Talk Cách một chiếc ô tô không người lái nhìn thấy đường

Bước 4: Nền tảng vi điều khiển Arduino Nano

Nền tảng vi điều khiển Arduino Nano
Nền tảng vi điều khiển Arduino Nano

Chúng tôi có thể sử dụng bất kỳ nền tảng microntroller thông thường nào để điều khiển các servo trong giá treo máy ảnh xoay và nghiêng của chúng tôi. Arduino Nano là một bo mạch Arduino thu nhỏ, thân thiện với bề mặt, thân thiện với bảng mạch và có USB tích hợp. Nó có đầy đủ tính năng và dễ dàng để hack.

Đặc trưng:

  • Bộ vi điều khiển: Atmel ATmega328P
  • Điện áp: 5V
  • Chân I / O kỹ thuật số: 14 (6 PWM)
  • Chân đầu vào tương tự: 8
  • Dòng điện DC trên mỗi chân I / O: 40 mA
  • Bộ nhớ Flash: 32 KB (2KB cho bộ nạp khởi động)
  • SRAM: 2 KB
  • EEPROM: 1 KB
  • Tốc độ đồng hồ: 16 MHz
  • Kích thước: 17mm x 43mm

Biến thể đặc biệt này của Arduino Nano là thiết kế Robotdyn màu đen. Giao diện bằng cổng MicroUSB trên bo mạch tương thích với cùng loại cáp MicroUSB được sử dụng với nhiều điện thoại di động và máy tính bảng.

Arduino Nanos có chip cầu nối USB / Serial tích hợp. Trên biến thể cụ thể này, chip cầu nối là CH340G. Lưu ý rằng có nhiều loại chip cầu nối USB / Serial khác được sử dụng trên các loại bảng Arduino khác nhau. Các chip này cho phép bạn sử dụng cổng USB của máy tính để giao tiếp với giao diện nối tiếp trên chip xử lý của Arduino.

Hệ điều hành của máy tính yêu cầu Trình điều khiển thiết bị để giao tiếp với chip USB / Serial. Trình điều khiển cho phép IDE giao tiếp với bảng Arduino. Trình điều khiển thiết bị cụ thể cần thiết phụ thuộc vào cả phiên bản hệ điều hành và loại chip USB / Serial. Đối với chip CH340 USB / Serial, có sẵn các trình điều khiển cho nhiều hệ điều hành (UNIX, Mac OS X hoặc Windows). Nhà sản xuất CH340 cung cấp các trình điều khiển đó ở đây.

Khi bạn lần đầu tiên cắm Arduino Nano vào cổng USB của máy tính, đèn nguồn màu xanh lá cây sẽ bật sáng và ngay sau đó đèn LED màu xanh lam sẽ bắt đầu nhấp nháy chậm. Điều này xảy ra vì Nano được tải sẵn chương trình BLINK, đang chạy trên Arduino Nano hoàn toàn mới.

Bước 5: Môi trường phát triển tích hợp Arduino (IDE)

Môi trường phát triển tích hợp Arduino (IDE)
Môi trường phát triển tích hợp Arduino (IDE)

Nếu bạn chưa cài đặt Arduino IDE, bạn có thể tải xuống từ Arduino.cc

Nếu bạn muốn có thêm thông tin giới thiệu để làm việc trong hệ sinh thái Arduino, chúng tôi khuyên bạn nên xem hướng dẫn cho Hội thảo dành cho người mới bắt đầu HackerBoxes.

Cắm Nano vào cáp MicroUSB và đầu còn lại của cáp vào cổng USB trên máy tính, khởi chạy phần mềm Arduino IDE, chọn cổng USB thích hợp trong IDE bên dưới công cụ> cổng (có thể là tên có "wchusb" trong đó). Cũng chọn "Arduino Nano" trong IDE dưới công cụ> bảng.

Cuối cùng, tải lên một đoạn mã ví dụ:

Tệp-> Ví dụ-> Khái niệm cơ bản-> Nhấp nháy

Đây thực sự là mã đã được tải trước vào Nano và sẽ chạy ngay bây giờ để từ từ nhấp nháy đèn LED màu xanh lam. Theo đó, nếu chúng ta tải mã ví dụ này, sẽ không có gì thay đổi. Thay vào đó, hãy sửa đổi mã một chút.

Nhìn kỹ hơn, bạn có thể thấy rằng chương trình bật đèn LED, đợi 1000 mili giây (một giây), tắt đèn LED, đợi thêm một giây và sau đó thực hiện lại tất cả - mãi mãi.

Sửa đổi mã bằng cách thay đổi cả hai câu lệnh "delay (1000)" thành "delay (100)". Sửa đổi này sẽ làm cho đèn LED nhấp nháy nhanh hơn gấp mười lần, phải không?

Hãy tải mã đã sửa đổi vào Nano bằng cách nhấp vào nút TẢI LÊN (biểu tượng mũi tên) ngay phía trên mã đã sửa đổi của bạn. Xem mã bên dưới để biết thông tin trạng thái: "biên dịch" và sau đó "tải lên". Cuối cùng, IDE sẽ cho biết "Tải lên hoàn tất" và đèn LED của bạn sẽ nhấp nháy nhanh hơn.

Nếu vậy, xin chúc mừng! Bạn vừa hack đoạn mã nhúng đầu tiên của mình.

Sau khi phiên bản nhấp nháy nhanh của bạn được tải và chạy, tại sao không xem bạn có thể thay đổi mã một lần nữa để làm cho đèn LED nhấp nháy nhanh hai lần rồi đợi vài giây trước khi lặp lại không? Hãy thử một lần! Làm thế nào về một số mẫu khác? Một khi bạn thành công trong việc hình dung một kết quả mong muốn, mã hóa nó và quan sát nó để hoạt động theo kế hoạch, bạn đã thực hiện một bước rất lớn để trở thành một hacker phần cứng có năng lực.

Bước 6: Động cơ Servo

Động cơ Servo
Động cơ Servo

Động cơ servo thường được điều khiển bởi một loạt các xung điện lặp lại trong đó độ rộng của các xung cho biết vị trí của servo. Tín hiệu điều khiển được điều chế độ rộng xung (PWM) thường được tạo ra bởi một bộ vi điều khiển phổ biến như Arduino.

Các Servos sở thích nhỏ, chẳng hạn như MG996R, được kết nối thông qua kết nối ba dây tiêu chuẩn: hai dây cho nguồn điện DC và một dây để mang các xung điều khiển. Các Servos MG996R có điện áp hoạt động là 4,8-7,2 VDC.

Bước 7: Lắp ráp cơ chế xoay và nghiêng

Lắp ráp cơ chế xoay và nghiêng
Lắp ráp cơ chế xoay và nghiêng
  1. Kéo cả hai Servos MG996R ra khỏi túi của họ và đặt các phụ kiện đi kèm sang một bên ngay bây giờ.
  2. Gắn một bộ ghép nối servo tròn, bằng nhôm vào mỗi servo. Lưu ý rằng các bộ ghép nối có trong các túi riêng biệt từ các servos. Bộ ghép nối rất vừa vặn. Bắt đầu bằng cách nhấn bộ ghép nối vào cuối đầu ra servo và sau đó luồn một con vít vào lỗ chính giữa. Vặn chặt sợi để kéo bộ ghép vào đầu ra servo.
  3. Lưu ý rằng có ba giá đỡ cho cụm xoay nghiêng - hai giá đỡ hộp và một giá đỡ chữ U.
  4. Gắn một trong các giá đỡ hộp vào vòng tròn nhôm cho một trong các servo. Chúng tôi sẽ gọi servo này là pan servo. Định hướng khung hộp với thành giữa của nó dựa vào vòng tròn nhôm sao cho hai thành còn lại của khung hộp hướng ra khỏi pan servo. Sử dụng các lỗ chính giữa trên thành giữa của khung hộp. Sự sắp xếp này sẽ cho phép pan servo quay xung quanh khung hộp đính kèm sau khi nó được kích hoạt.
  5. Đặt servo khác (servo nghiêng) vào giá đỡ hộp được gắn vào vòng tròn nhôm của pan servo. Sử dụng ít nhất hai đai ốc và bu lông để gắn servo nghiêng - mỗi bên một đai.
  6. Giữ giá đỡ chữ U, lắp "ổ trục" bằng đồng từ bên trong chữ U qua một trong các lỗ lắp trục lớn.
  7. Đặt giá đỡ chữ U có ổ trục lên servo nghiêng nằm bên trong khung hộp sao cho lỗ gắn trục lớn khác (lỗ không có ổ trục) thẳng hàng với vòng tròn nhôm trên servo nghiêng.
  8. Sử dụng vít để gắn khung chữ U vào vòng tròn nhôm ở một bên của khung chữ U.
  9. Ở phía bên kia của khung chữ U, siết chặt một con vít duy nhất xuyên qua ổ trục và vào lỗ nhỏ trên khung hộp bên trong. Điều này sẽ cho phép khung chữ U xoay quanh khung hộp sau này khi servo nghiêng được kích hoạt.

Bước 8: Lắp ráp Pan và Tilt

Lắp ráp Pan và Tilt Assembly
Lắp ráp Pan và Tilt Assembly
Lắp ráp Pan và Tilt
Lắp ráp Pan và Tilt

Giá đỡ hộp còn lại có thể được vặn xuống một tấm gỗ vụn nhỏ để làm đế máy ảnh như trong hình. Cuối cùng, pan servo được gắn trong khung hộp còn lại đó bằng cách sử dụng ít nhất hai đai ốc và bu lông để gắn servo vào khung - mỗi bên một cái.

Bước 9: Nối dây và kiểm tra lắp ráp Pan và Tilt

Nối dây và kiểm tra lắp ráp Pan và Tilt
Nối dây và kiểm tra lắp ráp Pan và Tilt

Để đấu dây cho các servo theo sơ đồ, cách nhanh nhất là chỉ cần cắt các đầu nối cái ban đầu khỏi các Servos và sau đó sử dụng một số đầu dây nối DuPont cái để lấy tín hiệu và đường nối đất gắn vào các chân Nano.

Nano không có đủ dòng điện trên nguồn 5V để cấp nguồn cho Servos từ USB, do đó, bạn nên cung cấp thêm nguồn cung cấp. Đây có thể là bất kỳ thứ gì trong phạm vi 4,8-7,2 Volt. Ví dụ, bốn pin AA (nối tiếp) sẽ hoạt động tốt. Nguồn cung cấp cho băng ghế dự bị hoặc miếng dán tường cũng là một lựa chọn tốt.

Ví dụ đơn giản mã Arduino được đính kèm ở đây là PanTiltTest.ino có thể được sử dụng để kiểm tra khả năng điều khiển hai servos từ màn hình nối tiếp trên Arduino IDE. Đặt tốc độ truyền của màn hình để khớp với 9600bps được đặt trong mã ví dụ. Nhập các giá trị góc từ 0 đến 180 độ sẽ định vị các servo tương ứng.

Cuối cùng, Mô-đun Máy ảnh USB (hoặc cảm biến khác) có thể được gắn vào Giá đỡ chữ U của Lắp ráp Pan-Tilt để sử dụng trong các ứng dụng theo dõi.

Bước 10: Theo dõi khuôn mặt với OpenCV

Image
Image
Hack hành tinh
Hack hành tinh

Hệ thống theo dõi khuôn mặt bằng thị giác máy có thể được thực hiện bằng cách kết hợp các hệ thống con như thể hiện trong sơ đồ khối. Bản phác thảo SerialServoControl cho Arduino có thể được tìm thấy trong hướng dẫn Sparkfun sau đây cùng với phần trình diễn liên quan sử dụng OpenCV, Xử lý, Arduino, Camera USB và Pan / Tilt Assembly để theo dõi khuôn mặt người. Bản trình diễn sử dụng hai Servos để định vị lại vị trí của máy ảnh nhằm giữ cho khuôn mặt được căn giữa trong khung hình video ngay cả khi người dùng di chuyển trong phòng. Ví dụ mã trong C #, hãy xem kho lưu trữ GitHub cho video CamBot.

Bước 11: Hack hành tinh

Nếu bạn thích thú với Tài liệu hướng dẫn này và muốn có một hộp các dự án công nghệ máy tính và điện tử như thế này được gửi đến hộp thư của bạn mỗi tháng, hãy tham gia với chúng tôi bằng cách ĐĂNG KÝ TẠI ĐÂY.

Tiếp cận và chia sẻ thành công của bạn trong các bình luận bên dưới hoặc trên Trang Facebook HackerBoxes. Chắc chắn hãy cho chúng tôi biết nếu bạn có bất kỳ câu hỏi nào hoặc cần trợ giúp về bất cứ điều gì. Cảm ơn bạn đã là một phần của HackerBoxes. Vui lòng tiếp tục đề xuất và phản hồi của bạn. HackerBoxes là hộp của BẠN. Hãy làm một cái gì đó tuyệt vời!

Đề xuất: