Descrição:
Nesse projeto vamos utilizar um sensor ultrassônico HC-SR04, juntamente com um servo motor e um LCD 16x2, de forma que, quando o sensor detectar algum objeto em sua linha de ação,
a distância será registrada no LCD e o eixo do servo motor será girado para os graus determinados pelas distâncias programadas para o sensor, ou seja, para cada distância pré-estabelecida
para o sensor, o eixo do servo será girado para um determinado grau, e essas informações serão mostradas no display. Para efeito de conferência, o resultado também será exibido no Monitor
serial do Arduino.
Mas agora vamos conhecer os componentes que farão parte desse projeto.
Sensor Ultrassônico HC-SR04:
O sensor ultrassônico HC-SR04 permite que você faça leituras de distâncias entre 2 cm e 4 metros, com precisão de 3 mm. Ele é um componente muito utilizado em projetos eletrônicos,
principalmente com o Arduino. Ele permite detectar a presença de qualquer obstáculo que se encontre em sua linha de ação, dependendo da distância programada, e acionar portas do microcontrolador,
acionar alarmes e relés, acender LEDs ou lâmpadas, etc.
Podemos calcular a distância do objeto com base no tempo tomado pela onda de ultrassom para retornar de volta para o sensor. Uma vez que o tempo e a velocidade do som são conhecidos, podemos
calcular a distância percorrida pela seguinte fórmula:
distância = (tempo x velocidade do som) / 2 (A velocidade do som é 340 m/s)
O valor é dividido por dois tendo em vista que a onda se desloca para a frente e para trás cobrindo a mesma distância. Esse tipo de sensor é muito utilizado em automóveis para detectar a
distância que se encontra de outro carro ou de um obstáculo qualquer. Muito utilizado também em residências e empresas para detectar a presença de intrusos, entre outras aplicações.
O funcionamento desse sensor se baseia no envio de sinais ultrassônicos através do terminal Trig, que aguarda o retorno do sinal através do terminal Echo, e com base no tempo entre envio
e retorno, calcula-se a distância entre o sensor e o objeto detectado.
Existe no mercado vários tamanhos e formatos desse tipo de sensor, mas, o que vamos utilizar no nosso projeto é o mostrado na Figura 6.1:
Figura 6.1 – Sensor ultrassônico HC-SR04 Frente e verso.
(Imagem: do Autor)
Vejamos algumas especificações técnicas desse componente de acordo com o fabricante:
• Tensão de funcionamento: 5v (DC).
• Corrente estática: Menos de 2mA.
• Sinal de saída: Sinal de frequência elétrica, nível alto 5V, nível baixo 0V.
• Ângulo do sensor: não mais que 15 graus.
• Distância de detecção: 2cm-450cm.
• Alta precisão: até 0.3 cm.
• Sinal de disparo de entrada: 10us impulso TTL.
• Sinal de eco: saída TTL sinal PWL.
Pinagem:
Esse sensor dispõe de apenas quatro pinos (ou terminais). Considerando a imagem de frente do sensor, temos:
• VCC – 5V.
• Trig – envia o sinal.
• Echo – recebe o sinal.
• GND – terra.
Servo Motor:
Um servo motor é um componente muito utilizado em projetos eletrônicos. Ele é com-posto de um pequeno motor, um circuito e várias engrenagens no seu interior, e o giro do seu eixo
pode variar entre 0 e 180 graus. Ele é muito utilizado em aeromodelismo, nautimodelis-mo, robótica, abertura de portas, entre outras aplicações. Por fora podem ser fixados alguns acessórios
que normalmente o acompanham. Para a conexão com o Arduino ele dispõe de três fios: um para a tensão (fio vermelho), um para o terra (fio marrom) e outro para o sinal (geral-mente de cor laranja
ou amarelo, mas pode variar de acordo com o modelo e o fabricante).
Existe no mercado vários tipos de servo motores quanto ao tamanho, formato e torque, mas o que vamos utilizar no nosso projeto é o Tower Pro 9g, mostrado na Figura 6.2:
Figura 6.2 – Servo Motor Tower Pro 9g
e acessórios.
(Imagem: do Autor)
Display LCD 16x2:
Esse componente é utilizado para exibir informações provenientes de resultados obtidos da leitura de outros componentes, como sensores de movimento, ultrassônicos, infravermelho,
de temperatura, etc. Essas informações serão exibidas em um visor de cristal líquido contendo 16 colunas por 2 linhas. Esse componente poderá ser usado com vários tipos de placas
e microcontroladores, tais como Arduino, Raspberry PI, PIC, entre outros. O tamanho, as cores de fundo e dos caracteres variam de acordo com o modelo e o fabricante. Entretanto,
essas características não afetam a finalidade do nosso projeto.
O tipo de display que vamos utilizar em nosso projeto é o mostrado na Figura 6.3:
Figura 6.3 – Display LCD 16x2
(Imagem: do Autor)
Vejamos algumas especificações técnicas desse componente de acordo com o fabricante:
• Módulo I2C 1602 LCD Azul 16x2.
• Tela de cristal líquido para Arduino e outros microcontroladores.
• Com o conversor serial I2C, o módulo usa o chip pcf8574.
• Ele permite que você use este LCD com apenas 4 pinos. Há uma luz de fundo que levaria um quinto pino se você quiser ligar e desligar.
• Tela retro iluminada azul de 16x2 caracteres.
• O conversor I2C incluído salva os pinos no seu projeto.
• O LCD e o conversor são componentes separados com os pinos soldados no conversor.
• Será necessário soldar o conversor no LCD.
Agora que você já conhece o componente essencial para esse projeto, vejamos o material necessário para sua execução:
• 1 Arduino Uno (recomendado) ou compatível.
• 1 Protoboard.
• 1 Sensor ultrassônico HC-SR04.
• 1 Servo Motor TowerPro 9g.
• 1 Display LCD 16x2.
• Alguns jumpers.
Conectando os componentes ao Arduino:
Estando com todo o material em mãos, conecte-os de acordo com o esquema mostrado na Figura 6.4, mas antes certifique-se que o cabo USB do
Arduino esteja desconectado do computador:
Figura 6.4 – Conexão esquemática dos componentes com o Arduino e a protoboard.
(Imagem: do Autor)
Faça as conexões da seguinte forma:
• Arduino – conecte o pino 5V a um dos pinos da trilha vermelha da protoboard (fio vermelho), e o pino GND a um dos pinos da trilha preta da protoboard
(fio preto).
• Sensor Ultrassônico (considerando o verso do sensor e não a frente) – conecte o primeiro pino da esquerda (GND) a um dos pinos da trilha preta
da protoboard (fio azul), o segundo pino (Echo), conecte à saída digital 9 do Arduino (fio laranja), o terceiro pino (Trig), conecte à saída digital 10 do Arduino (fio verde), e finalmente
o quarto pino (VCC), conecte à trilha vermelha da protoboard (fio lilás).
• Display LCD – conecte o primeiro pino da esquerda, VSS (Ground), a um dos pinos da trilha preta da protoboard (fio marrom), o segundo pino, VDD (5V),
conecte a um dos pinos da trilha vermelha da protoboard (fio azul), o terceiro pino, VE (Contrast), deixe desconectado, ou utilize para conectar um potenciômetro para ajustar a luminosidade
do LCD. O quarto pino RS conecte à saída digital 12 do Arduino (fio lilás), o quinto pino, RW, conecte a um dos pinos da trilha preta da protoboard (fio ciano), o sexto pino, conecte à saída
digital 11 do Arduino (fio verde), deixe os próximos 4 pinos desconectados (D0 a D3), o pino D4, conecte à saída digital 5 do Arduino (fio laranja), o pino D5, conecte à saída digital 4 do
Arduino (fio azul), o pino D6, conecte à saída digital 3 do Arduino (fio verde), o pino D7, conecte à saída digital 2 do Arduino (fio vermelho), o penúltimo pino, Backlight Anode, conecte
à um dos pinos da trilha vermelha da protoboard (fio vermelho), e finalmente o pino, Backlight Cathode, conecte à um dos pinos da trilha preta da protoboard (fio preto).
• Servo Motor – conecte o terminal de cor marrom do servo a um dos pinos da trilha preta da proto-board (fio verde), o terminal de cor vermelha
conecte a um dos pinos da trilha vermelha da protoboard (fio vermelho), e o terminal de cor amarela à saída digital 7 do Arduino (fio amarelo).
Para facilitar a conexão do LCD 16x2 com o Arduino e a protoboard, consulte a tabela a seguir:
Tabela 6.1 – Conexão dos pinos do LCD 16x2 com o Arduino e a protoboard.
(Imagem: do Autor)
Veja nas Figura 6.5, 6.6 e 6.7 o mesmo projeto na versão real:
Figura 6.5 – Visão real das conexões dos componentes com o Arduino e a protoboard.
(Imagem: do Autor)
Figura 6.6 – LCD mostrando a distância capturada pelo sensor e o ângulo
do servo motor.
(Imagem: do Autor)
Figura 6.7 – Posição do sensor na protoboard.
(Imagem: do Autor)
Criando o sketch:
Para a criação do nosso sketch, você precisa primeiro baixar e instalar a seguinte biblioteca no Arduino necessária para a execução do projeto. Se a mesma já estiver instalada,
execute o passo seguinte:
Instalando a biblioteca Ultrasonic:
• Faça o download da biblioteca Ultrasonic no link:
Biblioteca Ultrasonic
E salve-a em algum lugar de sua preferência.
• Descompacte o arquivo e mova ou copie a pasta MFRC522 para o diretório libraries do Arduino (onde ele foi instalado).
• Execute o Arduino e verifique se a biblioteca instalada faz parte da lista de bibliotecas utilizando o menu: Sketch >> Incluir Biblioteca.
Ela deve estar no final da lista com o nome: Ultrasonic.
OBS.: Se o Arduino já estiver sendo executado será necessário fechá-lo e executá-lo novamente para que a biblioteca seja incluída na lista.
Agora que a biblioteca está devidamente instalada e os componentes conectados, digite o código da Listagem 6.1 (desconsidere os números à esquerda,
só servem como referência), ou carregue o arquivo (leitor_rfid) utilizando o link:
Sensor com Servo e LCD
E abra no editor do Arduino.
Listagem 6.1
Salve esse projeto com o nome (sugestão) de: sensor_lcd_servo.
Alguns comentários sobre o código:
1) Na linha 7 foi incluída a biblioteca Ultrasonic.
2) Na linha 9 incluímos também a biblioteca do servo, e na linha 11 incluímos a biblioteca do LCD, necessárias para a execução do nosso projeto.
3) Na linha 13 definimos os pinos do Arduino onde serão conectados os pinos do LCD.
4) Nas linhas 17 e 18 definimos as constantes trigPin e echoPin para as conexões dos pi-nos do sensor com os pinos 10 e 9 do Arduino, respectivamente.
5) Na linha 20 declaramos a variável inteira servoPin para definir a conexão com o pino 7 do Arduino.
6) Na linha 22 criamos um objeto do tipo Ultrasonic para inicializarmos os pinos do sen-sor.
7) Na linha 24 declaramos a variável inteira angulo para armazenar o ângulo do servo.
8) Na linha 28 inicializamos o LCD definindo o número de colunas e linhas.
9) Na linha 32 definimos o ângulo que o servo será iniciado toda vez que o código for executado, ou seja, zero graus.
10) Nas linhas 33 a 35 definimos os pinos de entrada e saída do sensor e do servo. Na fun-ção loop() descrevemos várias situações onde o eixo do servo deverá
girar de acordo com as distâncias preestabelecidas no código.
Executando o projeto:
Inicialmente conecte o cabo USB no computador, selecione uma porta utilizando o menu Ferramentas/Porta, e em seguida faça o upload do código para o
Arduino clicando no ícone Carregar (ou utilize o menu Sketch >> Carregar). Se o seu código apresentar algum tipo de erro, ele será identificado
com uma tarja sobre a linha onde se encontra o erro e/ou no rodapé do Editor, isso vai depender do tipo de erro. Cabe a você procurar saber que tipo de erro ocorreu e consertá-lo.
Testando o projeto:
Após a execução do código, o projeto deverá mostrar no Monitor serial as distâncias captadas pelo sensor e os respectivos giros do eixo do servo (em graus), conforme mostra
a (Figura 6.8):
Figura 6.8 – Monitor mostrando a distância detectada pelo sensor
e o giro do eixo do servo motor (em graus).
(Imagem: do Autor)
Atividade:
1) Adicione quatro LEDs (de cores diferentes) ao projeto, e altere o código de forma que, um LED fique aceso para cada giro do eixo do servo (por exemplo: 30, 60, 90 e 120 graus),
e mostre no Monitor serial e no LCD a cor do LED referente a cada giro. Quando o eixo do servo estiver na sua posição original (zero grau), todos os LEDs deverão ficar apagados.
Dúvidas:
E-mail: jorge.eider@gmail.com
WhatsApp: (55) 84-99988-4136
|
|