Tóm tắt ý tưởng
Bên cạnh gương chiếu hậu, hệ thống cảm biến va chạm trên xe ô tô đem lại sự hỗ trợ đáng kể nhằm giảm nguy cơ gây tai nạn khi lùi xe hoặc có vật cản phía trước.
Để hiểu hơn về nguyên lí hoạt động của hệ thống, chúng ta sẽ thực hiện dự án mô phỏng Hệ thống cảnh báo tiền va chạm – Pre-Collision System trên xe ô tô bằng các sản phẩm phần cứng Robotics của MakerEdu với những thao tác lắp đặt và lâp trình vô cùng đơn giản.
Mô tả công dụng
- Phát hiện vật cản gần phía trước và hiển thị khoảng cách so với vật cản lên màn hình LCD.
- Cảnh báo khả năng va chạm với vật cản với 3 cấp độ đèn Led và Còi báo.
- Hiển thị thông tin cảnh báo cho người dùng lên màn hình LCD.
Chuẩn bị phần cứng
Vật dụng |
Hình ảnh |
Chức năng / Chuẩn giao tiếp |
![]() |
Mạch điều khiển trung tâm, tương thích Arduino Uno, giao tiếp với máy tính qua cổng USB | |
![]() |
Màn hình hiển thị thông tin, chuẩn giao tiếp I2C |
|
![]() |
Cảm biến đo khoảng cách bằng sóng siêu âm, chuẩn giao tiếp Digital. |
|
![]() |
Mạch còi báo phát âm thanh, chuẩn giao tiếp Digital |
|
Mạch led đơn MKE-M01 10mm single LED module |
![]() |
Mạch đèn tín hiệu, chuẩn giao tiếp Digital |
![]() |
Cáp kết nối phần cứng MakerEdu.vn chuẩn XH2.54 3 dây | |
![]() |
Cáp kết nối phần cứng MakerEdu.vn chuẩn XH2.54 4 dây | |
Cáp USB Type-C Cable 1m – Hshop.vn (x1) | ![]() |
Cáp USB-C kết nối mạch MakerEdu Creator với máy tính |
Chuẩn bị phần mềm
Nếu là lần đầu tiên sử dụng phần mềm Mblock và mạch MakerEdu Creator, các bạn cần thực hiện đầy đủ các bước trong hướng dẫn tại đây.
Chuẩn bị kiến thức
Nếu các phần cứng trong bài là hoàn toàn mới với các bạn, để có thể nắm được cách hệ thống vận hành, các bạn cần đọc và tìm hiểu về cách sử dụng của từng phần cứng tại trang Wiki của MakerLab (đã gắn link với từng sản phẩm ở mục chuẩn bị phần cứng phía trên).
Đối với phần mềm Mblock cần đọc và hiểu chức năng của các khối lệnh cơ bản và khối lệnh của các phần cứng MakerEdu, sau đó bạn thực hành với từng phần cứng riêng lẻ trước khi ghép nối thành hệ thống hoàn chỉnh.
Flowchart
Hướng dẫn kết nối
Các bạn thực hiện kết nối phần cứng như sau:
MakerEdu Creator | Thiết bị kết nối | Cáp kết nối |
Cổng USB | Máy tính | Cáp USB Type-C Cable 1m – Hshop.vn |
Cổng I2C bất kỳ trên mạch | Mạch hiển thị MKE-M07 LCD1602 I2C module | Cáp Kết Nối MakerEDU XH2.54-XH2.54 4Wires |
Cổng (D3+D2) | Cảm biến siêu âm MKE-S01 ultra sonic distance sensor | Cáp Kết Nối MakerEDU XH2.54-XH2.54 4Wires |
Cổng D12 | Mạch còi báo MKE-M03 buzzer module | Cáp Kết Nối MakerEDU XH2.54-XH2.54 3Wires |
Cổng A1 | Mạch led đơn MKE-M01 10mm single LED module (Đỏ) | Cáp Kết Nối MakerEDU XH2.54-XH2.54 3Wires |
Cổng A2 | Mạch led đơn MKE-M01 10mm single LED module (Vàng) | Cáp Kết Nối MakerEDU XH2.54-XH2.54 3Wires |
Cổng A3 | Mạch led đơn MKE-M01 10mm single LED module (Xanh lá) | Cáp Kết Nối MakerEDU XH2.54-XH2.54 3Wires |
Khai báo biến
Trên phần mềm Mblock các bạn thực hiện khai báo các biến sử dụng trong chương trình tại mục Variables như sau:
Code Mblock hoàn chỉnh
***Link dự án tại Mblock: [MakerLab.vn] Pre-Collision System – mBlock Community
Hướng dẫn lập trình trên phần mềm Arduino
Chuẩn bị:
- Nếu là lần đầu tiên sử dụng phần mềm Arduino và mạch MakerEdu Creator, các bạn cần thực hiện đầy đủ các bước trong hướng dẫn tại đây.
- Mạch MakerEdu Creator là một mạch tương thích với Arduino Uno (Arduino Uno Compatible) nên để cấu hình mạch (board) trên phần mềm Arduino ta sẽ chọn luôn là mạch Arduino Uno.
Cài đặt bộ thư viện:
Cần cài đặt bộ thư viện cho các phần cứng sử dụng theo hướng dẫn:
- Bộ thư viện cho Cảm biến siêu âm MKE-S01 ultra sonic distance sensor.
- Bộ thư viện cho Mạch hiển thị MKE-M07 LCD1602 I2C module.
Code trên Arduino:
// Include library // Cai dat thu vien #include "UltraSonicDistanceSensor.h" #include "LiquidCrystal_I2C.h" // Define connected sensor pin // Dat ten cong ket noi cho cam bien #define LED_R_PIN A1 #define LED_Y_PIN A2 #define LED_G_PIN A3 #define BUZZER_PIN 12 #define TRIG_PIN 3 #define ECHO_PIN 2 // Declare variables // Khai bao bien int distance_value; int Range_Danger; int Range_Warning; int Range_Close_2; int Range_Safe; UltraSonicDistanceSensor distanceSensor(TRIG_PIN, ECHO_PIN); LiquidCrystal_I2C LCD(39, 16, 02); void setup() { // Initialize LCD 1602 to display // Khoi tao LCD 1602 de hien thi LCD.init(); // Turn on LCD backlight // Bat den nen LCD 1602 LCD.backlight(); pinMode(LED_R_PIN, OUTPUT); pinMode(LED_Y_PIN, OUTPUT); pinMode(LED_G_PIN, OUTPUT); pinMode(BUZZER_PIN, OUTPUT); Range_Safe = 45; Range_Warning = 35; Range_Danger = 15; } void loop() { distance_value = distanceSensor.measureDistanceCm(); // Setting LCD Display // Thiet lap hien thi tren LCD LCD.setCursor(0, 1); LCD.print("Distance: "); LCD.print(distance_value); LCD.print("cm "); delay(500); if (distance_value > Range_Safe) { LCD.setCursor(2, 0); LCD.print("Safe ^^ "); // red digitalWrite(LED_R_PIN, 0); // yellow digitalWrite(LED_Y_PIN, 0); // green digitalWrite(LED_G_PIN, 0); // buzzer digitalWrite(BUZZER_PIN, 0); } else { if ((distance_value < Range_Safe) && (distance_value > Range_Warning)) { LCD.setCursor(2, 0); LCD.print("Warning :( "); digitalWrite(LED_R_PIN, 0); digitalWrite(LED_Y_PIN, 0); digitalWrite(LED_G_PIN, 1); digitalWrite(BUZZER_PIN, 1); delay(300); digitalWrite(LED_G_PIN, 0); digitalWrite(BUZZER_PIN, 0); } if ((distance_value < Range_Warning) && (distance_value > Range_Danger)) { LCD.setCursor(2, 0); LCD.print("Dangerous >.<"); digitalWrite(LED_R_PIN, 0); digitalWrite(LED_Y_PIN, 1); digitalWrite(LED_G_PIN, 1); digitalWrite(BUZZER_PIN, 1); delay(100); digitalWrite(LED_Y_PIN, 0); digitalWrite(LED_G_PIN, 0); digitalWrite(BUZZER_PIN, 0); } if (distance_value < Range_Danger) { LCD.setCursor(2, 0); LCD.print("Crash T.T "); digitalWrite(LED_R_PIN, 1); digitalWrite(LED_Y_PIN, 1); digitalWrite(LED_G_PIN, 1); digitalWrite(BUZZER_PIN, 1); } } }