1. Giới thiệu

Tài liệu này là chuỗi nhiều bài hướng dẫn bạn làm quen, lắp ráp, lập trình và làm chủ bộ kit robot ORC, để bạn có thể tự chế tạo một hệ thống robot hoạt động theo ý mình, phục vụ các ứng dụng khác nhau hoặc trong các cuộc thi Robocon hoàn thành các nhiệm vụ theo yêu cầu.

Các bài hướng dẫn sẽ giới thiệu song song 2 ngôn ngữ lập trình:

  • Ngôn ngữ khối lệnh kéo thả: phù hợp với những người mới bắt đầu, chưa có kiến thức về lập trình

  • Python: dành cho người đã có nền tảng lập trình, muốn hiện thực các tính năng phức tạp hơn hoặc nâng cao kiến thức lập trình của mình

Bộ kit robot chúng ta sẽ xây dựng theo tài liệu hướng dẫn này là một robot tiêu chuẩn có 2 động cơ và 4 bánh. Tuy nhiên, bạn hoàn toàn có thể tự sáng tạo ra một bộ robot của riêng mình vì thư viện Robotics Open Platform chúng ta sẽ sử dụng do OhStem xây dựng là nguồn mở, được thiết kế để đáp ứng các thiết kế robot khác nhau, đáp ứng linh hoạt các nhu cầu khác nhau.

1. Bộ kit ORC


Trong phần này, bạn sẽ làm quen với bộ kit ORC (OhStem Robotics Challenge) của OhStem, bộ kit được sử dụng trong tài liệu về Robotics này. Bộ kit này có đầy đủ các thành phần để giúp bạn dễ dàng lắp ráp được một xe robot tiêu chuẩn có 4 bánh, 2 động cơ và tay gắp 2 bậc giúp robot thao tác gắp thả di chuyển các vật theo ý muốn.

Sau khi lắp ráp theo hướng dẫn lắp ráp của bộ kit, bạn sẽ có một robot trông giống như thế này:

../../_images/1.17.png

2. Thành phần chính của robot


Chúng ta sẽ cùng nhau tìm hiểu các thành phần của robot này để hiểu rõ hơn một hệ thống Robotics cần có những gì và chúng hoạt động như thế nào.

2.1. Mạch điều khiển

Mạch điều khiển đóng vai trò như bộ não của hệ thống, là bộ phận sẽ thực thi chương trình và xử lý giúp robot hoạt động theo thiết kế. Chúng ta sẽ sử dụng mạch điều khiển tên là Yolo UNO do OhStem thiết kế dành riêng cho mục đích giáo dục.

../../_images/1.26.png

Mạch sử dụng dòng chip ESP32-S3, một dòng System-on-Chip (SoC) có bộ xử lý lõi kép 32-bit, tốc độ xung nhịp lên đến 240MHz, low-power, hỗ trợ WiFi chuẩn 2.4 GHz và BLE+Mesh, được tích hợp nhiều tính năng như USB native và bộ tăng tốc xử lý AI (NPU).

Bạn có thể lập trình Yolo UNO bằng nhiều ngôn ngữ: Arduino C, Python, khối lệnh kéo thả. Yolo UNO hỗ trợ cả giao tiếp có dây USB và không dây Bluetooth, giúp xây dựng các ứng dụng Robot dễ dàng hơn.

../../_images/1.35.png

Trên mạch Yolo UNO tích hợp 12 cổng cắm Grove, dùng để kết nối với các module cảm biến bên ngoài và được đặt tên theo số thứ tự:

  • Khe cắm đa dụng đọc kết quả Analog (màu vàng): A0 - A1, A1 - A2, A2 - A3, A3 - A6.

  • Khe cắm điều khiển tín hiệu Digital (màu trắng): D3 - D4, D5 - D6, D7 - D8, D9 - D10.

  • Khe giao tiếp I2C (màu đỏ): I2C1 đến I2C4.

../../_images/1.43.png

Các khe cắm Analog đa dụng có thể kết nối với nhiều thiết bị khác nhau, đặc biệt là khi kết nối với các cảm biến. Các khe cắm 2 tín hiệu còn lại chỉ có thể kết nối một số thiết bị riêng biệt.

Nhờ các dây điện đã chuẩn hóa về nguồn đất và tín hiệu điều khiển, bạn gần như không cần phải lo lắng về việc kết nối các thiết bị với nhau. Các dây kết nối cũng chỉ có 1 chiều cắm, nhằm hạn chế tối đa việc cắm ngược, gây chập nguồn và hư hỏng thiết bị.

../../_images/1.131.png

Đây là một lợi thế vô cùng lớn của hệ thống mạch điện tử khi đã được chuẩn hóa. Lúc này, xác suất gặp lỗi sẽ ít hơn và bạn có thể tập trung vào việc lập trình của mình, thay vì phải tốn thời gian cho việc tìm lỗi từ việc kết nối mạch.

2.2. Mạch điều khiển động cơ (Motor Driver)

Để điều khiển các động cơ chúng ta cần có các mạch với IC motor driver chuyên để điều khiển tốc độ chứ không thể điều khiển trực tiếp từ các chân IO của vi điều khiển. Mạch motor driver giúp điều khiển tốc độ và chiều quay của động cơ. Mạch motor driver sẽ hoạt động theo lệnh của mạch điều khiển.

OhStem có 2 phiên bản motor driver V1 và V2. Mạch motor driver V1 hỗ trợ 4 động cơ DC hoặc 2 động cơ Stepper hoạt động đến tối đa 11V, phù hợp cho các dự án robotics đơn giản.

../../_images/1.52.png

Mạch motor driver V1

Trong tài liệu này, chúng ta sẽ sử dụng mạch motor driver phiên bản V2, với nhiều nâng cấp phù hợp cho các dự án nâng cao. Phiên bản V2 hỗ trợ điều khiển lên tới 10 động cơ độc lập bao gồm 2 động cơ DC encoder, 4 động cơ DC thường và 4 servo với điện áp hoạt động lên đến 12V.

../../_images/1.61.png

Mạch điều khiển động cơ V2


2.3. Động cơ

Có nhiều loại động cơ được sử dụng trong các dự án robotics, mỗi loại có ưu và nhược điểm riêng. Có 2 loại động cơ phổ biến nhất mà chúng ta sẽ sử dụng chính trong dự án này là:

1 Động cơ DC:

../../_images/1.7.png

  • Ưu điểm:

    • Mô-men xoắn cao

    • Tốc độ đa dạng

  • Nhược điểm:

    • Độ chính xác thấp hơn so với servo

    • Kiểm soát chuyển động phức tạp hơn

    • Kích thước lớn hơn

2 Động cơ Servo:

../../_images/1.8.png

Một số loại động cơ Servo thông dụng


  • Ưu điểm:

    • Độ chính xác cao

    • Kiểm soát chuyển động tốt

    • Kích thước nhỏ gọn

    • Dễ dàng sử dụng

  • Nhược điểm:

    • Mô-men xoắn thấp

    • Tốc độ tương đối chậm

Ngoài ra, còn số 1 loại động cơ khác bạn có thể sẽ dùng đến cho các ứng dụng đặc biệt:

  1. Động cơ bước (Stepper):

../../_images/1.9.png

Một số loại động cơ bước


  • Ưu điểm:

    • Độ chính xác cao

    • Kiểm soát chuyển động tốt

    • Mô-men xoắn cao

    • Giá thành rẻ

  • Nhược điểm:

    • Tốc độ tương đối chậm

    • Tiếng ồn lớn

  1. Động cơ Brushless:

  • Ưu điểm:

    • Hiệu suất cao

    • Độ ồn thấp

    • Tuổi thọ cao

    • Mô-men xoắn cao

  • Nhược điểm:

    • Giá thành cao

    • Kiểm soát phức tạp hơn

  1. Động cơ khí nén:

  • Ưu điểm:

    • Mô-men xoắn cao

    • Tốc độ đa dạng

    • Cơ cấu đơn giản, dễ lắp ráp

  • Nhược điểm:

    • Cần nguồn khí nén

Dưới đây là một số lời khuyên để lựa chọn động cơ phù hợp:

  • Nếu bạn cần mô-men xoắn cao và tốc độ đa dạng, hãy sử dụng động cơ DC, dùng nhiều cho các cơ cấu di chuyển,

  • Nếu bạn cần độ chính xác cao và kiểm soát chuyển động tốt, hãy sử dụng động cơ servo, dùng nhiều cho các cơ cấu gắp thả, lên xuống như cánh tay.

  • Nếu bạn cần độ chính xác cao, mô-men xoắn cao và giá thành rẻ, hãy sử dụng động cơ bước, dùng nhiều trong các máy cần độ chính xác cao như máy in 3D hay CNC

  • Nếu bạn cần hiệu suất cao, độ ồn thấp và tuổi thọ cao, hãy sử dụng động cơ brushless, ví dụ như các cơ cấu bắn bóng hoặc máy bay drone

2.4. Cảm biến:

Cảm biến là các bộ phận đầu vào, giúp thu thập dữ liệu từ môi trường bên ngoài. Nút nhấn BOOT có sẵn trên mạch Yolo UNO cũng có thể xem là bộ phận đầu vào.

Trong các dự án robotics, các cảm biến thông dụng bao gồm cảm biến tốc độ encoder (thường đi kèm theo động cơ), cảm biến siêu âm (cảm biến khoảng cách) giúp phát hiện vật cản phía trước, cảm biến dò đường giúp robot nhận biết bề mặt đen trắng và đi theo đường kẻ, cảm biến góc giúp robot xoay góc chính xác, cảm biến va chạm…

../../_images/1.10.png

Cảm biến khoảng cách và cảm biến dò line 4 mắt


2.5. Nguồn điện - Pin

Có nhiều loại pin sạc khác nhau được sử dụng cho robot, mỗi loại có ưu và nhược điểm riêng. Dưới đây là một số loại pin sạc phổ biến nhất:

  1. Pin Lithium-Ion (Li-Ion):

  • Ưu điểm:

    • Mật độ năng lượng cao (thời gian hoạt động dài)

    • Hiệu suất cao (tỷ lệ tự xả thấp)

    • Tuổi thọ cao (số lần sạc lại cao)

  • Nhược điểm:

    • Kích thước lớn

    • Nguy cơ cháy nổ nếu không sử dụng đúng cách

  1. Pin Lithium-Polymer (Li-Po):

  • Ưu điểm:

    • Mật độ năng lượng cao (thời gian hoạt động dài)

    • Hiệu suất cao (tỷ lệ tự xả thấp)

    • Dễ dàng tạo hình

    • Nhẹ và nhỏ gọn

  • Nhược điểm:

    • Giá thành cao

    • Tuổi thọ thấp hơn Li-Ion

    • Nguy cơ cháy nổ nếu không sử dụng đúng cách

../../_images/1.111.png

Pin Li-Ion so với pin Lipo


  1. Pin Nickel-Metal Hydride (NiMH):

  • Ưu điểm:

    • An toàn

    • Tuổi thọ cao

  • Nhược điểm:

    • Mật độ năng lượng thấp (thời gian hoạt động ngắn)

    • Hiệu suất thấp (tỷ lệ tự xả cao)

    • Giá thành cao

  1. Pin Acid Chì (Pb):

  • Ưu điểm:

    • Giá thành rẻ

    • Dòng điện cao

  • Nhược điểm:
    • Mật độ năng lượng thấp (thời gian hoạt động ngắn)

    • Hiệu suất thấp (tỷ lệ tự xả cao)

    • Nặng và cồng kềnh

    • Nguy cơ rò rỉ axit

Loại pin phổ biến nhất và kinh tế nhất trong các dự án robotics là pin sạc Pin Lithium Ion (Li-ion) 18650 (kích thước 18x65mm), có điện áp từ 3.7V (khi yếu pin) đến 4.2V (khi sạc đầy). Tùy loại động cơ sử dụng mà bạn cần chọn nguồn pin phù hợp. Chủ yếu có 3 loại điện áp phổ biến là: 5V (dùng 1 cục pin 3.7V, qua mạch tăng áp lên 5V cấp cho động cơ và hệ thống), 7.4V hay 8.4V (2 cục pin mắc nối tiếp), 12V (dùng 3 cục pin) hoặc 24V.

../../_images/1.121.png

Hộp nguồn 2 pin (không mạch bảo vệ) và loại 3 pin (kèm mạch bảo vệ) Lithium-Ion 18650


3. Thư viện Robotics Open Platform

Thông thường, mỗi khi chúng ta cần làm các dự án robotics, đặc biệt là các dự án xe robot di chuyển, chúng ta sẽ phải xây dựng chương trình để xử lý các tác vụ cơ bản của robot là điều khiển động cơ, di chuyển, làm việc với các cảm biến thông dụng và hỗ trợ chế độ điều khiển từ xa (chế độ Teleop) bằng Gamepad hay từ mobile app.

Việc xử lý các tác vụ này không hẳn là đơn giản, đặc biệt là với người mới bắt đầu, chưa có nhiều kinh nghiệm. Ngoài ra, các tác vụ xử lý giúp robot di chuyển chính xác (đi thẳng, xoay góc, đo quãng đường di chuyển…) cũng là những yêu cầu khá phức tạp.

Thư viện Robotics Open Platform là một thư viện nguồn mở, được viết bằng Python, giúp xử lý sẵn các tác vụ cơ bản trên để chúng ta có thể tập trung vào các tính năng quan trọng cần xây dựng, giúp tiết kiệm nhiều thời gian khi làm các ứng dụng robotics.