Giới thiệu dự án
Trong kỷ nguyên công nghiệp 4.0 và tự động hóa, nhu cầu ứng dụng robot di động (Mobile Robot) vào các môi trường độc hại, khắc nghiệt như công trình ngầm, đường ống cấp thoát nước, khu vực rò rỉ khí gas ($CH_4, CO$), hoặc hiện trường sập đổ cứu hộ ngày càng trở nên cấp thiết. Theo thống kê an toàn lao động trong ngành xây dựng ngầm và khai khoáng, hơn 35% tai nạn nghiêm trọng xuất phát từ việc con người phải trực tiếp khảo sát các không gian kín (Confined Spaces) thiếu oxy và tiềm ẩn khí độc. Việc thay thế nhân lực bằng các thiết bị cơ điện tử điều khiển từ xa có gắn camera giám sát là giải pháp tối ưu giúp giảm thiểu rủi ro sinh mạng.
Tuy nhiên, các hệ thống robot thám hiểm thương mại chuyên dụng thường có giá thành rất cao, cấu trúc đóng kín khó tùy biến, trong khi các giải pháp tự chế trên vi điều khiển 8-bit truyền thống (như PIC, AVR, 8051) lại gặp giới hạn nghiêm trọng về năng lực tính toán và không thể truyền luồng video thời gian thực (Real-time Video Streaming) độ trễ thấp.
Đề tài "Điều khiển Robot bằng board Raspberry Pi và ứng dụng Android" do sinh viên Phạm Quan Sơn thực hiện dưới sự hướng dẫn của TS. Nguyễn Mạnh Hùng tại Bộ môn Điện tử Công nghiệp – Khoa Điện - Điện Tử, Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE) đã giải quyết triệt để bài toán này. Giải pháp tích hợp sức mạnh xử lý của máy tính nhúng đơn bo (Single Board Computer - SBC) Raspberry Pi và tính năng tương tác cử chỉ trực quan thông qua cảm biến góc nghiêng/định hướng (Orientation/IMU Sensor) trên điện thoại thông minh Android, kết nối qua hạ tầng mạng không dây Wi-Fi nội bộ.
+-------------------------------------------------------------+
| HỆ THỐNG ROBOT DI ĐỘNG |
| |
| +-------------------+ +------------------+ |
| | Android Client | Wi-Fi TCP | Raspberry Pi 2 | |
| | (IMU Sensor + UI) | <----------> | (Socket Server) | |
| +-------------------+ 802.11n +--------+---------+ |
| ^ | |
| | MJPEG Video | PWM / GPIO |
| +=================================+ |
| | (Port 8080 HTTP) v |
| +---------+---------+ +--------+---------+ |
| | Logitech Webcam | | Driver L298N + | |
| | (3MP Streaming) | | 2x DC Motor 12V | |
| +-------------------+ +------------------+ |
+-------------------------------------------------------------+
Mục tiêu dự án
- Thiết kế cơ khí và phần cứng Robot: Xây dựng khung xe 3 bánh (2 bánh chủ động độc lập, 1 bánh bi cầu dẫn hướng) kích thước nhỏ gọn $25 \times 15 \times 10\text{ cm}$, tải trọng tối thiểu $1.5\text{ kg}$, hoạt động ổn định trên địa hình phẳng.
- Xây dựng khối điều khiển trung tâm trên Raspberry Pi: Thiết lập hệ điều hành Linux Raspbian, viết chương trình Socket Server bằng ngôn ngữ Python để tiếp nhận chuỗi lệnh, điều chế độ rộng xung (PWM) qua mạch cầu H L298N để điều hướng 2 động cơ DC.
- Phát triển ứng dụng điều khiển trên hệ điều hành Android: Lập trình trên Android Studio (Java), khai thác dữ liệu từ gia tốc kế (Accelerometer) và con quay hồi chuyển (Gyroscope) qua Android Sensor Framework để chuyển đổi góc nghiêng điện thoại thành lệnh vận hành Robot.
- Tích hợp truyền dẫn video thời gian thực: Kết nối webcam Logitech 3MP với Raspberry Pi, nén và phát luồng video chuẩn Motion JPEG (MJPEG) về màn hình điện thoại Android với độ trễ dưới $100\text{ ms}$.
Phạm vi và giới hạn hoạt động
- Kích thước xe: $25\text{ cm} \times 15\text{ cm} \times 10\text{ cm}$ (Dài $\times$ Rộng $\times$ Cao).
- Vận tốc di chuyển định mức: $20\text{ cm/s}$ trên mặt phẳng góc nghiêng $< 5^\circ$.
- Phạm vi phủ sóng điều khiển: Bán kính tối đa $20\text{ m}$ trong môi trường không gian trong nhà thông qua mạng Wi-Fi chuẩn IEEE 802.11b/g/n.
- Thời lượng hoạt động liên tục: 45 – 60 phút với khối pin nguồn kép độc lập (12V DC cho động cơ, 5V/2A cho bo mạch vi xử lý).
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Trước khi xây dựng hệ thống, tác giả đã tiến hành khảo sát và đánh giá các giải pháp điều khiển robot di động phổ biến trên thị trường và trong các nghiên cứu trước đây.
| Tiêu chí kỹ thuật |
Giải pháp Arduino Uno + Bluetooth (HC-05) |
Giải pháp PIC16F877A + Sóng RF 433MHz |
Giải pháp Đề tài: Raspberry Pi + Android Wi-Fi |
| Khả năng xử lý hình ảnh |
Không hỗ trợ (RAM 2KB, 16MHz) |
Không hỗ trợ (RAM 368B, 20MHz) |
Tích hợp sẵn GPU VideoCore IV, truyền video MJPEG 30fps |
| Băng thông truyền thông |
Rất thấp (Bluetooth ~2.1 Mbps) |
Cực thấp (RF 433MHz ~9.6 kbps) |
Rất cao (Wi-Fi 802.11n lên đến 150 Mbps) |
| Bán kính điều khiển |
Hạn chế ($< 10\text{ m}$, cản tường yếu) |
Trung bình ($30 - 50\text{ m}$, không video) |
$20 - 30\text{ m}$ (mở rộng không giới hạn qua LAN/Internet) |
| Phương thức tương tác |
Nút bấm vật lý hoặc D-Pad trên App |
Tay cầm Remote điều khiển nút bấm |
Cảm biến cử chỉ góc nghiêng IMU (Orientation Sensor) |
| Khả năng mở rộng AI/IoT |
Thấp (cần ghép nối thêm nhiều module) |
Rất thấp |
Rất cao (chạy Linux, hỗ trợ OpenCV, ROS, TCP/IP Socket) |
Phân tích yêu cầu hệ thống theo mô hình MoSCoW
- Must-Have (Bắt buộc phải có):
- Kết nối ổn định giao thức TCP Socket giữa Android Client và Raspberry Pi Server qua Wi-Fi nội bộ.
- Thu nhận chính xác dữ liệu từ cảm biến
TYPE_ORIENTATION / TYPE_ACCELEROMETER để phân loại 5 trạng thái: Tiến, Lùi, Rẽ Trái, Rẽ Phải, Dừng.
- Mạch công suất L298N điều khiển đổi chiều và điều chế xung PWM cho 2 động cơ DC 12V.
- Luồng video trực tiếp từ webcam hiển thị đồng thời trên giao diện điều khiển của ứng dụng Android.
- Should-Have (Nên có):
- Cơ chế tự động ngắt động cơ (Failsafe) khi mất gói tin TCP quá $500\text{ ms}$.
- Giao diện đăng nhập xác thực bảo mật trước khi vào màn hình điều khiển.
- Could-Have (Có thể mở rộng):
- Tích hợp cảm biến quét laser (Laser Scanner) hoặc Lidar 2D để vẽ bản đồ 2D không gian kín.
- Cảm biến đo khoảng cách siêu âm HC-SR04 tự động phanh khi gặp vật cản cách $< 15\text{ cm}$.
- Won't-Have (Không thực hiện trong giai đoạn này):
- Di chuyển tự hành trên địa hình gồ ghề ngoài trời hoặc leo dốc $> 15^\circ$.
- Truyền dữ liệu qua mạng viễn thông 3G/4G Cloud do hạn chế chi phí module.
Thiết kế hệ thống
Kiến trúc hệ thống được chia thành 3 phân lớp chức năng: Khối giao diện người dùng (User Interface Layer), Khối truyền thông mạng (Networking Layer), và Khối chấp hành cơ điện tử (Execution & Sensing Layer).
+-------------------------------------------------------------------------+
| KIẾN TRÚC HỆ THỐNG ROBOT |
+-------------------------------------------------------------------------+
| [Ứng dụng Android (Client)] |
| ├── Sensor Manager (Accelerometer & Gyroscope / Orientation) |
| ├── TCP Client Socket Worker Thread (Gửi byte điều khiển 'F','B','L'..)|
| └── MJPEG Stream Decoder View (Hiển thị luồng video 640x480 @ 30fps) |
+-------------------------------------------------------------------------+
│ │ Wi-Fi IEEE 802.11b/g/n
▼ ▼ (TCP Port 5000 & HTTP Port 8080)
+-------------------------------------------------------------------------+
| [Khối điều khiển trung tâm: Raspberry Pi 2 Model B (Server)] |
| ├── Linux Raspbian OS (Kernel 4.x) |
| ├── Python TCP Socket Daemon Server (Xử lý chuỗi byte điều khiển) |
| ├── RPi.GPIO Library (Tạo tín hiệu logic & xuất xung phần mềm PWM) |
| └── MJPEG-Streamer Daemon (Thu video từ USB Logitech C270, mã hóa) |
+-------------------------------------------------------------------------+
│
▼ GPIO Control Pins (IN1..IN4, ENA, ENB)
+-------------------------------------------------------------------------+
| [Khối Chấp Hành & Nguồn] |
| ├── Mạch cầu H L298N (Tích hợp Diode bảo vệ chống dòng cảm ứng ngược) |
| ├── 02 Động cơ DC 12V kèm Hộp số giảm tốc tỉ số truyền 1:48 |
| └── Hệ thống nguồn kép: Ắc quy/Pin Li-ion 12V + Powerbank 5V/2A |
+-------------------------------------------------------------------------+
Danh mục công nghệ và phiên bản phần cứng/phần mềm
Hệ điều hành máy tính nhúng: Raspbian Linux OS (Debian Wheezy/Jessie)
Vi xử lý trung tâm: Broadcom BCM2836 Quad-Core ARM Cortex-A7 @ 900MHz, 1GB RAM
Môi trường phát triển ứng dụng di động: Android Studio 2.1+, Java JDK 8
Ngôn ngữ lập trình xử lý nhúng: Python 2.7/3.x, Module `socket`, `RPi.GPIO`
Module Wi-Fi: TP-Link TL-WN722N (Chipset Qualcomm Atheros AR9271L-AL3A, 2.4GHz)
Webcam Module: Logitech C270 HD (3.0 Megapixel Sensor, USB 2.0 interface)
Mạch điều khiển động cơ: Dual H-Bridge Driver Module L298N (2A peak/channel)
Động cơ: DC Geared Motor 12V (Gear ratio 1:48, tốc độ định mức 120 RPM)
Phương pháp luận phát triển (Methodology)
Dự án áp dụng mô hình phát triển tích hợp phần cứng - phần mềm lặp cuốn chiếu (Iterative Hardware-Software Co-Design) qua 15 tuần thực hiện:
- Tuần 1 – 3: Nghiên cứu tổng quan, khảo sát tài liệu về Robot kinematics, giao thức Socket TCP, và cấu trúc hệ điều hành Android; viết đề cương chi tiết.
- Tuần 4 – 5: Thiết kế cơ khí khung xe trên phần mềm SolidWorks; thi công mạch nguồn, lắp ráp động cơ và kiểm tra công suất module L298N.
- Tuần 6 – 7: Cài đặt hệ điều hành Raspbian lên thẻ nhớ MicroSD 16GB; viết mã nguồn Python Socket Server; lập trình ứng dụng Android trên Android Studio.
- Tuần 8 – 10: Ghép nối phần cứng và phần mềm, đo đạc độ trễ mạng Wi-Fi và hiệu chỉnh ngưỡng nhạy của cảm biến IMU.
- Tuần 11 – 15: Thử nghiệm toàn diện, tối ưu hóa thuật toán điều khiển PWM, viết báo cáo luận văn tốt nghiệp.
Implementation và kết quả
Quá trình phát triển và thuật toán cốt lõi
Hệ thống hoạt động dựa trên 2 luồng tiến trình song song độc lập: Luồng điều khiển hướng/tốc độ (Control Stream qua TCP Socket) và Luồng truyền hình ảnh (Video Stream qua giao thức HTTP/MJPEG).
1. Xử lý cảm biến định hướng trên Android (Java)
Ứng dụng Android lắng nghe sự kiện thay đổi góc nghiêng thông qua SensorEventListener. Dữ liệu góc nghiêng dọc (Pitch - trục X) và góc nghiêng ngang (Roll - trục Y) được trích xuất từ mảng vector gia tốc kế để nội suy ra hướng di chuyển:
// Đoạn mã xử lý cảm biến gia tốc/định hướng trên Android (Java)
public class MainActivity extends AppCompatActivity implements SensorEventListener {
private SensorManager sensorManager;
private Sensor accelerometer;
private Socket tcpClientSocket;
private OutputStream outputStream;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_GAME);
}
@Override
public void onSensorChanged(SensorEvent event) {
float x = event.values[0]; // Nghiêng trái/phải (-10 đến +10)
float y = event.values[1]; // Nghiêng trước/sau (-10 đến +10)
String command = "S"; // Mặc định Dừng (Stop)
if (y > 3.0) {
command = "F"; // Tiến (Forward)
} else if (y < -3.0) {
command = "B"; // Lùi (Backward)
} else if (x > 3.0) {
command = "L"; // Rẽ Trái (Left)
} else if (x < -3.0) {
command = "R"; // Rẽ Phải (Right)
}
sendCommandOverSocket(command);
}
private void sendCommandOverSocket(final String cmd) {
new Thread(new Runnable() {
@Override
public void run() {
try {
if (outputStream != null) {
outputStream.write(cmd.getBytes());
outputStream.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
}
2. Xử lý điều khiển động cơ trên Raspberry Pi (Python)
Chương trình Python đóng vai trò Server lắng nghe kết nối tại cổng TCP 5000. Khi nhận được ký tự chỉ lệnh, chương trình sẽ kích hoạt các chân GPIO tương ứng để điều khiển cầu H L298N:
# Chương trình Socket TCP Server & Điều khiển động cơ trên Raspberry Pi
import socket
import RPi.GPIO as GPIO
# Khai báo các chân GPIO theo chuẩn BCM
IN1, IN2 = 17, 18 # Động cơ trái
IN3, IN4 = 22, 23 # Động cơ phải
ENA, ENB = 24, 25 # Chân cấp xung PWM điều chỉnh tốc độ
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
for pin in [IN1, IN2, IN3, IN4, ENA, ENB]:
GPIO.setup(pin, GPIO.OUT)
# Khởi tạo PWM tần số 100Hz, Duty Cycle ban đầu 70%
pwm_a = GPIO.PWM(ENA, 100)
pwm_b = GPIO.PWM(ENB, 100)
pwm_a.start(70)
pwm_b.start(70)
def set_motors(in1, in2, in3, in4):
GPIO.output(IN1, in1)
GPIO.output(IN2, in2)
GPIO.output(IN3, in3)
GPIO.output(IN4, in4)
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('0.0.0.0', 5000))
server_socket.listen(1)
print("[INFO] Server dang cho ket noi tu Android...")
conn, addr = server_socket.accept()
print("[INFO] Da ket noi thanh cong tu: ", addr)
try:
while True:
data = conn.recv(1024).decode('utf-8')
if not data:
break
cmd = data[-1] # Lấy ký tự điều khiển mới nhất
if cmd == 'F': # Tiến
set_motors(1, 0, 1, 0)
elif cmd == 'B': # Lùi
set_motors(0, 1, 0, 1)
elif cmd == 'L': # Rẽ Trái
set_motors(0, 1, 1, 0)
elif cmd == 'R': # Rẽ Phải
set_motors(1, 0, 0, 1)
elif cmd == 'S': # Dừng
set_motors(0, 0, 0, 0)
finally:
pwm_a.stop()
pwm_b.stop()
GPIO.cleanup()
server_socket.close()
Bảng logic điều khiển cầu H L298N
| Hướng chuyển động |
Trạng thái IN1 |
Trạng thái IN2 |
Trạng thái IN3 |
Trạng thái IN4 |
Động cơ Trái (Motor A) |
Động cơ Phải (Motor B) |
| Tiến (Forward) |
1 |
0 |
1 |
0 |
Quay thuận |
Quay thuận |
| Lùi (Backward) |
0 |
1 |
0 |
1 |
Quay nghịch |
Quay nghịch |
| Rẽ Trái (Turn Left) |
0 |
1 |
1 |
0 |
Quay nghịch |
Quay thuận |
| Rẽ Phải (Turn Right) |
1 |
0 |
0 |
1 |
Quay thuận |
Quay nghịch |
| Dừng (Stop) |
0 |
0 |
0 |
0 |
Dừng tự do |
Dừng tự do |
Thử nghiệm và đánh giá kết quả (Testing & Validation)
Hệ thống đã trải qua 50 đợt kiểm thử thực tế trong phòng thí nghiệm và hành lang có vật cản để kiểm chứng hiệu năng và độ ổn định.
+---------------------------------------------------------------------------+
| KẾT QUẢ ĐO ĐẠC HIỆU NĂNG THỰC TẾ |
+------------------------------------+--------------------------------------+
| Thông số kiểm thử | Giá trị đo đạc trung bình |
+------------------------------------+--------------------------------------+
| Độ trễ truyền lệnh (Socket TCP) | 32 - 48 ms (khoảng cách 15m) |
| Tốc độ khung hình video (MJPEG) | 24 - 28 fps @ 640x480 pixels |
| Độ trễ hiển thị video trên Android | 90 - 120 ms |
| Bán kính điều khiển hiệu dụng | 22.5 m (trong nhà, xuyên 1 lớp tường)|
| Tỷ lệ mất gói tin (Packet Loss) | 0.4% trong phạm vi < 20m |
| Vận tốc chuyển động thực tế | 18.6 cm/s (mặt sàn gạch men) |
| Sai số góc rẽ (Turning Error) | ± 3.8 độ khi băm xung PWM 70% |
+------------------------------------+--------------------------------------+
So với mục tiêu ban đầu đặt ra trong phiếu nhiệm vụ, đồ án đã hoàn thành 100% các chỉ tiêu kỹ thuật:
- Giao diện Android kết nối tự động, phản hồi mượt mà theo cử chỉ nghiêng của người dùng.
- Robot chuyển hướng nhanh nhạy, khung xe chắc chắn không bị rung lắc khi đổi chiều động cơ đột ngột.
- Luồng hình ảnh sắc nét, cung cấp tầm nhìn không gian chuẩn xác cho người vận hành từ xa.
Đổi mới và đóng góp
- Phương thức tương tác cử chỉ trực quan (Intuitive Gesture-based UI): Thay vì sử dụng các phím bấm ảo (Virtual D-Pad) cứng nhắc dễ gây nhầm lẫn trên màn hình cảm ứng, đề tài tận dụng trực tiếp tổ hợp cảm biến IMU tích hợp trong điện thoại Android. Người dùng chỉ cần nghiêng điện thoại về các hướng tương ứng để điều khiển Robot, tạo trải nghiệm điều khiển tự nhiên (Natural User Interface - NUI) tương tự như lái vô lăng thực tế.
- Kiến trúc truyền thông mạng tối ưu hóa băng thông: Tách rời hoàn toàn luồng điều khiển thời gian thực (TCP Socket kích thước nhỏ, đóng gói 1-byte) và luồng video streaming (MJPEG qua HTTP), giúp giảm thiểu độ trễ tương tác xuống dưới $50\text{ ms}$, loại bỏ hiện tượng giật lag khi tải video nặng.
- Cải tiến hiệu suất vận hành so với hệ vi điều khiển cũ:
- Băng thông truyền dữ liệu tăng > 70 lần so với giải pháp Bluetooth HC-05 (150 Mbps Wi-Fi vs 2.1 Mbps Bluetooth).
- Tốc độ phản hồi lệnh cử chỉ nhanh hơn 35% so với thao tác bấm nút cảm ứng thông thường.
- Tiết kiệm 60% chi phí phần cứng so với các hệ thống thám hiểm chuyên dụng cùng tính năng truyền video không dây.
- Mô hình học tập và nghiên cứu chuẩn mực: Cung cấp tài liệu hoàn chỉnh về kỹ thuật lập trình Socket đa nền tảng (Java Android kết hợp Python Linux), làm nền tảng mở rộng cho các nghiên cứu tiếp theo về xe tự hành, Robot AI, và IoT công nghiệp.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng thực tế (Use Cases)
- Khảo sát hệ thống ngầm và đường ống: Khảo sát các đường ống thoát nước, cống ngầm đô thị, hầm cáp điện lực có kích thước hẹp mà con người không thể chui lọt. Robot đóng vai trò thiết bị quan sát tiền trạm, thu thập hình ảnh rò rỉ hoặc tắc nghẽn.
- Quan trắc khu vực rò rỉ hóa chất/khí gas: Trong các nhà máy công nghiệp hoặc hiện trường sự cố cháy nổ, Robot mang camera và cảm biến môi trường tiến vào khu vực nguy hiểm để trinh sát trước khi đội cứu hộ tiếp cận.
- Giám sát an ninh tuần tra: Ứng dụng làm phương tiện giám sát an ninh di động ban đêm cho nhà kho, phân xưởng sản xuất, giảm tải công việc cho lực lượng bảo vệ.
Bảng dự toán chi phí phần cứng (BOM & Cost Breakdown)
| STT |
Thành phần / Linh kiện |
Quy cách / Mã hiệu |
Số lượng |
Đơn giá ước tính (VNĐ) |
Thành tiền (VNĐ) |
| 1 |
Bo mạch vi xử lý nhúng |
Raspberry Pi 2 Model B (1GB RAM) |
01 |
850.000 |
850.000 |
| 2 |
Module mạch công suất |
Dual H-Bridge Driver L298N |
01 |
65.000 |
65.000 |
| 3 |
Camera thu hình |
USB Logitech Webcam C270 |
01 |
420.000 |
420.000 |
| 4 |
Module mạng không dây |
USB Wi-Fi TP-Link TL-WN722N |
01 |
180.000 |
180.000 |
| 5 |
Động cơ DC + Bánh xe |
Động cơ DC 12V giảm tốc (1:48) + Bánh |
02 |
45.000 |
90.000 |
| 6 |
Bánh xe đa hướng dẫn đường |
Bánh bi cầu mắt trâu (Omni-wheel ball) |
01 |
25.000 |
25.000 |
| 7 |
Khung xe & Mica bảo vệ |
Khung Robot mica cắt laser CNC |
01 bộ |
150.000 |
150.000 |
| 8 |
Thẻ nhớ lưu trữ OS |
MicroSDHC SanDisk 16GB Class 10 |
01 |
120.000 |
120.000 |
| 9 |
Nguồn cấp hệ thống |
Pin sạc Li-ion 12V + Dây nối, phụ kiện |
01 bộ |
250.000 |
250.000 |
| TỔNG |
Chi phí hoàn thiện |
|
|
|
2.150.000 VNĐ |
Đánh giá hiệu quả đầu tư: Với tổng mức đầu tư chỉ khoảng 2.15 triệu VNĐ (~95 USD vào thời điểm thực hiện), hệ thống mang lại hiệu năng tương đương các bộ kit giáo dục và trinh sát thương mại có giá từ 8 – 15 triệu VNĐ, mang lại tỷ suất lợi ích trên chi phí (ROI) vượt trội cho các cơ sở giáo dục và nghiên cứu.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Sụt áp trên Driver L298N: Mạch L298N sử dụng transistor tiếp giáp BJT nội tại làm sụt áp khoảng $1.5\text{V} - 2\text{V}$ trên tải, sinh nhiệt cao khi vận hành liên tục và làm giảm hiệu suất sử dụng năng lượng của động cơ.
- Phạm vi truyền thông giới hạn: Việc sử dụng chế độ mạng Wi-Fi Ad-hoc / Access Point cục bộ giới hạn bán kính điều khiển trong phạm vi $20 - 30\text{ m}$. Tín hiệu bị suy giảm mạnh khi xuyên qua tường bê tông dày hoặc trong môi trường công nghiệp có nhiều kim loại phản xạ sóng.
- Hiện tượng trượt bánh: Sử dụng bánh xe cao su thông thường trên mặt phẳng trơn nhẵn dẫn đến sai số góc quay khi thực hiện đổi hướng đột ngột (Dead Reckoning error).
Hướng phát triển và mở rộng đề tài
- Nâng cấp phần cứng điều khiển công suất: Thay thế mạch L298N bằng các mạch cầu H sử dụng MOSFET công nghệ mới (như TB6612FNG hoặc DRV8833), giúp nâng cao hiệu suất năng lượng lên $> 90%$, giảm tỏa nhiệt và tăng thời lượng pin thêm 25%.
- Tích hợp cảm biến chuyên sâu và công nghệ AI:
- Bổ sung cảm biến quét 2D LiDAR (RPLiDAR A1) và thuật toán SLAM (Simultaneous Localization and Mapping) để Robot tự động dựng bản đồ môi trường di chuyển.
- Ứng dụng thư viện OpenCV trên Raspberry Pi để xử lý ảnh tự động: nhận diện biển báo, phát hiện người nạn nhân hoặc tự động bám đuổi làn đường.
- Mở rộng giao thức điều khiển qua Internet / 4G / 5G: Sử dụng giao thức mạng MQTT / WebRTC qua máy chủ Cloud trung gian, cho phép người dùng điều khiển Robot và xem video từ bất kỳ vị trí địa lý nào không giới hạn khoảng cách.
- Tối ưu hóa cơ khí: Nâng cấp khung gầm bánh xích (Tank Chassis) bằng hợp kim nhôm để vượt địa hình sỏi đá, bậc thang gồ ghề.
Đối tượng hưởng lợi
- Sinh viên & Học viên chuyên ngành Kỹ thuật Điện - Điện tử / CNTT / Cơ điện tử:
- Nguồn tài liệu tham khảo thực chiến về tích hợp hệ thống nhúng Linux và lập trình di động Android.
- Mã nguồn mẫu trực quan về lập trình mạng Socket TCP/IP và điều chế xung PWM trên Raspberry Pi.
- Lập trình viên & Kỹ sư nhúng (Embedded Developers):
- Cung cấp giải pháp mẫu về tách luồng truyền thông điều khiển và truyền dữ liệu đa phương tiện độ trễ thấp.
- Phương pháp xử lý và lọc nhiễu dữ liệu cảm biến IMU trên thiết bị di động trong thời gian thực.
- Doanh nghiệp & Đơn vị an ninh, cứu hộ:
- Giải pháp chi phí thấp để chế tạo các thiết bị robot trinh sát tiền trạm, kiểm tra đường ống và tuần tra an ninh.
- Các nhà nghiên cứu (Researchers):
- Nền tảng phần cứng mở (Open-source Platform) giá rẻ để thử nghiệm các thuật toán điều hướng tự hành, bám mục tiêu, và xử lý ảnh trên máy tính nhúng.
Câu hỏi thường gặp
1. Yêu cầu cấu hình tối thiểu của điện thoại Android để cài đặt ứng dụng điều khiển là gì?
Ứng dụng tương thích với mọi thiết bị chạy hệ điều hành Android phiên bản 4.0.3 (API level 15 - Ice Cream Sandwich) trở lên. Điện thoại bắt buộc phải tích hợp cảm biến con quay hồi chuyển (Gyroscope) hoặc gia tốc kế (Accelerometer) và có kết nối Wi-Fi hoạt động bình thường.
2. Tại sao lại lựa chọn giao thức TCP thay vì UDP cho kênh truyền tín hiệu điều khiển?
Mặc dù UDP có tốc độ truyền nhanh hơn nhưng không đảm bảo độ tin cậy của gói tin (có thể xảy ra mất gói hoặc sai thứ tự). Trong điều khiển chuyển động của Robot, việc mất hoặc trễ các gói tin nguy cấp như lệnh "Dừng" (Stop) có thể dẫn đến va chạm gây hư hỏng thiết bị. Do đó, giao thức TCP (Transmission Control Protocol) được lựa chọn để đảm bảo tính toàn vẹn và độ tin cậy tuyệt đối của chuỗi lệnh điều khiển.
3. Làm thế nào để giải quyết hiện tượng nhiễu nguồn gây khởi động lại Raspberry Pi khi động cơ hoạt động?
Khi động cơ DC khởi động hoặc đổi chiều, dòng tiêu thụ tăng đột biến (Stall current) dễ gây sụt áp nguồn cấp, khiến Raspberry Pi bị sập nguồn (Brownout Reset). Giải pháp kỹ thuật được áp dụng là cách ly hoàn toàn nguồn cấp:
- Sử dụng nguồn Pin sạc 12V độc lập dành riêng cho động cơ và mạch công suất L298N.
- Sử dụng nguồn sạc dự phòng 5V/2A ổn áp chuẩn dành riêng cho Raspberry Pi và Webcam.
- Nối chung đường mass (Common GND) giữa L298N và chân GND của GPIO Raspberry Pi để đảm bảo mức logic đồng bộ.
4. Độ trễ của luồng video streaming từ Webcam qua Wi-Fi là bao nhiêu và có đáp ứng được việc điều khiển không?
Luồng video được xử lý qua chuẩn nén Motion JPEG (MJPEG) với độ phân giải $640 \times 480\text{ pixels}$ tại tốc độ khung hình $25 - 30\text{ fps}$. Độ trễ đo đạc trung bình chỉ dao động từ $90 - 120\text{ ms}$ trong điều kiện mạng Wi-Fi tiêu chuẩn, hoàn toàn đáp ứng tốt khả năng quan sát và né tránh vật cản tức thời của người vận hành.
5. Chi phí bảo trì và độ bền hoạt động của hệ thống Robot như thế nào?
Nhờ cấu trúc module hóa cao từ các linh kiện tiêu chuẩn phổ biến, chi phí bảo trì của Robot cực kỳ thấp. Tuổi thọ động cơ DC chổi than đạt khoảng 1.000 giờ hoạt động, bo mạch Raspberry Pi có độ bền cao khi được trang bị tản nhiệt nhôm và vỏ bảo vệ. Trong trường hợp hỏng hóc, các linh kiện thay thế luôn có sẵn trên thị trường với giá thành rất rẻ.
Kết luận
Đồ án tốt nghiệp "Điều khiển Robot bằng board Raspberry Pi và ứng dụng Android" của tác giả Phạm Quan Sơn là một công trình nghiên cứu ứng dụng có giá trị thực tiễn và tính khoa học cao. Đề tài đã giải quyết thành công bài toán tích hợp liên ngành giữa Cơ điện tử, Công nghệ phần mềm di động và Hệ thống máy tính nhúng:
- Xây dựng hoàn chỉnh mô hình xe Robot 3 bánh hoạt động ổn định, kết cấu cơ khí nhỏ gọn, cơ động.
- Triển khai thành công phương thức tương tác cử chỉ hiện đại qua cảm biến góc nghiêng IMU trên Android, mang lại trải nghiệm điều khiển chân thực và chính xác.
- Làm chủ công nghệ truyền nhận dữ liệu qua Socket TCP và truyền hình ảnh video thời gian thực trên nền tảng Raspberry Pi Linux.
Với tổng chi phí chế tạo thấp, khả năng tùy biến linh hoạt và mã nguồn mở dễ tiếp cận, hệ thống không chỉ hoàn thành xuất sắc các mục tiêu tốt nghiệp mà còn mở ra hướng phát triển đầy tiềm năng cho các ứng dụng trinh sát không gian kín, tự động hóa công nghiệp và nghiên cứu robot tự hành thông minh trong tương lai.