Prévia do material em texto
<p>RELATÓRIO DO TRABALHO 1 DO 2º TRIMESTRE</p><p>Elis Menta de Col</p><p>Kauã Henrique Campanholo</p><p>Vitor Gonçalves da Costa</p><p>RESUMO</p><p>O presente relatório visa expor a justificativa, os objetivos, o desenvolvimento e</p><p>as conclusões em relação à execução de um projeto prático desenvolvido na disciplina</p><p>de Automação Industrial.</p><p>JUSTIFICATIVA</p><p>Este trabalho, bem como sua execução, foi importante para os discentes porque</p><p>permitiu a revisão de conceitos vistos em sala de aula para sua aplicação em um projeto</p><p>físico. Nesse sentido, sua relevância está na capacidade de ampliar os conhecimentos</p><p>dos estudantes sobre Arduino, códigos, comandos, lógica, componentes físicos e</p><p>ligações.</p><p>OBJETIVO</p><p>O objetivo deste trabalho é aplicar conhecimentos teóricos e práticos envolvendo</p><p>Arduino para controlar semáforos e construir um projeto físico que simula o</p><p>funcionamento de uma via automotiva.</p><p>DESENVOLVIMENTO</p><p>a. Planejamento do projeto</p><p>O primeiro passo para iniciar o desenvolvimento foi decidir o tipo de projeto que</p><p>seria realizado pelo grupo. Após uma pesquisa inicial, decidimos construir um protótipo</p><p>que simulasse o funcionamento de semáforos em um cruzamento de via automotiva. Em</p><p>sequência, realizamos um levantamento dos materiais necessários, priorizando o</p><p>reaproveitamento de componentes disponíveis na Instituição.</p><p>b. Materiais</p><p>Maquete física (reaproveitada de outros trabalhos);</p><p>Arduino Uno R3;</p><p>10 resistores de 220 Ω;</p><p>2 resistores de 1 kΩ;</p><p>2 LEDs amarelos;</p><p>4 LEDs verdes;</p><p>4 LEDs vermelhos;</p><p>1 botão;</p><p>c. Preparação do protótipo</p><p>Primeiro, realizamos a limpeza da maquete e retiramos os componentes</p><p>eletrônicos que estavam sendo utilizados para testar o funcionamento dos LEDs.</p><p>Durante esta etapa, substituímos os LEDs defeituosos e, para isso, foi necessário</p><p>realizar o processo de estanhagem dos componentes. Este processo foi uma nova</p><p>experiência para o grupo, pois envolveu habilidades que ainda não haviam sido</p><p>abordadas ao longo do curso. Após a troca, instalamos os LEDs nas estruturas que</p><p>representam os semáforos e fixamos-os à maquete novamente.</p><p>d. Montagem do circuito</p><p>A montagem do circuito foi realizada conforme o esquema mostrado na Figura</p><p>2, apresentada na seção intitulada como “Diagrama geral do processo”. A conexão dos</p><p>componentes na protoboard foi feita da seguinte forma:</p><p>● Os LEDs foram conectados aos pinos digitais do Arduino;</p><p>● Os resistores de 220 Ω foram conectados em série com cada LED para limitar a</p><p>corrente, garantindo que os LEDs não fossem danificados;</p><p>● O botão foi conectado ao sistema para permitir a interação com o usuário,</p><p>simulando o acionamento do semáforos para pedestres;</p><p>e. Escrita do código</p><p>A escrita do código foi o principal desafio do projeto para o grupo. Em um</p><p>primeiro momento, realizamos uma pesquisa na internet para compreender a estrutura</p><p>que deveríamos replicar em nosso projeto e quais seriam as adaptações necessárias para</p><p>que os comandos funcionassem. A partir disso, adaptamos um código encontrado que</p><p>simulava o funcionamento de um cruzamento com semáforos, onde a sinalização para</p><p>os pedestres era ativada por meio de botões. Entretanto, devido a dificuldades técnicas,</p><p>foi necessário simplificar o projeto para garantir o funcionamento do mesmo. Portanto,</p><p>limitamo-nos a simular o funcionamento de uma via de mão dupla com dois semáforos</p><p>para veículos e um para pedestres, como indica a Figura 01.</p><p>Figura 1 - projeto físico</p><p>f. Sequência de operações</p><p>A sequência de operações do projeto foi realizada conforme o código</p><p>programado e o circuito montado, compreendendo as seguintes etapas:</p><p>● Inicialização: ao iniciar o sistema, os LEDs e os botões são configurados como</p><p>entradas ou saídas;</p><p>● Ciclo de acionamento dos semáforos: o sistema alterna as luzes dos semáforos</p><p>para veículos e pedestres, simulando as mudanças que ocorrem na prática.</p><p>● Interação com o usuário: quando o botão é pressionado, o semáforo para</p><p>veículos muda de estado, permitindo a passagem segura dos pedestres.</p><p>g. Funcionamento do código</p><p>O código elaborado é responsável por controlar um sistema de semáforos</p><p>utilizando um Arduino, com LEDs representando os sinais para pedestres e veículos, e</p><p>um botão que simula o pedido de travessia feito pelos pedestres. Nesse sentido, o</p><p>código alterna entre dois modos de funcionamento: automático e manual. No modo</p><p>automático, os semáforos mudam de estado após um tempo pré-determinado, alternando</p><p>entre dar prioridade aos veículos e, em seguida, aos pedestres. Já no modo manual, ao</p><p>pressionar o botão, os pedestres podem pedir para atravessar a via e o sistema prioriza a</p><p>travessia interrompendo, portanto, o ciclo dos veículos.</p><p>No projeto, cada componente desempenha uma função que garante o</p><p>funcionamento do sistema. O Arduino Uno é a placa principal que coordena todo o</p><p>processo, recebendo sinais do botão e controlando os LEDs. Estes, por sua vez, simulam</p><p>os semáforos: o LED verde dos pedestres indica que podem atravessar, enquanto o LED</p><p>vermelho indica que devem esperar. Já para os veículos, os LEDs seguem a lógica</p><p>padrão de trânsito, com o verde para seguir, o amarelo para alertar sobre a mudança e o</p><p>vermelho para parar. Por fim, temos o botão, que representa o pedido manual do</p><p>pedestre para atravessar e, quando pressionado, o ciclo do semáforo muda para dar</p><p>prioridade aos pedestres. É importante destacar que o sistema prioriza o fluxo de</p><p>veículos e, a cada 10 segundos, muda para dar preferência aos pedestres.</p><p>O código funciona de forma contínua, alternando as mudanças entre a passagem</p><p>de veículos e pedestres e garantindo que o trânsito seja organizado. Assim que o sistema</p><p>inicia, o semáforo dos pedestres está vermelho e o dos veículos, verde. Se o tempo do</p><p>ciclo automático se esgota ou o botão é pressionado, o sistema muda a prioridade para</p><p>os pedestres. Quando isso ocorre, o semáforo dos carros passa do verde para o vermelho</p><p>e o semáforo dos pedestres fica verde por 5 segundos, permitindo a travessia. Em</p><p>seguida, a luz verde pisca para alertar os pedestres de que o tempo está acabando e, após</p><p>isso, o semáforo dos pedestres volta ao vermelho, e o dos veículos, ao verde. O sistema</p><p>então aguarda o próximo ciclo ou novo pedido de travessia.</p><p>DIAGRAMA GERAL DO PROCESSO</p><p>Para acessar a simulação do projeto, clique neste link. Este esquema apresenta as</p><p>ligações que pretendíamos fazer no início do projeto.</p><p>Figura 2 - montagem inicial dos componentes</p><p>Após analisarmos as dificuldades de montagem encontradas, realizamos as</p><p>alterações indicadas na Figura 3. A simulação do projeto está disponível neste link.</p><p>Figura 3: adaptação e simplificação da montagem</p><p>PROGRAMA UTILIZADO NO ARDUINO</p><p>// variáveis para controlar o ciclo de troca automática</p><p>long ciclo = 10 * 1000l; // 10 segundos</p><p>https://www.tinkercad.com/things/5wvQCGC7quR-semaforos/editel?sharecode=2odwOe--xFXtQ0FH-tI-IimipH3E9qELVZkYxOXAq9Y</p><p>https://www.tinkercad.com/things/5hhvCnGbxNo-copy-of-semaforo-de-veiculos-e-pedestres/editel?sharecode=ymMMiKKMHzDb_O5TqJQB2zH3SGp24TtLUtH79w4ySv4</p><p>long ultimo_ciclo = 0;</p><p>// variáveis para controlar o botão</p><p>int debounce_delay = 800;</p><p>int pedido_peao = 0;</p><p>int pedido_estado = 0;</p><p>// portas de ligação ao arduino</p><p>const byte PEAO_GREEN = 2;</p><p>const byte PEAO_RED = 3;</p><p>const byte BUTTON = 5;</p><p>const byte BELL = 6;</p><p>const byte CAR_GREEN = 8;</p><p>const byte CAR_YELLOW = 9;</p><p>const byte CAR_RED = 10;</p><p>// som de aviso para peões/pedestres</p><p>const byte NOTE_A6 = 1760; // experimentem mudar para sons diferentes</p><p>/**</p><p>* Rotinas de configuração inicial</p><p>*/</p><p>void setup(){</p><p>// semaforo peoes</p><p>pinMode(PEAO_GREEN, OUTPUT);</p><p>digitalWrite(PEAO_GREEN, LOW);</p><p>pinMode(PEAO_RED, OUTPUT);</p><p>digitalWrite(PEAO_RED, HIGH);</p><p>// semaforo transito</p><p>pinMode(CAR_GREEN, OUTPUT);</p><p>digitalWrite(CAR_GREEN, HIGH);</p><p>pinMode(CAR_YELLOW, OUTPUT);</p><p>digitalWrite(CAR_YELLOW, LOW);</p><p>pinMode(CAR_RED, OUTPUT);</p><p>digitalWrite(CAR_RED, LOW);</p><p>// botao peoes</p><p>pinMode(BUTTON, INPUT);</p><p>// definir o ultimo ciclo</p><p>ultimo_ciclo = millis();</p><p>Serial.begin(9600);</p><p>}</p><p>/**</p><p>* Programa para</p><p>gerir o semáforo</p><p>*/</p><p>void loop(){</p><p>// detetar botao pressionado, com proteção debounce</p><p>// http://arduino.cc/it/Tutorial/Debounce</p><p>long ms = millis();</p><p>byte pedido = digitalRead(BUTTON);</p><p>if( ultimo_ciclo + ciclo < ms ){</p><p>// esta na hora de trocar para peoes (ciclo automático)</p><p>Serial.print("Prioridade aos peoes (automatico)\n");</p><p>pararCarros();</p><p>peoes();</p><p>arrancarCarros();</p><p>pedido_estado = 1;</p><p>ultimo_ciclo = millis();</p><p>} else if( pedido == 1 && (ms - debounce_delay) > pedido_peao ){</p><p>// um peao/pedestre pediu para parar o trânsito</p><p>Serial.print("Prioridade aos peoes (manual)\n");</p><p>pararCarros();</p><p>peoes();</p><p>arrancarCarros();</p><p>pedido_estado = 1;</p><p>ultimo_ciclo = millis(); // repor o contador automatico para nao acionar logo</p><p>de seguida</p><p>} else if( pedido != pedido_estado ){</p><p>// protecao de debounce</p><p>pedido_peao = ms;</p><p>}</p><p>pedido_estado = pedido;</p><p>}</p><p>/**</p><p>* Função para ativar a transição do semáforo dos veículos para vermelho,</p><p>* de forma sequencial (verde, amarelo, vermelho) com 1 segundo de intervalo</p><p>*/</p><p>void pararCarros(){</p><p>delay(1000);</p><p>digitalWrite(CAR_GREEN, LOW);</p><p>digitalWrite(CAR_YELLOW, HIGH);</p><p>delay(1000);</p><p>digitalWrite(CAR_YELLOW, LOW);</p><p>digitalWrite(CAR_RED, HIGH);</p><p>delay(1500);</p><p>}</p><p>/**</p><p>* Função para dar luz verde a veículos</p><p>* (de imediato, sem intervalo)</p><p>*/</p><p>void arrancarCarros(){</p><p>digitalWrite(CAR_RED, LOW);</p><p>digitalWrite(CAR_YELLOW, LOW);</p><p>digitalWrite(CAR_GREEN, HIGH);</p><p>}</p><p>/**</p><p>* Função para ativar o sinal verde para peões/pedestres.</p><p>* O semáfoto ativa o sinal verde por 5 segundos, e depois</p><p>* dá 5 beeps indicativos que o sinal vai fechar</p><p>*/</p><p>void peoes(){</p><p>digitalWrite(PEAO_RED, LOW);</p><p>digitalWrite(PEAO_GREEN, HIGH);</p><p>delay(5000);</p><p>piscaLuz(PEAO_GREEN, 5, 400);</p><p>digitalWrite(PEAO_GREEN, LOW);</p><p>digitalWrite(PEAO_RED, HIGH);</p><p>delay(2000);</p><p>}</p><p>/**</p><p>* Faz piscar uma determinada luz, um certo número de vezes</p><p>* @param luz Porta onde está ligada a luz que se pretende fazer piscar</p><p>* @param vezes Número de vezes para fazer piscar a luz</p><p>* @param tempo Tempo durante o qual a luz fica acesa</p><p>*/</p><p>void piscaLuz(byte luz, byte vezes, int tempo){</p><p>for( byte i = 0; i < vezes; i++ ){</p><p>digitalWrite(luz, LOW);</p><p>tone(BELL, NOTE_A6, 1000/2);</p><p>delay(tempo);</p><p>digitalWrite(luz, HIGH);</p><p>delay(tempo);</p><p>noTone(BELL);</p><p>}</p><p>}</p><p>CONSIDERAÇÕES FINAIS</p><p>A realização deste trabalho foi importante para aliar conhecimentos adquiridos</p><p>ao longo do curso técnico e da disciplina em um projeto prático. Apesar das</p><p>dificuldades enfrentadas, principalmente relacionadas à escrita e implementação do</p><p>código, o grupo conseguiu desenvolver uma simulação funcional de um cruzamento</p><p>com semáforos, ainda que de forma simplificada.</p><p>A principal limitação encontrada durante a elaboração do trabalho foi a</p><p>complexidade para integrar o acionamento dos semáforos para pedestres via botões,</p><p>conforme planejado inicialmente. Tivemos que fazer adaptações no código e simplificar</p><p>o projeto para garantir que ele funcionasse corretamente. Para nós, o processo de</p><p>programação e montagem do código foi uma dificuldade que exigiu paciência e foi</p><p>importante para desenvolver a capacidade de solucionar problemas, uma habilidade que</p><p>será útil em situações futuras, tanto acadêmicas quanto profissionais.</p><p>Mesmo com as dificuldades, o trabalho foi proveitoso, pois conseguimos</p><p>identificar e solucionar problemas práticos, como o manuseio dos componentes</p><p>eletrônicos e a correção de falhas no código. Essas experiências nos permitiram</p><p>entender melhor o processo de desenvolvimento de projetos de automação, além de nos</p><p>preparar para desafios que certamente encontraremos no mercado de trabalho.</p><p>Para trabalhos futuros, além de aprimorar a lógica de programação e melhorar a</p><p>interação entre botões e semáforos, seria interessante considerar a implementação de</p><p>sensores de presença de veículos, pois isso permitiria uma automação mais eficiente e</p><p>possibilitaria ao sistema detectar o fluxo de veículos e ajustar os tempos de sinalização</p><p>conforme necessário.</p><p>REFERÊNCIAS BIBLIOGRÁFICAS</p><p>FERREIRA, Angelo Luis. Simulação Semáforo com Arduino. 2020. Disponível em:</p><p>https://www.squids.com.br/arduino/projetos-arduino/projetos-squids/basico/277-projeto-06-semaforo-co</p><p>mpleto#google_vignette. Acesso em: 30 ago. 2024.</p><p>SILVA, Marcio. Como criar um semáforo com Arduino. 2020. Disponível em:</p><p>https://www.makerhero.com/blog/como-criar-um-semaforo-com-arduino/. Acesso em: 22 ago. 2024.</p>