Índice:

Boe-Bot com detectores infravermelhos: 12 etapas (com fotos)
Boe-Bot com detectores infravermelhos: 12 etapas (com fotos)

Vídeo: Boe-Bot com detectores infravermelhos: 12 etapas (com fotos)

Vídeo: Boe-Bot com detectores infravermelhos: 12 etapas (com fotos)
Vídeo: Arduino BOE-Bot: Object Detection with the IR Headlamps 2024, Julho
Anonim
Boe-Bot com detectores infravermelhos
Boe-Bot com detectores infravermelhos

Este instrutível irá demonstrar como construir e codificar um Boe-Bot que pode navegar por um labirinto usando detectores infravermelhos para evitar obstáculos. Este é um guia fácil de seguir que permite modificações fáceis para atender às suas necessidades. Isso requer um conhecimento básico de circuitos e programação. Você precisará do software BASIC Stamp IDE para este projeto. Gratuito para download aqui. Bem como o Robô Boe-Bot

Etapa 1: Recursos

Componentes eletrônicos

Boe-Bot com cabo conector Parallax Store - BoeBot Kit

Loja de paralaxe de 5 LEDs infravermelhos - kit de montagem do transmissor infravermelho

5 conjuntos de proteção infravermelha

5 detectores infravermelhos Parallax Store - BoeBot IR Receiver

Resistores

  • (2) 4,7 kΩ ABRA Electronics - 4,7 kΩ
  • (5) 220 Ω ABRA Electronics - 220 Ω
  • (2) 1 kΩ ABRA Electronics - 1 kΩ
  • (5) 2 k ABRA Electronics - 2 kΩ

Fiação sortida ABRA Electronics - Fio de bitola 22

Eletrônica ABRA de 3 LEDs - LED vermelho de 5 mm

Apoio, suporte

Computador

BASIC Stamp Editor - (Freeware)

Ferramentas

Cortador de fio ABRA Electronics - Cortador de fio (opcional)

Descascador de fios ABRA Eletrônica - Descascador de fios

Diversos

Paredes (para construir labirinto)

Etapa 2: Compreendendo como a detecção de infravermelho funciona (opcional)

Compreendendo como a detecção de infravermelho funciona (opcional)
Compreendendo como a detecção de infravermelho funciona (opcional)

Faróis infravermelhos

O sistema de detecção de objetos infravermelhos que construiremos no Boe-Bot é como os faróis de um carro em vários aspectos. Quando a luz dos faróis de um carro reflete nos obstáculos, seus olhos detectam os obstáculos e seu cérebro os processa e faz seu corpo guiar o carro de acordo. O Boe-Bot usará LEDs infravermelhos para faróis. Eles emitem infravermelho e, em alguns casos, o infravermelho reflete em objetos e salta de volta na direção do Boe-Bot. Os olhos do Boe-Bot são os detectores infravermelhos. Os detectores infravermelhos enviam sinais indicando se detectam ou não infravermelho refletido em um objeto. O cérebro do Boe-Bot, o BASIC Stamp, toma decisões e opera os servo motores com base nesta entrada do sensor. Figura 7-1 Detecção de objeto com faróis de infravermelho Os detectores de infravermelho possuem filtros óticos integrados que permitem muito pouca luz, exceto o infravermelho de 980 nm que queremos detectar com seu sensor fotodiodo interno. O detector infravermelho também possui um filtro eletrônico que permite a passagem de apenas sinais em torno de 38,5 kHz. Em outras palavras, o detector está procurando apenas infravermelho que está piscando 38, 500 vezes por segundo. Isso evita a interferência de IV de fontes comuns, como luz solar e iluminação interna. A luz solar é uma interferência DC (0 Hz), e a iluminação interna tende a acender e apagar a 100 ou 120 Hz, dependendo da fonte de alimentação principal da região. Uma vez que 120 Hz está fora da frequência de passagem de banda de 38,5 kHz do filtro eletrônico, é completamente ignorado pelos detectores de IV.

-Guia do Aluno Paralax

Etapa 3: Montagem de LEDs IR

Montagem de LEDs IR
Montagem de LEDs IR

Insira o LED IR na parte maior do invólucro

Coloque a parte transparente do LED com a parte menor do invólucro

Etapa 4: Teste de pares infravermelhos - circuito

Testando pares infravermelhos - circuito
Testando pares infravermelhos - circuito
Testando pares infravermelhos - circuito
Testando pares infravermelhos - circuito

Antes de nos aprofundarmos em algo, faremos um teste para ter certeza de que o par de infravermelho funciona (um LED infravermelho e um detector infravermelho).

Comece construindo o circuito acima na placa de ensaio montada na parte superior do seu Boe-Bot

Etapa 5: Teste de pares infravermelhos - Código básico

Claro, vamos precisar escrever código para nossos pares IR funcionarem

Para isso, utilizará o comando FREQOUT. Este comando foi projetado para tons de áudio, porém pode ser usado para produzir frequências na faixa do infravermelho. Para este teste, usaremos o comando:

FREQOUT 8, 1, 38500

isso enviará uma frequência de 38,5 kHz que dura 1 ms para P8. O circuito do LED infravermelho conectado ao P8 transmitirá esta frequência. Se a luz infravermelha for refletida de volta para o Boe-Bot por um objeto em seu caminho, o detector infravermelho enviará ao BASIC Stamp um sinal para informá-lo de que a luz infravermelha refletida foi detectada.

A chave para fazer um par de IR funcionar é enviar 1 ms de FREQOUT de 38,5 kHz e armazenar imediatamente a saída do detector de IR em uma variável.

Este exemplo mostra o armazenamento do valor do detector de infravermelho em uma variável de bit chamada irDectectLeft

FREQOUT 8, 1, 38500

irDetectLeft = IN9

O estado de saída do detector de IV quando ele não vê nenhum sinal de IV é alto. Quando o detector de IV vê o harmônico de 38500 Hz refletido por um objeto, sua saída é baixa. A saída do detector de IR apenas permanece baixa por uma fração de milissegundo após o comando FREQOUT terminar de enviar o harmônico, por isso é essencial armazenar a saída do detector de IR em uma variável imediatamente após o envio do comando FREQOUT. O valor armazenado pela variável pode então ser exibido no Terminal de Depuração ou usado para decisões de navegação pelo Boe-Bot.

Etapa 6: Teste de pares infravermelhos - Hardware + Software

Testando pares infravermelhos - Hardware + Software
Testando pares infravermelhos - Hardware + Software

Agora que você conhece o básico, podemos colocar o hardware e o software juntos para testar um par e obter feedback em tempo real do que o par de infravermelho está detectando

Você pode tentar criar o código sozinho ou usar o código abaixo

'{$ STAMP BS2}

'{$ PBASIC 2.5} irDetectLeft VAR Bit DO FREQOUT 8, 1, 38500 irDetectLeft = IN9 DEBUG HOME, "irDetectLeft =", BIN1 irDetectLeft PAUSE 100 LOOP

  1. Deixe o Boe-Bot conectado ao cabo serial, pois você usará o Terminal DEBUG para testar seu par de infravermelho.
  2. Coloque um objeto, como sua mão ou uma folha de papel, a cerca de 2,5 cm do par infravermelho esquerdo
  3. Verifique se quando você coloca um objeto na frente do par de infravermelho, o Terminal de depuração exibe um 0 e, quando você remove o objeto da frente do par de infravermelho, exibe um 1.
  4. Se o Debug Terminal não exibir os valores esperados, tente as etapas da Etapa de Solução de Problemas.

Etapa 7: Solução de problemas (para problemas com a última etapa)

DEBUG Terminal exibindo valores inesperados

Verifique o circuito quanto a curtos, conectores mal colocados ou ausentes, componentes danificados, resistores incorretos ou qualquer outro problema visível

Verifique os erros lógicos ou de sintaxe do programa - Se você usou seu próprio código na última etapa, considere usar o código fornecido

Sempre obtendo 0, mesmo quando não há objetos é colocado na frente do Boe-Bot

Verifique se há algum objeto próximo que esteja refletindo o sinal infravermelho. A mesa em frente ao Boe-Bot pode ser a causa. Mova o Boe-Bot para um espaço aberto para que o LED IR e o detector não reflitam em nenhum objeto próximo.

A leitura é 1 na maioria das vezes quando não há nenhum objeto na frente do Boe-Bot, mas pisca para 0 ocasionalmente

Pode haver interferência de uma luz fluorescente próxima; Desligue todas as luzes fluorescentes próximas e repita os testes. Se o problema persistir, a etapa 9 pode revelar o problema

Etapa 8: Segundo Par IR

Segundo Par IR
Segundo Par IR

Agora que você tem o programa para o IR esquerdo, é sua vez de fazer o circuito e programar o par IR direito

  1. Altere a instrução DEBUG, o título e os comentários para se referir ao par de IR correto.
  2. Altere o nome da variável de irDetectLeft para irDetectRight. Você precisará fazer isso em quatro lugares do programa.
  3. Altere o argumento Pin do comando FREQOUT de 8 para 2.
  4. Altere o registro de entrada monitorado pela variável irDetectRight de IN9 para IN0.
  5. Repita as etapas de teste nesta atividade para o par de infravermelho correto; com o circuito do LED IV conectado a P2 e o detector conectado a P0.

Etapa 9: Detecção de interferência infravermelha (opcional)

Detecção de interferência infravermelha (opcional)
Detecção de interferência infravermelha (opcional)

Se você está tendo problemas com a detecção de sinais que não deveriam ser detectados ou se planeja demonstrar sua detecção de infravermelho em um local alternativo, você pode querer testar a interferência.

O conceito deste programa de teste é bastante simples, você detecta sinais infravermelhos sem enviá-los.

Você pode usar exatamente o mesmo circuito, mas terá que alterar o código. você pode escolher escrever seu próprio código, mas pode usar o código fornecido abaixo:

'{$ STAMP BS2}

'{$ PBASIC 2.5} irDetectLeft VAR Bit DO irDetectLeft = IN9 irDetectRight = IN0 IF IN9 = 0 OU IN0 = 0 THEN DEBUG "Interferência detectada" PAUSE 100 LOOP

Se você experimentar interferência, determine a fonte provável e desligue-a / remova-a ou mude para onde você opera seu Boe-Bot.

Etapa 10: Adicionando Mais Pares IR

Adicionando mais pares IR
Adicionando mais pares IR

Se você deseja mais precisão no movimento do seu Boe-Bot, pode adicionar mais pares de infravermelho. 3 Melhora muito o desempenho em comparação com dois; você pode usar um par central para procurar um obstáculo direto e usar dois IRs laterais para determinar quanto virar. No entanto, a desvantagem do design de 3 pares IR é que você pode saber quando está deslizando contra uma parede, porque o par IR central é usado para detectar obstáculos. Para resolver esse problema, você pode adicionar um par de infravermelho a cada lado com um valor de resistência alto - portanto, o sinal infravermelho só será detectado se o Boe-Bot estiver próximo à lateral ou a uma parede em um ângulo suave.

Etapa 11: Cinco pares IR - circuito

Cinco pares IR - circuito
Cinco pares IR - circuito

Tenha cuidado ao direcionar os dois LEDs IR na lateral, pois torcê-los pode fazer com que os condutores se toquem e causar um curto-circuito.

Etapa 12: Cinco pares IR - Código

Cinco pares de IR - Código
Cinco pares de IR - Código

Você pode querer tentar programar seu Boe-Bot antes de usar este código:

'{$ STAMP BS2}' {$ PBASIC 2.5} 'Código de eliminação de cinco pares de IV' Matthew Shaw '8 de maio de 2019 (versão 7)' Detecção de objetos e processamento lógico básico para resolver labirintos

irDetectLeft VAR Bit 'Variável para a esquerda

irDetectCentre VAR Bit 'Variável para o centro irDetectRight VAR Bit' Variável para a direita irDetectLSide VAR Bit 'Variável para o lado esquerdo irDetectRSide VAR Bit' Variável para o lado direito irDetectLSideFar VAR Bit 'Variável para o lado esquerdo baixa resistência irDetectRSideFar VAR Bit' Variável para o lado direito resistência baixa

mLoop VAR Word

Lmotor PIN 15 'O motor esquerdo está conectado ao pino 14, os pulsos passam por aqui

Rmotor PIN 14 'right = 15

'as velocidades são -> 650-750-850

LFast CON 850 'Conastante para motor esquerdo em velocidade total RFast CON 650' Conastante para motor direito em velocidade total

LStop CON 750 'Conastant para motor esquerdo em velocidade total

RStop CON 650 'Conastant para o motor correto em velocidade total

LMid CON 830 'Conastante para motor esquerdo em velocidade média

RMid CON 700 'Conastant para motor correto em velocidade média

LSlow CON 770 'Conastante para motor esquerdo na velocidade mínima

RSlow CON 730 'Conastante para o motor correto na velocidade mínima

LRev CON 650 'Conastante para motor esquerdo em velocidade total em reverso

RRev CON 850 'Conastante para motor esquerdo em velocidade total em reverso

FREQOUT 7, 1, 38500 'lado esquerdo

irDetectLeft = IN8

FREQOUT 6, 1, 38500 'centro

irDetectCentre = IN5

FREQOUT 3, 1, 38500 'lado direito

irDetectRight = IN2

FREQOUT 10, 1, 38500 'Esquerda Fechar

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'à direita Fechar

irDetectRSide = IN0

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'lado direito

irDetectRSideFar = IN0

IF irDetectLSide = 0 AND irDetectRSide = 0 THEN main 'COMANDO DE INICIALIZAÇÃO acene com as mãos pelos dois detectores laterais para iniciar o programa

Principal:

PAUSE 1000 DO

PULSOUT Lmotor, motor esquerdo LFast 'funciona em velocidade total

PULSOUT Rmotor, RFast 'Motor direito funciona em velocidade total

FREQOUT 6, 1, 38500 'centro

irDetectCentre = IN5

FREQOUT 10, 1, 38500 'Esquerda Fechar

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'lado direito

irDetectRSide = IN0

IF irDetectLSide = 0 AND irDetectRSide = 1 THEN

DO PULSOUT Lmotor, LFast

FREQOUT 6, 1, 38500 'centro

irDetectCentre = IN5 IF irDetectCentre = 0 THEN cent

FREQOUT 10, 1, 38500 'Esquerda Fechar

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'lado direito

irDetectRight = IN2

LOOP ATÉ irDetectLSide = 1 OU irDetectRSide = 0

ELSEIF irDetectLSide = 1 AND irDetectRSide = 0 THEN

DO PULSOUT Rmotor, RFast

FREQOUT 6, 1, 38500 'centro

irDetectCentre = IN5 IF irDetectCentre = 0 THEN cent

FREQOUT 10, 1, 38500 'Esquerda Fechar

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'lado direito

irDetectRight = IN2

LOOP ATÉ irDetectLSide = 0 OU irDetectRSide = 1

'FIM SE

SE irDetectCentre = 0 ENTÃO 'INICIAR

FREQOUT 7, 1, 38500 'lado esquerdo irDetectLeft = IN8

FREQOUT 6, 1, 38500 'centro

irDetectCentre = IN5

FREQOUT 3, 1, 38500

irDetectRight = IN2

PAUSE 1000 'pausa para mostrar o sinal detectado

IF (irDetectLeft = 1 AND irDetectRight = 0) THEN 'avalia a duração

GOSUB virar à esquerda

ELSEIF (irDetectLeft = 0 AND irDetectRight = 1) ENTÃO

GOSUB à direita

ELSEIF (irDetectLeft = 1 AND irDetectRight = 1) ENTÃO

GOSUB turnDecide

OUTRO

GOSUB turnReverse

FIM SE

ENDIF 'END

CICLO

FIM

Vire à esquerda:

DO PULSOUT Lmotor, LRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 LOOP ATÉ IN0 = 1 RETURN

Vire à direita:

DO PULSOUT Rmotor, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 LOOP ATÉ IN9 = 1

RETORNA

turnReverse:

PARA mLoop = 0 A 50 PULSOUT Rmotor, RRev PULSOUT Lmotor, LRev PAUSE 20 PULSOUT Lmotor, LRev PAUSA 20 PRÓXIMO DO PULSOUT Rmotor, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT Lmotor, LRev PAUSE 20 PRÓXIMO DO PULSOUT Rmotor, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetLeft 5, 38500 irDetectRight = IN0 LOOP ATÉ IN9 = 1

RETORNA

turnDecide: 'usa menor resistência para ver mais longe

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'lado direito

irDetectRSideFar = IN0

IF (irDetectLSideFar = 1 AND irDetectRSideFar = 0) THEN 'avalia a duração

GOSUB virar à esquerda

ELSEIF (irDetectLSideFar = 0 AND irDetectRSideFar = 1) ENTÃO

GOSUB à direita

ELSEIF (irDetectLSideFar = 1 AND irDetectRSideFar = 1) ENTÃO

GOSUB virar à esquerda

OUTRO

GOSUB turnReverse

FIM SE

RETORNA

Recomendado: