• Cần giúp đỡ? Hãy gọi:   0938.788.458
Tất cả danh mục
Điện tử

Hướng dẫn làm robot kiến bằng arduino một cách chi tiết

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách tự làm một robot hexapod với Arduino. Như tên cho thấy, hexapod có 6 chân nhưng ngoài ra, nó còn có đuôi hoặc bụng, đầu, râu ăng-ten, hàm dưới và thậm chí cả chức năng mắt . Tất cả những điều này làm cho hexapod trông giống như một con kiến, vì vậy chúng ta cũng có thể gọi nó là Robot Kiến Arduino.

 

Tổng quát

 

Để điều khiển robot, tôi đã tạo một ứng dụng Android tùy chỉnh. Ứng dụng có 4 nút thông qua đó chúng ta có thể ra lệnh cho robot di chuyển về phía trước hoặc phía sau, cũng như rẽ trái hoặc phải. Cùng với các chức năng chính này, robot cũng có thể di chuyển đầu và đuôi, cũng như có thể cắn, lấy và làm rơi mọi thứ và thậm chí là tấn công.

Do bài hơi dài, lượt dịch từ google. Các bạn có thể vào link gốc cuối bài viết để xem phiên bản tiếng Anh

Arduino Ant Robot Hexapod - Điều khiển ứng dụng Android

Như tôi đã đề cập trước đó, robot có mắt chức năng, hoặc tôi đã thiết kế đặc biệt phần đầu để phù hợp với cảm biến siêu âm. Vì vậy, nếu chúng ta cố gắng chạm vào đầu robot hoặc đưa tay lại gần cảm biến, ban đầu robot sẽ chuẩn bị cho một cuộc tấn công.

Robot Ant dựa trên Arduino - Chế độ tấn công - phát hiện đối tượng

Nếu chúng ta lùi lại, robot sẽ loại bỏ đòn tấn công, nhưng trong trường hợp chúng ta đưa tay đến gần nó hơn, nó sẽ tấn công và cắn chúng ta. Vì vậy, làm thế nào là mát mẻ? Hãy theo dõi và bạn sẽ tìm ra chính xác cách tôi xây dựng nó và mọi thứ hoạt động như thế nào.

Arduino Hexapod - Mô hình 3D Ant Robot

Như thường lệ, tôi bắt đầu thiết kế hexapod bằng phần mềm mô hình 3D. Hexapod có 6 chân và mỗi chân bao gồm 3 khớp hoặc 3 servo. Điều đó có nghĩa là chúng tôi cần tổng cộng 18 servos và trong trường hợp của tôi, tôi đã sử dụng servos MG996R.

Mô hình Hexapod 3D

Ở mặt sau, chúng ta có phần đuôi được điều khiển bởi một servo MG996R khác. Đầu của robot kiến ​​này có hai bậc tự do, hoặc nó có thể lăn và nghiêng, và một lần nữa nó được điều khiển bởi hai servo nữa. Vì vậy, chúng tôi cần tổng cộng 21 servo cho dự án này, loại MG996R và thêm một servo micro SG90 nhỏ hơn cho các trục bên.

Mô hình 3D Robot Ant Arduino

Ở đây chúng ta cũng có mắt của kiến ​​được thiết kế để phù hợp với cảm biến siêu âm HC-SR04. Tất cả các bộ phận được lắp ráp giữa hai tấm và ngoài ra, tôi đã tạo một nắp cong thú vị cho tấm trên cùng để giấu tất cả hệ thống dây điện, Arduino và pin giữa hai tấm.

Bạn có thể tải xuống bên dưới:

Tệp Solidworks:

Biểu tượng

Tệp Solidworks mô hình 3D Arduino Ant Robot

 1 tệp  6,61 MB

TẢI XUỐNG

Tệp BƯỚC:

Biểu tượng

Tệp mô hình bước 3D của Arduino Ant Robot

 1 tệp  10.08 MB

TẢI XUỐNG

Tệp STL:

Biểu tượng

Tệp STL của Robot Ant Arduino

 1 tệp  641,02 KB

TẢI XUỐNG

 

In 3D các bộ phận

Tôi đoán bạn đã biết điều gì tiếp theo, và đó là in 3D các bộ phận của robot. Tôi đã sử dụng Máy in 3D Creality CR-10 cho tất cả các bản in và nó đã làm rất tốt. Phần khó in nhất là phần đầu, vì tôi muốn trở thành một bản in duy nhất.

In 3D đầu robot kiến ​​- Cài đặt cura

Vì mục đích đó, tôi phải sử dụng Góc nhô ra hỗ trợ là 60 độ cũng như một số bộ chặn hỗ trợ. Dù sao thì Creality CR-10 đã làm rất tốt công việc của mình và phần đầu trở nên hoàn hảo.

Creality CR-10 in góc nhô ra 60 độ

Lắp ráp Arduino Hexapod

Khi chúng tôi đã in tất cả các bộ phận, chúng tôi có thể tiếp tục lắp ráp hexapod. Tôi bắt đầu với việc lắp ráp các chân. Để giữ chặt các servo vào các bộ phận được in, tôi đã sử dụng bu lông và đai ốc M3, cũng như vòng đệm lò xo. Chiều dài của bu lông cần ít nhất là 12 mm và trong trường hợp của tôi, tôi đã sử dụng bu lông dài 16 mm.

Lắp ráp các chân hexapod với MG996R servos

Chúng tôi cần khoảng 200 bu lông cho toàn bộ lắp ráp. Để kết nối các liên kết với nhau, chúng tôi sử dụng còi tròn đi kèm với gói servo làm phụ kiện. Tuy nhiên, chúng ta cần phải khoan lỗ 3mm trên mỗi chúng để bu lông có thể đi qua, hoặc chúng tôi có thể sử dụng sừng tròn kim loại có ren M3 và có thể mua riêng.

Còi tròn servo MG996R

Khi đảm bảo các liên kết tới các servos, chúng ta cần đảm bảo rằng chúng ta luôn kết nối chúng ở cùng một vị trí và chúng có đầy đủ các chuyển động.

Chúng ta nên lưu ý ở đây rằng các servo có một giá đỡ hình tam giác nhỏ ở phía trên cùng cần được loại bỏ. Tôi đã sử dụng một con dao tiện ích đơn giản để làm điều đó, vì vậy theo cách đó, các servo có thể được đặt flash với các bộ phận được in. Trước khi lắp servo thứ ba vào vị trí, trước tiên chúng ta cần lắp một bu lông M4 sẽ được sử dụng để kết nối chân với tấm đế.

Đây là cách lắp ráp chân sẽ như thế nào. Thật ra rất dễ để lắp ráp nó nhưng bây giờ chúng ta cần thêm 5 cái nữa.

Chân Hexapod với 3 Servos

Khi chúng ta đã có tất cả các chân sẵn sàng, chúng ta có thể tiếp tục lắp chúng vào thân của robot hoặc hai tấm. Đầu tiên, chúng ta cần cố định sừng tròn vào bệ trên cùng bằng phương pháp tương tự như trước đây, với bu lông và đai ốc M3. Sau đó, chúng ta có thể chỉ cần kết nối chúng với trục servo bằng cách sử dụng bu lông, nhưng trước khi làm điều đó, chúng ta cần điều chỉnh vị trí của servo chính xác ở giữa.

gắn chân vào thân hexapod

Điều này là cần thiết để chúng tôi có thể nhận được toàn bộ phạm vi chuyển động của các Servos và cũng sẽ giảm quá trình điều chỉnh hoặc hiệu chuẩn khi lập trình Arduino.

Sau khi cố định chân, dự án này đã bắt đầu hình thành và trông giống như một hexapod.

chế tạo robot hexapod arduino

Có thêm một sừng tròn ở mặt sau và đó là dành cho servo đuôi cũng cần được bảo đảm ở điểm này.

Tiếp theo, chúng ta cần đặt hexapod lộn ngược và như vậy chúng ta sẽ có thể chèn tấm đáy thông qua bu lông M4 của chân. Sau đó, tôi cố định các chân vào nó bằng cách sử dụng một số vòng đệm đơn giản và các đai ốc tự khóa. Chúng ta nên cẩn thận khi siết chặt các bu lông này đến mức nào vì đây thực sự là các khớp trục và các chân cũng có thể xoay trong khi đủ an toàn.

thắt chặt các khớp trục

Tiếp theo, chúng ta cần cài đặt servo đầu tiên cho đầu và đó là cho chuyển động cuộn. Servo này phải được đặt vuông góc với các tấm đế, vì vậy, vì mục đích đó, tôi đã tạo hai tấm nhỏ trước tiên được giữ chặt vào servo. Sau đó, chúng ta có thể chèn servo giữa hai tấm và chúng ta có thể dễ dàng cố định nó bằng bu lông và đai ốc M3.

bảo vệ động cơ servo cuộn

Sau đó, chúng tôi có một giá đỡ hình chữ U và ở đây chúng tôi cần gắn hai sừng tròn để kết nối hai servo cho đầu. Một lần nữa trước khi cố định giá đỡ vào servo cuộn, chúng ta cần đảm bảo rằng vị trí của servo nằm ở giữa để nó có thể xoay 90 độ theo cả hai hướng.

tạo cơ chế đầu

Tiếp theo là giá đỡ servo nghiêng. Vì vậy, trước tiên chúng ta cần lắp một bu lông M4 và cố định nó vào giá đỡ hình chữ U. Trước khi lắp động cơ nghiêng, chúng ta cũng cần lắp bốn bu lông M3 sau này sẽ được sử dụng để cố định đầu. Sau đó, chúng ta có thể lắp servo nghiêng vào giá đỡ và lắp trục một cách cẩn thận vào còi tròn. Ở đây hơi chật nhưng giá đỡ hình chữ U có thể linh hoạt một chút.

bảo vệ servo nghiêng

Cuối cùng, chúng ta cần cố định servo bằng bu lông M3 và với đó là cơ cấu đầu được hoàn thành. Bây giờ nó có thể vừa lăn vừa nghiêng.

Trước khi gắn đầu vào cơ cấu, chúng ta cần phải lắp ráp sẵn nó hoặc gắn các trục vít với servo SG90 nhỏ và cảm biến siêu âm. Một lần nữa, nó hơi chặt ở đây nhưng tôi vẫn cố gắng lắp cái đầu tiên và cố định nó vào đầu bằng bu lông M4.

lắp ráp đầu robot kiến ​​arduino

Bạn có thể để ý thấy có một lỗ nhỏ tại khu vực mắt được thiết kế riêng để chúng ta có thể luồn tuốc nơ vít vào để siết chặt bu lông.

bảo đảm quyền hạn của kiến

Tiếp theo, đặt micro servo vào vị trí và nó được giữ chặt bằng hai vít. Trên nhiệm vụ thứ hai, trước tiên, chúng ta cần gắn một sừng tay nhỏ cho servo SG90.

bảo vệ micro servo S90 cho cơ chế trục bên

Sau đó, chúng ta có thể lắp trục vít vào đúng vị trí, ghép hai bánh răng và cố định nó vào trục động cơ bằng tuốc nơ vít.

Tiếp theo chúng ta có thể đặt cảm biến siêu âm vào vị trí. Các lỗ mắt được làm chính xác để vừa với cảm biến siêu âm nên tôi chỉ cần dùng vài giọt keo AC để cố định cảm biến vào đầu.

chèn cảm biến siêu âm để phát hiện đối tượng

Còn một chi tiết nữa cần được bổ sung vào đầu và đó chính là các ăng-ten. Vì mục đích đó, tôi đã sử dụng dây đánh dấu 3mm, tôi cắt nó có chiều dài khoảng 13cm và tôi hơi uốn cong để có được hình dạng mong muốn. Một lần nữa, tôi sử dụng vài giọt keo AC để cố định chúng vào đầu. Cuối cùng chúng ta có thể gắn đầu vào cơ cấu cuộn và nghiêng bằng bốn bu lông mà chúng ta đã lắp trước đó.

Đầu rô bốt kiến ​​Arduino với các trục, cảm biến siêu âm và ăng-ten

Đầu bây giờ có đầy đủ chức năng, nó có thể lăn, nó có thể nghiêng và thậm chí nó có thể cắn. Có hai bộ phận in 3D nữa sẽ được cài đặt. Đó là phần đuôi có thể đơn giản trượt vào khung đuôi và nắp cong mà chúng tôi thực sự sẽ sử dụng nó ở phần cuối để che các thiết bị điện tử. Vì vậy, đây là lần xuất hiện cuối cùng của robot kiến ​​của chúng tôi và tôi thực sự thích cách nó xuất hiện trong sự kết hợp màu xanh và trắng này.

Robot kiến ​​Arduino in 3D

Sơ đồ mạch Arduino Ant Robot

Được rồi, bây giờ chúng ta có thể tiếp tục với các thiết bị điện tử. Đây là sơ đồ mạch của dự án này thực sự đơn giản mặc dù nó trông hơi phức tạp vì có nhiều kết nối Servos.

Sơ đồ sơ đồ mạch Arduino Hexapod Ant Robot

 

Bên cạnh 22 servo, chúng tôi cần một mô-đun Bluetooth HC-05 cho giao tiếp điện thoại thông minh và một số tụ điện và điện trở. Tất nhiên bộ não của robot là một bảng Arduino, và trong trường hợp này là Arduino Mega vì đây là bảng duy nhất có thể điều khiển hơn 12 servo bằng cách sử dụng thư viện Servo .

Hướng dẫn liên quan:  Cách hoạt động của động cơ Servo & Cách điều khiển Servo bằng Arduino

Để cấp nguồn cho robot, tôi sẽ sử dụng pin LiPo 3S có điện áp khoảng 12V. Pin LiPo có thể xử lý lượng dòng điện cao hơn, vì vậy chúng thích hợp cho dự án này vì nếu tất cả các servo hoạt động cùng một lúc ở chế độ đầy tải, chúng có thể tạo ra dòng điện khoảng 10 ampe. Tuy nhiên, điện áp hoạt động của servo bị giới hạn từ 4,8 đến 7,2V, có nghĩa là tôi cần sử dụng bộ chuyển đổi DC-DC buck để chuyển đổi 12V thành 5V. Ngay cả trong trường hợp chúng tôi sử dụng pin LiPo 2S có điện áp khoảng 7,4V hoặc 8,4V khi được nạp đầy, chúng tôi vẫn cần sử dụng bộ chuyển đổi buck. Bộ chuyển đổi buck mà tôi sẽ sử dụng cho dự án này có thể xử lý dòng điện lên đến 8 ampe nhưng tôi khuyên bạn nên sử dụng một bộ chuyển đổi từ 10 đến 15A chỉ để chắc chắn rằng bạn sẽ có đủ điện và nó sẽ không quá nóng. Trong trường hợp của tôi,

Bạn có thể lấy các thành phần cần thiết cho dự án này từ các liên kết bên dưới:

Tiết lộ: Đây là những liên kết liên kết. Với tư cách là Cộng tác viên của Amazon, tôi kiếm được tiền từ các giao dịch mua đủ điều kiện.

Thiết kế PCB cho Arduino Hexapod

Bây giờ nếu chúng ta cố gắng kết nối mọi thứ với nhau, nó sẽ khá lộn xộn vì có nhiều kết nối servo. Do đó, tôi đã thiết kế một PCB tùy chỉnh bằng cách sử dụng phần mềm thiết kế mạch trực tuyến miễn phí EasyEDA. PCB này thực sự sẽ hoạt động như một Lá chắn Arduno Mega cho Hexapod vì chúng ta có thể kết nối trực tiếp nó trên đầu của Bo mạch Arduino Mega. Tôi đã bố trí các kết nối servo gần nhau và bao gồm hai tụ điện lớn bên cạnh chúng để giữ điện áp ổn định hơn. Ngoài ra, tôi đã bao gồm một kết nối cho mô-đun thu phát NRF24L01 trong trường hợp chúng tôi muốn điều khiển rô bốt bằng điều khiển vô tuyến. Có một số kết nối chân kỹ thuật số và tương tự, kết nối 5V và nối đất, hai kết nối LED, cũng như kết nối để theo dõi điện áp pin. Điện áp của acquy 12V sẽ đi qua bộ phân áp được tạo thành từ hai điện trở R1 và R2 sẽ làm giảm điện áp xuống dưới 5V để chân analog có thể đọc được một cách an toàn. Bằng cách này, chúng ta sẽ biết khi nào cần sạc lại pin.

EasyEDA để tạo PCB tùy chỉnh

Đây là một liên kết đến các  tệp dự án của thiết kế PCB này . Vì vậy, khi tôi hoàn thành thiết kế, tôi đã tạo ra nhu cầu tệp Gerber để sản xuất PCB.

Tệp định dạng:

Biểu tượng

Gerber_Hexapod Ant Robot Hexapod - Arduino Mega Shield

 1 tệp  101,79 KB

TẢI XUỐNG

Sau đó, tôi đặt mua PCB từ JLCPCB mà thực sự là nhà tài trợ của video này.

Tại đây, chúng ta chỉ cần kéo và thả tệp Gerber và sau khi tải lên, chúng ta có thể xem lại PCB của mình trong trình xem Gerber. Nếu mọi thứ đều ổn thì chúng ta có thể tiếp tục và chọn các thuộc tính mà chúng ta muốn cho PCB của mình. Trong trường hợp này, tôi đã chọn màu PCB là màu xanh lam để phù hợp với màu của bảng Arduino. Vậy là xong, bây giờ chúng ta có thể đặt mua PCB đơn giản với mức giá hợp lý. Lưu ý rằng nếu đó là đơn đặt hàng đầu tiên của bạn từ JLCPCB, bạn có thể nhận được tối đa 10 PCB chỉ với 2 đô la.

Đặt hàng PCB từ JLCPCB

Sau vài ngày, PCB đã đến. Chất lượng của PCB rất tuyệt và mọi thứ đều giống hệt như trong thiết kế.

Arduino Hexapod thiết kế tùy chỉnh PCB cho 24 servos

Lắp ráp PCB

Được rồi, bây giờ chúng ta có thể tiếp tục và lắp ráp PCB. Tôi bắt đầu bằng cách hàn các đầu cắm chân đực vào PCB được sử dụng để kết nối nó với bảng Arduino. Khi chúng ta đặt các đầu ghim ở phía dưới cùng, chúng ta có thể sử dụng một số loại tấm giữ các ghim và lật bảng. Bây giờ chúng ta cần hàn tất cả chúng vào PCB. Sau khi hoàn thành việc đó, chúng ta có thể tiếp tục với các kết nối servo mà chúng ta cũng cần các đầu cắm pin đực.

24 kênh thiết kế tùy chỉnh PCB cho Arduino hexapod

Tại thời điểm này, chúng tôi thực sự có thể chèn các đầu cắm chân cho tất cả các kết nối và sử dụng cùng một phương pháp để lật PCB và hàn tất cả các chân vào nó. Cuối cùng, chúng ta cần hàn các điện trở, các tụ điện và các khối thiết bị đầu cuối. Vậy là xong, Arduino Mega Shield cho Ant Robot của chúng ta đã sẵn sàng. Bây giờ chúng ta có thể chỉ cần chèn nó vào bảng Arduino.

Thiết kế tùy chỉnh Lá chắn Arduino Mega cho hexapod

Tiếp theo, chúng ta cần đặt điện áp đầu ra của bộ chuyển đổi buck thành 5V. Chúng ta có thể làm điều đó bằng cách điều chỉnh chiết áp của bộ chuyển đổi buck. Bạn có thể nhận thấy ở đây rằng tôi đã thêm một công tắc nguồn vào đầu vào và kết nối pin 12V với chân 12V trên PCB sẽ chỉ được sử dụng để theo dõi điện áp của pin.

Đầu vào 5V cho PCB bằng bộ chuyển đổi buck

Hãy nhớ rằng đầu vào chính cho PCB phải là 5V.

Vì vậy, bây giờ chúng ta có thể chèn các thành phần điện tử vào giữa hai tấm. Một lần nữa, nó hơi chật một chút nhưng chúng tôi vẫn có thể lắp mọi thứ vào. Đầu tiên là lắp pin mà tôi đã bảo vệ nó bằng băng keo, và trên đầu nó là Arduino cùng với PCB mà chúng tôi đã làm. Tiếp theo, chúng tôi có thể kết nối bộ thu phát NRF24L01 hoặc chỉ mô-đun Bluetooth tùy thuộc vào loại giao tiếp mà chúng tôi sẽ sử dụng. Tôi cũng đã lắp một đèn LED để cho biết khi nào pin cần sạc lại hoặc trong trường hợp điện áp giảm xuống dưới 11V volt. Cuối cùng, chúng ta cần kết nối tất cả các servo với các chân servo. Trong khi thực hiện việc này, hãy nhớ ghi lại số pin bạn đã kết nối với mỗi servo. Sau khi chúng tôi kết nối tất cả các Servos, chúng tôi có thể chỉ cần đặt nắp cong lên tấm trên và chúng tôi thực sự đã hoàn thành dự án này.

Mã Arduino Hexapod

Việc còn lại cần làm trong video này là xem cách chương trình Arduino hoạt động. Vì đoạn mã dài hơn một chút nên để hiểu rõ hơn, mình sẽ đăng mã nguồn của chương trình thành các phần có mô tả cho từng phần. Và cuối bài viết này mình sẽ đăng toàn bộ mã nguồn.

Vì vậy, để điều khiển các Servo, chúng ta sẽ sử dụng thư viện Servo cơ bản và đối với giao tiếp Bluetooth, chúng ta cũng cần bao gồm cả thư viện SoftwareSerial. Đầu tiên chúng ta cần xác định tất cả các đối tượng servo cũng như một số biến cần thiết cho chương trình bên dưới.

#include <Servo.h>

#include <SoftwareSerial.h>

 

#define trigPin 7

#define echoPin 6

#define ledB 10

 

Phần mềm Bluetooth trên không ( 12, 9 ) ; // Arduino (RX, TX) - HC-05 Bluetooth (TX, RX)

 

// Tạo đối tượng servo

Servo s24;

Servo s23;

Servo s22;

Trong phần thiết lập, chúng ta cần khởi tạo giao tiếp Bluetooth, các chế độ chân cắm cho cảm biến siêu âm , LEd và cũng xác định các chân cắm mà các servo được kết nối.

void setup () {

Nối tiếp. bắt đầu ( 38400 ) ;

Bluetooth. bắt đầu ( 38400 ) ; // Tốc độ truyền mặc định của mô-đun Bluetooth

Bluetooth. setTimeout ( 1 ) ;

chậm trễ ( 20 ) ;

pinMode ( trigPin, OUTPUT ) ; // Đặt trigPin làm Đầu ra

pinMode ( echoPin, INPUT ) ; // Đặt echoPin làm Đầu vào

pinMode ( ledB, OUTPUT ) ;

// Cái đầu

s15. đính kèm ( 36, 600, 2400 ) ;

s14. đính kèm ( 35, 600, 2400 ) ;

s13. đính kèm ( 34, 600, 2400 ) ; //nắm chặt

// Đuôi

s5. đính kèm ( 26, 600, 2400 ) ; // Đuôi

// Chân 4

s10. đính kèm ( 31, 600, 2400 ) ;

s11. đính kèm ( 32, 600, 2400 ) ;

s12. đính kèm ( 33, 600, 2400 ) ; //thúi

// Chân 5

s7. đính kèm ( 28, 600, 2400 ) ;

s8. đính kèm ( 29, 600, 2400 ) ;

s9. đính kèm ( 30, 600, 2400 ) ; //thúi

// Chân 6

s1. đính kèm ( 22, 600, 2400 ) ;

s2. đính kèm ( 23, 600, 2400 ) ;

s3. đính kèm ( 24, 600, 2400 ) ; //thúi

// Chân 1

s18. đính kèm ( 39, 600, 2400 ) ;

s17. đính kèm ( 38, 600, 2400 ) ;

s16. đính kèm ( 37, 600, 2400 ) ; //thúi

// Chân 2

s21. đính kèm ( 42, 600, 2400 ) ;

s20. đính kèm ( 41, 600, 2400 ) ;

s19. đính kèm ( 40, 600, 2400 ) ; //thúi

// Chân 3

s24. đính kèm ( 45, 600, 2400 ) ;

s23. đính kèm ( 44, 600, 2400 ) ;

s22. đính kèm ( 43, 600, 2400 ) ; //thúi

Sau đó, sử dụng các hàm write (), chúng ta di chuyển các servos về vị trí ban đầu của chúng. Đây thực sự là nơi chúng tôi có thể hiệu chỉnh các servo của mình. Hãy xem xét rằng bạn sẽ không thể đặt từng servo ở vị trí chính xác khi lắp ráp rô bốt, nhưng ở đây chúng tôi có thể thực hiện điều chỉnh và tìm ra các giá trị ban đầu của chúng tôi và từ đó chúng tôi có thể lập trình chuyển động của rô bốt.

// == Di chuyển đến vị trí ban đầu

// Cái đầu

s15. ghi ( 72 ) ;

s14. ghi ( 50 ) ;

s13. ghi ( 90 ) ; // Nắm chặt

 

s5. ghi ( 65 ) ; // Đuôi

 

// Chân 4

s10. ghi ( 65 ) ;

s11. ghi ( 35 ) ;

s12. ghi ( 40 ) ;

// Chân 5

s7. ghi ( 80 ) ;

s8. ghi ( 50 ) ;

s9. ghi ( 25 ) ;

// Chân 6

s1. ghi ( 90 ) ;

s2. ghi ( 45 ) ;

s3. ghi ( 60 ) ;

 

// Chân 1

s18. ghi ( 60 ) ;

s17. ghi ( 90 ) ;

s16. ghi ( 100 ) ;

// Chân 2

s21. ghi ( 50 ) ;

s20. ghi ( 85 ) ;

s19. ghi ( 75 ) ;

// Chân 3

s24. ghi ( 50 ) ;

s23. ghi ( 80 ) ;

s22. ghi ( 80 ) ;

Khi nói đến việc lập trình một chuyển động hexapod, có một số cách được thực hiện, như sử dụng chuyển động học thuận hoặc nghịch. Các phương pháp này bao gồm một số phép toán nghiêm túc trong đó vị trí của mỗi khớp được tính toán dựa trên các yếu tố đầu vào cho vị trí cuối cùng mong muốn của cơ thể. Tuy nhiên, tôi quyết định làm cho nó bớt phức tạp hơn một chút vì dù sao thì các servos mà tôi đang sử dụng không đủ tốt cho một tác vụ như vậy. Đó là bởi vì Servo của tôi là phiên bản giá rẻ của servo MG996R. Chúng không có mô-men xoắn phù hợp và không phải lúc nào chúng cũng định vị ở vị trí mong muốn chính xác.

Vì vậy, hãy xem tôi đã thực hiện bước đi của hexapod như thế nào. Tôi đã tạo một chức năng tùy chỉnh riêng để di chuyển từng chân. Một chu kỳ chân bao gồm hai giai đoạn, được gọi là cú xoay người và thế đứng. Trong giai đoạn xoay chân, chân di chuyển từ vị trí ban đầu đến vị trí cuối cùng trong không khí, trong khi trong giai đoạn giữ tư thế, chân di chuyển từ vị trí cuối cùng trở lại vị trí ban đầu với tác dụng cuối chân chạm đất. Bằng cách này, phần thân của hexapod sẽ di chuyển về phía trước.

Giai đoạn Swing và Stance đi bộ của Arduino Hexapod

Vì vậy, tôi lập trình thủ công các vị trí của từng servo để đạt được những chuyển động này bằng cách sử dụng vòng lặp chính và một số bộ đếm.

void moveLeg1 () {

// Chuyển pha - di chuyển chân trong không khí - từ vị trí ban đầu đến vị trí cuối cùng

// Nâng chân lên

if ( i1L1 < = 10 ) {

s18. ghi ( 60 - i1L1 * 2 ) ;

s17. ghi ( 90 - i1L1 * 3 ) ;

i1L1 ++;

}

// Xoay chân

if ( i2L1 < = 30 ) {

s16. ghi ( 100 - i2L1 ) ;

i2L1 ++;

 

}

// Di chuyển trở lại để chạm đất

if ( i2L1 > 20 & i3L1 < = 10 ) {

s18. ghi ( 40 + i3L1 * 2 ) ;

s17. ghi ( 60 + i3L1 * 3 ) ;

i3L1 ++;

}

// Giai đoạn đứng - di chuyển chân khi chạm đất

// Xoay trở lại vị trí ban đầu

nếu ( i2L1 > = 30 ) {

s16. ghi ( 70 + i4L1 ) ;

i4L1 ++;

l1status = CAO;

}

// Đặt lại bộ đếm để lặp lại quá trình

if ( i4L1 > = 30 ) {

i1L1 = 0;

i2L1 = 0;

i3L1 = 0;

i4L1 = 0;

i5L1 = 0;

}

// Mỗi bước lặp hoặc bước được thực hiện trong phần vòng lặp chính, nơi cũng có thời gian trễ để kiểm soát tốc độ di chuyển

}

Vì vậy, đầu tiên hai servo bên ngoài nâng chân lên và servo thứ ba được kết nối với thân bắt đầu quay theo một hướng cụ thể. Khi servo thứ ba đi được 10 bước trước khi nó ngừng quay, chúng tôi bắt đầu di chuyển hai servo bên ngoài ra phía sau ở cùng vị trí để chạm đất. Điều này hoàn thành giai đoạn swing, hoặc chân di chuyển từ vị trí ban đầu đến vị trí cuối cùng. Sau đó, chúng tôi xoay ngược servo thứ ba từ vị trí cuối cùng về vị trí ban đầu và điều đó hoàn thành giai đoạn lập trường. Sau khi chân thực hiện một chu kỳ, các bộ đếm được đặt lại và chân sẽ lặp đi lặp lại chu kỳ đó. Mỗi lần lặp hoặc bước được thực hiện trong phần vòng lặp chính, nơi cũng có thời gian trễ để kiểm soát tốc độ của servos. Tôi đã tạo các chức năng như thế này cho tất cả các chân khác, cũng như một số chức năng bổ sung để di chuyển các chân theo hướng ngược lại để đạt được sự đảo ngược, chuyển động trái và phải. Theo cách tương tự, sử dụng bộ đếm để theo dõi các bước mà tôi đã lập trình cho phần còn lại của các chức năng, như di chuyển đầu, di chuyển đuôi, các trục hàm, v.v.

Vì vậy, ví dụ, nếu chúng ta muốn di chuyển robot về phía trước, chúng ta cần gọi sáu hàm tùy chỉnh moveLeg () sẽ liên tục lặp lại trong vòng lặp chính.

// Tiến về phía trước

nếu ( m == 2 ) {

moveLeg1 () ;

moveLeg3 () ;

moveLeg5 () ;

if ( l1status == HIGH ) {

moveLeg2 () ;

moveLeg4 () ;

moveLeg6 () ;

}

}

Bạn có thể nhận thấy rằng 3 chân lệch nhau, vì vậy khi chân số 1 3 và 5 ở trong pha xoay người thì ba chân còn lại, 2, 4 và 6 ở trong giai đoạn tư thế. Trong trường hợp chúng ta muốn di chuyển sang trái, chúng ta gọi các hàm moveLeft () thích hợp.

Các lệnh này thực sự đến từ mô-đun Bluetooth hoặc ứng dụng Android được xây dựng tùy chỉnh từ điện thoại thông minh của chúng tôi.

// Kiểm tra dữ liệu đến

nếu ( Bluetooth. khả dụng () > 0 ) {

dataIn = Bluetooth. đọc () ; // Đọc dữ liệu

Ứng dụng Android Robot Ant Arduino

Bây giờ chúng ta hãy xem xét ứng dụng và xem loại dữ liệu mà nó thực sự đang gửi đến Arduino. Tôi đã tạo ứng dụng bằng ứng dụng trực tuyến MIT App Inventor và đây là cách nó hoạt động.

Vì vậy, đồ họa của ứng dụng thực sự là những hình ảnh mà tôi đã tạo và đặt làm nút. Ở dưới cùng, chúng ta có một thanh trượt để điều khiển tốc độ của robot và ở trên cùng, chúng ta có các nút để kết nối với mô-đun Bluetooth.

Arduino Ant Robot Hexapod Ứng dụng Android Nhà phát minh ứng dụng MIT

Hãy cùng xem chương trình hoặc các khối đằng sau ứng dụng.

Các khối ứng dụng Android - cách hoạt động

Vì vậy, ví dụ nếu chúng ta nhấp vào nút Chuyển tiếp, các khối trong câu lệnh “if” sẽ được thực thi. Điều đó có nghĩa là chúng tôi sẽ gửi số 2 đến Arduino và điều đó sẽ thực hiện bộ chức năng tiến lên. Đồng thời, chúng tôi có thể nhận thấy rằng chúng tôi thay đổi hình ảnh của nút thành phiên bản được đánh dấu khác của cùng một hình ảnh. Nếu chúng ta nhấn lại cùng một nút, bây giờ các khối trong câu lệnh “else” sẽ được thực thi và điều đó sẽ gửi số 0 đến Arduino, nó sẽ đặt lại tất cả các bộ đếm và di chuyển robot về vị trí ban đầu của nó. Ngoài ra, chúng tôi thiết lập lại hình ảnh ban đầu của nút đó. Vì vậy, tôi đã sử dụng nguyên tắc tương tự cho tất cả các nút khác.

Đây là tệp tải xuống của dự án MIT App Inventor ở trên, cũng như Ứng dụng Android đã sẵn sàng để cài đặt trên điện thoại thông minh của bạn:

Biểu tượng

Tệp dự án nhà phát minh ứng dụng MIT điều khiển robot Arduino Ant Hexapod

 1 tệp  259,21 KB

TẢI XUỐNG

Biểu tượng

Tệp cài đặt ứng dụng điều khiển robot Arduino Ant Hexapod

 1 tệp  3,21 MB

TẢI XUỐNG

Chúng ta hãy xem xét thêm hai chức năng trong chương trình Arduino và đó là màn hình điện áp pin và cảm biến siêu âm.

// Theo dõi điện áp pin

int sensorValue = analogRead ( A3 ) ;

điện áp phao = sensorValue * ( 5,00 / 1023,00 ) * 2,9 ; // Chuyển các giá trị đọc từ 5v sang 12V i phù hợp

Nối tiếp. println ( điện áp ) ;

// Nếu điện áp dưới 11V, bật đèn LED

nếu ( điện áp < 11 ) {

digitalWrite ( ledB, HIGH ) ;

}

khác {

digitalWrite ( ledB, LOW ) ;

}

Vì vậy, nếu điện áp pin thấp hơn 11 volt, chúng tôi sẽ bật đèn LED và nếu cảm biến siêu âm phát hiện một vật thể gần hơn 40 cm, robot sẽ chuẩn bị cho một cuộc tấn công.

// Lấy khoảng cách từ cảm biến siêu âm

if ( getDistance () > 40 ) {

att = 0 ;

}

if ( getDistance () < = 40 ) {

att = 1 ;

dataIn = 99 ;

}

Trong trường hợp không còn đối tượng ở phía trước, nó sẽ loại bỏ cuộc tấn công và nếu đối tượng vẫn còn hiện diện và gần đầu hơn, robot sẽ tấn công.

// Nếu có một đối tượng ở phía trước cảm biến, hãy chuẩn bị cho cuộc tấn công

nếu ( att == 1 ) {

chuẩn bịAttack () ;

if ( aStatus == HIGH ) {

while ( a == 0 ) {

chậm trễ ( 2000 ) ;

a = 1 ;

}

if ( getDistance () > 30 ) {

att = 2 ;

a = 0 ;

aStatus = LOW;

ban đầuPosHead () ;

}

if ( getDistance () < 30 ) {

att = 3 ;

a = 0 ;

aStatus = LOW;

ban đầuPosHead () ;

}

}

}

// Nếu không còn đối tượng ở phía trước, hãy loại bỏ cuộc tấn công

nếu ( att == 2 ) {

sa thảiAttack () ;

if ( aStatus == HIGH ) {

dataIn = 0 ;

att = 0 ;

}

}

// Nếu có gần cuộc tấn công cảm biến hơn

nếu ( att == 3 ) {

tấn công () ;

if ( attStatus == HIGH ) {

trong khi ( aa == 0 ) {

chậm trễ ( 2000 ) ;

aa = 1 ;

} attStatus = LOW;

}

if ( aStatus == HIGH ) {

while ( a == 0 ) {

chậm trễ ( 2000 ) ;

a = 1 ;

}

dataIn = 0 ;

att = 0 ;

ban đầuPosHead () ;

}

}

Vì vậy, đó là khá nhiều thứ cho video này.

Tại đây bạn có thể tải xuống mã hoàn chỉnh cho dự án Arduino Hexapod này:

Biểu tượng

Mã Robot Arduino Hexapod Ant

 1 tệp  19,19 KB

TẢI XUỐNG

Link gốc:

https://howtomechatronics.com/projects/arduino-ant-hexapod-robot/