Introduction: P1. ARDUINO BLUETOOTH TANK [Control Tank Tread Only]

About: Self-esteem, Self-confident, Self-motivate and other Self-....

Mình viết bài này nhằm chia sẻ cho tất cả bạn nào yêu mô hình và muốn làm một chiếc xe tăng điều khiển qua điện thoại như mình đang làm. Về cơ bản, mình muốn con tăng phải là một Tăng chiến, tức là chạy được và bắn được. Tuy nhiên, nếu gom toàn bộ hướng dẫn vào trong cùng một bài thì quá dài và phức tạp. Mà biết đâu chừng bạn nào đó yêu hòa bình sẽ phản đối mình về việc lắp súng lên xe đồ chơi thì sao ^^!, kkkk....

Trong PHẦN 1 này mình sẽ chỉ nói về hướng làm PHẦN CHẠY, còn PHẦN BẮN thì để PHẦN 2 NHEK.

Mình là dân chơi mô hình RC nên tất nhiên cũng sẽ có chút không hài lòng nếu cái xe tăng mà mình làm xong chỉ có thể tiến, lùi và xoay vòng vòng để quẹo giống đồ chơi con nít. OH NO! Mình muốn nó Pro hơn một xíu, thật hơn một xíu nên đã ráng viết một chương trình để điều khiển vô cấp 2 cái bánh xích. Điều này, trên lý thuyết có nghĩa là xe tăng sẽ só thể quẹo bất kì góc nào khi nó chạy và việc điều khiển chiếc xe THẬT HƠN và DỄ DÀNG HƠN rất nhiều.

Step 1: CHUẨN BỊ VẬT LIỆU & DỤNG CỤ

Để thực hiện theo hướng dẫn phần tiếp theo, bạn …

CẦN CHUẨN ÍT NHẤT:

  1. Mạch Arduino Uno (x1)
  2. Mạch Arduino Motor Shield L293 (x1)
  3. Mạch Bluetooth HC-05 hoặc HC-06
  4. Động cơ DC 5V-12V (x2)
  5. Điện thoại Android (x1)
  6. Pin 9V-12V (x1) //Tối thiểu là (x1) nhưng tốt hơn hết là (x2) nếu bạn không muốn xe bị nhiễu do dùng chung nguồn điện cho phần điều khiển và động cơ.
  7. Máy vi tính để nạp chương trình (x1) //Trong trường hợp các bạn đang đọc bài trên điện thoại, kkkk…

VÀ NHỮNG THỨ LINH TINH KHÁC:

  • Hộp số giảm tốc cho động cơ DC (x2)
  • Bộ xích xe tăng cùng bánh xe (x2) //Trong trường hợp các bạn muốn làm xe tăng y như mình
  • Dây điện nối mạch

Step 2: TẠO PHẦN KHUNG XE TĂNG

Xích xe tăng có nhiều cách để tạo.

Nhanh, rẻ: dây thun bản lớn hoặc bìa carton … như link video bên dưới:

Xe tăng làm từ bìa carton của Upuaza Touryou

Chuyên nghiệp hơn thì có thể in 3D rồi ghép lại:

Drogerdy - Raspberry Pi Controlled Tank Bot

Nhưng nhanh nhất và chuyên nghiệp nhất và tất nhiên cũng tốn tiền nhất (trong 3 cách) thì là bạn đừng “CHẾ TẠO” mà đi mua ^^! Bạn có thể mua cả bộ động cơ hộp số và bộ bánh xích của TAMIYA dễ dàng nếu ở nước ngoài, còn trong nước thì hơi khó tìm. Tuy nhiên, mình vẫn còn nhiều lựa chọn khác thay thế và giá cũng xem xem vậy. Bạn cũng có thể tìm những xe đồ chơi đã hỏng sau đó chỉnh sửa lại. Trong trường hợp của mình thì mình đi mua để tiết kiệm thời gian, dành thời gian đó để nghiên cứu cách viết chương trình.

Bên dưới là giá của một số bộ bánh xích (gồm 2 xích, 2 động cơ đi kèm hộp giảm tốc) mà mình sưu tầm được để bạn tham khảo:

Tamiya gear box + Tamiya track & wheel set: 690k

Vỏ tank 1 (như hình): ~390k

Vỏ tank 2 (như hình): ~300k

Vỏ tank 3 (như hình): ~900k

Vỏ tank mà mình sử dụng trong clip chạy vòng số 8: ~750k

Step 3: CÀI ĐẶT PHẦN MỀM TRÊN ĐIỆN THOẠI ANDROID VÀ TINH CHỈNH

Trái tim của chiếc xe tăng tất nhiên là mình vì mình là người điều khiển nó nhưng mình cần một bộ não nhỏ trên chiếc xe để biên dịch những suy nghĩ từ con tim thành tín hiệu điện để điều khiển động cơ. Mình chọn Arduino Uno cho vị trí này.

Vậy mình sẽ chuyển thông điệp của mình qua Arduino Uno bằng cách nào? Tất nhiên là như tiêu đề: sử dụng sóng Bluetooth. Thông tin đính kèm ở đây là sóng Bluetooth này đến từ điện thoại Android ^^! Như vậy là bạn cần 1 chiếc điện thoại có cài hệ điều hành Android nếu muốn điều khiển chiếc xe theo hướng dẫn của mình (Hơi tiếc cho mấy bạn xài Táo ^^!)

Theo lẽ thường, bạn cần viết 2 chương trình: 1 chương trình trên điện thoại Android để phát tín hiệu và 1 chương trình cho Arduino Uno để nhận và giải mã tín hiệu. Nhưng mà mình, có thể nhiều bạn khác cũng giống mình, mù tịt về lập trình Android thì làm sao mà viết? Vậy nên mình chọn cách khác là tìm và tải 1 chương trình miễn phí điều khiển xe qua Bluetooth từ Google Play về điện thoại. Vấn đề còn lại là tìm hiểu xem mã lệnh điều khiển ứng với từng nút nhấn trong phần mềm mới tải về là gì và viết chương trình giải mã tương ứng cho Arduino Uno. Bạn thấy đấy, đâu phải lúc nào chúng ta cũng cần BIẾT TUỐT và LÀM TUỐT TUỒN TUỘT tất cả mọi việc ^^!

Chương trình điều khiển chạy trên Android, chương trình này cực kì hay luôn, hay nhất trong vô vàn phần mềm miễn phí mà mình tìm thấy trên Google Play. Nếu bạn đang cầm điện thoại trên tay thì hãy vào Google Play và tìm từ khóa này: Arduino Joystick Controller. (Link vào ứng dụng tại Google Play)

Nếu vì lý do nào đó mà phần mềm này hết miễn phí luôn hoặc bị giới hạn tính năng thì bạn vẫn có thể tải file .apk mà mình đính kèm về cài offline. Nếu bạn không biết cài offline cho điện thoại android luôn thì tham khảo link bên dưới nhek:

Hướng dẫn cài file .apk lên điện thoại android

Sau khi cài đặt xong, các bạn vào chương trình, và làm theo hướng dẫn bên dưới:

1. Vào Option Menu => Settings => Chọn Continuous stream => Save Setting

2. Vào Option Menu => Change Rate => Cấu hình lại như sau:

Maximum forward speed: 255

Minimum forward speed: 1

Stop value: 0

Maximum back spee: 255

Minimum back speed: 1

Maximum left angle wheels: 0

Center angle wheels: 89

Maximum right angle wheels: 178

Step 4: VIẾT CHƯƠNG TRÌNH CHO ARDUINO

Mặc định bạn sẽ cần có chút kiến thức về Arduino và một chút tiếng Anh để đọc hiểu chương trình bên dưới của mình nếu muốn điều chỉnh nó cho hợp với ý của bạn. Thực sự thuật toán sử dụng trong chương trình mình cũng đọc hiểu và viết lại từ một chương trình của một bạn khác (link tham khảo bên dưới). Nhưng như mình nói ở trên, bạn không cần BIẾT TUỐT để làm điều mình thích nên cũng sẽ không sao nếu bạn copy nguyên xi chương trình của mình và dán nó vào Arduino IDE để tải xuống Uno. ^^!

Giả sử bạn cũng chẳng biết gì về Arduino luôn thì làm như sau:

1. Tải chương trình Arduino IDE về và cài vào máy tính. (Link tải Arduino IDE) Bạn thực hiện như hình.

2. Tải file PMT_s_Bluetooth_RC_Tank_V01 đính kèm về máy.

3. Mở file bằng Arduino IDE và bấm nút nạp chương trình như hình.

Nếu bạn vẫn không nạp được thì tham khảo video bên dưới nhek ^^!

Kết nối Arduino với máy tính và nạp chương trình

===============================================================

Mình sẽ dành ít thời gian nói về chương trình mình viết.

Cơ bản, không phải tự nhiên mình nghĩ ra chương trình này. Để viết chương trình, mình cần biết chương trình điều kiển trên Android đã mã hóa tín hiệu Bluetooth như thế nào ứng với mỗi thao tác điều khiển của mình trên điện thoại trước khi gửi đến Arduino Uno. Đi lòng vòng tìm kiếm thì mình kiếm ra bảng mã hóa như hình. Thực ra, mình tìm thấy cả một bài viết và chương trình chi tiết của tác giả nhưng không thể sử dụng được do chương trình chưa hoàn thiện (tác giả đã không đính kèm các chương trình con để thử tài người hâm mộ như kiểu chơi điền khuyết, kkk....).Mình đính kèm file pdf bài viết của tác giả để các bạn tiện tham khảo.

Nếu các bạn đã biết về Arduino thì trong chuong trình mình dùng 2 thư viện chính là AF_Motor (cho ArduinoMotor Shield L293) và Software Serial để giải quyết vấn đề nhận và giải mã tín hiệu. Để làm cho xe tăng chạy như thật thì là một vấn đề ở thuật toán lập trình. Điểm đặc biệt của nó thể hiện qua thuật toán Map() mà mình dùng.

Step 5: NỐI DÂY

Sau khi tải chương trình cho Arduino Uno xong xuôi rồi thì bạn chỉ còn cần phải đấu dây cho đúng sơ đồ đính kèm nữa là chiếc tăng có thể sẵn sàng chạy rồi :)

Bạn thực hiện theo trình tự sau:

1. Ráp Arduino Motor Shield L293 vào Arduino Uno như hình.

2. Nối dây giữa module Bluetooth HC-05 và L293 Shield theo nguyên tắc như hình. Tuy nhiên có 2 chú ý nhỏ:

a. TX của HC-05 nối với chân 14 của UNO hay cổng A0 trên L293 Shield

b. RX của HC-05 nối với chân 15 của UNO hay cổng A1 trên L293 Shield.

Lý thuyết truyền nhận tín hiệu là vậy nhưng do chip của HC-05 sử dụng điện áp 3.3V trong khi Arduino UNO cho điện áp ra trên chân 15 là 5V khi gửi tín hiệu đến HC-05 => Nếu bạn không muốn nướng module bluetooth trong quá trình điều khiển thì cần phải hạ áp tín hiệu từ chân 15 xuống 3.3V bằng mạch chia áp đơn giản từ 2 con điện trở 1k và 2.2k.

3. Cấp nguồn cho mạch Arduino và mạch L293 bằng điện áp nhỏ hơn hoặc bằng 12V nhek.

Step 6: KẾT NỐI BLUETOOTH GIỮA XE TĂNG VÀ ĐIỆN THOẠI

Để kết nối thì bạn thực hiện như sau:

1. Vào Cài đặt hệ thống => Chuyển chế độ Bluetooth trên điện thoại thành ON. (lần đầu kết nối)

2. Nhấp vào biểu tượng Bluetooth => Chọn tìm kiếm thiết bị (lần đầu kết nối)

3. Chiếc xe tăng của mình sẽ hiện lên với tên là tên của module bluetooth, vd: HC-05, bạn chọn vào nó để kết nối. (lần đầu kết nối)

4. Điện thoại sẽ yêu cầu nhập mã kết nối (pairing code). Pairing Code mặc định là: 1234 (lần đầu kết nối)

Khi đã kết nối thành công, đèn LED trên module bluetooth sẽ từ trạng thái nhấp nháy 1 lần/s sang nháy nhanh 2 lần mỗi 2s.

5. Mở chương trình điều khiển trên điện thoại Android => Option Menu => Connect to car => Chọn HC-05, hình tròn trên màn hình chuyển từ nháy đỏ sang màu xanh lá là chương trình điều khiển đã kết nối với module bluetooth hay đã kết nối với xe tăng của bạn.

Step 7: ĐEM XE ĐI TẬP LÁI THÔI ^^!

Nếu bạn đã làm đến đây thì bạn thành công rồi đấy.

Thử thay đổi nút gạt trên chương trình xem xe có chạy không nào ^^!

Mọi thứ không phải quá khó đúng không?

P/S: Mình share link toàn bộ dữ liệu, bài viết, tài liệu, chương trình liên quan cho bạn nào đang nghiên cứu về Arduino và muốn tìm hiểu sâu hơn về mảng điều khiển xe này ở cuối bài. Chúc các bạn thành công!

Link toàn bộ tài liệu liên quan

Nếu thấy bài viết này hay thì nhớ Share cho bạn bè nhek. Mình cũng rất mong đọc được những bài viết khác từ các bạn. Cùng nhau giúp cộng đồng DIY Việt vững mạnh.
Thân,
Minh Thành
DIY Summer Camp Challenge

Participated in the
DIY Summer Camp Challenge