Mạch dò tốc độ xe dành cho cảnh sát giao thông

Hãy Thử Công Cụ CủA Chúng Tôi Để LoạI Bỏ Các VấN Đề





Trong bài đăng này, chúng tôi sẽ xây dựng một mạch có thể đo tốc độ của bất kỳ phương tiện nào trên đường bộ và đường cao tốc. Vòng đua được đề xuất được giữ cố định tại nơi nghi ngờ các phương tiện vượt quá tốc độ. Nếu có xe nào vượt quá tốc độ cho phép, mạch cảnh báo ngay lập tức. Chúng tôi sẽ xem xét mã, sơ đồ mạch và logic cách đo tốc độ của xe.

Mục tiêu

Theo báo cáo tử vong do tai nạn năm 2015 ở Ấn Độ gây ra 75% tai nạn đường bộ, đó là một con số khổng lồ. Hầu hết cảnh sát giao thông cố gắng bắt giữ những người điều khiển xe vượt quá tốc độ giới hạn của thành phố một cách nguy hiểm.



Không phải lần nào cảnh sát giao thông cũng có thể dừng xe chạy quá tốc độ và tính phí. Vì vậy, một thiết bị gọi là camera bắn tốc độ được lắp đặt ở những nơi nghi ngờ người lái xe ô tô chạy quá tốc độ như khu vực thường xuyên xảy ra tai nạn, giao lộ, v.v.

Chúng tôi sẽ chế tạo một thứ tương tự như camera bắn tốc độ, nhưng theo một cách đơn giản hơn nhiều, có thể được lắp đặt bên trong khuôn viên trường học, trường cao đẳng hoặc công viên CNTT hoặc chỉ như một dự án vui nhộn.



Dự án được đề xuất bao gồm màn hình LCD 16 x 2 để hiển thị tốc độ của mỗi chiếc xe đi qua hai chùm tia laser được đặt cách nhau chính xác 10 mét để đo tốc độ của chiếc xe trong khi làm gián đoạn chùm tia laser đó.

Còi sẽ phát ra tiếng bíp khi có xe chạy qua cho biết đã phát hiện có xe và tốc độ của từng xe sẽ được hiển thị trên màn hình LCD. Khi xe vượt quá tốc độ cho phép, còi sẽ phát ra tiếng bíp liên tục và tốc độ của xe sẽ hiển thị trên màn hình.

LƯU Ý: Tốc độ của xe sẽ được hiển thị trên màn hình LCD bất kể xe đang chạy quá tốc độ hay dưới tốc độ.

Bây giờ chúng ta hãy xem logic đằng sau mạch để đo tốc độ.

Chúng ta đều biết một công thức đơn giản gọi là công thức tốc độ - quãng đường - thời gian.
Tốc độ = Khoảng cách / Thời gian.

• Tốc độ tính bằng mét trên giây,
• Khoảng cách tính bằng mét,
• Thời gian tính bằng giây.

Để biết tốc độ, chúng ta phải biết khoảng cách “x” mà một chiếc xe đã đi và thời gian thực hiện để bao gồm khoảng cách “x” đó.

Để làm điều này, chúng tôi đang thiết lập hai chùm tia laser và hai LDR với khoảng cách 10 mét theo kiểu sau:

thước đo tốc độ phương tiện giao thông

Chúng ta biết khoảng cách là 10m là cố định, bây giờ chúng ta phải biết thời gian trong phương trình.

Thời gian sẽ được Arduino tính toán, khi xe ngắt “tia laser bắt đầu”, bộ đếm thời gian bắt đầu và khi xe ngắt “tia laser kết thúc” thì bộ đếm thời gian dừng lại và áp dụng các giá trị cho phương trình Arduino sẽ tìm ra tốc độ của xe.

Xin lưu ý rằng tốc độ của xe sẽ chỉ được phát hiện theo một hướng, tức là bắt đầu phát tia laser để dừng tia laser, để phát hiện xe theo hướng khác, một thiết lập tương tự phải được đặt ở hướng ngược lại. Vì vậy, điều này là lý tưởng cho những nơi như trường học, cắt dán, v.v. nơi chúng có cổng VÀO VÀ RA.

Bây giờ chúng ta hãy xem sơ đồ giản đồ:

Kết nối giữa Arduino và màn hình:

Màn hình hiển thị tốc độ xe LCD

Có mạch ở trên là tự giải thích và chỉ cần kết nối dây theo mạch. Điều chỉnh chiết áp 10K để điều chỉnh độ tương phản của màn hình.

Chi tiết dây bổ sung:

Thiết lập hệ thống dây đo khoảng cách xe tốc độ

Mạch trên bao gồm Arduino, 4 nút nhấn, hai điện trở kéo xuống 10K (không thay đổi giá trị của điện trở), hai LDR và ​​một còi. Chức năng của 4 nút nhấn sẽ được giải thích ngay sau đây. Bây giờ, hãy xem cách lắp LDR đúng cách.

Định tuyến LDR để phát hiện tốc độ xe

Tôi phải che LDR khỏi ánh sáng mặt trời đúng cách, chỉ chùm tia laze mới chiếu vào LDR. Đảm bảo rằng mô-đun laser của bạn đủ mạnh để hoạt động dưới ánh nắng chói chang.
Bạn có thể sử dụng ống nhựa PVC cho mục đích trên và sơn màu đen bên trong ống, đừng quên bọc phần trước, hãy sử dụng óc sáng tạo của bạn để thực hiện điều này.

Mã chương trình:

// ----------- Developed by R.GIRISH ---------//
#include
#include
const int rs = 7
const int en = 6
const int d4 = 5
const int d5 = 4
const int d6 = 3
const int d7 = 2
LiquidCrystal lcd(rs, en, d4, d5, d6, d7)
const int up = A0
const int down = A1
const int Set = A2
const int change = A3
const int start = 8
const int End = 9
const int buzzer = 10
const float km_h = 3.6
int distance = 10 // In meters.
int variable = 0
int count = 0
int address = 0
int value = 100
int speed_address = 1
int speed_value = 0
int i = 0
float ms = 0
float Seconds = 0
float Speed = 0
boolean buzz = false
boolean laser = false
boolean x = false
boolean y = false
void setup()
{
pinMode(start, INPUT)
pinMode(End, INPUT)
pinMode(up, INPUT)
pinMode(down, INPUT)
pinMode(Set, INPUT)
pinMode(change, INPUT)
pinMode(buzzer, OUTPUT)
digitalWrite(change, HIGH)
digitalWrite(up, HIGH)
digitalWrite(down, HIGH)
digitalWrite(Set, HIGH)
digitalWrite(buzzer, LOW)
lcd.begin(16, 2)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(F(' Vehicle Speed'))
lcd.setCursor(0, 1)
lcd.print(F(' detector'))
delay(1500)
if (EEPROM.read(address) != value)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Set Speed Limit')
lcd.setCursor(0, 1)
lcd.print('km/h:')
lcd.setCursor(6, 1)
lcd.print(count)
while (x == false)
{
if (digitalRead(up) == LOW)
{
lcd.setCursor(6, 1)
count = count + 1
lcd.print(count)
delay(200)
}
if (digitalRead(down) == LOW)
{
lcd.setCursor(6, 1)
count = count - 1
lcd.print(count)
delay(200)
}
if (digitalRead(Set) == LOW)
{
speed_value = count
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Speed Limit is')
lcd.setCursor(0, 1)
lcd.print('set to ')
lcd.print(speed_value)
lcd.print(' km/h')
EEPROM.write(speed_address, speed_value)
delay(2000)
x = true
}
}
EEPROM.write(address, value)
}
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Testing Laser')
lcd.setCursor(0, 1)
lcd.print('Alignment....')
delay(1500)
while (laser == false)
{
if (digitalRead(start) == HIGH && digitalRead(End) == HIGH)
{
laser = true
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Laser Alignment')
lcd.setCursor(0, 1)
lcd.print('Status: OK')
delay(1500)
}
while (digitalRead(start) == LOW && digitalRead(End) == LOW)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Both Lasers are')
lcd.setCursor(0, 1)
lcd.print('not Aligned')
delay(1000)
}
while (digitalRead(start) == LOW)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Start Laser not')
lcd.setCursor(0, 1)
lcd.print('Aligned')
delay(1000)
}
while (digitalRead(End) == LOW)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('End Laser not')
lcd.setCursor(0, 1)
lcd.print('Aligned')
delay(1000)
}
}
lcd.clear()
}
void loop()
{
if (digitalRead(change) == LOW)
{
change_limit()
}
if (digitalRead(start) == LOW)
{
variable = 1
buzz = true
while (variable == 1)
{
ms = ms + 1
delay(1)
if (digitalRead(End) == LOW)
{
variable = 0
}
}
Seconds = ms / 1000
ms = 0
}
if (Speed {
y = true
}
Speed = distance / Seconds
Speed = Speed * km_h
if (isinf(Speed))
{
lcd.setCursor(0, 0)
lcd.print('Speed:0.00')
lcd.print(' km/h ')
}
else
{
lcd.setCursor(0, 0)
lcd.print('Speed:')
lcd.print(Speed)
lcd.print('km/h ')
lcd.setCursor(0, 1)
lcd.print(' ')
if (buzz == true)
{
buzz = false
digitalWrite(buzzer, HIGH)
delay(100)
digitalWrite(buzzer, LOW)
}
if (Speed > EEPROM.read(speed_address))
{
lcd.setCursor(0, 0)
lcd.print('Speed:')
lcd.print(Speed)
lcd.print('km/h ')
lcd.setCursor(0, 1)
lcd.print('Overspeed Alert!')
if (y == true)
{
y = false
for (i = 0 i <45 i++)
{
digitalWrite(buzzer, HIGH)
delay(50)
digitalWrite(buzzer, LOW)
delay(50)
}
}
}
}
}
void change_limit()
{
x = false
count = EEPROM.read(speed_address)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Set Speed Limit')
lcd.setCursor(0, 1)
lcd.print('km/h:')
lcd.setCursor(6, 1)
lcd.print(count)
while (x == false)
{
if (digitalRead(up) == LOW)
{
lcd.setCursor(6, 1)
count = count + 1
lcd.print(count)
delay(200)
}
if (digitalRead(down) == LOW)
{
lcd.setCursor(6, 1)
count = count - 1
lcd.print(count)
delay(200)
}
if (digitalRead(Set) == LOW)
{
speed_value = count
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Speed Limit is')
lcd.setCursor(0, 1)
lcd.print('set to ')
lcd.print(speed_value)
lcd.print(' km/h')
EEPROM.write(speed_address, speed_value)
delay(2000)
x = true
lcd.clear()
}
}
}
// ----------- Developed by R.GIRISH ---------//

Bây giờ, hãy xem cách vận hành mạch này:

• Hoàn thành mạch của bạn và tải lên mã.
• Khoảng cách giữa hai tia laser / LDR phải chính xác là 10 mét, không ít hơn hoặc không hơn, nếu không tốc độ sẽ bị tính toán sai (hiển thị trong sơ đồ đầu tiên).
• Khoảng cách giữa laser và LDR có thể do bạn lựa chọn và hoàn cảnh.
• Mạch sẽ kiểm tra sự sai lệch của laser với LDR, nếu có, vui lòng sửa nó theo thông tin hiển thị trên màn hình LCD.
• Ban đầu, mạch sẽ yêu cầu bạn nhập giá trị giới hạn tốc độ tính bằng km / h, vượt quá giá trị này mà mạch cảnh báo, bằng cách nhấn lên (S1) và xuống (S2), bạn có thể thay đổi số trên màn hình và nhấn đặt (S3), điều này giá trị sẽ được lưu.
• Để thay đổi giới hạn tốc độ này, hãy nhấn nút S4 và bạn có thể đặt giới hạn tốc độ mới.
• Bây giờ lái xe mô tô với vận tốc 30 km / h và ngắt các tia laze, mạch sẽ hiển thị cho bạn một con số rất gần với 30 km / h.
• Bạn đã hoàn thành và mạch của bạn đã sẵn sàng để phục vụ sự an toàn trong khuôn viên trường của bạn.

Nguyên mẫu của tác giả:

nguyên mẫu phát hiện tốc độ xe

Mọi thắc mắc liên quan đến mạch dò tốc độ xe cảnh sát giao thông này các bạn cứ thắc mắc trong phần bình luận, mình sẽ được giải đáp nhanh chóng.




Trước: Bảng dữ liệu cảm biến PIR, Thông số kỹ thuật sơ đồ chân, Làm việc Tiếp theo: Mạch kiểm tra điều khiển từ xa