Mục lục:
- Bước 1: Thiết lập phần cứng Vivado
- Bước 2: Thiết lập thiết kế khối
- Bước 3: Tạo khối IP PWM tùy chỉnh
- Bước 4: Thêm Khối IP PWM vào Thiết kế
- Bước 5: Định cấu hình HDL Wrapper và thiết lập tệp ràng buộc
- Bước 6: Tạo dòng bit
- Bước 7: Thiết lập dự án trong SDK
- Bước 8: Sửa đổi mã FreeRTOS
- Bước 9: In 3D cho Bộ ổn định
- Bước 10: Lắp ráp các bộ phận
- Bước 11: Kết nối Zybo với Ổn định
- Bước 12: Chỉnh sửa hướng Bắc đúng
- Bước 13: Chạy chương trình
Video: Bộ ổn định máy ảnh cầm tay: 13 bước (có hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:36
Giới thiệu
Đây là hướng dẫn tạo giàn ổn định máy ảnh cầm tay 3 trục cho GoPro bằng cách sử dụng Digilent Zybo Zynq-7000 Development Board. Dự án này được phát triển cho lớp Hệ điều hành thời gian thực CPE (CPE 439). Bộ ổn định sử dụng ba Servos và một IMU để điều chỉnh chuyển động của người dùng nhằm giữ mức camera.
Các bộ phận cần thiết cho dự án
- Ban phát triển Digilent Zybo Zynq-7000
- Sparkfun IMU Breakout - MPU 9250
- 2 HiTec HS-5485HB Servos (mua chuyển động 180 độ hoặc chương trình từ 90 đến 180 độ)
- 1 HiTec HS-5685MH Servo (mua chuyển động 180 độ hoặc chương trình từ 90 đến 180 độ)
- 2 Chân đế Servo tiêu chuẩn
- 1 bảng mạch
- 15 dây nhảy nam - nam
- 4 dây nhảy nam nữ
- Keo nóng
- Tay cầm hoặc tay cầm
- Chốt gỗ đường kính 5 mm
- GoPro hoặc máy ảnh và phần cứng gắn kết khác
- Nguồn điện có khả năng xuất ra 5V.
- Truy cập vào Máy in 3D
Bước 1: Thiết lập phần cứng Vivado
Hãy bắt đầu với việc tạo thiết kế khối cơ bản cho dự án.
- Mở Vivado 2016.2, nhấp vào biểu tượng "Tạo dự án mới" và nhấp vào "Tiếp theo>".
- Đặt tên cho dự án của bạn và nhấp vào "Tiếp theo>".
- Chọn dự án RTL và nhấn "Tiếp theo>".
- Nhập vào thanh tìm kiếm xc7z010clg400-1, sau đó chọn phần và nhấn "Tiếp theo>" và "Hoàn tất".
Bước 2: Thiết lập thiết kế khối
Bây giờ chúng ta sẽ bắt đầu tạo thiết kế khối bằng cách thêm và thiết lập Khối IP Zynq.
- Trên bảng điều khiển bên trái, trong Trình tích hợp IP, Nhấp vào "Tạo thiết kế khối" và sau đó nhấp vào "OK".
- Nhấp chuột phải vào tab "Sơ đồ" và chọn "Thêm IP…".
- Gõ "Hệ thống xử lý ZYNQ7" và nhấp vào lựa chọn.
- Nhấp đúp vào khối Zynq xuất hiện.
- Nhấp vào "Nhập cài đặt XPS" và nhập tệp "ZYBO_zynq_def.xml" được cung cấp.
- Đi tới "Cấu hình MIO" và chọn "Bộ xử lý ứng dụng" và bật bộ định thời Timer 0 và Watchdog.
- Trong cùng một tab, bên dưới "I / O ngoại vi", chọn ENET 0 (và thay đổi menu thả xuống thành "MIO 16.. 27", USB 0, SD 0, UART 1, I2C 0.
- Trong "GPIO", chọn GPIO MIO, ENET Reset, USB Reset và I2C Reset.
- Bây giờ điều hướng đến "Cấu hình đồng hồ". Chọn FCLK_CLK0 trong Đồng hồ vải PL. Sau đó, nhấp vào "OK".
Bước 3: Tạo khối IP PWM tùy chỉnh
Khối IP này cho phép bo mạch gửi tín hiệu PWM ra ngoài để điều khiển chuyển động của các servo. Công việc dựa trên phần hướng dẫn của Digitronix Nepal, được tìm thấy tại đây. Logic đã được thêm vào để làm chậm đồng hồ để xung được phát ra ở tốc độ chính xác. Khối này nhận một số từ 0 đến 180 và chuyển nó thành xung từ 750-2150 usec.
- Bây giờ, trong tab Công cụ gần góc trên cùng bên trái, nhấp vào "Tạo và đóng gói IP…" và nhấn Tiếp theo.
- Sau đó chọn "Tạo thiết bị ngoại vi AXI4 mới" và nhấn Tiếp theo.
- Đặt tên cho khối IP PWM của bạn (chúng tôi đặt tên là pwm_core) và nhấp vào Tiếp theo và sau đó nhấp vào Tiếp theo trên trang tiếp theo.
- Bây giờ nhấp vào "Chỉnh sửa IP" và nhấn Hoàn tất. Thao tác này sẽ mở ra một cửa sổ mới để chỉnh sửa khối pwm.
- Trong tab "Nguồn" và trong "Nguồn thiết kế", hãy mở rộng 'pwm_core_v1_0' (thay pwm_core bằng tên của bạn) và mở tệp hiển thị.
- Sao chép và dán mã được cung cấp trong 'pwm_core_v1_0_S00_AXI.v' trong tệp zip ở cuối dự án. Ctrl + Shift + R và thay thế 'pwm_core' bằng tên của bạn cho khối ip.
- Tiếp theo, mở 'name _v1_0' và sao chép mã được cung cấp trong tệp 'pwm_core_v1_0.v'. Ctrl + Shift + R và thay thế 'pwm_core' bằng tên.
- Bây giờ điều hướng đến tab 'Tên gói IP' và chọn "Tham số tùy chỉnh".
- Trong tab này sẽ có một thanh màu vàng ở trên cùng có văn bản được liên kết. Chọn tùy chọn này và "Tham số ẩn" sẽ hiển thị trong hộp.
- Bây giờ vào "Customization GUI" và nhấp chuột phải vào Pwm Counter Max chọn "Edit Parameter…".
- Chọn hộp "Hiển thị trong GUI tùy chỉnh" và "Chỉ định phạm vi".
- Thay đổi trình đơn thả xuống "Loại:" thành Phạm vi số nguyên và đặt giá trị tối thiểu thành 0 và tối đa là 65535 và chọn hộp "Hiển thị phạm vi". Bây giờ hãy nhấp vào OK.
- Kéo Pwm Counter Max dưới Cây 'Trang 0'. Bây giờ đi tới "Xem lại và đóng gói" và nhấp vào nút "Gói lại IP".
Bước 4: Thêm Khối IP PWM vào Thiết kế
Chúng tôi sẽ thêm khối IP vào thiết kế khối để cho phép người dùng truy cập vào khối IP PWM thông qua bộ xử lý.
- Nhấp chuột phải vào tab sơ đồ và nhấp vào "Cài đặt IP…". Điều hướng đến tab "Trình quản lý kho lưu trữ".
- Nhấp vào nút dấu cộng màu xanh lá cây và chọn nó. Bây giờ tìm ip_repo trong Trình quản lý tệp và thêm nó vào dự án. Sau đó nhấn Apply và sau đó OK.
- Nhấp chuột phải vào tab sơ đồ và nhấp vào "Thêm IP…". Nhập tên khối IP PWM của bạn và chọn nó.
- Sẽ có một thanh màu xanh lá cây ở đầu màn hình, trước tiên hãy chọn "Chạy tự động hóa kết nối" và nhấp vào OK. Sau đó nhấp vào "Chạy tự động hóa khối" và nhấp vào OK.
- Nhấp đúp vào khối PWM và thay đổi Pwm Counter Max thành 1024 từ 128.
- Di con trỏ chuột qua PWM0 trên khối PWM. Nên có một cây bút chì nhỏ để hiển thị khi bạn làm. Nhấp chuột phải và chọn "Tạo cổng…" và nhấp vào OK khi một cửa sổ mở ra. Điều này tạo ra một cổng bên ngoài cho tín hiệu được chuyển đến.
- Lặp lại bước 6 cho PWM1 và PWM2.
- Tìm biểu tượng mũi tên đôi hình tròn nhỏ trên thanh bên và nhấp vào đó. Nó sẽ tạo lại bố cục và thiết kế khối của bạn sẽ giống như hình trên.
Bước 5: Định cấu hình HDL Wrapper và thiết lập tệp ràng buộc
Bây giờ chúng ta sẽ tạo Thiết kế cấp cao cho Thiết kế khối của chúng ta và sau đó ánh xạ PWM0, PWM1 và PWM2 thành các chân Pmod trên bảng Zybo.
- Chuyển đến tab "Nguồn". Nhấp chuột phải vào tệp thiết kế khối của bạn trong "Nguồn thiết kế" và nhấp vào "Tạo HDL Wrapper…". Chọn "Sao chép trình bao bọc được tạo để cho phép người dùng chỉnh sửa" và nhấp vào OK. Điều này tạo ra Thiết kế Cấp cao cho Thiết kế Khối mà chúng tôi đã tạo.
- Pmod mà chúng ta sẽ xuất ra là JE.
- Trong Tệp, chọn "Thêm nguồn…" và chọn "Thêm hoặc tạo ràng buộc" và nhấp vào Tiếp theo.
- Nhấp vào thêm tệp và chọn tệp "ZYBO_Master.xdc" được bao gồm. Nếu bạn nhìn vào tệp này, bạn sẽ thấy mọi thứ đều không có chú thích ngoại trừ sáu dòng "set_property" bên dưới "## Pmod Header JE". Bạn sẽ nhận thấy rằng PWM0, PWM1 và PWM2 là các đối số cho các dòng này. Chúng ánh xạ tới Pin 1, Pin 2 và Pin 3 của JE Pmod.
Bước 6: Tạo dòng bit
Chúng tôi cần tạo dòng bit cho thiết kế phần cứng để xuất sang SDK trước khi chúng tôi tiếp tục.
- Trong "Chương trình và gỡ lỗi" trên thanh bên, chọn "Tạo dòng bit". Điều này sẽ chạy tổng hợp, sau đó thực hiện, và sau đó tạo dòng bit cho thiết kế.
- Sửa bất kỳ lỗi nào bật lên, nhưng cảnh báo thường có thể bị bỏ qua.
- Đi tới Tệp-> Khởi chạy SDK và nhấp vào OK. Điều này sẽ mở ra Xilinx SDK.
Bước 7: Thiết lập dự án trong SDK
Phần này có thể hơi bực bội. Khi nghi ngờ, hãy tạo BSP mới và thay thế BSP cũ. Điều này đã tiết kiệm cho chúng tôi rất nhiều thời gian gỡ lỗi.
- Bắt đầu bằng cách tải xuống phiên bản FreeRTOS mới nhất tại đây.
- Trích xuất mọi thứ từ tải xuống và nhập FreeRTOS vào SDK bằng cách nhấp vào Tệp-> Nhập và trong phần "Chung", nhấp vào "Dự án hiện có vào không gian làm việc" rồi nhấp vào Tiếp theo.
- Đi tới "FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702" trong thư mục FreeRTOS. Chỉ nhập "RTOSDemo" từ vị trí này.
- Bây giờ tạo Gói hỗ trợ bảng (BSP) bằng cách nhấp vào Tệp-> Gói hỗ trợ bảng mới.
- Chọn "ps7_cortexa9_0" và chọn "lwip141" và nhấp vào OK.
- Nhấp chuột phải vào thư mục màu xanh RTOSDemo và chọn "Project References".
- Bỏ chọn "RTOSDemo_bsp" và kiểm tra BSP mới mà chúng tôi vừa tạo.
Bước 8: Sửa đổi mã FreeRTOS
Mã chúng tôi cung cấp có thể được tách thành 7 tệp khác nhau. main.c, iic_main_thread.c, xil_printfloat.c, xil_printfloat.h, IIC_funcs.c, IIC_funcs.h và iic_imu.h. Mã trong iic_main_thread.c đã được điều chỉnh từ thư viện của Kris Winer, bạn có thể tìm thấy mã này tại đây. Chúng tôi chủ yếu chuyển đổi mã của anh ấy để kết hợp các nhiệm vụ và làm cho nó hoạt động với bảng Zybo. Chúng tôi cũng đã thêm các chức năng để tính toán hiệu chỉnh hướng của máy ảnh. Chúng tôi đã để lại một số câu lệnh in hữu ích cho việc gỡ lỗi. Hầu hết chúng đều được nhận xét nhưng nếu bạn cảm thấy cần thiết, bạn có thể bỏ ghi chú chúng.
- Cách dễ nhất để sửa đổi tệp main.c là thay thế mã bằng mã được sao chép từ tệp main.c đi kèm của chúng tôi.
- Để tạo một tệp mới, nhấp chuột phải vào thư mục src trong RTOSDemo và chọn C. Nguồn tệp. Đặt tên cho tệp này là "iic_main_thread.c".
- Sao chép mã từ "iic_main_thread.c" được bao gồm và dán nó vào tệp mới tạo của bạn.
- Lặp lại bước 2 và 3 với các tệp còn lại.
- yêu cầu một hướng dẫn liên kết trong gcc. Để thêm cái này vào đường dẫn xây dựng, bạn nhấp chuột phải vào RTOSDemo và chọn "C / C ++ Build Settings".
- Một cửa sổ mới sẽ mở ra. Điều hướng đến trình liên kết ARM v7 gcc-> Thư viện. Chọn tệp bổ sung nhỏ ở góc trên cùng bên phải và nhập "m". Điều này sẽ bao gồm thư viện toán học trong dự án.
- Xây dựng dự án bằng Ctrl + B để xác nhận mọi thứ hoạt động. Kiểm tra các cảnh báo được tạo nhưng bạn có thể bỏ qua chúng.
- Có một vài nơi sẽ cần sửa đổi, chủ yếu là độ lệch từ của vị trí hiện tại của bạn. Chúng tôi sẽ giải thích cách thay đổi điều này trong phần hiệu chỉnh của hướng dẫn.
Bước 9: In 3D cho Bộ ổn định
Bạn cần in 3D một vài phần cho dự án này. Người ta có thể mua các bộ phận có kích thước / kích thước tương tự với các bộ phận được in của chúng tôi.
- Sử dụng các tệp được cung cấp để in ra khung tay và giá đỡ cho GoPro.
- Bạn cần thêm giàn giáo vào tệp.stl.
- Cắt / làm sạch các bộ phận thừa của giàn giáo sau khi in.
- Bạn có thể thay chốt gỗ bằng một bộ phận in 3D nếu muốn.
Bước 10: Lắp ráp các bộ phận
Đây là một số bộ phận để lắp ráp bộ ổn định. Giá đỡ đã mua đi kèm với 4 vít tự khai thác và 4 bu lông có đai ốc. Vì có 3 servo, một trong các còi servo cần phải được khai thác trước để cho phép 2 trong số các bu lông lắp vào.
- Hàn 8 chân vào đầu ngắt IMU, 4 chân mỗi bên.
- IMU được gắn vào khung giữ được in 3D cho GoPro ở giữa khung.
- Định hướng giá đỡ sao cho các lỗ lắp servo nằm ở phía bên tay trái của bạn. Đặt IMU trên cạnh gần nhất với bạn, với các chốt treo ra khỏi cạnh. Sau đó, đặt ngàm GoPro lên trên IMU, dán IMU và ngàm vào đúng vị trí trên giá đỡ.
- Gắn HS-5485HB vào giá đỡ servo được tích hợp vào cánh tay in 3D.
- Vặn giá đỡ GoPro vào servo gắn trên cánh tay, đảm bảo rằng servo được đặt sao cho nó ở giữa phạm vi chuyển động của nó.
- Tiếp theo, gắn servo HS-5685MH vào giá đỡ servo. Sau đó, chạm vào còi servo bằng một trong các vít. Bây giờ gắn servo vào dưới cùng của khung servo cuối cùng.
- Bây giờ, hãy gắn servo cuối cùng vào giá đỡ mà servo HS-5685MH được vặn vào. Sau đó vặn cánh tay vào servo này, đảm bảo rằng cánh tay được vặn vào để nó có thể di chuyển 90 độ mỗi chiều.
- Để hoàn thành việc chế tạo gimbal, hãy thêm một miếng chốt nhỏ bằng gỗ để kết nối giữa giá đỡ GoPro và cánh tay in 3D. Bây giờ bạn đã lắp ráp bộ ổn định.
- Cuối cùng, bạn có thể thêm một tay cầm được kết nối với giá đỡ servo dưới cùng.
Bước 11: Kết nối Zybo với Ổn định
Có một số điều cần cẩn thận khi làm điều này. Bạn muốn đảm bảo rằng nguồn 5V từ nguồn điện không bao giờ đi vào bo mạch Zybo, vì điều này sẽ dẫn đến các vấn đề với bo mạch. Đảm bảo kiểm tra kỹ các jumper của bạn để xác nhận rằng không có dây nào đang được chuyển đổi.
- Để gắn Zybo vào bộ ổn định, bạn sẽ cần 15 vận động viên nhảy nam với nam và 4 vận động viên nhảy nam với nữ.
- Đầu tiên, kết nối hai jumper với nguồn điện 5V của bạn dọc theo đường ray + và - của bảng mạch. Chúng sẽ cung cấp năng lượng cho các Servos.
- Sau đó, kết nối 3 cặp jumper với đường ray + và - của breadboard. Đây sẽ là sức mạnh cho mỗi Servos.
- Cắm đầu kia của + và - jumper vào mỗi Servos.
- Kết nối một jumper giữa thanh ray của breadboard và một trong các chân GND trên Zybo JE Pmod (Xem hình ảnh Bước 5). Điều này sẽ tạo ra một mặt bằng chung giữa bo mạch Zybo và bộ nguồn.
- Tiếp theo, kết nối dây tín hiệu với chân 1, chân 2 và chân 3 của JE Pmod. Ghim bản đồ 1 vào servo dưới cùng, ghim bản đồ 2 vào servo ở cuối cánh tay và ghim 3 bản đồ vào servo giữa.
- Cắm 4 dây cái vào các chân GND, VDD, SDA và SCL của bộ ngắt IMU. GND và VDD cắm vào GND và 3V3 trên các chân JF. Cắm chân SDA vào chân 8 và SCL vào chân 7 trên JF (Xem hình Bước 5).
- Cuối cùng, kết nối máy tính với bo mạch bằng cáp micro usb. Điều này sẽ cho phép giao tiếp uart và cho phép bạn lập trình bảng Zybo.
Bước 12: Chỉnh sửa hướng Bắc đúng
Việc hiệu chuẩn từ kế trong IMU rất quan trọng đối với hoạt động chính xác của thiết bị. Độ lệch từ, điều chỉnh từ bắc thành bắc thực.
- Để hiệu chỉnh sự khác biệt giữa từ trường và hướng bắc thực, bạn cần sử dụng kết hợp hai dịch vụ, Google Maps và máy tính từ trường của NOAA.
- Sử dụng Google Maps để tìm vĩ độ và kinh độ của vị trí hiện tại của bạn.
- Lấy kinh độ và vĩ độ hiện tại của bạn và cắm nó vào máy tính từ trường.
- Những gì được trả lại là độ nghiêng từ tính. Cắm phép tính này vào mã trên dòng 378 của "iic_main_thread.c". Nếu độ nghiêng của bạn là hướng đông, sau đó trừ vào giá trị yaw, nếu hướng tây thì cộng vào giá trị yaw.
* ảnh được lấy từ hướng dẫn kết nối MPU 9250 của Sparkfun, được tìm thấy tại đây.
Bước 13: Chạy chương trình
Khoảnh khắc bạn đã chờ đợi! Phần tốt nhất của dự án là thấy nó hoạt động. Một vấn đề mà chúng tôi nhận thấy là có sự chênh lệch so với các giá trị được báo cáo từ IMU. Một bộ lọc thông thấp có thể giúp hiệu chỉnh độ lệch này, và loay hoay với từ kế, hiệu chỉnh gia tốc và con quay hồi chuyển cũng sẽ giúp hiệu chỉnh độ lệch này.
- Đầu tiên, xây dựng tất cả trong SDK, điều này có thể được thực hiện bằng cách nhấn Ctrl + B.
- Đảm bảo nguồn điện được bật và đặt thành 5V. Kiểm tra kỹ để đảm bảo rằng tất cả các dây đang đi đúng vị trí của chúng.
- Sau đó, để chạy chương trình, hãy nhấn vào hình tam giác màu xanh lá cây ở trung tâm phía trên của thanh tác vụ.
- Khi chương trình chạy, tất cả các Servos sẽ được đặt lại về vị trí 0 của chúng, vì vậy hãy sẵn sàng cho thiết bị di chuyển. Sau khi chương trình khởi chạy, các servos sau đó sẽ quay trở lại vị trí 90 độ của chúng.
- Chức năng hiệu chuẩn từ kế sẽ chạy và chỉ đường sẽ được in ra thiết bị đầu cuối UART, bạn có thể kết nối với thiết bị đầu cuối này qua màn hình nối tiếp như 'putty' hoặc màn hình nối tiếp được cung cấp trong SDK.
- Quá trình hiệu chỉnh sẽ yêu cầu bạn di chuyển thiết bị theo hình số 8 trong khoảng 10 giây. Bạn có thể xóa bước này bằng cách nhận xét dòng 273 của "iic_main_thread.c". Nếu bạn nhận xét nó ra, bạn cần bỏ ghi chú dòng 323 - 325 "iic_main_thread.c". Các giá trị này ban đầu được thu thập từ hiệu chuẩn từ kế ở trên và sau đó được cắm dưới dạng giá trị.
- Sau khi hiệu chuẩn, mã ổn định sẽ khởi tạo và thiết bị sẽ giữ cho máy ảnh ổn định.
Đề xuất:
Vẫy tay để điều khiển cánh tay robot OWI Không có dây đính kèm: 10 bước (có hình ảnh)
Vẫy tay để điều khiển Cánh tay robot OWI … Không có dây đính kèm: Ý tưởng: Có ít nhất 4 dự án khác trên Guiductables.com (kể từ ngày 13 tháng 5 năm 2015) xoay quanh việc sửa đổi hoặc điều khiển Cánh tay robot OWI. Không có gì đáng ngạc nhiên, vì nó là một bộ robot tuyệt vời và rẻ tiền để chơi cùng. Dự án này tương tự trong s
Máy tính xách tay Pi-Berry - Máy tính xách tay tự làm cổ điển: 21 bước (có hình ảnh)
Máy tính xách tay Pi-Berry - Máy tính xách tay tự làm cổ điển: Máy tính xách tay tôi đã sản xuất "Máy tính xách tay Pi-Berry" được xây dựng xung quanh Raspberry Pi 2. Nó có RAM 1GB, CPU lõi tứ, 4 cổng USB và một cổng Ethernet. Máy tính xách tay đáp ứng nhu cầu cuộc sống hàng ngày và chạy mượt mà các chương trình như VLC media player, Mozilla Firefox, Ardu
Màn hình cảm ứng Đồng bộ hóa gia đình & Bảng điều khiển gia đình gắn trên màn hình: 7 bước (có Hình ảnh)
Bảng điều khiển Home & Family Sync & Home trên màn hình cảm ứng: Chúng tôi có lịch được cập nhật hàng tháng với các sự kiện nhưng lịch được thực hiện theo cách thủ công. Chúng ta cũng có xu hướng quên những việc đã làm hết hoặc những việc vặt khác. Ở thời đại này, tôi nghĩ sẽ dễ dàng hơn nhiều nếu có một hệ thống đồng bộ lịch và sổ ghi chú mà c
Ánh sáng video thân mật / Ánh sáng chụp ảnh cầm tay: 7 bước (với hình ảnh)
Ánh sáng video thân mật / Ánh sáng chụp ảnh cầm tay: Tôi biết bạn đang nghĩ gì. Bằng cách " thân mật, " Ý tôi là chiếu sáng cận cảnh trong các tình huống ánh sáng khó - không nhất thiết dành cho " các tình huống thân mật. &Quot; (Tuy nhiên, nó cũng có thể được sử dụng cho việc đó …) Là một nhà quay phim thành phố New York - hoặc
Tạo da cho máy tính xách tay / máy tính xách tay của riêng bạn: 8 bước (có hình ảnh)
Tạo da cho máy tính xách tay / máy tính xách tay của riêng bạn: Một giao diện máy tính xách tay hoàn toàn cá nhân hóa và độc đáo với khả năng vô hạn