Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-23 15:15
Nhóm bao gồm 2 Kỹ sư Tự động hóa từ UCN, những người đã đưa ra một ý tưởng tuyệt vời mà chúng tôi có động lực để thực hiện và phát triển. Ý tưởng dựa trên một bảng Arduino điều khiển một cánh tay robot. Bảng Arduino là bộ não của hoạt động và sau đó là cơ quan truyền động của hoạt động, cánh tay Robotic, sẽ làm những gì nó cần. Phần giải thích sâu hơn sẽ đến sau.
Bước 1: Thiết bị
Cánh tay robot:
Bộ cánh tay robot Phantomx Pincher Maek II (https://learn.trossenrobotics.com/38-interbotix-ro…)
Phần mềm cho robot- https://www.arduino.cc/en/Main/OldSoftwareRelease… Camera phát hiện màu:
Máy ảnh CMUcam5 Pixy - (https://charmedlabs.com/default/pixy-cmucam5/)
Phần mềm - PixyMon (https://cmucam.org/projects/cmucam5/wiki/Install_PixyMon_on_Windows_Vista_7_8)
Bước 2: Thiết lập Arduino
Bạn có thể xem thiết lập trên bảng ở đây, rất dễ dàng.
Bên trái là Nguồn điện.
Cái ở giữa dành cho servo đầu tiên, sau này được kết nối với các servo khác, servo bằng servo.
Phần dưới cùng là nơi chúng tôi điều khiển bo mạch từ PC hoặc Máy tính xách tay, có đầu vào USB ở đầu kia.
Bước 3: Chương trình cuối cùng
||| CHƯƠNG TRÌNH |||
#bao gồm
#include #include "pose.h" #include // Thư viện Pixy #include
#define POSECOUNT 5
BioloidController bioloid = BioloidController (1000000);
const int SERVOCOUNT = 5; int id; int pos; boolean IDCheck; boolean RunCheck;
void setup () {pinMode (0, OUTPUT); ax12SetRegister2 (1, 32, 50); // đặt thanh ghi số 1 32 thành tốc độ 50. ax12SetRegister2 (2, 32, 50); // đặt thanh ghi số 2 32 thành tốc độ 50. ax12SetRegister2 (3, 32, 50); // thiết lập thanh ghi số 3 32 thành tốc độ 50. ax12SetRegister2 (4, 32, 50); // thiết lập thanh ghi số 4 32 thành tốc độ 50. ax12SetRegister2 (5, 32, 100); // thiết lập thanh ghi số 5 32 đến tốc độ 100. // khởi tạo các biến id = 1; pos = 0; IDCheck = 1; RunCheck = 0; // mở cổng nối tiếp Serial.begin (9600); chậm trễ (500); Serial.println ("#############################"); Serial.println ("Giao tiếp nối tiếp được thiết lập.");
// Kiểm tra điện áp pin Lipo CheckVoltage ();
// Quét Servos, trả về vị trí MoveTest (); Chuyển nhà(); Tùy chọn menu(); RunCheck = 1; }
void loop () {// đọc cảm biến: int inByte = Serial.read ();
chuyển đổi (inByte) {
case '1': MovePose1 (); nghỉ;
case '2': MovePose2 (); nghỉ; case '3': MovePose3 (); nghỉ;
case '4': MovePose4 (); nghỉ;
case '5': MoveHome (); nghỉ; case '6': Grab (); nghỉ;
case '7': LEDTest (); nghỉ;
case '8': RelaxServos (); nghỉ; }}
void CheckVoltage () {// đợi, sau đó kiểm tra điện áp (an toàn LiPO) floattage = (ax12GetRegister (1, AX_PRESENT_VOLTAGE, 1)) / 10.0; Serial.println ("#############################"); Serial.print ("Điện áp Hệ thống:"); Serial.print (điện áp); Serial.println ("vôn."); if (điện áp 10.0) {Serial.println ("Mức điện áp danh định."); } if (RunCheck == 1) {MenuOptions (); } Serial.println ("#############################"); }
void MoveHome () {delay (100); // khuyến nghị tạm dừng bioloid.loadPose (Trang chủ); // tải tư thế từ FLASH, vào bộ đệm nextPose bioloid.readPose (); // đọc ở các vị trí servo hiện tại vào bộ đệm curPose Serial.println ("############################"); Serial.println ("Di chuyển servos đến vị trí Trang chủ"); Serial.println ("#############################"); chậm trễ (1000); bioloid.interpolateSetup (1000); // thiết lập nội suy từ hiện tại-> tiếp theo hơn 1/2 giây trong khi (bioloid.interpolating> 0) {// thực hiện điều này khi chúng ta chưa đạt đến tư thế mới bioloid.interpolateStep (); // di chuyển servos, nếu cần. chậm trễ (3); } if (RunCheck == 1) {MenuOptions (); }}
void MovePose1 () {delay (100); // khuyến nghị tạm dừng bioloid.loadPose (Pose1); // tải tư thế từ FLASH, vào bộ đệm nextPose bioloid.readPose (); // đọc ở các vị trí servo hiện tại tới bộ đệm curPose Serial.println ("############################"); Serial.println ("Di chuyển servos lên vị trí đầu tiên"); Serial.println ("#############################"); chậm trễ (1000); bioloid.interpolateSetup (1000); // thiết lập nội suy từ hiện tại-> tiếp theo hơn 1/2 giây trong khi (bioloid.interpolating> 0) {// thực hiện điều này khi chúng ta chưa đạt đến tư thế mới bioloid.interpolateStep (); // di chuyển servos, nếu cần. chậm trễ (3); } SetPosition (3, 291); // đặt vị trí của khớp 3 thành '0' delay (100); // đợi khớp di chuyển if (RunCheck == 1) {MenuOptions (); }}
void MovePose2 () {delay (100); // khuyến nghị tạm dừng bioloid.loadPose (Pose2); // tải tư thế từ FLASH, vào bộ đệm nextPose bioloid.readPose (); // đọc ở các vị trí servo hiện tại tới bộ đệm curPose Serial.println ("############################"); Serial.println ("Di chuyển servos lên vị trí thứ 2"); Serial.println ("#############################"); chậm trễ (1000); bioloid.interpolateSetup (1000); // thiết lập nội suy từ hiện tại-> tiếp theo hơn 1/2 giây trong khi (bioloid.interpolating> 0) {// thực hiện điều này khi chúng ta chưa đạt đến tư thế mới bioloid.interpolateStep (); // di chuyển servos, nếu cần. chậm trễ (3); } SetPosition (3, 291); // đặt vị trí của khớp 3 thành '0' delay (100); // đợi khớp di chuyển if (RunCheck == 1) {MenuOptions (); }} void MovePose3 () {delay (100); // khuyến nghị tạm dừng bioloid.loadPose (Pose3); // tải tư thế từ FLASH, vào bộ đệm nextPose bioloid.readPose (); // đọc ở các vị trí servo hiện tại tới bộ đệm curPose Serial.println ("############################"); Serial.println ("Di chuyển servos lên vị trí thứ 3"); Serial.println ("#############################"); chậm trễ (1000); bioloid.interpolateSetup (1000); // thiết lập nội suy từ hiện tại-> tiếp theo hơn 1/2 giây trong khi (bioloid.interpolating> 0) {// thực hiện việc này khi chúng ta chưa đạt đến tư thế mới bioloid.interpolateStep (); // di chuyển servos, nếu cần. chậm trễ (3); } SetPosition (3, 291); // đặt vị trí của khớp 3 thành '0' delay (100); // đợi khớp di chuyển if (RunCheck == 1) {MenuOptions (); }}
void MovePose4 () {delay (100); // khuyến nghị tạm dừng bioloid.loadPose (Pose4); // tải tư thế từ FLASH, vào bộ đệm nextPose bioloid.readPose (); // đọc ở các vị trí servo hiện tại tới bộ đệm curPose Serial.println ("############################"); Serial.println ("Di chuyển servos lên vị trí thứ 4"); Serial.println ("#############################"); chậm trễ (1000); bioloid.interpolateSetup (1000); // thiết lập nội suy từ hiện tại-> tiếp theo hơn 1/2 giây trong khi (bioloid.interpolating> 0) {// thực hiện điều này khi chúng ta chưa đạt đến tư thế mới bioloid.interpolateStep (); // di chuyển servos, nếu cần. chậm trễ (3); } SetPosition (3, 291); // đặt vị trí của khớp 3 thành '0' delay (100); // đợi khớp di chuyển if (RunCheck == 1) {MenuOptions (); }}
void MoveTest () {Serial.println ("#############################"); Serial.println ("Khởi tạo Kiểm tra Dấu hiệu Chuyển động"); Serial.println ("#############################"); chậm trễ (500); id = 1; pos = 512; while (id <= SERVOCOUNT) {Serial.print ("Đang di chuyển ID Servo:"); Serial.println (id);
while (pos> = 312) {SetPosition (id, pos); pos = pos--; chậm trễ (10); }
while (pos <= 512) {SetPosition (id, pos); pos = pos ++; chậm trễ (10); }
// lặp tới ID servo tiếp theo id = id ++;
} if (RunCheck == 1) {MenuOptions (); }}
void MenuOptions () {Serial.println ("#############################"); Serial.println ("Vui lòng nhập tùy chọn 1-5 để chạy lại các bài kiểm tra riêng lẻ."); Serial.println ("1) Vị trí thứ nhất"); Serial.println ("2) Vị trí thứ 2"); Serial.println ("3) Vị trí thứ 3"); Serial.println ("4) Vị trí thứ 4"); Serial.println ("5) Vị trí Nhà"); Serial.println ("6) Kiểm tra điện áp hệ thống"); Serial.println ("7) Thực hiện Kiểm tra LED"); Serial.println ("8) Thư giãn Servos"); Serial.println ("#############################"); }
void RelaxServos () {id = 1; Serial.println ("#############################"); Serial.println ("Các Servos thư giãn."); Serial.println ("#############################"); while (id <= SERVOCOUNT) {Relax (id); id = (id ++)% SERVOCOUNT; chậm trễ (50); } if (RunCheck == 1) {MenuOptions (); }}
void LEDTest () {id = 1; Serial.println ("#############################"); Serial.println ("Chạy thử nghiệm LED"); Serial.println ("#############################"); while (id <= SERVOCOUNT) {ax12SetRegister (id, 25, 1); Serial.print ("LED ON - Servo ID:"); Serial.println (id); chậm trễ (3000); ax12SetRegister (id, 25, 0); Serial.print ("LED TẮT - ID Servo:"); Serial.println (id); chậm trễ (3000); id = id ++; } if (RunCheck == 1) {MenuOptions (); }}
void Grab () {SetPosition (5, 800); // đặt vị trí của khớp 1 thành '0' delay (100); // đợi khớp di chuyển
}
Chúng tôi đã dựa trên chương trình của mình dựa trên chương trình PincherTest của nhà sản xuất với một số điều chỉnh lớn trong trường hợp định vị. Chúng tôi đã sử dụng các tư thế.h để robot có các vị trí trong bộ nhớ. Đầu tiên, chúng tôi đã cố gắng tạo cánh tay chơi của mình với Pixycam thành tự động, nhưng do các vấn đề về ánh sáng và màn hình nhỏ, điều đó không thể xảy ra. Robot có một vị trí nhà cơ bản, sau khi tải lên chương trình, nó sẽ kiểm tra tất cả các Servos được tìm thấy trong robot. Chúng tôi đã thiết lập các tư thế cho các nút 1-4, vì vậy sẽ rất dễ nhớ. Hãy thoải mái sử dụng chương trình.
Bước 4: Hướng dẫn bằng video
Bước 5: Kết luận
Tóm lại, robot là một dự án nhỏ thú vị đối với chúng tôi và là một niềm vui thú vị để chơi xung quanh và thử nghiệm. Tôi khuyến khích bạn thử và tùy chỉnh nó.
Đề xuất:
Robo-Dog đơn giản (làm bằng phím đàn piano, súng đồ chơi và chuột): 20 bước (có hình ảnh)
Chú chó robot đơn giản (làm bằng Phím đàn Piano, Súng đồ chơi và Chuột): Ôi, Azerbaijan! Vùng đất của lửa, lòng hiếu khách tuyệt vời, con người thân thiện và phụ nữ xinh đẹp (… xin lỗi, người phụ nữ! Tất nhiên tôi chỉ dành mắt cho bạn, người vợ gözəl balaca ana ördəkburun của tôi!). Nhưng thành thật mà nói, đây là một nơi rất khó khăn cho một nhà sản xuất, đặc biệt là khi bạn
Làm thế nào để tạo ra một chiếc găng tay không dây cho đàn piano không dây: 9 bước
Cách tạo găng tay piano không dây: Mục đích và chức năng: Dự án công nghệ có thể đeo của chúng tôi là tạo ra găng tay piano không dây với đèn đồng bộ bằng cách sử dụng thiết bị điện tử cơ bản, bộ điều khiển vi mô như HexWear và máy tính xách tay với phần mềm Arduino và Max 8 . Việc sử dụng proj của chúng tôi
Xây dựng hệ thống thủy canh tự làm mini & vườn thảo mộc thủy canh tự làm với cảnh báo WiFi: 18 bước
Xây dựng Hệ thống thủy canh tự làm nhỏ & Vườn thảo mộc thủy canh tự làm với cảnh báo WiFi: Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách xây dựng hệ thống #DIY #hydroponics. Hệ thống thủy canh tự làm này sẽ tưới theo chu kỳ tưới thủy canh tùy chỉnh với 2 phút bật và 4 phút tắt. Nó cũng sẽ theo dõi mực nước hồ chứa. Hệ thống này
Bộ điều khiển trò chơi tự làm dựa trên Arduino - Bộ điều khiển trò chơi Arduino PS2 - Chơi Tekken với tự làm trò chơi Arduino: 7 bước
Bộ điều khiển trò chơi tự làm dựa trên Arduino | Bộ điều khiển trò chơi Arduino PS2 | Chơi Tekken với Bàn điều khiển Arduino tự làm: Xin chào các bạn, chơi game luôn thú vị nhưng chơi với Bộ điều khiển trò chơi tùy chỉnh tự làm của riêng bạn sẽ thú vị hơn
Cách tạo cánh tay robot không dây với đạn Airsoft: 9 bước
Cách tạo cánh tay robot không dây với đạn Airsoft: Xin chào các bạn trong bài hướng dẫn này, tôi sẽ chỉ cho bạn cách tạo cánh tay robot không dây có thể lắc lư, di chuyển theo hướng lên xuống và bắn đạn airsoft bằng điều khiển từ xa không dây