- Các thành phần bắt buộc:
- Sơ đồ mạch:
- Bộ vi điều khiển 8051:
- Mô-đun Bluetooth HC-05:
- IC điều khiển động cơ L293D:
- Hoạt động của Robot điều khiển bằng điện thoại Android:
- Giải thích mã:
Trong dự án này, chúng tôi sẽ chế tạo một robot được điều khiển trên Điện thoại Android sử dụng vi điều khiển 8051 và mô-đun Bluetooth. Robot được thiết kế sử dụng động cơ DC và hướng của động cơ DC sẽ được điều khiển bởi các lệnh nhận được từ ứng dụng Android. Trạng thái của rô bốt được gửi trở lại ứng dụng Android. Dự án này cũng sẽ giúp giao tiếp mô-đun Bluetooth HC-05 với bộ vi điều khiển 8051. Chúng tôi đã sử dụng mô-đun Bluetooth để điều khiển các thiết bị gia dụng với 8051.
Các thành phần bắt buộc:
- Bộ vi điều khiển 8051 (AT89S52)
- Mô-đun Bluetooth HC-05
- Trình điều khiển động cơ L293D
- Khung robot
- Động cơ DC (2)
- Bánh xe (2)
- Bánh xe thầu dầu
- Dây nhảy
- Ứng dụng android thiết bị đầu cuối Bluetooth
Sơ đồ mạch:
Bộ vi điều khiển 8051:
Vi điều khiển 8051 là vi điều khiển 8 bit có 128 byte RAM trên chip, 4K byte ROM trên chip, hai bộ định thời, một cổng nối tiếp và bốn cổng 8 bit. Vi điều khiển 8052 là phần mở rộng của vi điều khiển 8051. Trong dự án này, chúng tôi sử dụng vi điều khiển AT89S52. Bảng dưới đây cho thấy sự so sánh của các thành viên gia đình 8051.
Đặc tính |
8051 |
8052 |
ROM (tính bằng byte) |
4K |
8 nghìn |
RAM (byte) |
128 |
256 |
Hẹn giờ |
2 |
3 |
Chân I / O |
32 |
32 |
Cổng nối tiếp |
1 |
1 |
Nguồn gián đoạn |
6 |
số 8 |
Mô-đun Bluetooth HC-05:
HC-05 là một mô-đun Bluetooth nối tiếp. Nó có thể được cấu hình bằng các lệnh AT. Nó có thể hoạt động trong ba cấu hình khác nhau (Master, Slave, Loop back). Trong dự án của chúng tôi, chúng tôi sẽ sử dụng nó như một nô lệ. Các tính năng của mô-đun HC-05 bao gồm,
- Độ nhạy -80dBm điển hình.
- Tốc độ truyền mặc định: 9600bps, 8 bit dữ liệu, 1 bit dừng, không có chẵn lẻ.
- Mã pin tự động ghép nối: mã pin mặc định “1234”
- Nó có 6 chân.
- Các chân Vcc và Gnd được sử dụng để cấp nguồn cho HC-05.
- Các chân Tx và Rx được sử dụng để giao tiếp với vi điều khiển.
- Bật mã pin để kích hoạt mô-đun HC-05. khi nó ở mức thấp, mô-đun bị tắt
- Pin trạng thái hoạt động chỉ báo trạng thái. Khi nó không được ghép nối / kết nối với bất kỳ thiết bị Bluetooth nào khác, đèn LED sẽ nhấp nháy liên tục. Khi nó được kết nối / ghép nối với bất kỳ thiết bị Bluetooth nào khác, đèn LED sẽ nhấp nháy với độ trễ liên tục là 2 giây.
IC điều khiển động cơ L293D:
L293D là IC điều khiển động cơ cầu H kép. Điều này hoạt động như một bộ khuếch đại hiện tại, đầu ra của L293D điều khiển Động cơ DC. Nó chứa hai mạch cầu H có sẵn. Ở chế độ hoạt động chung, nó có thể truyền động đồng thời hai động cơ một chiều theo cả hai hướng. Bảng dưới đây cho thấy mô tả chân của IC L293D. Dưới đây là một số dự án sử dụng Trình điều khiển động cơ L293D.
Ghim Mô tả
Số pin |
Tên |
Chức năng |
1 |
Bật 1,2 |
Bật pin cho động cơ 1 |
2 |
Đầu vào 1 |
Đầu vào 1 cho động cơ 1 |
3 |
Đầu ra 1 |
Đầu ra 1 cho động cơ 1 |
4 |
Gnd |
Mặt đất (0V) |
5 |
Gnd |
Mặt đất (0V) |
6 |
Đầu ra 2 |
Đầu ra 2 cho động cơ 1 |
7 |
Đầu vào 2 |
Đầu vào 2 cho động cơ 1 |
số 8 |
Vcc 2 |
Điện áp cung cấp cho động cơ (5V) |
9 |
Bật 3,4 |
Bật pin cho động cơ 1 |
10 |
Đầu vào 3 |
Đầu vào 1 cho động cơ 2 |
11 |
Đầu ra 4 |
Đầu ra 1 cho động cơ 2 |
12 |
Gnd |
Mặt đất (0V) |
13 |
Gnd |
Mặt đất (0V) |
14 |
Đầu ra 4 |
Đầu ra 2 cho động cơ 2 |
15 |
Đầu vào 4 |
Đầu vào 2 cho động cơ 2 |
16 |
Vcc 1 |
Điện áp cung cấp (5V) |
Hoạt động của Robot điều khiển bằng điện thoại Android:
Trong Robot điều khiển bằng điện thoại thông minh này, người dùng ứng dụng Android sẽ gửi dữ liệu đến bộ vi điều khiển 8051 thông qua mô-đun HC-05. Dữ liệu nhận được được so sánh trong bộ vi điều khiển 8051 và quyết định được đưa ra tương ứng. Bảng dưới đây cho thấy hướng của động cơ và trạng thái của robot đối với các ký tự nhận được khác nhau.
Ký tự đã nhận |
Động cơ 1 |
Động cơ 2 |
Trạng thái của robot |
f |
Ở đằng trước |
Ở đằng trước |
Tiến lên phía trước |
b |
Phía sau |
Phía sau |
Đi lùi |
r |
Ở đằng trước |
Phía sau |
Di chuyển sang phải |
l |
Phía sau |
Ở đằng trước |
Di chuyển về bên trái |
S |
Tắt |
Tắt |
Đã dừng |
Các thiết bị đầu cuối Bluetooth ứng dụng cho phép chúng ta mô phỏng một thiết bị đầu cuối Bluetooth. Ứng dụng này hỗ trợ giao tiếp hai chiều và ứng dụng này tương thích với hầu hết các thiết bị.
Các bước dưới đây hướng dẫn cách cài đặt và sử dụng ứng dụng này.
1. Tải xuống và cài đặt ứng dụng thiết bị đầu cuối Bluetooth trên điện thoại Android của bạn. Ứng dụng có thể được tải xuống từ liên kết bên dưới.
play.google.com/store/apps/details?id=ptah.apps.bl Bluetoothterminal
2. Sau khi cài đặt ứng dụng, hãy mở ứng dụng và bật Bluetooth.
3. Chọn thiết bị và nhấp vào tùy chọn kết nối. Sau khi kết nối thành công, chúng ta có thể bắt đầu gửi dữ liệu đến module HC-05.
Kiểm tra Giải thích mã bên dưới để xem cách ký tự được gửi và nhận bởi Vi điều khiển 8051 để quay các động cơ cần thiết.
Giải thích mã:
Chương trình C hoàn chỉnh và Video trình diễn cho dự án này được đưa ra ở phần cuối của dự án này. Mã được chia thành các đoạn nhỏ có ý nghĩa và được giải thích bên dưới.
Đối với giao tiếp L293D với vi điều khiển 8051, chúng ta phải xác định các chân mà L293D được kết nối với vi điều khiển 8051. Chân In1 của động cơ 1 được kết nối với P2.0, chân In2 của động cơ 1 được kết nối với P2.1, chân In1 của động cơ 2 được kết nối với P2.2, chân In2 của động cơ 2 được kết nối với P2.3
sbit m1f = P2 ^ 0; // chân in1 của motor1 sbit m1b = P2 ^ 1; // chân in2 của motor1 sbit m2f = P2 ^ 2; // chân in1 của motor2 sbit m2b = P2 ^ 3; // chân in2 của motor2
Tiếp theo chúng ta phải xác định một số hàm được sử dụng trong chương trình. Hàm Delay được sử dụng để tạo thời gian trễ được chỉ định. Hàm Txdata được sử dụng để truyền dữ liệu qua cổng nối tiếp. Hàm Rxdata được sử dụng để nhận dữ liệu từ cổng nối tiếp.
void delay (unsigned int); // hàm tạo delay char rxdata (void); // hàm nhận một ký tự thông qua cổng nối tiếp của 8051 void txdata (unsigned char); // hàm gửi một ký tự qua cổng nối tiếp của 8051
Trong phần này của mã, chúng ta sẽ cấu hình vi điều khiển 8051 cho giao tiếp nối tiếp. Thanh ghi TMOD được tải với 0x20 cho bộ định thời 1, chế độ 2 (tự động tải lại). Thanh ghi SCON được tải với 0x50 cho 8 bit dữ liệu, 1 bit dừng và kích hoạt nhận. Thanh ghi TH1 được tải với 0xfd cho tốc độ truyền 9600 bit mỗi giây. TR1 = 1 được sử dụng để khởi động bộ định thời.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1; Trong phần này của mã, ký tự trả về của hàm rxdata được lưu trữ trong biến 's' để sử dụng thêm.
s = rxdata (); // nhận dữ liệu nối tiếp từ mô-đun bluetooth hc-05
Trong phần này của mã, chúng ta phải so sánh ký tự nhận được với các ký tự được ký sẵn cho các hướng khác nhau. Nếu ký tự nhận được là 'f', thì rô bốt phải di chuyển về phía trước. Điều này được thực hiện bằng cách làm cho chân m1f, m2f cao và chân m1b, m2b thấp. Khi điều này được thực hiện, tiếp theo chúng ta phải gửi trạng thái của robot đến ứng dụng android. Điều này được thực hiện với sự trợ giúp của hàm txdata . Quá trình tương tự được lặp lại cho các ký tự khác nhau nhận được và quyết định được thực hiện tương ứng. Bảng 1 cho thấy các giá trị khác nhau của m1f, m1b, m2f, m2b cho các hướng di chuyển khác nhau của robot.
if (s == 'f') // di chuyển cả hai động cơ theo chiều thuận {m1f = 1; trì hoãn (1); m1b = 0; trì hoãn (1); m2f = 1; trì hoãn (1); m2b = 0; trì hoãn (1); for (i = 0; msg1! = '\ 0'; i ++) // gửi trạng thái của robot tới ứng dụng android thông qua bluetooth {txdata (msg1); }}
m1f |
m1b |
m2f |
m2b |
Động cơ 1 vòng quay |
Động cơ 2 quay |
Trạng thái của robot |
1 |
0 |
1 |
0 |
ở đằng trước |
ở đằng trước |
Tiến về phía trước |
0 |
1 |
0 |
1 |
đảo ngược |
đảo ngược |
Tiến lùi |
1 |
0 |
0 |
1 |
ở đằng trước |
đảo ngược |
Di chuyển sang phải |
0 |
1 |
1 |
0 |
đảo ngược |
ở đằng trước |
Di chuyển sang trái |
0 |
0 |
0 |
0 |
dừng lại |
dừng lại |
dừng lại |
Điều này là bạn có thể xoay xe Robot theo bất kỳ hướng nào bằng cách điều khiển bốn động cơ sử dụng vi điều khiển 8051. Robot này cũng có thể được điều khiển bằng DTMF với 8051, nếu bạn không có điện thoại Android.
Ngoài ra, hãy kiểm tra tất cả các Dự án Robotics tại đây.