Projetos de circuito eletrônicoProjetos de engenharia do ArduinoCircuito Detector de Velocidade de Veículos para Polícia de Trânsito

Circuito Detector de Velocidade de Veículos para Polícia de Trânsito

Relacionados

Neste post vamos construir um circuito que pode medir a velocidade de qualquer veículo em estradas e rodovias. O circuito proposto é mantido parado em um local onde os veículos são suspeitos de excesso de velocidade. Se algum veículo ultrapassar o limite de velocidade, o circuito alerta imediatamente. Estaremos olhando o código, diagrama de circuito e lógica de como a velocidade do veículo é medida.

Objetivo

Excesso de velocidade causa 75% de acidentes rodoviários de acordo com o relatório de morte acidental de 2015 na Índia, esse é um número enorme. A maioria dos policiais de trânsito tenta deter os motoristas que dirigem perigosamente seus veículos além do limite de velocidade da cidade.

Nem sempre uma polícia de trânsito pode parar um veículo em excesso de velocidade e acusá-los. Assim, um dispositivo chamado radar de velocidade é instalado onde os motoristas são suspeitos de excesso de velocidade, como áreas propensas a acidentes frequentes, cruzamentos etc.

Vamos construir algo semelhante a um radar de velocidade, mas de uma maneira muito simplificada, que pode ser instalado dentro de um campus como escola, faculdade ou parques de TI ou apenas como um projeto divertido.

O projeto proposto consiste em um display LCD 16 x 2 para mostrar a velocidade de cada veículo que passa; dois feixes de laser que são separados exatamente 10 metros para medir a velocidade do veículo enquanto interrompe esses feixes de laser.

Uma campainha soará quando um veículo for ultrapassado; indicando que um veículo foi detectado e a velocidade de cada veículo será exibida no visor LCD. Quando um veículo estiver ultrapassando o limite de velocidade, a campainha soará continuamente e a velocidade do veículo será exibida no visor.

NOTA: A velocidade do veículo será exibida no LCD, independentemente de o veículo estar acima ou abaixo da velocidade.

Agora vamos ver a lógica por trás do circuito para medir a velocidade.

Todos nós conhecemos uma fórmula simples chamada velocidade – distância – fórmula do tempo.
Velocidade = Distância / Tempo.

• Velocidade em metros por segundo,
• Distância em metros,
• Tempo em segundos.

Para saber a velocidade, temos que saber a distância, digamos, “x” percorrida por um veículo e o tempo gasto para percorrer essa distância “x”.

Para isso estamos configurando dois feixes de laser e dois LDRs com 10 metros de distância da seguinte forma:

MEDIDA DE VELOCIDADE DO VEÍCULO DE TRÁFEGO

Sabemos que a distância é de 10 metros que é fixa, agora temos que saber o tempo na equação.

O tempo será calculado pelo Arduino, quando o veículo interrompe o “laser de partida”, o cronômetro inicia e quando o veículo interrompe o “laser de fim” o cronômetro para e aplicando os valores na equação Arduino encontrará a velocidade do veículo.

Observe que a velocidade do veículo só será detectada em uma direção, ou seja, inicie o laser para parar o laser, para detectar o veículo em outra direção, outra mesma configuração deve ser colocada na direção oposta. Então, isso é ideal para lugares como escola, colagem etc. onde eles têm portões de ENTRADA e SAÍDA.

Agora vamos ver o diagrama esquemático:

Conexão entre o Arduino e o display:

VISOR LCD DE VELOCIDADE DO VEÍCULO

O circuito acima é autoexplicativo e basta conectar a fiação conforme o circuito. Ajuste o potenciômetro de 10K para ajustar o contraste da tela.

Detalhes adicionais da fiação:

CONFIGURAÇÃO DA FIAÇÃO DE MEDIÇÃO DE DISTÂNCIA DO VEÍCULO DE VELOCIDADE

O circuito acima consiste em Arduino, 4 botões, dois resistores pull down de 10K (não altere o valor dos resistores), dois LDRs e um buzzer. A função dos 4 botões de pressão será explicada em breve. Agora vamos ver como montar o LDR corretamente.

LDR MOUTING PARA DETECÇÃO DE VELOCIDADE DO VEÍCULO

O LDR deve ser protegido da luz do sol adequadamente, apenas o feixe de laser deve atingir o LDR. Certifique-se de que seu módulo de laser é poderoso o suficiente para trabalhar sob um sol forte.
Você pode usar um tubo de PVC para o propósito acima e pintá-lo de preto dentro do tubo; não esqueça de cobrir a parte da frente, use sua criatividade para conseguir isso.

Código do programa:

// ----------- 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 < EEPROM.read(speed_address))
{
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 ---------//

Agora vamos ver como operar este circuito:

• Complete seu circuito e carregue o código.
• A distância entre dois lasers / LDRs deve ser exatamente 10 metros, nem menos nem mais, caso contrário a velocidade será calculada incorretamente (mostrado no primeiro diagrama).
• A distância entre o laser e o LDR pode ser de sua escolha e circunstâncias.
• O circuito verificará o desalinhamento do laser com o LDR, se houver, corrija-o conforme as informações exibidas no LCD.
• Inicialmente o circuito pedirá que você insira um valor limite de velocidade em km/h além do qual o circuito alerta, pressionando para cima (S1) e para baixo (S2) você pode alterar o número no display e pressionar set (S3), isso valor será salvo.
• Para alterar este limite de velocidade, pressione o botão S4 e você pode definir um novo limite de velocidade.
• Agora faça um passeio de moto a 30 km/h e interrompa os raios laser, o circuito deve mostrar um número muito próximo de 30 km/h.
• Você terminou e seu circuito está pronto para servir a segurança de seu campus.

Protótipo do autor:

PROTÓTIPO DE DETECÇÃO DE VELOCIDADE DO VEÍCULO

Se tiver alguma dúvida sobre este circuito detector de velocidade do veículo da polícia de trânsito, sinta-se à vontade para perguntar na seção de comentários, você pode obter uma resposta rápida.

Hashtags: #Circuito #Detector #Velocidade #Veículos #para #Polícia #Trânsito
 

FONTE


Nota: Este conteúdo foi traduzido do Inglês para português (auto)
Pode conter erros de tradução

Olá, se tiver algum erro de tradução (AUTO), falta de link para download etc…
Veja na FONTE até ser revisado o conteúdo.
Status (Ok Até agora)


Se tiver algum erro coloque nos comentários

Mas se gostou compartilhe!!!

Relacionados

Relacionados