Professional Documents
Culture Documents
Báo cáo cuối kì
Báo cáo cuối kì
1
2
Ý tưởng có
Ý tưởng Không có ý Ý tưởng Có ý tưởng Ý tưởng có
tính cải tiến 20%
(CĐR 1.1) tưởng cụ thể chưa rõ ràng cụ thể điểm mới
rõ ràng
2
3
3
4
Em xin cam đoan đề tài “ Thiết kế và chế tạo xe tự hành ” được thực hiện
bởi Nhóm số 13, bao gồm các thành viên là PHẠM THANH TÙNG, NGUYỄN QUANG
TRUNG, là sự cố gắng, nỗ lực của bản thân em và các thành viên trong nhóm, dưới sự
hướng dẫn của TS. Nguyễn Viết Chiến Kết quả của báo cáo này là trung thực, không
có sự sao chép, lấy cắp, hay thuê mượn của người khác. Báo cáo có tham khảo và
trích dẫn một số tài liệu nguồn gốc rõ ràng. Nếu phát hiện có sự sao chép kết quả của
người khác, em xin chịu hoàn toàn trách nhiệm.
MỤC LỤC
4
5
5
6
6
7
– Tốc độ:
+ 125 rpm 3VDC (bánh 66mm:
26rpm)
+ 208 rpm 5VDC (bánh 66mm:
44rpm)
2 Mô đun cảm biến Điện áp: 5V DC 20.000đ
siêu âm SR04 Dòng hoạt động: < 2mA
Mức cao: 5V
Mức thấp: 0V
Góc tối đa: 15 độ
Khoảng cách: 2cm – 450cm
(4.5m)
Độ chính xác: 3mm
3 Mạch Điều Khiển Điện áp đầu vào: 5~30VDC, 38.000₫
Động Cơ DC L298N Dòng tối đa cho mỗi cầu H là:
2A, Kích thước: 43x43x27mm
4 Cảm biến hồng - Điện áp làm việc: 3.3V – 5V 9.000đ/chiếc
ngoại LM393 x3 DC.
- Lỗ vít 3 mm
- Kích thước: 3.2cm * 1.4cm
Cổng giao tiếp:
- VCC: điện áp chuyển đổi từ
3.3V đến 5V (có thể được kết nối
trực tiếp đến vi điều khiển 5V và
3.3V)
- GND: GND ngoài
- OUT: đầu ra kỹ thuật số (0
và 1)
5 Mạch Arduino Uno – Mạch Uno R3 kèm cáp 239.000₫
R3 Arduino Uno R3 DIP (kèm cáp)
Điện áp hoạt động: 5~12VDC,
Dòng tiêu thụ: Khoảng 30mA,
Khối lượng: 25 gram
7
8
8
9
#define CAMBIEN_VACH_TRAI A0
#define CAMBIEN_VACH_PHAI A1
#define CAMBIEN_VATCAN 2
#define DONGCO_TRAI_TIEN 3
#define DONGCO_TRAI_LUI 4
#define DONGCO_PHAI_TIEN 5
#define DONGCO_PHAI_LUI 6
Đoạn mã này định nghĩa các chân kết nối trên Arduino:
void setup() {
pinMode(CAMBIEN_VACH_TRAI, INPUT);
pinMode(CAMBIEN_VACH_PHAI, INPUT);
pinMode(CAMBIEN_VATCAN, INPUT);
pinMode(DONGCO_TRAI_TIEN, OUTPUT);
pinMode(DONGCO_TRAI_LUI, OUTPUT);
pinMode(DONGCO_PHAI_TIEN, OUTPUT);
pinMode(DONGCO_PHAI_LUI, OUTPUT);
Serial.begin(9600);
}
void loop() {
int vach_trai = analogRead(CAMBIEN_VACH_TRAI);
int vach_phai = analogRead(CAMBIEN_VACH_PHAI);
int vat_can = digitalRead(CAMBIEN_VATCAN);
if (vat_can == HIGH) {
dungDongCo();
} else {
if (vach_trai > nguong_vach && vach_phai <
nguong_vach) {
queoTrai();
} else if (vach_trai < nguong_vach &&
vach_phai > nguong_vach) {
queoPhai();
} else {
diThang();
}
}
}
o Đọc giá trị từ các cảm biến vạch trái, vạch phải và vật cản.
o In các giá trị này ra màn hình Serial Monitor.
o Nếu phát hiện vật cản (vat_can == HIGH), gọi hàm
dungDongCo() để dừng robot.
o Nếu không có vật cản, kiểm tra giá trị cảm biến vạch kẻ:
Nếu chỉ có cảm biến trái vượt ngưỡng, gọi hàm
queoTrai() để rẽ trái.
Nếu chỉ có cảm biến phải vượt ngưỡng, gọi hàm
queoPhai() để rẽ phải.
10
11
void diThang() {
digitalWrite(DONGCO_TRAI_TIEN, HIGH);
digitalWrite(DONGCO_TRAI_LUI, LOW);
digitalWrite(DONGCO_PHAI_TIEN, HIGH);
digitalWrite(DONGCO_PHAI_LUI, LOW);
}
void queoTrai() {
digitalWrite(DONGCO_TRAI_TIEN, LOW);
digitalWrite(DONGCO_TRAI_LUI, HIGH);
digitalWrite(DONGCO_PHAI_TIEN, HIGH);
digitalWrite(DONGCO_PHAI_LUI, LOW);
}
void queoPhai() {
digitalWrite(DONGCO_TRAI_TIEN, HIGH);
digitalWrite(DONGCO_TRAI_LUI, LOW);
digitalWrite(DONGCO_PHAI_TIEN, LOW);
digitalWrite(DONGCO_PHAI_LUI, HIGH);
}
void dungDongCo() {
digitalWrite(DONGCO_TRAI_TIEN, LOW);
digitalWrite(DONGCO_TRAI_LUI, LOW);
digitalWrite(DONGCO_PHAI_TIEN, LOW);
digitalWrite(DONGCO_PHAI_LUI, LOW);
}
11
12
12
13
Tiếng Việt
13
14
14