交通警察用車速検出回路

問題を排除するために楽器を試してください





この投稿では、道路や高速道路上のあらゆる車両の速度を測定できる回路を構築します。提案された回路は、車両が速度超過の疑いがある場所で静止状態に保たれます。いずれかの車両が制限速度を超えると、回路はすぐに警告を発します。車両の速度がどのように測定されるかについて、コード、回路図、およびロジックを調べます。

目的

インドでの事故死レポート2015によると、スピード違反は75%の交通事故を引き起こします。これは膨大な数です。ほとんどの交通警察は、都市の制限速度を超えて危険なほど車両を運転しているドライバーを拘束しようとしています。



交通警察がスピード違反の車両を止めて充電できるとは限りません。そのため、頻繁に事故が発生しやすいエリアや交差点など、ドライバーが速度超過の疑いがある場所に自動速度取締機と呼ばれる装置が設置されています。

自動速度取締機に似たものを構築しますが、非常に単純化された方法で、学校、大学、ITパークなどのキャンパス内に設置したり、楽しいプロジェクトとして設置したりできます。



提案されたプロジェクトは、正確に10メートル離れて配置された2つのレーザービームを通過する各車両の速度を表示する16 x 2 LCDディスプレイで構成され、これらのレーザービームを遮断しながら車両の速度を測定します。

車両が通過するとブザーが鳴り、車両が検出されたことを示し、各車両の速度がLCDディスプレイに表示されます。車両が制限速度を超えると、ブザーが鳴り続け、車両の速度がディスプレイに表示されます。

注:車両の速度は、車両が速度を上回っていても下回っていても、LCDに表示されます。

それでは、速度を測定するための回路の背後にあるロジックを見てみましょう。

私たちは皆、速度-距離-時間の式と呼ばれる簡単な式を知っています。
速度=距離/時間。

•メートル/秒単位の速度、
•メートル単位の距離、
•秒単位の時間。

速度を知るには、車両が移動した距離「x」と、その距離「x」をカバーするのにかかった時間を知る必要があります。

これを行うために、次の方法で2つのレーザービームと2つのLDRを10メートルの距離でセットアップします。

交通車両速度測定

距離は固定されている10メートルであることがわかっているので、方程式で時間を知る必要があります。

時間はArduinoによって計算され、車両が「開始レーザー」を中断するとタイマーが開始し、車両が「終了レーザー」を中断するとタイマーが停止し、Arduinoが車両の速度を見つける方程式に値を適用します。

車両の速度は一方向でのみ検出されることに注意してください。つまり、レーザーを開始してレーザーを停止し、別の方向で車両を検出するには、別の同じセットアップを反対方向に配置する必要があります。したがって、これは、学校やコラージュなど、INゲートとOUTゲートがある場所に最適です。

次に、回路図を見てみましょう。

Arduinoとディスプレイ間の接続:

LCD車速表示

上記の回路は一目瞭然で、回路に従って配線を接続するだけです。ディスプレイのコントラストを調整するために、10Kポテンショメータを調整します。

追加の配線の詳細:

スピード車両距離測定配線の設定

上記の回路は、Arduino、4つのプッシュボタン、2つの10Kプルダウン抵抗(抵抗の値を変更しないでください)、2つのLDR、および1つのブザーで構成されています。 4つの押しボタンの機能について簡単に説明します。それでは、LDRを正しくマウントする方法を見てみましょう。

車速検出用のLDRモーティング

LDRは、日光から適切にカバーする必要があります。レーザービームのみがLDRに当たる必要があります。レーザーモジュールが明るい太陽の光の中で動作するのに十分強力であることを確認してください。
上記の目的でPVCパイプを使用し、チューブの内側を黒く塗ることができます。前部を覆うことを忘れないでください。あなたの創造性を使ってこれを達成してください。

プログラムコード:

// ----------- 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 ---------//

それでは、この回路の操作方法を見てみましょう。

•回路を完成させ、コードをアップロードします。
•2つのレーザー/ LDR間の距離は正確に10メートルである必要があります。それ以下またはそれ以上ではありません。そうしないと、速度が誤って計算されます(最初の図を参照)。
•レーザーとLDRの間の距離は、選択と状況に応じて選択できます。
•回路はLDRとのレーザーのずれをチェックします。ある場合は、LCDに表示される情報に従って修正してください。
•最初に、回路は速度制限値をkm / hで入力するように求めます。これを超えると、回路は警告を発します。上(S1)と下(S2)を押すと、ディスプレイの数値を変更してセット(S3)を押すことができます。値が保存されます。
•この制限速度を変更するには、ボタンS4を押すと、新しい制限速度を設定できます。
•今度は30km / hでバイクを運転し、レーザービームを遮断します。回路には、30 km / hに非常に近い数値が表示されます。
•これで完了です。回路はキャンパスの安全に役立つ準備ができています。

著者のプロトタイプ:

車速検出プロトタイプ

この交通警察の車速検出回路についてご不明な点がございましたら、コメント欄でお気軽にお問い合わせください。迅速な回答が得られる場合があります。




前:PIRセンサーデータシート、ピン配置仕様、動作 次へ:リモートコントロールテスター回路