Carro telecomandado com painel solar




LABSI

2024


Autores:


Beatriz Neves (Nº 1211007)

1211007@isep.ipp.pt


Pedro Alves (Nº 1211557)

1211557@isep.ipp.pt


Introdução

Arquitetura

Hardware

Software

Resultados

Conclusões

Referências




Figura 1 - Carro telecomandado com painel solar

  • Introdução

Início

Objetivo

Este projeto, desenvolvido no âmbito da unidade curricular de Laboratório de Sistemas (LABSI), tem como objetivo base a construção de um carro controlado por uma aplicação de telemóvel.
Para além disso, este carro tem um painel solar que carrega as pilhas que alimentam o carro e tem também um sensor de luz que acende dois Leds quando a luminosidade do local é baixa.
Apesar de não concluídos, dois objetivos propostos para este projetam são: a implementação de um sensor de proximidade e um sensor de linha que permite ao carro seguir uma linha preta num fundo branco.

Estado de Arte

O objetivo de um Estado de Arte é apresentar o mais alto nível de desenvolvimento de uma determinada temática.
Relativamente aos AGV, as empresas atualmente t≖m muito interesse em reduzir os seus custos, e procuram soluções que permitam agilizar o trabalho. Neste sentido, a procura por veículos autónomos e a crescente aposta em tecnologias de navegação cresceu bastante, devido ás vantagens inerentes a estes sistemas. Estes veículos não necessitam de tripulante, podem operar remotamente, facilitam o transporte de mercadorias pesadas, de formar geral são mais rápidos e seguros, aumentando a produtividade da empresa.
Estes veículos podem operar em diferentes tipos de seguimento de caminho: Dinâmico e Fixo.




  • Arquitetura

Início



De forma a sintetizar e facilitar a interpretação, no seguinte diagrama de blocos é apresentado o funcionamento do sistema:

Figura 2 - Diagrama de blocos do sistema



  • Hardware

Início



Para a elaboração deste projeto recorremos a utilização do seguinte hardware:

Microcontrolador

Escolhemos o microcontrolador Atmega 328P de 8 bits de alta performance, que possui 23 portas de entrada/saída, memória de programa flash de 32KB (programável), memória EEPROM de 1KB, memória SRAM interna de 2KB, assim como, 2 temporizadores/contadores de 8 bits e 1 contador/temporizador de 16 bits. Este microcontrolador dispõe também de 6 canais de PWM, 6 canais analógicos para o ADC e 1 porta serial USART.

Figura 3 - Microcontrolador Atmega 328P

Motores DC

De forma a conferir movimento ao carro, optámos por utilizar quatro micromotores de engrenagem DC, que podem ser alimentados com uma tensão entre os 3V e os 6V.

Figura 4 - Motor DC

Ponte H

Consequentemente, de modo a conferir o funcionamento correto dos motores, implementámos um circuito com ponte H.

Figura 5 - Circuito Ponte H

Este componente permite alterar o sentido de rotação dos motores (horário e anti-horário), assim como alimentar o microcontrolador Atmega 328P.
O chip utilizado foi o L298N, cuja gama de alimentação varia entre 4V a 35V, aproximadamente, e a sua corrente de operação máxima é de 2A por canal.

Figura 6 - Ponte H (L298)

Alimentação

Para fazer a alimentação utilizámos três pilhas de Lítio recarregáveis 18650 de 3,7V e 3200 mAh, que quando colocadas em série nos permite obter uma tensão de 11,1V.

Figura 7 - Pilhas de Lítio recarregáveis

Bluetooth

Para permitir a conexão entre o carro e a aplicação desenvolvida para o seu controlo, utilizámos um módulo Bluetooth HC-06. Este módulo realiza o envio e faz a receção de dados com o alcance de 10 metros, e tem uma conexão padrão de UART de 2 pinos que facilita a conexão com o microcontrolador. De modo a funcionar corretamente necessita de uma tensão de 3,3V.

Figura 8 - Módulo Bluetooth (HC-06)

Sensor seguidor de linha

Figura 9 - Módulo sensor detetor de infravermelhos de 5 canais (BFD-100)

De forma a desenvolver o modo autónomo, utilizámos um módulo sensor detetor de infravermelhos de 5 canais (BFD-100). Este módulo é composto por 5 sensores IR que fazem leituras de permitem garantir que o carro segue uma linha preta e necessita ser alimentado com uma tensão entre 3V e 5V. O sinal de saída destes sensores é digital e as leituras dos sensores necessitam ter uma dist&circncia entre 0,5mm e 40mm.

Sensor de luz

Este sensor de luz LDR, é composto por uma resistência que varia o seu valor, conforme o nível de luminosidade, isto é, quanto maior a luminosidade que incide sobre o sensor, menor a sua resistência. Neste projeto utilizámos um sensor de luz para, quando a luminosidade é baixa, ligam-se dois leds para iluminar o espaço.

Figura 10 - Sensor de luz (LDR)

Sensor de proximidade

Figura 11 - Sensor de proximidade (HC-SR04)

Para evitar colisões, usamos um sensor de proximidade HC-SR04 que permite medir com precisão distâncias entre 2cm e 4m, tendo um erro de margem de 3mm. Este sensor é composto por um emissor e um recetor ultrassónico, onde são emitidos sinais do emissor, que serão refletidos num obstáculo que esteja no caminho, dentro dos limites de medição, retornando ao sensor, pelo recetor.

Painel Solar

Figura 12 - Painel solar

De forma a conseguir carregar as pilhas que fazem o carro funcionar, utilizámos um painel solar. De modo a não danificar o painel, porque em certas situações a luz solar incidente não produz tensão suficiente para carregar as pilhas e estas podem começar a carregar também o painel, criou-se um circuito de proteção com díodos.

Esquema elétrico

Na seguinte figura é apresentado o esquema elétrico total do circuito.

Figura 13 - Esquema elétrico do sistema

Placa PCB

Por fim, fizemos o esquema da placa PCB.

Figura 14 - Placa PCB do sistema

  • Software

Início

Fluxogramas do carro



De forma a conceber um LED que pisque a uma frequência de 1 Hz, implementámos no nosso código uma interrupção que liga e desliga o LED de acordo com a frequência pretendida.

Figura 15 - Fluxograma da interrupção do LED de 1 Hz



Decidimos incorporar um sensor de luz (LDR) que ligasse LEDs de acordo com a luminosidade do ambiente onde se encontra, para tal desenvolvemos duas funções: uma para ligar e desligar o LED de acordo registado pelo LDR e outra que regista ditos valores. Implementámos também uma interrupção de forma que o sensor esteja constantemente a fazer novas leituras.



Como podemos observar pelo fluxograma abaixo, a função começa por selecionar o ADC a utilizar (no caso ADC5), lendo o seu valor e testando de seguida se a leitura terminou. Caso tenha terminado, coloca o valor presente em ADCH numa variável e retorna esse valor. Caso contrário volta a testar se a leitura foi terminada.

Figura 16 - Fluxograma da função ler_ADC



Já neste segundo fluxograma apresentado, podemos observar o funcionamento da função principal do sensor de luz. A função começa por fazer a leitura do valor a comparar atrás da função anterior (ler_ADC), verificando de seguida se esse valor é menor ou igual a 80. Se for, acende o LED, se não for menor ou igual a 80, desliga o LED.

Figura 17 - Fluxograma da função do sensor de luz



Para a interrupção, temos um fluxograma bastante simples pois é apenas necessário chamar a função (sensor_luz) criada anteriormente.

Figura 18 - Fluxograma da interrupção do sensor de luz



Para movimentar o nosso carro, desenvolvemos uma função que recebe um valor e procura um caso correspondente a mesma. Cada caso controla o sentido e a velocidade de cada motor.

Figura 19 - Fluxograma da função do motor



De modo a controlar o carro desenvolvemos uma aplicação Android, que tem um funcionamento relativamente parecido com o do motor, mas neste caso envia os valores de acordo com o botão pressionado ("TouchDown") e que para o carro quando o botão deixa de ser pressionado ("TouchUp").

Figura 20 - Fluxograma da função da aplicação Bluetooth



A aplicação também funciona com controlo por voz, apresentando um funcionamento idêntico quando enunciados os comandos e tem o seguinte aspecto:

Figura 21 - Aplicação Android desenvolvida

Figura 22 - Código da aplicação Android desenvolvida



A função main() começa por executar a função init(), inicializando os portes para os motores (PORTD), para o sensor de luz (PORTC), para o LED de 1Hz (PORTB) e para o módulo Bluetooth. De seguida, entra num ciclo infinito onde são registados os valores provenientes da aplicação móvel, executando de seguida a fun¸ão que contra os motores.

Figura 23 - Fluxograma da função Main

Configurações



Inicialização do PortD, tudo como saídas, mas inicialmente desativadas.

Figura 24



Inicialização do PortB, tudo como saídas, menos o PortB0, pois servia como entrada para o sensor de proximidade.

Figura 25



Inicialização do PortC, para leitura dos ADC0 a ADC5.

Figura 26



Inicialização do Timer/Counter0 que servirá como interrupção para o sensor de luz LDR. O Timer está configurado para modo Normal e com um Prescaler de 1024, tendo também a flag de overflow ativa.

Figura 27



Inicialização do Timer/Counter1 que servirá como interrupção para o led de 1Hz. O Timer está configurado para modo CTC e com um Prescaler de 256, tendo o OCR1A ativo.

Figura 28



Inicialização do Timer/Counter2 que servirá para atribuir velocidades aos motores DC. O Timer está configurado para modo PWM Phase Correct e com um Prescaler de 64, tendo o OCR2A e OCR2B ativos.

Figura 29



Inicialização da USART no modo assíncrono, com uma resolução de 8 bits, velocidade de transmissão normal, bit paridade desativado, 1 bit stop, com a flag RXC0 ativa e com a transmissão e receção dos dados ativa.

Figura 30



Inicialização do comparador analógico ADC, com o AREF como tensão de referência, com resolução de 8 bits e os dados ajustados à esquerda, a não começar a converter e, por fim, um fator de divisão de 128.

Figura 31



Para habilitar todas as interrupções, utilizamos a função sei().

  • Resultados

Início



No vídeo abaixo podemos observar o carro a ser controlado pela aplicação, o funcionamento do sensor de luz é bastante percetível.


  • Conclusões

Início


Como referido no início deste relatório, este projeto tem como objetivo base a construção de um carro controlado tanto por uma aplicação de telemóvel, via Bluetooth, tendo também a funcionalidade de seguir uma linha preta num fundo branco. Para além disso, este carro teria a função de, quando um sensor de proximidade detetar um obstáculo a menos de 5cm, parar completamente, teria um painel solar que carregasse as pilhas que alimentam o carro e, por fim, um sensor de luz que, quando a luminosidade é fraca, ligaria 2 leds para iluminar o caminho.
Infelizmente, os objetivos de o carro seguir a linha preta e do sensor de proximidade detetar os obstáculos não foram concluídos, devido à falta de tempo e conhecimento para concluir o código que permitisse com que estes objetivos propostos fossem concluídos.
Sobre o objetivo do controlo do carro via Bluetooth, tanto foi possível concretizá-lo, como foi também possível implementar uma funcionalidade em que o carro é controlado por voz, em que o usuário, por exemplo, ao dizer "em frente", faz o carro andar em frente e, ao dizer "parar", o carro para de andar.
Futuramente, algumas melhorias a serem implementadas neste projeto, seriam: a conclusão da implementação dos sensores de linha e proximidade, a implementação de uma câmara que permite gravar por onde o carro se está a dirigir e a implementação de um display LCD que mostre a velocidade do carro ou mensagens personalizadas.

  • Referências

Início

[1] - https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf

[2] - https://www.ptrobotics.com/baterias-litium/12153-bateria-de-li-ion-18650-samsung-37v-3000mah-15a.html?gad_source=1&gclid=Cj0KCQiAkeSsBhDUARIsAK3tiedoUO-oquvkLMft2LS2E1Nt5KujG-HETcUj2g-da3Bqgfxz6ReP3p8aAgGgEALw_wcB

[3] - https://www.electrofun.pt/comunicacao/modulo-bluetooth-arduino-hc06

[4] - https://www.electrofun.pt/sensores-arduino/modulo-sensor-detetor-infravermelhos-5-canais

[5] - https://www.electrofun.pt/sensores-arduino/sensor-distancia-hc-sr04

[6] - https://components101.com/sites/default/files/component_datasheet/LDR%20Datasheet.pdf

[7] - https://www.leroymerlin.pt/produtos/energias-renovaveis/paineis-solares-fotovoltaicos/micro-painel-solar-fotovoltaico-de-alta-eficiencia-microsolar-xunzel-6v-150ma-17103212.html?utm_source=google&utm_medium=cpc&utm_campaign=pmax-shopping-ao_energias-renovaveis_ao_google&utm_content=1p&utm_term=&placement=

[8] - https://www.sparkfun.com/datasheets/Robotics/L298_H_Bridge.pdf

[9] - https://mauser.pt/catalog/product_info.php?cPath=1667_2208&products_id=096-8839


Início