HỆ THỐNG CẢNH BÁO TIỀN VA CHẠM

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 MakerEdu Creator (x1)

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ạch hiển thị MKE-M07 LCD1602 I2C module (x1)

Màn hình hiển thị thông tin, chuẩn giao tiếp I2C

Cảm biến siêu âm MKE-S01 ultra sonic distance sensor (x1)

Cảm biến đo khoảng cách bằng sóng siêu âm, chuẩn giao tiếp Digital.
+ Digital ECHO: D12
+ Digital TRIG: D13

Mạch còi báo MKE-M03 buzzer module (x1)

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
Xanh x1
Vàng x1
Đỏ x1

Mạch đèn tín hiệu, chuẩn giao tiếp Digital

Cáp Kết Nối MakerEDU XH2.54-XH2.54 3Wires (x4)

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 MakerEDU XH2.54-XH2.54 4Wires (x2)

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ảnkhố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ị:

  1. 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.
  2. 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:

  1. Bộ thư viện cho Cảm biến siêu âm MKE-S01 ultra sonic distance sensor.
  2. 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);
    }
  }
}

Hình ảnh thành phẩm

Tìm kiếm

Các kênh truyền thông

Bài viết phổ biến

Các chuyên mục

Đăng ký theo dõi

Hãy đăng ký theo dõi MakerLab.vn để cập nhật các bài viết và thông tin công nghệ mới nhất!

Bài viết liên quan

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments