Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
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?
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?
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?
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.