Modelo de portão de barreira inteligente [com segurança e alerta de tráfego aprimorados]

Tempo de leitura: 3 minutes

Este projeto simples explica como construir um projeto de modelo de um sistema de portão de barreira com segurança aprimorada e recurso de alerta de tráfego.

Quando um veículo entra na área de espera, o Sensor Ultrassônico -01 o detecta e informa o oficial do portão através do módulo LCD. O motorista também pode verificar se o veículo entrou na área de espera corretamente a partir da luz indicadora. (LED amarelo)

O oficial do portão pode usar o botão -1 para abrir o portão (Servo -90 graus). O módulo LCD exibe se o portão está aberto. Observe que o portão só será aberto se houver um veículo na área de espera. (LED verde acenderá)

Durante a passagem do veículo pelo portão, se por acidente o portão for fechado (botão -2 pressionado), o sensor ultrassônico -02 o detectará imediatamente e o portão será aberto (Servo -90 graus). O Módulo LCD exibirá que o portão está bloqueado. (O LED VERMELHO estará LIGADO)

Se o botão -2 for pressionado quando não houver veículo passando (sensor ultrassônico -02 é BAIXO), o portão retornará à posição inicial (0 graus).

Se não houver nenhuma atividade na área do portão; o portão permanecerá em sua posição inicial (servo -0 graus), o módulo LCD exibirá o alerta Sem atividade (todos os LEDs estarão desligados).

 

Ferramentas e componentes

Arduino nano x 1
Metal Gear Servo Motor x 1
Sensor ultrassônico x 2
Botões de pressão x 2
Módulo LCD 16×2 x 1
Potenciômetro 1 x 10KOhm
Resistores de 2,2 KOhm x 2
LED vermelho x 1
LED amarelo x 1
LED verde x 1
Fonte de alimentação 5VDC
Fios de conexão
ProtoBoard

 

Componentes de conexão

 

Posições do sensor

NOTA :

A distância entre o sensor ultrassônico -01 e o plano vertical voltado para a frente deve ser superior a 15 cm. (Caso contrário, altere no código)

A distância entre o sensor ultrassônico -02 e o plano horizontal (solo) deve ser superior a 10 cm. (Caso contrário, altere no código)

 

Sensor Ultrasonic 01 (Área de Espera) Trig. Pin – Arduino Pino D4
Sensor Ultrasonic 01 (Área de Espera) Pino Eco – Arduino Pino D3

Sensor Ultrasonic 02 (Gate) Trig. Pin – Arduino Pino D6
Sensor Ultrasonic 02 (Gate) Echo Pin – Arduino Pino D5

Módulo LCD D7 – Arduino Pino A7
Módulo LCD D6 – Arduino Pino A6
Módulo LCD D5 – Arduino Pino A5
Módulo LCD D4 – Arduino Pino A4
Módulo LCD E – Arduino Pino D13
Módulo LCD RS – Arduino Pino A3
Módulo LCD Vcc – +5V
Módulo LCD Vss – GND

LED do módulo LCD (-) – GND
LED do módulo LCD (+) – +5V

Módulo LCD VEE – Potenciômetro Sig. PIN

Botão (Gate Up) – Arduino Pino D12
Botão (Gate Down) – Arduino Pino D11

 

Código Arduino

#include <LiquidCrystal.h>
#include <Servo.h>
Servo myservo;

#include <HCSR04.h>
UltraSonicDistanceSensor distanceSensor1(4, 3);
UltraSonicDistanceSensor distanceSensor2(6, 5);

LiquidCrystal lcd(A3, 13, A4, A5, A6, A7);

int Red = 9;
int Green = 7;
int Yellow = 8;
int up = 12;
int down =11;

int count = 0; // contagem de exibição atual

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  myservo.attach(10);
  pinMode(Red,OUTPUT);
  pinMode(Green,OUTPUT);
  pinMode(Yellow,OUTPUT);
  pinMode(up,INPUT);
  pinMode(down,INPUT);
}

void loop() {
  Serial.print("Sensor 01 =  ");
  Serial.println(distanceSensor1.measureDistanceCm());
  Serial.print("Sensor 02 =  ");
  Serial.println(distanceSensor2.measureDistanceCm());
  Serial.print("UP  =  ");
  Serial.println(digitalRead(up));
  Serial.print("DOWN  =  ");
  Serial.println(digitalRead(down));
  Serial.println("");

 if (distanceSensor1.measureDistanceCm() <= 15 && digitalRead(up) == LOW && distanceSensor2.measureDistanceCm() >= 10) {
    digitalWrite(Yellow,HIGH);
    digitalWrite(Green ,LOW);
    digitalWrite(Red ,LOW);
    lcd.print("Alerta: Esperando pela Partida ");
    delay(500);
    lcd.clear();
    delay(1);  
  } else if (distanceSensor1.measureDistanceCm() <= 15 && digitalRead(up) == HIGH){
      myservo.write(90);
      digitalWrite(Green,HIGH);
      digitalWrite(Yellow ,LOW);
      digitalWrite(Red ,LOW);
      lcd.print("Alerta: Portão Aberto");
      delay(500);
      lcd.clear();
      delay(1);
  } else if (digitalRead(down) == HIGH && distanceSensor2.measureDistanceCm() >= 10){
      myservo.write(0);
      digitalWrite(Green,LOW);
      digitalWrite(Yellow ,HIGH);
      digitalWrite(Red ,LOW);
      lcd.print("Alerta: Portão Fechado");
      delay(500);
      lcd.clear();
      delay(1000);    
  } else if (digitalRead(down) == HIGH && distanceSensor2.measureDistanceCm() <= 10){
      myservo.write(90);
      digitalWrite(Red,HIGH);
      digitalWrite(Yellow ,LOW);
      digitalWrite(Green ,LOW);
      lcd.print("Alerta: portão bloqueado ");
      delay(500);
      lcd.clear();
      delay(1);
  } else if (distanceSensor2.measureDistanceCm() <= 10){
    myservo.write(90);
    digitalWrite(Red,HIGH);
    digitalWrite(Green ,LOW);
    digitalWrite(Yellow ,LOW);
    delay(1000);
    lcd.print("Alerta: portão bloqueado ");
    delay(500);
    lcd.clear();
    delay(1);
  } else if (distanceSensor1.measureDistanceCm() >= 15 && distanceSensor2.measureDistanceCm() >= 10 && digitalRead(up)==LOW && digitalRead(down) == LOW) {
    myservo.write(0);
    digitalWrite(Yellow,LOW);
    digitalWrite(Green ,LOW);
    digitalWrite(Red ,LOW);
    lcd.print("Alerta: Sem Atividade ");
    delay(500);
    lcd.clear();
    delay(1);
  }
}

Segurança primeiro!

Sempre conecte a fonte de alimentação se tiver absoluta certeza de que os componentes estão conectados corretamente sem alterar a polaridade e causar curto-circuito na fiação.

Mesmo que pareça que não há nada de errado: VERIFIQUE DUPLA TUDO!

Sua opinião é muito importante para nós.

Por favor, deixe um comentário sobre como você se sente sobre este projeto.

 

Visits: 1 Visits: 1200544