Arduino Automatic Gate Project

by ritatavaresazeredo in Circuits > Arduino

410 Views, 1 Favorites, 0 Comments

Arduino Automatic Gate Project

WhatsApp Image 2021-06-09 at 17.47.33 (2).jpeg

Neste projeto vou simular um portão de um parque de estacionamento, para isso vou usar um sensor ultrassónico para abrir e fechar o portão quando uma distância é atingida.

Hardware

- Ultrasonic sensor (sensor ultrassónico)

- Arduino Uno

- Servo Motor

- Jumper cable

Como Funciona

O sensor ultrassónico vai detetar, a uma certa distância, um possível objeto que passará em frente do mesmo. O sensor ultrassónico vai enviar uma onda sonora, que ao detetar o objeto, irá fazer ricochete, e fará com que a onda volte para trás, sendo recebida pelo mesmo sensor, isto irá dar instruções ao arduino microcontroller para abrir o portão, depois o arduino vai dar instruções ao servo para abrir o portão a 90º.

Conecção Do Sensor Ultrasónico

Mighty Jaban (1).png

- Vcc para o 3.3V do arduino

- trig para a porta 4 do arduino

- echo para a porta 6 do arduino

- Gnd para o Gnd do arduino

Conecção Do Servo Motor

Mighty Jaban.png

- fio castanho para Gnd do Arduino

- fio vermelho para o 5V do Arduino

- fio laranja para a porta 9 do Arduino

Conclusão

WhatsApp Image 2021-06-09 at 17.47.33 (2).jpeg
WhatsApp Image 2021-06-09 at 17.47.33 (1).jpeg

No final deste projeto isto vai ser o aspeto do mesmo.

Neste projeto, qualquer objeto que se atravesse em frente do sensor de distância irá fazer com que o portão se abra.

Isto é apenas uma ideia para uma aplicação simples e divertida.

O Código

#include

Servo myservo; const int trigPin=4; // Definir a constante TrigPin como inteira const int echoPin=6; // Definir a constante EchoPin como inteira long tempodur; // Definir a constante Tempodur como long int distancia; // Definir a constante Distancia como Inteira

void setup() {

myservo.attach(9); // porta em que o Motor esta ligada ao Arduino pinMode(trigPin,OUTPUT); //Definir o pino de "disparo do sensor" como output pinMode(echoPin,INPUT); //Definir o pino de "Receção de Informação do sensor" como input Serial.begin(9600); //Iniciar o monitor de série myservo.write(0); //Definir a posição do motor servo nos 0º

}

void loop() { digitalWrite(trigPin,LOW); delayMicroseconds(3); digitalWrite(trigPin,HIGH); delayMicroseconds(11); digitalWrite(trigPin,LOW); //Rotina de Envio e receção de dados do sensor para poder calcular a distancia do objecto (Neste caso o carro) tempodur=pulseIn(echoPin,HIGH); distancia=(0.034*tempodur)/2; //Conversão dos dados do sensor para a unidade de medida de distancia cm

if(distancia<=16){ myservo.write(0); //Quando o valor de distancia estiver menor ou igual a 16 cm o sensor aciona para a posição 0º } else{ myservo.write(90);} // Quando o valor de distancia estiver maior que 16 cm o sensor aciona para a posição 90ª Serial.print("distancia:"); Serial.println(distancia); // Rotina de envio de info da Distancia para o serial monitor delay(1500); // Atraso de 1,5s durante para ciclo de forma a dar tempo ao veiculo de passar debaixo da cancela.

}