Take a Place

by diogotorres04 in Circuits > Arduino

346 Views, 2 Favorites, 0 Comments

Take a Place

Capa.jpg

Eu sou o Diogo Torres e sou aluno do curso técnico de gestão e programação de sistemas informáticos na Escola Secundária da Boa Nova e este é o meu projeto de PAP.

O “Take a place” é um projeto que tem como objetivo gerir a ocupação dos lugares numa praia, através de sensores ultrassónicos implementados em cada cabana e leds para assinalar a ocupação ou não do lugar.

Decidi realizar este projeto pois o mundo está a passar por uma fase delicada e muito difícil de pandemia e, visto que o Verão está ai à porta, as pessoas querem e precisam de ir frequentar a praia. Para isso desenvolvi uma maquete de um protótipo, onde pretendo mostrar que é possível rentabilizar a ocupação dos lugares numa praia.

Material Utilizado

1- Material.jpeg

Montagem Do Circuito No Fritzing

circuito  circuito no fritzing.png

Montagem Do Protótipo

1- Material.jpeg
2-positivo negativo.jpeg
3-Resistencias.jpeg
4-ligar os leds na breadboard.jpeg
5- ligar os leds ao arduino.jpeg
6-ligar os sensros na breadboard.jpeg
7-ligar os sensors ao arduino.jpeg
8- circuito completo.jpeg

Comecei por organizar o material que ia utilizar. Em seguida liguei o cabo vermelho ao Arduíno na porta 5v e na placa Breadboard no barramento positivo e o cabo preto na porta GND e no barramento negativo.

Logo depois coloquei as resistências de modo a que de seguida liga-se os leds através de cabos jumpers no mesmo barramento da breadboard e também conectei um cabo preto ao negativo para cada led. Para finalizar a parte dos leds bastou conectar ao Arduíno nas portas 11 (vermelho) e 10 (verde) para a cabana um e porta 5 (vermelho) e 4 (verde) para a cabana dois.

Para terminar o circuito falta os sensores ultrassónicos que apenas bastou ligar para cada um, um cabo jumper ao barramento positivo e outro ao negativo e também ligar ao Arduíno na porta 13 (trig) e na 12 (echo) para o sensor da cabana 1 e por fim na porta 7 (trig) e na 6 (echo) para a cabana dois.

Codificação

//Define entradas do Arduíno onde os Leds RGB estão conectados para a Cabana 1 e 2

const int RED1 = 11; //Led RGB da cabana 1

const int GREEN1 = 10; //Led RGB da cabana 1

const int RED2 = 5; //Led RGB da cabana 2

const int GREEN2 = 4; //Led RGB da cabana 2

//Define entradas do Arduíno onde os Sensores HC-SR04 estão conectados para a Cabana 1 e 2

int TRIGGER_PIN1 = 13; //Sensor da cabana 1

int ECHO_PIN1 = 12; //Sensor da cabana 1

int TRIGGER_PIN2 = 7; //Sensor da cabana 2

int ECHO_PIN2 = 6; //Sensor da cabana 2

//Declara variáveis para cálculos das distâncias

long duration1, distance1; //Variáveis da cabana 1

long duration2, distance2; //Variáveis da cabana 2

//Esta função serve para inicializar as variáveis

void setup() {

pinMode(TRIGGER_PIN1, OUTPUT); //Configura o pino para que funcione como saída para o sensor da cabana 1

pinMode(ECHO_PIN1, INPUT); //Configura o pino para que funcione como entrada para o sensor da cabana 1

pinMode(TRIGGER_PIN2, OUTPUT); //Configura o pino para que funcione como saída para o sensor da cabana 2

pinMode(ECHO_PIN2, INPUT); //Configura o pino para que funcione como entrada para o sensor da cabana 2

pinMode(RED1, OUTPUT); //Configura o pino que eu quero que funcione como saída para o led RGB da cabana 1

pinMode(GREEN1, OUTPUT); //Configura o pino que eu quero que funcione como saída para o led RGB da cabana 1

pinMode(RED2, OUTPUT); //Configura o pino que eu quero que funcione como saída para o led RGB da cabana 2

pinMode(GREEN2, OUTPUT); //Configura o pino que eu quero que funcione como saída para o led RGB da cabana 2

Serial.begin (9600); // inicia a porta serial, configura a taxa de dados para 9600 bps

}

//Esta função serve para trabalhar em loop ou seja repetir o código sem parar enquanto a placa estiver ligada

void loop() {

//Cabana de Praia (1)

//Cálculo da informação recebida pelo sensor ultrassónico

digitalWrite(TRIGGER_PIN1, LOW); //Serve para atribuir um valor,(no caso "LOW"), ao pino digital onde o pino trigger do sensor 1 está ligado

delayMicroseconds(2); //Pausa o programa por 2 microsegundos

digitalWrite(TRIGGER_PIN1, HIGH); //Serve para atribuir um valor,(no caso "HIGH"), ao pino digital onde o pino trigger do sensor 1 está ligado

delayMicroseconds(10); //Pausa o programa por 10 microsegundos

digitalWrite(TRIGGER_PIN1, LOW); //Serve para atribuir um valor,(no caso "LOW"), ao pino digital onde o pino trigger do sensor 1 está ligado

duration1 = pulseIn(ECHO_PIN1, HIGH); //Captura a duração de um pulso e atribui á variável duration1

distance1 = duration1*0.034/2; //Calcula a Distância utilizando a variável da última linha de código

Serial.print(distance1); //Imprime na linha de comandos o valor da distância

Serial.println(" cm"); //Imprime na linha de comandos o tipo de medida

if(distance1 <=4) { //Esta função serve para se a distância calculada for menor ou igual que 4 executa o código seguinte

digitalWrite(RED1, HIGH); //Acende a luz vermelha do led

digitalWrite(GREEN1, LOW); //Apaga a luz verde do led

Serial.print("Cabana 1 Ocupada"); //Imprime na linha de comandos "Cabana 1 Ocupada"

}

else //Senão for menor ou igual que 4 executa o código seguinte

{

digitalWrite(GREEN1, HIGH); //Acende a luz verde do led

digitalWrite(RED1, LOW); //Apaga a luz vermelha do led

Serial.print("Cabana 1 Livre"); //Imprime na linha de comandos "Cabana 1 Livre"

}

//Cabana de Praia (2)

//Calculo da informação recebida pelo sensor ultrassónico

digitalWrite(TRIGGER_PIN2, LOW); //Serve para atribuir um valor,(no caso "LOW"), ao pino digital onde o pino trigger do sensor 2 está ligado

delayMicroseconds(2); //Pausa o programa por 2 microsegundos

digitalWrite(TRIGGER_PIN2, HIGH); //Serve para atribuir um valor,(no caso "HIGH"), ao pino digital onde o pino trigger do sensor 2 está ligado

delayMicroseconds(10); //Pausa o programa por 10 microsegundos

digitalWrite(TRIGGER_PIN2, LOW); //Serve para atribuir um valor,(no caso "LOW"), ao pino digital onde o pino trigger do sensor 2 está ligado

duration2 = pulseIn(ECHO_PIN2, HIGH); //Captura a duração de um pulso e atribui á variável duration2;

distance2 = duration2*0.034/2; //Cálcula a Distância utilizando a variável da última linha de código

Serial.print(distance2); //Imprime na linha de comandos o valor da distância

Serial.println(" cm"); //Imprime na linha de comandos o tipo de medida

if(distance2 <=4) { //Esta função serve para se a distância calculada for menor ou igual que 4 executa o código seguinte

digitalWrite(RED2, HIGH); //Acende a luz vermelha

digitalWrite(GREEN2, LOW); //Apaga a luz verde do led

Serial.print("Cabana 2 Ocupada "); //Imprime na linha de comandos "Cabana 2 Ocupada"

}

else //Senão for menor ou igual que quatro executa o código seguinte

{

digitalWrite(GREEN2, HIGH); //Acende a luz verde do led

digitalWrite(RED2, LOW); //Apaga a luz vermelha do led

Serial.print("Cabana 2 Livre "); //Imprime na linha de comandos "Cabana 2 Livre"

}

}

Montagem Da Maquete Em 3D No Tinkercad

maquete maquete 3d.png

A minha preocupação aqui foi realizar uma maquete que simulasse a praia, que estivesse presente a zona da água e de maneira a que o circuito ficasse oculto.

Montagem Da Maquete

maquete recolha de material.jpeg
maquete colar e recortar as partes.jpeg
maquete parte da base finalizada.jpeg
maquete parte da agua  agrafada.jpeg
maquete tirar medidas para as barracas.jpeg
maquete partes para montar as barracas.jpeg
maquete barracas montadas.jpeg
maquete adicionei o suporte para a chave na barraca.jpeg
maquete adicionar o circuito na maquete .jpeg
maquete colar as cabanas na base .jpeg

Nesta fase foi meter mãos à obra.

Como Funciona O Protótipo

Prot&oacute;tipo de gest&atilde;o de ocupa&ccedil;&atilde;o dos lugares de uma praia.

Sugestões De Melhoria

Até aqui já tinha gasto muito dinheiro em material mas gostava ainda de adicionar um display OLED na entrada da praia para ser mais prático ver a ocupação das cabanas.

Criar uma app para telemóvel com o intuito de gerir as cabanas e até mesmo reservar antecipadamente uma cabana.