Detectar obstáculos de maneira assíncrona com ultrassons: 4 etapas
Detectar obstáculos de maneira assíncrona com ultrassons: 4 etapas
Detectar obstáculos de maneira assíncrona com ultrassons
Detectar obstáculos de maneira assíncrona com ultrassons

Estou construindo para me divertir um robô que quero mover autonomamente dentro de uma casa.

É um trabalho longo e estou fazendo passo a passo.

Este foco instrutível na detecção de obstáculos com Arduino Mega

Os sensores ultrassônicos HC-SR04 vs HY-SRF05 são baratos e simples de usar, mas podem se tornar difíceis de integrar no loop do microcontrolador em um robô complexo. Eu queria executar a detecção de obstáculos de forma assíncrona.

_

Já publiquei 3 instrutíveis sobre os recursos deste robô:

  • Faça seu codificador de roda
  • Faça o seu WIFI Gateway
  • Usar unidade de módulo inercial

E uma documentação sobre como combinar inteligência artificial e ultrassom para localizar o robô.

Etapa 1: Qual é exatamente o problema com sensores ultrassônicos e microcontroladores?

Qual é exatamente o problema com sensores ultrassônicos e microcontroladores?
Qual é exatamente o problema com sensores ultrassônicos e microcontroladores?
Qual é exatamente o problema com sensores ultrassônicos e microcontroladores?
Qual é exatamente o problema com sensores ultrassônicos e microcontroladores?

Espera síncrona e limitações do Arduino

O código dos microcontroladores é executado em um loop e não oferece suporte a multithread. Os sensores ultrassônicos são baseados na duração do sinal. Esta duração dura até 30 m s, o que é muito longo para esperar dentro do loop quando os microcontroladores têm que lidar com vários motores e sensores (por exemplo, servo e motores DC com codificadores de roda).

Então, eu queria desenvolver um objeto que rodasse de forma assíncrona.

Etapa 2: Como funciona?

Como funciona ?
Como funciona ?

Ele foi projetado para Atmega para detecção de obstáculos. Suporta até 4 sensores ultrassônicos.

Graças à interrupção periódica do tempo, o sistema pode monitorar até 4 sensores ultrassônicos. O código principal só tem que definir qual sensor ativar com condição e limite. O principal será interrompido apenas no caso de (condição, limite) aparecer.

As principais funções são:

  • Alerta é a detecção básica de obstáculos e fornece interrupção se pelo menos 1 dos 4 sensores detectar uma distância abaixo do limite
  • Monitorar é uma função estendida que fornece interrupção em uma combinação de condição de distância de até 4 sensores. As condições possíveis são acima, abaixo, iguais ou diferentes dos limites.

Etapa 3: detalhes técnicos

Use o temporizador 4 para que o pino 6 7 8 não possa ser usado como PWM.

Para cada sensor, o objeto precisa de um PIN de gatilho e um PIN de interrupção.

Além dos PINs de interrupção de sensores, o objeto precisa de outro PIN de interrupção para uso do software.

Etapa 4: como implementar?

Como implementar?
Como implementar?

Conecte os sensores como acima

Baixe deste repositório GitHub

  • EchoObstacleDetection.cpp,
  • EchoObstacleDetection.h
  • ExampleEchoObstacleDetection.ino

Crie o diretório EchoObstacleDetection dentro de sua biblioteca IDE e mova os arquivos.cpp e.h

Teste-o

Abra ExampleEchoObstacleDetection.ino.

Este é um exemplo simples de detecção de obstáculos em execução com 2 sensores ultrassônicos.

A saída é direcionada ao monitor serial. A princípio, ele imprimirá as distâncias detectadas pelos 2 sensores e, em seguida, imprimirá alertas dependendo das distâncias abaixo dos limites.

Recomendado: