Robot bốn chân dựa trên Arduino. Lắp ráp robot tự hành sử dụng Arduino

Chúng tôi trình bày một dự án nhỏ đơn giản về Arduino dành cho người mới bắt đầu - Robot Nhện được điều khiển bằng điều khiển từ xa IR. Để chế tạo robot này bằng tay của chính bạn, bạn sẽ cần tối thiểu các bộ phận và công cụ. Trong bài viết, bạn có thể tìm hiểu danh sách các vật liệu và công cụ cần thiết để sản xuất nó, chúng tôi cũng đã đăng hướng dẫn chi tiết với sơ đồ lắp ráp, bản vẽ các bộ phận và bản phác thảo hoàn thiện.

Băng hình. Robot nhện trên bảng điều khiển

Phần đế của robot gồm hai tấm ván ép dán lại với nhau bằng súng nhiệt, chân nhện được làm bằng dây thép có đường kính 2mm. Bộ thu hồng ngoại được sử dụng để nhận tín hiệu từ điều khiển từ xa và ba động cơ phụ được sử dụng để di chuyển. Nguồn điện được cung cấp từ pin Krona 9V. TRONG trong ví dụ này Bộ vi điều khiển Robotdyn UNO được sử dụng, nhưng có thể sử dụng bất kỳ bo mạch Arduino nào.

Robot nhện tự làm trên Arduino

Đối với dự án này, chúng tôi sẽ cần:

  • Bảng Arduino UNO;
  • máy thu hồng ngoại;
  • bất kỳ điều khiển từ xa nào;
  • ván ép dày 3 - 4 mm;
  • dây có đường kính 1,5 - 2 mm;
  • ba servo;
  • pin 9V;
  • dây điện và băng keo điện.

Tất cả vật liệu cần thiết, bạn nhìn thấy trong bức ảnh trên. Ngoài ra, bạn sẽ cần một số công cụ: kìm để cắt và uốn dây, cưa sắt hoặc ghép hình để cắt ván ép, súng nhiệt để buộc chặt các bộ phận, keo để dán động cơ servo, dao tiện ích và bàn hàn. Chúng tôi cũng sử dụng chốt chân nhện để bảo vệ bàn khỏi trầy xước và giảm tiếng ồn.

Trong bức ảnh tiếp theo, bạn có thể thấy thiết kế với mặt trái, cho biết kích thước của ván ép. Để thuận tiện cho việc kết nối servo với Arduino, chúng tôi đã hàn tất cả các dây dương (chúng có màu đỏ) lại với nhau và chúng tôi cũng kết nối các dây đi tới GND từ servo (chúng có màu nâu). Chúng tôi hàn một dây có tiếp điểm vào dây để điều khiển động cơ phụ (màu vàng).


Hình chụp. Thiết bị robot nhện được điều khiển bằng điều khiển từ xa IR

Chúng tôi cắt các đầu nối ba chân khỏi servo; một trong số chúng được sử dụng để kết nối bộ thu IR với Arduino. Các tấm ván ép được dán lại với nhau bằng súng nhiệt, đảm bảo độ bám dính đáng tin cậy và bạn không phải đợi lâu - nhựa sẽ cứng lại trong vòng vài phút. Các servo và đầu nối cho bộ thu IR có thể được dán vào thân máy bằng keo.

Giai đoạn khó khăn nhất trong dự án có thể coi là làm chân nhện từ dây. Cần có độ chính xác khi uốn chúng và tinh chỉnh, tùy thuộc vào vị trí trọng tâm của robot. Nếu bàn chân không được làm chính xác, robot có thể bị lật và ngã sang bên này hay bên kia khi bước đi. Pin cấp nguồn có thể được đặt lên trên hoặc gắn vào đáy ván ép bằng băng dính hai mặt.

Lắp ráp robot nhện sử dụng điều khiển IR

Tải xuống dự án miễn phí

1. cắt ra hai tấm ván có kích thước yêu cầu

2. dán các tấm ván lại với nhau bằng súng nhiệt

3. cắt dây có đầu nối từ động cơ servo

4. dán ba servo lại với nhau

5. hàn các dây từ các servo lại với nhau

6. hàn dây có tiếp điểm vào một đầu nối

5. dán các servo vào thân robot

6. dán đầu nối của bộ thu IR vào thân máy

7. cắt dây thép theo chiều dài yêu cầu

8. Uốn dây cho bàn chân theo hình vẽ

9. dán các đòn bẩy từ động cơ servo vào bàn chân

10. chọn bộ thu hồng ngoại cho điều khiển từ xa của bạn

11. chỉ định các lệnh từ điều khiển từ xa trong tệp ir_command_codes.h

12. Lắp ráp robot nhện với Arduino UNO

13. thử nghiệm robot nhện + điều khiển hồng ngoại


Bạn có thể đặt bất kỳ câu hỏi nào về quá trình sản xuất và thiết lập dự án này trong phần bình luận cho bài đăng này hoặc trên kênh của chúng tôi YouTube trong phần bình luận dưới video cho dự án nhỏ “ Robot Arduino nhện + điều khiển hồng ngoại".

Cũng thường đọc:


Đối với những người quyết định kiểm tra sức mạnh của mình trong lĩnh vực robot, đồng thời muốn khám phá các khả năng của nền tảng Ardunio, có cách tuyệt vờiĐiều này có thể được thực hiện bằng cách lắp ráp một robot nhện, sẽ được mô tả trong bài viết này. Các thành phần năng lượng chính mà robot sẽ di chuyển là động cơ servo. Về phần bộ não, đây là Arduino, cũng như Fischertechnik. Theo tác giả, robot hóa ra khá thú vị và đầy hứa hẹn.

Vật liệu và dụng cụ sản xuất:
- một bộ lưỡi dao;
- chất kết dính nóng chảy;
- Dremel (bạn cần mũi khoan rất mỏng);
- Cái vặn vít;
- khoan bằng mũi khoan 7/32;
- Tua vít Phillips;
- lưỡi;
- ngăn chứa pin;
- bảng bánh mì.


Từ thiết bị điện tử, bạn sẽ cần:
- tám microservo có giá đỡ;
- 6 pin AA và kẹp quần áo;
- nhiều jumper và kết nối liên lạc.

Là một phần phần mềm, bạn sẽ cần một Arduino có nguồn điện.

Và cần có một bộ Fischertechnik để đựng các phụ tùng thay thế.

Quy trình sản xuất Robot. :

Bước một. Tạo khung robot
Để làm khung, bạn sẽ cần bộ công cụ Fischertechnik. Bạn có thể thấy nó trông như thế nào trong bức ảnh. Để tạo khung, bạn cần ba viên gạch cao, có bốn lỗ ở giữa chúng. Cụ thể, trong sản phẩm tự chế này, một phần tử có 11 phần cắt sẽ được sử dụng. Điều quan trọng là đảm bảo rằng tất cả các servo đều hoạt động.








Bước hai. Cài đặt servo
Các ổ đĩa servo sẽ được lắp đặt giữa các “viên gạch”. Các bộ truyền động servo được cố định bằng vít; để thực hiện việc này, trước tiên bạn cần khoan lỗ tại các điểm lắp bằng Dremel. Bạn cần khoan lỗ có đường kính nhỏ nhất. Tuy nhiên, chất kết dính nóng chảy cũng phù hợp cho những mục đích này, nhưng trong trường hợp này, cấu trúc sẽ không thể tháo rời được.

Ổ đĩa servo thứ hai được lắp ngược lại ở phía bên kia.








Bước thứ ba. Lắp đặt một động cơ servo trên một động cơ servo khác
Trước hết, bạn cần xử lý các bộ phận lắp đặt của servo. Nếu động cơ quay theo hướng ngược lại thì phải quay hết sang phải. Làm thế nào để làm điều này có thể được nhìn thấy trong bức ảnh.

Cụ thể ở trong trường hợp này Vít servo phải nhô ra phía trên lớp nhựa để có thể di chuyển được. Trong vỏ của bộ truyền động servo thứ hai, bạn cần tạo một hốc cho đầu vít.
Cái gì










Keo nóng được sử dụng để kết nối hai động cơ servo.

Bước bốn. Kết nối chân
Cách làm chân có thể xem trong ảnh. Tổng cộng nên có bốn người trong số họ.






Sau khi các chân được lắp ráp và kết nối với robot, cấu trúc sẽ giống như trong ảnh.


Bước năm. Tạo biểu đồ tỷ lệ
Sơ đồ này là cần thiết để hiểu mỗi servo có thể xoay góc nào. Tiếp theo, mỗi ổ servo được chỉ định con số cụ thể, và dựa trên con số này, firmware cho robot sẽ được tạo ra.


Bước sáu. bảng bánh mì
Bạn cần phải loại bỏ tất cả 30 jumper. Tiếp theo, mọi thứ cần được kết nối bằng dây như trong sơ đồ. Mỗi servo có ba tiếp điểm, một tiếp điểm chịu trách nhiệm nối đất, một tiếp điểm cung cấp điện và một tiếp điểm dùng để điều khiển động cơ.

Các chân Vcc và GND của servo cần được kết nối với các chân Vcc và GND của bảng mạch bánh mì. Ngoài ra, nguồn điện 7,5V được kết nối với các kênh bố trí GND và Vcc.

Các dây điều khiển servo có màu cam và màu vàng. Chúng được kết nối với chân 2 và 9. Ví dụ: chân từ động cơ đầu tiên được kết nối với chân thứ hai trên Arduino. Động cơ thứ hai được kết nối với tiếp điểm thứ ba, v.v.



Bước bảy. Thiết lập servo.
Bây giờ là lúc tạo mã phần mềm cho robot. Trước hết bạn cần tạo trên Arduino dự án mớiđể đồng bộ hóa động cơ. Bạn có thể xem mã sẽ trông như thế nào trong ảnh. Nhờ mã này mà chân của robot được căn chỉnh thẳng hàng.


Để con nhện có thể leo lên, chúng ta cần tạo một dự án khác có tên Up and Down. Nhờ mã này mà chân của con nhện sẽ có thể di chuyển lên xuống.


Để robot di chuyển tiến và lùi, bạn cũng cần tạo một dự án khác. Bạn có thể thấy nó sẽ trông như thế nào trong bức ảnh.


Và cuối cùng để robot có thể di chuyển bạn cần kết hợp giữa mặt trước và mặt sau. mặt sau. Như bạn có thể lưu ý, mã chương trình của robot bao gồm bốn khối.

Thế là xong, robot đã sẵn sàng. Bây giờ bạn có thể cài đặt nó cảm biến khác nhau, điều này sẽ cho phép robot điều hướng trong không gian. Bạn cũng có thể chế tạo cánh tay cho robot để nó có thể nhặt đồ vật. Nói chung, mọi thứ ở đây phụ thuộc vào tâm huyết và trí tưởng tượng của người chế tạo robot. Tuy nhiên, ngay cả ở dạng này, robot vẫn hoạt động khá thú vị.

Phần sụn: (số lượt tải xuống: 152)

Chào mọi người. Bài viết này là một câu chuyện ngắn về cách LÀM người máy của họ bàn tay. Tại sao lại là một câu chuyện, bạn hỏi? Điều này là do thực tế là để sản xuất những thứ như vậy đồ thủ công cần vận dụng một khối lượng kiến ​​thức đáng kể, rất khó trình bày trong một bài viết. Chúng ta sẽ tìm hiểu quy trình xây dựng, xem qua mã và cuối cùng biến một sáng tạo ở Thung lũng Silicon thành hiện thực. Tôi khuyên bạn nên xem video để biết bạn nên làm gì.

Trước khi tiếp tục, xin lưu ý những điều sau: trong quá trình sản xuất đồ thủ công một máy cắt laser đã được sử dụng. Bạn có thể tránh sử dụng máy cắt laser nếu bạn có đủ kinh nghiệm làm việc bằng tay. Độ chính xác là chìa khóa để hoàn thành dự án thành công!

Bước 1: Nó hoạt động như thế nào?

Robot có 4 chân, với 3 động cơ trên mỗi chân, cho phép nó di chuyển các chi theo 3 bậc tự do. Anh ta di chuyển với “dáng đi bò”. Nó có thể chậm, nhưng nó là một trong những cách mượt mà nhất.

Đầu tiên bạn cần dạy robot di chuyển tiến, lùi, trái và phải, sau đó thêm thiết bị cảm biến sóng siêu âm, sẽ giúp phát hiện chướng ngại vật/chướng ngại vật và sau đó là mô-đun Bluetooth, nhờ đó khả năng điều khiển của robot sẽ đạt đến một tầm cao mới.

Bước 2: Các bộ phận cần thiết

Bộ xương làm bằng plexiglass dày 2 mm.

Phần điện tử của sản phẩm tự chế sẽ bao gồm:

  • 12 động cơ servo;
  • arduino nano (có thể thay thế bằng bất kỳ bo mạch arduino nào khác);

  • Lá chắn để điều khiển servo;
  • nguồn điện (trong dự án sử dụng nguồn điện 5V 4A);

  • thiết bị cảm biến sóng siêu âm;
  • mô-đun bluetooth hc 05;

Để làm một tấm khiên, bạn sẽ cần:

  • bảng mạch (tốt nhất là với dòng chung(xe buýt) điện và mặt đất);
  • đầu nối pin giữa các bo mạch - 30 chiếc;
  • ổ cắm trên mỗi bảng – 36 chiếc;

  • Dây điện.

Công cụ:

  • Máy cắt laser (hoặc tay lành nghề);
  • Keo siêu dính;
  • Chất kết dính nóng chảy.

Bước 3: Bộ xương

Hãy tận dụng lợi thế chương trình đồ họađể vẽ các thành phần của bộ xương.

Sau đó, bất cứ lúc nào cách hợp lý cắt ra 30 bộ phận của robot tương lai.

Bước 4: Lắp ráp

Sau khi cắt, tháo lớp giấy bảo vệ ra khỏi tấm mica.

Tiếp theo chúng ta bắt đầu lắp ráp các chân. Các bộ phận buộc chặt được tích hợp vào các bộ phận của bộ xương. Tất cả những gì còn lại phải làm là kết nối các bộ phận lại với nhau. Kết nối khá chặt chẽ, nhưng để có độ tin cậy cao hơn, bạn có thể bôi một giọt keo siêu dính vào các bộ phận buộc chặt.

Sau đó, bạn cần sửa đổi các servo (dán vít đối diện với các trục servo).

Với sửa đổi này, chúng tôi sẽ làm cho robot ổn định hơn. Chỉ cần sửa đổi 8 servo, 4 servo còn lại sẽ được gắn trực tiếp vào thân máy.

Chúng tôi gắn các chân vào bộ phận kết nối (phần cong) và phần này lần lượt gắn vào bộ truyền động servo trên thân máy.

Bước 5: Làm khiên

Việc làm bảng khá đơn giản nếu bạn làm theo các bức ảnh được trình bày trong bước này.

Bước 6: Điện tử

Hãy gắn các chân ổ đĩa servo vào bo mạch arduino. Các chân phải được kết nối theo đúng trình tự, nếu không sẽ không có gì hoạt động!

Bước 7: Lập trình

Đã đến lúc đưa Frankenstein vào cuộc sống. Đầu tiên chúng ta hãy tải chương trình Legs_init và đảm bảo rằng robot ở vị trí như trong hình. Tiếp theo, hãy tải quattro_test để kiểm tra xem robot có phản ứng với các chuyển động cơ bản hay không, chẳng hạn như tiến, lùi, trái và phải.

QUAN TRỌNG: Bạn cần thêm thư viện bổ sung vào phần mềm môi trường arduino IDE. Liên kết đến thư viện được cung cấp dưới đây:

Robot phải tiến 5 bước, lùi 5 bước, rẽ trái 90 độ, rẽ phải 90 độ. Nếu Frankenstein làm mọi thứ đúng thì chúng ta đang đi đúng hướng.

P. S: Đặt robot lên cốc, giống như trên giá đỡ, để bạn không phải đặt robot ở điểm xuất phát mỗi lần. Ngay khi các thử nghiệm cho thấy công việc bình thường robot, chúng ta có thể tiếp tục thử nghiệm bằng cách đặt nó trên mặt đất/sàn nhà.

Bước 8: Động học nghịch đảo

Động học nghịch đảo (nghịch đảo) là thứ thực sự điều khiển robot (nếu bạn không quan tâm đến khía cạnh toán học của dự án này và đang vội hoàn thành dự án, bạn có thể bỏ qua bước này, nhưng biết điều gì khiến rô-bốt đánh dấu sẽ luôn hữu ích).

Nói một cách đơn giản, động học nghịch đảo, hay gọi tắt là IR, là “một phần” của phương trình lượng giác xác định vị trí của đầu nhọn của chân, góc của mỗi servo, v.v., cuối cùng xác định một vài cài đặt sơ bộ. Ví dụ: độ dài của mỗi bước của robot hoặc độ cao mà cơ thể sẽ ở trong khi di chuyển/nghỉ ngơi. Sử dụng những thứ này tham số được xác định trước, hệ thống sẽ trích xuất mức độ di chuyển của mỗi servo để điều khiển robot bằng các lệnh đã cho.

Thật dễ dàng để tạo ra các máy khác nhau với Arduino điều khiển từ xa, cảm biến đơn giản và logic. Đó là lý do tại sao dòng này cực kỳ phổ biến. Có rất nhiều cảm biến tương thích và bảng mở rộng được bán. Internet chứa đầy các thư viện phần mềm làm sẵn và các dự án nguồn mở cho mọi trường hợp. Hầu như tất cả các câu hỏi mà bạn gặp phải trong quá trình thành thạo Arduino đều đã được ai đó hỏi và bạn sẽ luôn tìm thấy câu trả lời.

Hãy bắt đầu từ đâu đó? Câu hỏi chính- lựa chọn bộ điều khiển. Có nhiều phiên bản Arduino cũng như các bản sao của bên thứ ba được xây dựng dựa trên các phiên bản này. Có lẽ đây là hai lớp học thú vị nhất đối với chúng tôi:

  • Arduino Uno - sự lựa chọn tốt nhất dành cho người mới bắt đầu, bảng đơn giản nhất, ngân sách và phổ biến nhất. Nó dựa trên chip ATmega328 với tần số đồng hồở tốc độ 16 MHz, bộ nhớ flash 32 KB, RAM 2 KB và EEPROM 1 KB. Uno có 14 đầu vào/đầu ra kỹ thuật số có thể được sử dụng để điều khiển các cảm biến, động cơ servo và các thiết bị khác;
  • Arduino Mega/ Mega 2560 là một bảng phù hợp khi bạn biết trước rằng dự án sẽ phức tạp. Sự khác biệt chính là số lượng đầu vào/đầu ra lớn hơn (48 ở Mega, 54 ở Mega 2560). Cũng có nhiều thêm bộ nhớ: RAM 8 KB, EEPROM 4 KB và bộ nhớ flash 128 và 256 KB (tương ứng ở Mega và Mega 2560). Các bo mạch cũng khác nhau ở con chip tốc độ USB và một số đặc điểm khác.

Tất nhiên, còn có Arduino Pro, Arduino LilyPad và nhiều loại khác. Nhưng bây giờ hãy tập trung vào hai mô hình đầu tiên. Trong trường hợp của chúng tôi, mọi thứ khá đơn giản: Mega là cần thiết cho một robot có một lượng lớn chân

Mã đầu tiên

Đầu tiên hãy cài đặt Arduino IDE(arduino.cc) là một nền tảng chéo môi trường tự do phát triển. Bây giờ, nếu chúng ta kết nối Arduino của mình, chúng ta có thể thử viết mã đầu tiên với ví dụ đơn giản nhất: chương trình nhấp nháy đèn LED. Hầu hết các bộ điều khiển Arduino đều có nó và được kết nối với chân 13. Nhân tiện, trong thế giới Arduino, các chương trình thường được gọi là bản phác thảo. Đây là văn bản của bản phác thảo với ý kiến:

// Hãy đặt tên cho chân này là LED: const int LED = 13; void setup() ( // Khởi tạo chân kỹ thuật số // cho đầu ra: pinMode(LED, OUTPUT); ) void loop() ( // Áp dụng mức logic một // cho chân 13 (bật đèn LED): digitalWrite(LED , CAO); // Tạm dừng việc thực hiện bản phác thảo // trong một giây: delay(1000); // Áp dụng mức 0 logic // cho chân 13 (tắt đèn LED): digitalWrite(LED, LOW); / / Tạm dừng thực hiện // của bản phác thảo một lần nữa: delay(1000); )

Hãy chú ý đến các chức năng thiết lập và vòng lặp. Chúng phải có mặt trong bất kỳ bản phác thảo Arduino nào. Quá trình thiết lập được gọi một lần khi bật nguồn hoặc sau khi khởi động lại bộ điều khiển. Nếu bạn muốn mã chỉ được thực thi một lần thì đây là nơi bạn nên đặt mã. Thông thường đây là tất cả các loại thủ tục để khởi tạo một cái gì đó. Bản phác thảo của chúng tôi cũng không ngoại lệ: Chân kỹ thuật số Arduino có thể hoạt động như cả đầu vào và đầu ra. Trong chức năng thiết lập, chúng tôi nói rằng chân 13 sẽ hoạt động như thế nào đầu ra kỹ thuật số bộ điều khiển.

Sau khi hàm thiết lập hoàn thành công việc của nó, một vòng lặp khép kín sẽ tự động được khởi chạy, trong đó hàm vòng lặp sẽ được gọi. Chúng tôi được yêu cầu viết những gì chúng tôi muốn làm ở đó. Và chúng tôi muốn áp dụng mức logic một (5 V) cho chân 13, nghĩa là bật đèn LED, sau đó đợi một giây (1000 tính bằng mili giây), sau đó áp dụng mức logic 0 (0 V) và đợi một giây. Cuộc gọi vòng lặp tiếp theo sẽ lặp lại mọi thứ.

Bây giờ chúng ta tải bản phác thảo của mình lên bộ điều khiển. Không, chúng tôi không cần một lập trình viên. Bộ điều khiển Arduino, ngoài bản phác thảo của chúng tôi, còn chứa chương trình đặc biệt- bootloader, đặc biệt, kiểm soát việc tải mã từ máy tính. Vì vậy, để tải lên bản phác thảo, chúng ta chỉ cần cáp USB và mục menu Tệp → Tải lên (Ctrl + U) trong Arduino IDE.

Câu hỏi then chốt

Chúng ta thực sự cần bao nhiêu chân? Hãy xác định nhiều cấu hình của robot đi bộ. Theo số chân:

  • hai chân - hai chân (nguyên mẫu - con người);
  • bốn chân - bốn chân (nguyên mẫu - hầu hết các loài động vật có vú);
  • hexapod - sáu chân (nguyên mẫu - hầu hết các loài côn trùng);
  • bạch tuộc - tám chân (nguyên mẫu - nhện, bọ cạp, cua và các động vật chân đốt khác).

Ngoài số lượng chân, cấu hình của từng chân cũng rất quan trọng. Đặc điểm chính chân là số bậc tự do hoặc số chiều tự do (DOF). Mức độ tự do là khả năng xoay hoặc uốn quanh một trục (ít thường xuyên hơn là di chuyển về phía trước dọc theo trục đó). Rõ ràng, nếu chỉ có một bậc tự do thì bạn sẽ không thể tiến xa với chặng đường như vậy. Chân hai bậc tự do (2DOF) đã cho phép robot nhiều chân di chuyển, mặc dù 2DOF chỉ cho phép đầu chân di chuyển tự do trong một mặt phẳng. Và chân 3DOF di chuyển “bàn chân” trong không gian 3D (tất nhiên trừ khi cả ba trục đều song song). Ngoài ra còn có chân 4DOF, giúp tăng tính linh hoạt và phạm vi chuyển động của chân. Côn trùng thường có chân 4DOF.

Điều này có ý nghĩa gì với chúng ta? Trong các robot nghiệp dư giá rẻ, mỗi bậc tự do được thực hiện bởi một động cơ, chính xác hơn là bộ truyền động servo hoặc serv. Cấu hình của các chân xác định duy nhất số lượng servo này là cần thiết. Vì vậy, một hexapod 3DOF sẽ cần 18 servo và một con nhện 4DOF sẽ cần 32. Đừng lo lắng về số lượng, các servo nhỏ được sử dụng trong các mẫu RC nghiệp dư có giá rất rẻ. Bạn có thể tìm thấy chúng trong các cửa hàng trực tuyến bằng cách tìm kiếm micro servo.

Để lập trình các servo, chỉ cần biết rằng chúng đã có bộ điều khiển thực hiện công việc chính là đủ. Và tất cả những gì cần thiết là cung cấp năng lượng và tín hiệu số cho bộ điều khiển biết chúng ta muốn xoay trục truyền động đến vị trí nào. Thông tin về thiết kế của họ rất dễ tìm thấy. Giao thức của họ là giao thức đơn giản nhất trong tất cả các giao thức truyền thông kỹ thuật số: điều chế độ rộng xung-PWM (PWM trong tiếng Anh). Tất cả các động cơ servo đơn giản đều có đầu nối ba chân: nối đất, +5 V (điện áp có thể thay đổi tùy theo kích thước và nguồn điện) và đầu vào tín hiệu. Bộ điều khiển Arduino có thể có hai những cách khác tạo ra một tín hiệu như vậy. Đầu tiên là xung điều khiển phần cứng, mà bản thân chip có thể xuất ra trên một số chân I/O kỹ thuật số của nó. Thứ hai là phần mềm. Phần mềm cho phép bạn đồng thời nhận được nhiều tín hiệu PLC khác nhau hơn phần cứng. Một trình bao bọc tiện lợi cho nó trong Arduino được cung cấp - thư viện servo. Nó cho phép bạn sử dụng đồng thời 12 servo trên hầu hết các bộ điều khiển cỡ nhỏ (Uno, Due, Nano) và 48 servo trên Arduino Mega và những thứ tương tự. Chân tín hiệu servo được kết nối với chân kỹ thuật số Arduino. Mặt đất và nguồn điện - rõ ràng là mặt đất và nguồn điện, những thứ này có thể phổ biến đối với tất cả các dịch vụ. Trong các vòng servo ba dây, màu đen hoặc nâu được nối đất, ở giữa thường có màu đỏ +5 V, và cuối cùng là tín hiệu màu trắng hoặc vàng. Từ quan điểm phần mềm, việc điều khiển cực kỳ đơn giản:

Myservo servo; // servo trên chân 9 của Arduino myservo.attach(9); // Xoay tới vị trí 90° myservo.write(90);

Hầu hết các động cơ servo có thể xoay trục 180° và đối với chúng, 90° là vị trí trung bình. Để đơn giản hóa việc kết nối servo với bo mạch Arduino, có một số giải pháp. Cái kinh điển nhất là Sensors Shield. Bằng cách cài đặt nó trên Uno và cấp nguồn cho các đầu nối của động cơ servo, bạn có thể kết nối trực tiếp các đầu nối của chúng vào nó.

Ắc quy

Một vấn đề quan trọng nữa là dinh dưỡng. Nếu bạn có một bo mạch tiên tiến cho phép bạn cung cấp cho toàn bộ hệ thống thông qua một đường dây điện (và động cơ servo sẽ không can thiệp vào hoạt động của bộ điều khiển), thì bạn có thể sử dụng một nguồn. Sự lựa chọn là rất lớn, tất nhiên, tốt nhất là than bánh Li-Ion/Li-Po dành cho các mẫu radio. Nhưng họ cũng cần thích hợp thiết bị sạc. Nếu bạn có bộ điều khiển đơn giản hơn (Uno/Due/Nano), thì bạn có thể cấp nguồn riêng cho nó, chẳng hạn như với “Krona” 9 volt và kết nối các servo với bộ điều khiển chính pin mạnh mẽ. Bằng cách này, các servo chắc chắn sẽ có đủ năng lượng. Khi Pin lithium bạn cần theo dõi điện áp cẩn thận hơn bình thường để không xảy ra hiện tượng phóng điện quá mức (cần làm rõ điện áp cho phép đối với loại cụ thể pin). Với mục đích này, robot Sleipnir, sẽ được thảo luận thêm, cũng được gắn một vôn kế kỹ thuật số nhỏ.

Bọ cánh cứng robot tự làm

Bộ dụng cụ

  • Bộ điều khiển Arduino Uno: 1150 chà.
  • Ba động cơ servo. Tôi đã sử dụng HXT500, 200 chà. một mảnh
  • Ngăn chứa pin cho Krona có công tắc: 50 chà.
  • Pin "Krona": 145 chà.
  • Bộ thu hồng ngoại: 90 chà.
  • Dây thép có đường kính khoảng 1,5 mm. Ví dụ như tôi dùng cái đánh trứng hỏng để đánh trứng

Tổng cộng: 2035 chà.

DmitryDzz: Tôi muốn mời bạn tạo một con robot sáu chân nhỏ được điều khiển từ xa dựa trên bộ điều khiển Arduino Uno. Chân sẽ có một bậc tự do và việc điều khiển sẽ được thực hiện bằng điều khiển từ xa của TV thông thường.

Tôi phải nói rằng đây là giá của các cửa hàng đắt tiền ở Moscow. TRONG Cửa hàng trực tuyến Trung Quốc tất cả điều này sẽ có giá gấp đôi. Đếm hàng giao. Đúng vậy, theo kinh nghiệm của tôi, bạn sẽ phải đợi từ hai tuần đến ba tháng.

Một cách dễ dàng hơn là lấy một bộ hàm tạo, vì trong những bước đầu tiên, một bộ điều khiển sẽ không đủ. Bây giờ nhiều cửa hàng cung cấp những bộ như vậy. Ví dụ: có một cửa hàng trực tuyến tuyệt vời “Amperka”. Tại đây, bạn sẽ được cung cấp một số bộ xây dựng tương tự, khác nhau về nội dung và tất nhiên là giá cả. Đối với tôi cách đơn giản nhất là đủ - “Matryoshka X”. Nó bao gồm bộ điều khiển Arduino Uno, cáp USB để kết nối với máy tính, bảng mạch tạo mẫu (một thứ không thể thay thế!), một bộ dây nhảy, đèn LED, điện trở và các vật dụng nhỏ khác.

Trong cùng một cửa hàng có phần “Wiki”, nơi bạn thậm chí sẽ tìm thấy các video hướng dẫn ngắn tuyệt vời được dịch sang tiếng Nga. Hãy chắc là kiểm tra chúng. Và tất nhiên, có một diễn đàn nơi họ có thể sẽ cố gắng giúp đỡ bạn.

Những công cụ bạn sẽ cần:

  • mỏ hàn và mọi thứ bạn cần để hàn. Bạn sẽ không phải hàn nhiều và không cần bất kỳ kỹ năng đặc biệt nào;
  • súng keo nóng và que cho nó;
  • kìm để làm việc với dây.

Nếu bạn đã thu thập mọi thứ, hãy bắt đầu!

Điều khiển

Hãy chuyển sang bước đầu tiên: chúng ta cần học cách tương tác với điều khiển từ xa và tìm ra mã để nhấn một số nút của nó. Những mã này sau này sẽ hữu ích cho bản phác thảo điều khiển robot.

Ở giai đoạn này, bạn cũng sẽ cần một bộ thu IR và sẽ rất tuyệt nếu có một bảng tạo mẫu. Phần lớn các điều khiển từ xa IR hoạt động ở tần số sóng mang 36 kHz, 38 kHz hoặc 40 kHz (Panasonic, Sony). Các trường hợp ngoại lệ là điều khiển từ xa của Sharp (56 kHz), Bang & Olufsen (455 kHz) và có thể ai đó thậm chí còn kỳ lạ hơn. Do đó, bất kỳ máy thu IR nào ở tần số 36, 38 hoặc 40 kHz đều khá phù hợp với chúng tôi. Tần số có thể không khớp chính xác tần số sóng mang tín hiệu. Trong trường hợp này, độ nhạy của máy thu sẽ giảm, nhưng trên thực tế, tôi không nhận thấy bất kỳ sự khó chịu nào khi sử dụng bộ thu IR TSOP2136 (36 kHz - hai chữ số cuối là tần số) và điều khiển từ xa Sony (40 kHz).

Vì vậy, các bộ thu IR TSOP21xx, TSOP22xx, TSOP312xx phù hợp với hầu hết các điều khiển từ xa. Hai chữ số cuối có thể là 36, 37, 38 hoặc 40. Trước khi bật bộ thu IR, hãy kiểm tra hệ thống dây điện của các tiếp điểm của nó - chỉ có ba trong số đó: +5V (nguồn), GND (mặt đất), Vs (đầu ra) . Hãy lắp ráp mạch như trong hình minh họa (đi dây cho TSOP2136).


Như bạn có thể thấy, chúng tôi đã kết nối đầu ra của bộ thu IR với đầu vào analog của bộ điều khiển A0.

Đây là mã phác thảo trông như thế nào:

#include "IRremote.h" // Đầu vào tương tự của bộ điều khiển, // mà bộ thu IR được kết nối: const int IR_PIN = A0; // Tạo đối tượng thu IR: IRrecv imperv(IR_PIN); void setup() ( Serial.begin(9600); Serial.println("ready"); // Bắt đầu nghe tín hiệu IR: impercv.enableIRIn(); ) void loop() ( // Mô tả cấu trúc kết quả, / / trong đó // đã nhận và giải mã // các lệnh IR sẽ được đặt: kết quả giải mã_results; // Nếu lệnh IR được nhận và // giải mã thành công thì chúng ta xuất // mã nhận được ra cổng serial // của bộ điều khiển: if (irrecv.decode (&results)) ( Serial.println(results.value); impercv.resume(); ) )

Bản phác thảo sử dụng thư viện đặc biệt IRremote.h, giải mã tín hiệu từ nhiều loại điều khiển từ xa IR. Thư viện này là một dự án mở, bạn có thể tải xuống từ https://github.com/shirriff/Arduino-IRremote. Và để kết nối nó với dự án của chúng ta, chúng ta cần thực hiện ba bước:

  • sao chép thư mục thư viện vào thư mục thư viện, thư mục này nằm trong thư mục cài đặt Arduino IDE;
  • khởi động lại IDE;
  • thêm dòng #include “IRremote.h” vào đầu bản phác thảo của chúng tôi.

Bây giờ bản phác thảo sẽ có sẵn chức năng giải mã tín hiệu IR. Nhưng để xem các mã đã nhận, chúng ta cũng sẽ sử dụng đối tượng Serial. Với sự giúp đỡ của nó, cổng nối tiếp(cùng cáp USB) chúng ta sẽ chuyển mã vào máy tính. Trong chức năng thiết lập, chúng ta khởi tạo đối tượng Serial. "9600" là 9600 baud - tốc độ sẽ được sử dụng để truyền dữ liệu. Sau khi khởi tạo, chúng ta có thể ghi vào cổng nối tiếp bằng hàm println. Để xem kết quả đầu ra này trên máy tính của bạn trong Arduino IDE, hãy chọn mục menu Công cụ → Màn hình nối tiếp (Ctrl + Shift + M). Chỉ cần đảm bảo rằng nó được đặt ở mức 9600 baud.

Vì vậy, bộ điều khiển nhận nguồn qua cáp USB và truyền dữ liệu qua nó. Tải bản phác thảo, khởi chạy Serial Monitor và bắt đầu nhấn các nút điều khiển từ xa. Mã sẽ xuất hiện trong cửa sổ Serial Monitor. Các giao thức điều khiển từ xa khác nhau, đôi khi có thể là một mã, đôi khi là nhiều mã. Trong mọi trường hợp, bạn luôn có thể chọn mã duy nhất cho mỗi nút điều khiển từ xa.

Chúng ta cần 13 nút điều khiển từ xa. Tôi đã sử dụng như sau:

  • 1 - rẽ nhẹ sang trái;
  • 2 - chuyển động về phía trước;
  • 3 - rẽ nhẹ sang phải;
  • 4 - rẽ trái tại chỗ;
  • 5 - dừng lại;
  • 6 - rẽ phải tại chỗ;
  • 7 – đi lùi và rẽ phải;
  • 8 - chuyển động lùi;
  • 9 – lùi xe rẽ trái;
  • nút màu xanh - rất chậm;
  • màu vàng - chậm;
  • xanh - nhanh;
  • màu đỏ - rất nhanh.

Hãy ghi lại mã của các nút này, sau này chúng sẽ cần thiết cho bản phác thảo điều khiển robot.

Thuật toán chuyển động

Bản phác thảo điều khiển robot có sẵn trên trang dự án của chúng tôi (bit.ly/1dEwNDC). Đừng quên thay đổi giá trị của các hằng số cho mã của các nút được nhấn trên điều khiển từ xa thành mã của điều khiển từ xa của bạn (hằng số IR_COMMAND_XXX_CODES trong tệp ir_command_codes.h).

Chúng ta sẽ không xem xét chi tiết bản phác thảo; tôi nghĩ các nhận xét trong mã là đủ, nhưng vẫn còn một câu hỏi đáng để xem xét.

Chuyển động của côn trùng rất thú vị. Và mặc dù tất cả những con bọ này đều rất gần rơi xuống đất, nhưng vì một lý do nào đó, chúng luôn ổn định: tại bất kỳ thời điểm nào cũng có ít nhất ba chân (hai chân ở một bên và một chân ở bên kia) đứng trên bề mặt. Và trong khi những chiếc chân này kéo con bọ về phía một mục tiêu, ba chiếc chân còn lại được kéo lên để lặp lại chuyển động này. Nhiệm vụ của chúng tôi là làm điều gì đó tương tự.

Con robot của chúng tôi có ba động cơ phụ được sắp xếp thành một hàng vuông góc với chuyển động. Đối với động cơ servo bên trái và bên phải, trục trục được hướng lên trên và đối với động cơ servo trung tâm, nó được hướng về phía trước. Ví dụ, nhiệm vụ của servo bên trái là bơm hai chân cùng một lúc: phía trước bên trái và phía sau bên trái. Nhân tiện, chúng được kết nối chắc chắn với nhau và dán vào cần điều khiển của servo này. Nhiệm vụ của servo trung tâm là nâng bên trái hoặc bên phải của bọ. Do đó, chân trái và chân phải ở giữa là một bộ phận hình chữ U duy nhất được gắn vào cần gạt của động cơ này.

Bản phác thảo phải đảm bảo robot di chuyển tiến, lùi, chuyển động mượt mà và quay tại chỗ. Tôi cũng muốn kiểm soát tốc độ của con bọ. Để mô tả những chuyển động này theo chương trình, chúng ta sẽ cần đến toán học. Nhìn vào sơ đồ.

Vòng tròn màu xanh Chân của bọ robot đứng trên bề mặt được chỉ định và những chân trên không có màu trắng. Xin lưu ý rằng khi di chuyển tiến hoặc lùi, động cơ servo bên trái và bên phải phải di chuyển giống hệt nhau. Và khi quay tại chỗ, động cơ sẽ quay theo các hướng khác nhau (đối xứng). Một điều thú vị nữa là chuyển động tiến và lùi chỉ khác nhau về pha của động cơ servo trung tâm.

Vậy điều này được thực hiện như thế nào? Chúng ta nhớ rằng bộ điều khiển liên tục gọi hàm vòng lặp. Điều này có nghĩa là trong hàm này, chúng ta phải đặt mã xác định vị trí hiện tại của các servo và đặt chúng ở vị trí này. Mỗi động cơ servo phải thực hiện các chuyển động dao động. Chúng ta có thể tính toán vị trí của động cơ servo tại thời điểm t bằng công thức sau:

X = Một sin(2πt/T),

Trong đó X là vị trí mong muốn của động cơ servo, A là biên độ dao động, T là chu kỳ dao động.

Vì vậy, tùy thuộc vào thời điểm t, chúng ta sẽ nhận được sự thay đổi giá trị của X trong khoảng từ –A đến +A. Động cơ servo có thể được định vị từ 0 đến 180°. Vì vậy, tốt hơn là chúng ta nên dao động quanh vị trí “không” là 90°. Và nếu chúng ta muốn cung cấp các dao động có chu kỳ 1 s xung quanh vị trí 90° với biên độ 30°, thì công thức được chuyển thành dạng sau:

X = 90 + 30 sin(2πt/1000),

trong đó t là thời gian tính bằng mili giây đã trôi qua kể từ khi bắt đầu dao động. Để kiểm soát tốc độ của bọ robot, chúng ta có thể thay đổi chu kỳ dao động. Càng lớn thì tốc độ càng thấp.

Bây giờ chúng ta hãy quay lại sơ đồ của chúng ta một lần nữa, vì công thức viết ở trên vẫn chưa hoàn thành. Làm thế nào để đảm bảo chuyển động đồng bộ hoặc ngược chiều của động cơ servo bên trái và bên phải? Làm thế nào để thay đổi pha của động cơ servo trung tâm? Chúng ta phải thêm pha dao động vào công thức của mình. Ví dụ, việc dịch chuyển đối số của sin một lượng π đối với động cơ bên phải sẽ làm cho nó hoạt động ngược pha sang động cơ bên trái, tức là theo cách chúng ta cần để nó quay đúng vị trí. Công thức của chúng ta bây giờ sẽ trông như thế này:

X = 90 + 30 sin(2πt/1000 + Φ),

trong đó Φ là pha dao động, giá trị từ 0 đến 2π.

Nhìn vào bảng để hiểu các pha dao động của động cơ servo đối với từng loại chuyển động.

Cuộc họp

Bây giờ, hãy lắp ráp robot trên bảng tạo mẫu và tải lên bản phác thảo điều khiển.

Cái này rất giai đoạn quan trọng trước khi lắp ráp. Hãy thử ngắt kết nối cáp USB và cấp nguồn cho bảng mạch bằng pin Krona. Kiểm tra tất cả các giai đoạn chuyển động và đảm bảo mọi thứ hoạt động. Sau khi lắp ráp robot, việc thay đổi bất cứ thứ gì (ví dụ thay thế động cơ servo không hoạt động) sẽ khó khăn hơn.

Bây giờ chúng ta hãy chuyển sang phần lắp ráp. Bộ phận chịu tải chính là ngăn chứa pin. Tôi khuyên bạn nên sử dụng ngăn kín và luôn có công tắc.

Cách dễ nhất để cố định các bộ phận của bọ cánh cứng là dùng keo nóng. Bắt đầu với động cơ servo. Loại bỏ các tai buộc không cần thiết và kết nối các máy với nhau. Sau đó dán cụm ba "serva" này vào nắp ngăn chứa pin. Đừng quên rằng ngăn chứa pin phải mở tự do để thay pin.

Cách dễ nhất là dán bộ điều khiển vào ngăn, nhưng tôi không thực sự thích tùy chọn này, vì tôi sẽ phải đưa Arduino Uno cho lỗi mãi mãi. Do đó, bạn có thể làm phức tạp cuộc sống của mình và sử dụng các đầu nối Arduino để gắn ngăn chứa pin. Ở dưới cùng của ngăn, dán một đầu nối chốt có khoảng cách giữa các chân là 2,54 mm. Nó phải được đặt sao cho vừa với ổ cắm bộ điều khiển trong khu vực các chân kỹ thuật số 8–11. Dù sao thì chúng ta cũng chưa cần đến chúng. Nếu bạn không có đầu nối trong tay thì một chiếc kẹp giấy hình chữ U sẽ làm được.

Các dây dẫn từ ngăn chứa pin phải được nối với chân Vin và GND liền kề. Đừng trộn lẫn sự phân cực! Cộng với “Crowns” trên Vin, trừ trên GND. Để đảm bảo sự tiếp xúc đáng tin cậy của dây với các đầu nối Arduino, bạn có thể chỉ cần thiếc đầu dây dày hơn, nhưng tôi đã sử dụng một đoạn kẹp giấy ngắn làm phích cắm. Và tôi phủ lên vùng hàn bằng ống co nhiệt.

Các đầu nối từ cáp truyền động servo phải được cắt bỏ, các dây nguồn (+5 V - thường là màu đỏ và GND - đen hoặc nâu) phải được kết hợp và định tuyến đến ổ cắm 5V và GND liền kề trên bộ điều khiển. Chúng ta sẽ kết nối sau một chút. Các dây tín hiệu điều khiển (thường có màu vàng) được kết nối với đầu ra kỹ thuật số của bộ điều khiển: động cơ servo bên trái đến chân 2, động cơ ở giữa đến chân 4, động cơ bên phải đến chân 7.

“+” và “–” của bộ thu IR có thể được cắm đơn giản vào đầu nối Arduino (5V và GND liền kề). Đúng, uốn chúng làm đôi, tăng gấp đôi độ dày của chúng. Chúng tôi hàn các dây nguồn đã kết nối trước đó của động cơ phụ vào cùng chân nguồn của bộ thu IR. Đầu ra của tín hiệu thu IR khó có thể chạm tới đầu vào analog của bộ điều khiển A0 và bạn sẽ phải tăng nó bằng dây.

Một số mẹo làm chân. Đầu tiên hãy chuẩn bị hai chân “trước-sau” trái và phải. Đảm bảo chúng đối xứng (chú ý đến cả chiều dài và góc uốn). Chỉ bắt đầu dán các chân sau khi đảm bảo rằng các servo được đặt ở vị trí “không” (90°).

Tốt hơn là lắp cặp chân giữa sau cùng. Tôi khuyên bạn trước tiên nên làm cho các chân giữa dài hơn, sau đó cắt chúng theo chiều dài mong muốn sau khi lắp đặt. Ở vị trí “không”, tất cả sáu chân phải ở trên bề mặt. Xoay của chân giữa với biên độ 15° không được cản trở việc quay “trước-sau”.

Cái gì tiếp theo?

Robozhuk là một sản phẩm làm sẵn nền tảng di động dựa trên một trong những bộ điều khiển phổ biến nhất và giá cả phải chăng. Dự án đang mở: https://github.com/beetle-ringo/arduino. Tạo một nhánh (nhánh) trong GitHub và thêm chức năng của riêng bạn. Hãy thỏa sức phát huy trí tưởng tượng của bạn - thêm đèn LED hồng ngoại và robot đã sẵn sàng cho trận chiến robot. Kết nối máy đo khoảng cách, cảm biến xúc giác, con quay hồi chuyển... Dạy robot tránh chướng ngại vật hoặc đi dọc theo đường thẳng, hãy thử cài đặt webcam trên đó. Có thể có hàng triệu ý tưởng và bạn luôn có thể chọn ý tưởng thú vị nhất.

Robot Sleipnir

Bộ dụng cụ

  • Bộ điều khiển Robot nhện Arduino Uno Dagu: 2530 chà.
  • Ổ đĩa servo SG90 9g (16 cái) 1150 chà.
  • Pin Bộ pin LiPo, 7.4 V, 1800 mAh RUR 490
  • Mô-đun vô tuyến Bộ thu phát RF Bluetooth 4 chân RUR 270
  • Chỉ báo điện áp (tùy chọn) DC 3,3–30 V Đồng hồ đo bảng LED màu đỏ RUR 100
  • Góc nhôm. Ở chợ xây dựng gần nhất 135 rúp.
  • Bu lông và đai ốc. Ở chợ trời gần nhất 35 rúp.

Tổng cộng: 4710 chà.

*Linh kiện được mua từ thời điểm khác nhau và nhiều vị trí có thể được tối ưu hóa

poconoco: Hãy thử lắp ráp một cấu hình không chuẩn - robot 2DOF tám chân. Các chân 2DOF dễ lập trình hơn nhiều và tôi có rất nhiều động cơ servo không sử dụng nằm xung quanh. Và quan trọng nhất, nó sẽ có thể được đặt tên để vinh danh con ngựa tám chân của thần Odin, Sleipnir (luôn mơ về nó!).

Sleipnir của chúng ta sẽ có bốn chân mỗi bên với hai khớp. Mỗi khớp là một ổ servo, có nghĩa là tám servo mỗi bên. Để đơn giản, tất cả tám khớp ở một bên của con ngựa sẽ quay trong cùng một mặt phẳng. Mặc dù điều này hoàn toàn không cần thiết. Hơn nữa, nếu hai chân một bên hơi “bàn cờ” để hai chân liền kề không thể chạm vào nhau thì càng tốt, nó sẽ giúp bạn bước được bước rộng hơn và phi nước đại.

Một giải pháp gọn gàng và tiện dụng nhưng không phải là giải pháp rẻ nhất là sử dụng bảng điều khiển tùy chỉnh được tối ưu hóa để kết nối các động cơ servo trong số lượng lớn. Tôi đã xem qua Bộ điều khiển Robot Nhện Dagu - đây cũng là Arduino Mega, nhưng trên một bảng mạch có đầu nối 3 chân được hàn sẵn, nơi bạn có thể kết nối ngay 48 servo đó mà không cần bất kỳ tấm chắn nào. Lý tưởng cho robot nhiều chân trên Arduino.

Điều khiển

Chúng ta sẽ được điều khiển thông qua Bluetooth. Có nhiều giải pháp phần cứng khác nhau cho việc này. Chúng bao gồm các tấm khiên và khăn quàng cổ cá nhân có UART nối tiếp giao diện (giống như cổng COM thông thường, chỉ có mức tín hiệu 5 V). Đối với tôi, có vẻ như thẻ nhỏ nhất có giao diện UART là thiết thực nhất. Kết nối với các chân UART/serial tương ứng của cổng Arduino. Chúng ta hãy lưu ý hai sắc thái: trên Uno/Due/Nano và các cổng tương tự chỉ có một cổng như vậy và nó cũng được sử dụng cho phần sụn qua USB. Do đó, bạn có thể cần phải tắt mô-đun Bluetooth trong quá trình cập nhật chương trình cơ sở. Và sắc thái thứ hai - đừng quên rằng chân RX của mô-đun được kết nối với chân TX của Arduino và TX với RX. Những điều như vậy xảy ra trong UART.

Lập trình Bluetooth không phức tạp hơn servo; dữ liệu có thể được đọc từng byte, đó là những gì chúng ta sẽ sử dụng:

Char cmd; Serial.begin(9600); if (Serial.available()) cmd = Serial.read();

Nếu sử dụng Arduino Mega và Bluetooth được kết nối với cổng thứ hai thì Serial1 sẽ được ghi thay vì Serial. Điều đáng chú ý là bạn không phải sử dụng Bluetooth mà điều khiển robot trực tiếp qua USB. Và sẽ không có gì thay đổi trong đoạn mã trên! Nó chỉ hoạt động với cổng nối tiếp, nhưng việc có bộ phát BT hay bộ chuyển đổi USB Serial bị treo ở đó không quan trọng đối với chúng tôi.

Mặt khác của Bluetooth

Cách kết nối thuận tiện nhất là tiêu chuẩn Tiện ích Linux. Để làm việc, chúng ta sẽ cần các tiện ích sdptool, rfcomm (có trong gói bluez trong kho Ubuntu), cũng như minicom (đó là tên gọi của gói). Hướng dẫn làm việc với các tiện ích này có thể được tìm thấy trên Internet.

Thuật toán chuyển động

Đối với hexapod, dáng đi đơn giản nhất sẽ là thế này: các chân được chia thành hai nhóm gồm ba chân và một trong các nhóm nằm hoàn toàn trên mặt đất, nhóm còn lại ở trên không, được sắp xếp lại về phía trước. Đây không phải là dáng đi duy nhất có thể có. Bạn chỉ có thể giữ hai bàn chân trên không, hoặc thậm chí một bàn chân, và bốn hoặc năm bàn chân còn lại trên mặt đất. Ngoài ra còn có nhiều dáng đi cho một con bát giác. Chúng ta sẽ chọn cách đơn giản nhất, cũng có hai nhóm bốn chân.

Vậy chúng ta cần làm gì để làm việc với 16 servo và dáng đi đã chọn? Câu trả lời đúng là đọc về động học nghịch đảo (IR). Độ dài của bài viết không cho phép chúng tôi mở rộng chủ đề một cách rộng rãi, nhưng có rất nhiều tài liệu trên Internet. Nói tóm lại, IR giải quyết vấn đề tìm kiếm các tín hiệu điều khiển cần thiết để hệ thống trong không gian chiếm được vị trí mong muốn. Đối với chân, điều này có nghĩa là dựa trên tọa độ của điểm mà chân sẽ chạm vào, cần xác định các góc của động cơ servo cần đặt cho việc này. Và bằng cách kiểm soát tọa độ của bàn chân, bạn có thể kiểm soát vị trí của cơ thể. Chúng ta có chân 2DOF, các trục song song nên bàn chân luôn chuyển động trong cùng một mặt phẳng. Vấn đề IR trong trường hợp này được giảm xuống không gian 2D, giúp đơn giản hóa nó rất nhiều.

Đặt gốc tọa độ cục bộ O cho mỗi chân là trục của servo phía trên, tức là hông. Và ta có tọa độ điểm A nơi chân cần đánh. Khi đó dễ dàng nhận thấy bạn cần giải bài toán tìm giao điểm của hai đường tròn (xem sơ đồ chân một bên, hình này minh họa ở chân ngoài cùng bên phải). Sau khi tìm thấy điểm giao nhau B của các đường tròn (bằng cách chọn bất kỳ điểm nào trong số chúng), bạn có thể dễ dàng tính các góc cần thiết bằng cách sử dụng phép chuyển đổi từ tọa độ Descartes sang tọa độ cực. Trong mã, giải pháp cho vấn đề này trông như thế này:

Phao A = -2 * x; phao B = -2 * y; float C = sqr(x) + sqr(y) + sqr(hipLength) - sqr(shinLength); float X0 = -A * C / (sqr(A) + sqr(B)); float Y0 = -B * C / (sqr(A) + sqr(B)); float D = sqrt(sqr(hipLength) - (sqr(C) / (sqr(A) + sqr(B)))); float mult = sqrt(sqr(D) / (sqr(A) + sqr(B))); rìu phao, ay, bx, by; ax = X0 + B * mult; bx = X0 - B * mult; ay = Y0 - A * mult; bởi = Y0 + A * mult; // hoặc bx cho một điểm giao nhau khác float JointLocalX = ax; // hoặc bằng một điểm giao nhau khác float JointLocalY = ay; float hipPrimaryAngle = PolarAngle(jointLocalX, JointLocalY); float hipAngle = hipPrimaryAngle - hipStartAngle; float shinPrimaryAngle = PolarAngle (x - JointLocalX, y - JointLocalY); float shinAngle = (shinPrimaryAngle - hipAngle) - shinStartAngle;

trong đó x và y là tọa độ của điểm mà bạn cần chạm tới bằng chân; hipStartAngle - góc mà ban đầu "hông" được xoay (với servo ở vị trí chính giữa), tương tự - shinStartAngle. Nhân tiện, trong các phép tính này, các góc rõ ràng được tính bằng radian, nhưng chúng cần được chuyển sang các đối tượng servo theo độ. Mã chương trình cơ sở hoạt động hoàn chỉnh, bao gồm cả phần này, được đăng trên GitHub, xem liên kết ở cuối bài viết. Đây là một phần của IR, nhưng ngoài ra bạn cần thêm một chút nữa mã đơn giảnđể sử dụng IR này trên tất cả các nhánh (xem hàm LegReachTo(), legWrite()). Bạn cũng sẽ cần mã thực sự thực hiện dáng đi - di chuyển một bộ chân “lùi” (để robot di chuyển về phía trước), trong khi bộ chân còn lại được nâng lên và di chuyển về phía trước cho bước tiếp theo, hãy xem hàm stepForward(). Cô ấy bước một bước với tham số đã cho. Nhân tiện, với các tham số này, bạn có thể lùi lại một bước, bất chấp tên của hàm. Nếu chức năng này được gọi theo vòng lặp, robot sẽ bước về phía trước.

Bây giờ nhận lệnh và giải thích chúng. Hãy thêm một trạng thái vào chương trình:

Trạng thái Enum ( STOP, FORWARD, BACKWARD, FORWARD_RIGHT, FORWARD_LEFT );

Và trong vòng lặp thực thi chính loop() chúng ta sẽ xem xét trạng thái hiện tại (biến trạng thái) và kéo stepForward() nếu chúng ta đang tiến về phía trước (có hoặc không quay), và một lần nữa stepForward(), nhưng với đối số phủ định xamp, nếu chúng ta cần lùi lại. Các lượt rẽ trong trường hợp này sẽ được xử lý trong legWrite(), và để rẽ sang phải các chân bằng bên phải sẽ đứng yên (trong khi các hàng bên trái). Đây là một chiếc xe tăng ngựa như vậy. Tàn bạo, nhưng rất đơn giản và nó hoạt động. Việc xoay mượt mà chỉ có thể được thực hiện với các chân 3DOF, bạn có thể xem ví dụ về điều này trong kho buggybug.

Chuyển (trạng thái) ( case FORWARD: case FORWARD_RIGHT: case FORWARD_LEFT: stepForward(h, dh, xamp, xshift); break; case BACKWARD: stepForward(h, dh, - xamp, xshift); break; )

Lệnh char; while (Serial1.available()) command = Serial1.read(); switch (lệnh) ( case "w": state = FORWARD; break; case "s": state = BACKWARD; break; case "d": state = FORWARD_RIGHT; break; case "a": state = FORWARD_LEFT; break; mặc định : trạng thái = DỪNG; )

Đây là nơi kết thúc những điểm chính của phần sụn, phần còn lại chỉ là những thứ nhỏ nhặt. Mặc dù có lẽ còn có một cái nữa tâm điểm- khả năng tinh chỉnh các servo. Ngay cả khi lắp ráp cẩn thận nhất, nếu bạn ra lệnh cho tất cả các servo quay 90°, một số trong số chúng vẫn sẽ có một góc hơi lệch. Vì vậy, chúng ta cần có khả năng điều chỉnh nó. Bạn có thể thấy tôi đã thực hiện điều này như thế nào trong các phương thức hipWrite() và shinsWrite() và trong chính các mảng cài đặt tốt hipTune và shinsTune.

Cuộc họp

Đối với những thiết kế như vậy, bạn không cần bất cứ điều gì đặc biệt: một tấm mica có độ dày phù hợp (từ chợ trời phần cứng gần nhất) và một trò chơi ghép hình hoặc cưa sắt để cắt các bộ phận sẽ làm được. Và tất nhiên là một chiếc máy khoan để khoan lỗ. Thay vì tấm mica, bạn có thể sử dụng ván ép (sau đó bạn cũng có thể tạo một dòng chữ đáng nhớ bằng cách sử dụng đầu đốt trên cấu trúc cuối cùng). Bạn cũng có thể sử dụng các tấm hoặc góc bằng nhôm. Với Sleipnir, tôi đi theo con đường sử dụng góc nhôm có gân 1 cm (mua đâu đó trong siêu thị xây dựng).

Cơ sở sẽ là một khung hình chữ nhật. Tay chân - sọc 4 cm. Bạn cũng nên tích trữ nhiều bu lông và đai ốc nhỏ. Chúng tôi cắt góc thành các phần cần thiết, khoét các rãnh cho động cơ servo và khoan lỗ để lắp bu lông và ốc vít. Nó là tốt hơn để hiển thị thiết kế hơn là mô tả nó. Kích thước có thể là bất kỳ, robot phải đa dạng. Nhưng hãy nhớ: chân càng dài thì servo sẽ phải đẩy càng nhiều đòn bẩy và tải sẽ càng lớn. Đến mức không thể quay đầu, thậm chí gãy xương. Nhưng 4–5 cm thì không thành vấn đề.

Đối với những robot hạng nhẹ bình dân, chúng thường không bận tâm đến khớp nối riêng cho các chi và toàn bộ tải trọng rơi hoàn toàn vào trục truyền động servo. Với trọng lượng thấp, điều này hoàn toàn không quan trọng. Và với trọng lượng lớn hơn, bạn nên nghĩ đến động cơ servo có bánh răng kim loại và ổ trục bi.

Mỗi servo thường đi kèm với một vài ốc vít và một bộ phụ tùng có thể được vặn vào trục để sử dụng. Các ứng dụng khác nhau. Lựa chọn tốt nhất của chúng tôi là một “còi” (hoặc còi) đơn, cho phép bạn gắn một thanh vào servo. Vì vậy, trục của hai động cơ servo được gắn vào một thanh và thanh này trở thành một “hông”. Trong trường hợp này, một servo được gắn vào thân máy và servo còn lại trở thành một phần của cẳng chân. Bạn nên gắn một thanh khác vào nó, chỉ để kéo dài nó hoặc làm cho chi tiết trở nên thú vị hơn. Một chút công việc khó khăn - và nền tảng đã sẵn sàng ( bộ tiện lợi tua vít, chìa khóa, nhíp, máy cắt dây, v.v. giúp đẩy nhanh quá trình một cách đáng kể).


Cái gì tiếp theo?

Toàn bộ dự án có sẵn tại https://github.com/poconoco/sleipnir. Tôi đã mô tả một trong những cấu hình không thực tế nhất - rất nhiều chân 2DOF, cao, hẹp, dễ đổ nghiêng. Cố gắng tạo ra một robot tốt hơn với chân 3DOF. Với chân 4DOF. Với móng vuốt hoặc hàm. Để làm ví dụ về động học nghịch đảo 3DOF, bạn có thể tham khảo kho buggybug - có phần mềm hexapod ở đó. Bạn cũng có thể thực hiện không kiểm soát, nhưng robot thông minh Bằng cách cài đặt cảm biến khoảng cách thay vì Bluetooth, hãy dạy robot tránh các bức tường và chướng ngại vật. Nếu bạn đặt một cảm biến như vậy vào bộ truyền động servo và xoay nó, bạn có thể quét khu vực đó, gần như bằng sóng siêu âm.

Chào mọi người!

Một năm trước, tôi bắt đầu quan tâm đến bộ vi điều khiển Arduino và chế tạo một robot nhện bốn chân sử dụng Arduino Uno R3. Sự quan tâm nảy sinh sau khi đọc nhiều bài báo khác nhau và xem video trên YouTube. Ấn tượng nhất là robot "PhantomX hexapod" và chú kiến ​​"A-pod", được thiết kế lại bởi một anh chàng có biệt danh Zenta (Kore Halvorsen). Robot đầu tiên của anh được tạo ra trên động cơ servo Dynamixel AX-18 của công ty Robotis và robot thứ hai trên động cơ servo Hitec. Những servo này là một trong những loại đắt nhất. Tôi sẽ vượt quá sức lực của mình để tạo ra mô hình thử nghiệm mà tôi đã lên kế hoạch dựa trên những chiếc máy này. Đối với động cơ servo, sự lựa chọn rơi vào "Tunigy TGY-S9010" (13 kg), tôi đã đặt mua tấm chắn dfrobot i/o expansio v 5.0, tấm chắn này sẽ được lắp đặt trong tương lai mô-đun bluetooth xbee, pin 7.4v 5100mah và SBEC 20A, dòng điện đi bộ rất có thể sẽ vượt quá 12A, vì vậy tôi đã đặt hàng có dự trữ. Sau khi xem rất nhiều tranh và ảnh, tôi quyết định tạo ra một chú robot do chính mình thiết kế. Đã thực hiện các bản phác thảo. Tôi chuyển những bản vẽ này thành bản vẽ, làm điều gì đó trên la bàn hoặc điều gì đó trong SolidWorks.

Bản thiết kế -

Sau khi hoàn thành các bản vẽ, tôi đã tạo một mô hình 3D gần đúng. Hoạt hình trở nên vụng về và tôi sẽ không đăng video.

Tôi đã đặt mua tất cả các phụ tùng thay thế cho robot trên ParkFlyer. Phần đầu tiên của các bộ phận sẽ đến trong vòng 1,5 tháng và 2 bưu kiện tiếp theo sẽ đến trong vòng 7-8 tháng. Sự chậm trễ trong việc giao hàng là do trục trặc trong sở thích và hải quan Nga. Ở góc bên trái trong ảnh là phần lắp ráp sơ bộ của robot.

Danh sách các bộ phận của robot:

Trong khi chờ đợi một bưu kiện từ Trung Quốc, tôi bắt đầu tìm kiếm nơi có thể cắt laser. Tôi chọn tấm mica plexiglass 4 mm cho thân và phần kết nối của chân, và tấm acrylic 8 mm cho chân vì vùng đỡ sẽ lớn hơn. Công ty đã tính toán mọi chi tiết và công bố một số tiền khổng lồ. Tôi tìm thấy một cái khác và đặt mua các bộ phận trên máy phay. Sau khi xay xát, tất cả các bộ phận đều được xử lý và đánh bóng bằng tay.

Dần dần tôi hoàn thiện các bộ phận và lắp ráp robot. Bu lông Imbus M3, đai ốc nắp đều bằng thép không gỉ. Bức ảnh thể hiện sự chuẩn bị cho việc lắp ráp kết nối giữa servo thân xe và hông.

Đây là những gì nó trông giống như trong hình thức lắp ráp -

Chân nhện đầy đủ. Bu lông và bu lông lắp m2

Các khớp cơ thể, đùi và bàn chân được tăng cường. Tất cả các ống từ Ăng-ten tivi. Bộ điều khiển được gắn trên giá đỡ nylon và được cố định bằng vít nylon. Pin dưới sbec 20A sẽ được lắp dưới bộ điều khiển. Mọi thứ trở nên nhỏ gọn và dễ tiếp cận. Chiều cao từ sàn tới đáy 4 cm.

Tôi dự định trọng lượng lên tới 1,5 kg nhưng hóa ra lại có cục pin 1,6 kg. Ảnh dưới đây cho thấy trọng lượng không tính pin.

Hình thức chung. Trong quá trình lắp ráp, hai thiếu sót đã xuất hiện - 1. chân trượt, 2. các kết nối dưới vỏ servo bị cong. Có một giải pháp cho nhược điểm thứ hai. Ở phía bên kia của servo, tôi sẽ nghiền các dải plexiglass trên máy và gắn chúng vào các ốc vít thông qua một ống. Câu hỏi đầu tiên là đặt cao su vào ốc vít hoặc lấp đầy các đầu bằng cao su lỏng.

Thêm hình ảnh -

Nhìn từ trên cao -

Sau buổi lắp ráp cuối cùng, tôi thành thạo ngôn ngữ lập trình. Có rất nhiều thứ khác nhau trên các trang web các mẫu làm sẵn và các chương trình viết. Tôi không phải là lập trình viên và tôi có thể thực hiện các chuyển động cơ bản, chẳng hạn như: di chuyển một chân hoặc di chuyển toàn bộ chân theo một góc nhất định, nhưng tôi không hiểu cách mô tả chu kỳ chuyển động theo hướng này hay hướng khác. Hơn nữa, hãy điều khiển qua Bluetooth từ máy tính.
Bên trên Mã chương trình Tôi đang làm việc.