Como acionar laser por sensor ultrassônico

Esses módulos laser são muito legais para fazer brinquedos. Claro, ele pode ser utilizado também como interrupção em alarmes fotosensíveis, mas não é comum encontrar, exceto em filmes de espionagem. Mas para utilizar com Arduino é uma ótima opção, pois se trata de um diodo laser de 5V e varia entre 2 e 5mW de potência com comprimento de onda em 650nm. Sua temperatura de operação fica em torno de -10 à 40 graus, portanto não deve servir pra brincar em Moscow nem no Piaui, onde nesse último temos apenas três estações ao ano; quente, fervendo e mormaço – e com o tal do aquecimento global, passaremos a verão e inferno. Continuando.

No post anterior mostrei o quadrúpede que utilizará o sensor ultrassônico e disparará o laser sob ameaça. Um gatilho possível para identificação de ameaça seria uma aproximação abrupta em relação à última medição do sensor, indicando um ataque como por exemplo, alguém se aproximando ou atacando o robô a vassouradas. Não se iluda, não há inteligência nenhuma nesse processo, mas é um bom gatilho e funcionará bem no robô, por isso vamos fazer uma brincadeira nesse artigo e o resultado será agregado no robô do post anterior. A brincadeira será fazer uma aproximação suave de forma a não disparar o laser. Para isso, faremos a configuração do sensor ultrassônico e uma memória de tempo/distância para comparar o estado atual com o estado anterior, se a distância for maior que X, o laser dispara por um breve momento, digamos, 1 segundo. E já que estou com a mão na massa, vou aproveitar para fazer um alarme simples utilizando um LDR e um laser, disparando uma sirene em um buzzer simples.

Lista de material

Uma característica interessante do módulo laser é que o ajuste do feixe pode ser feito girando sua ponta para esquerda ou direita, mas a curta distância não há diferença notável. Se pretende fazer o alarme, certamente precisará de um segundo arduino, exceto monte um circuito simples analógico para o laser, em uma protoboard ou em uma placa de prototipagem.

Wiring do laser





Antes de citar diretamente o wiring, gostaria de sugerir como dica que sempre que possível, faça o teste individual dos componentes. Por exemplo o laser, coloquei-o em uma protoboard alimentando-o com 5V no fio vermelho (que é o positivo do laser) junto ao resistor, enquanto o fio azul foi conectado ao ground exposto na protoboard.

O projeto 1 é a conclusão de uma das fases para o robô quadrúpede, que é a sensibilidade a ataque através da medição de distância com mudança drástica. Para essa fase utilizaremos uma protoboard na qual disporemos o sensor ultrassônico e o módulo laser. Também adicionamos um resistor de 330ohms para o módulo laser e o restante é só programação!

Como queremos interromper e acionar o laser, teremos que utilizar um GPIO invés de alimentação no 5V diretamente como no teste. Para isso, utilizaremos o  10 do Arduino, mas nele ligaremos o fio azul, que é GND. Desse modo, quando colocarmos o pino 10 em HIGH, o laser se apagará e quando colocarmo em LOW, ele se acenderá. O laser tem um consumo baixo o suficiente para ser alimentado diretamente pelo pino do Arduino e se desejar, utilize a lógica comum. Eu sempre prefiro utilizar os pinos apenas para GND quando possível para evitar sobrecarga na controladora.

Laser Arduino
Azul 10
Vermelho 5V

Wiring do sensor ultrassônico

Esse sensor tem uma faixa de medição entre 2cm e 400cm com precisão variante entre 3mm. Ele opera em 5V e consome meros 15mA. Possui um ângulo de medição de 15 graus. É importante considerar esse ângulo porque conforme a distância da medição, objetos arredores poderão influenciar no resultado.

O sensor ultrassônico é muito simples de utilizar também, inclusive já escrevi esse tutorial anteriormente para esse outro robô que fiz com partes de carrinho, parte de HD etc. Ficou bacana, tem até um video do brinquedo que vira o “pescoço” para procurar um caminho:

http://138.197.15.0/eletronica-digital-nasce-um-robo/

O wiring é simples e utilizam os pinos 12 e 13 do Arduino, seguindo o código de exemplo disposto logo mais adiante. Quanto à conexão, o datasheet fez um parágrafo de atenção dizendo que primeiramente deve-se conectar o GND para não afetar o modo de operação do módulo.

Caso tenha interesse, eis o datasheet do HC-SR04 (PDF).

Olhando-o de frente, o dispositivo tem a sequência de pinos VCC, Trig, Echo, GND.

HC-SR04
HC-SR04

Infelizmente (pra mim) não encontrei um desenho pronto no Fritzing (procurando pelo google images) que correspondesse ao wiring do código. Como estou demasiadamente preguiçoso hoje, vou só recomendar; na ordem que você vê a imagem acima:

HC-SR04 Arduino
VCC 5V
Trig 12
Echo 13
GND GND

Codificando

O primeiro passo é fazer funcionar. Em seguida, aplicam-se as lógicas necessárias para atender o propósito. Acontece que a biblioteca que utilizei no meu artigo sobre o sensor ultrassonico é muito antiga. Ainda assim, você pode baixá-la nesse link se desejar, mas temos uma nova biblioteca que pode ser baixada aqui. Baixe-o e descomprima-o dentro do diretório libraries, contido na raiz do diretório da sua IDE do Arduino. Por exemplo, “/home/djames/arduino-1.6.13/libraries”. Depois abra a IDE e use esse código de exemplo:

Não dá pra ser mais fácil que isso, hum? Agora vamos fazer um código de controle do laser:

Esse código faz o laser piscar em intervalos de 600ms. Se você inverter a lógica, vai funcionar do mesmo modo, portanto preste atenção na de fazer o wiring, conforme explicado lá em cima do artigo.

Código para acionar o laser conforme a distância do alvo

Vou ter que repetir um pouco do que já escrevi, sinto muito fazê-lo, mas precisamos recaptular o objetivo.

Para ficar divertido, não basta que o alvo esteja próximo. Se o robô estiver andando e se aproximar de uma parede, ele dispararia o laser e não faria muito sentido. Como esse artigo tem o objetivo de familiarizá-lo com a dupla laser/ultrassom, não colocaremos a inteligência necessária para que seja aplicável no robô, isso ficará para o respectivo artigo. Mas para não ser algo simples demais, vamos fazer um algorítmo para brincar:

  • cria-se uma variável de distância limite inicial
  • cria-se uma variável para memorizar a distância a cada loop
  • cria-se uma variável para definir o limite entre tempo A e tempo B
  • compara a distância atual com a anterior e, em caso de mudança abrupta, dispara o laser
  • delay de 1 segundo e desliga o laser

Vejamos como isso fica no código:

Porém tive um problema; meu sensor ultrassônico está um pouco torto e está gerando ruído. Fiz um teste colocando um envelope de papel entre o echo e o trigger, mas ainda assim não conseguir tirar bons valores e não consegui confirmar se o código está bom ou se tem erro de lógica, fiz o teste básico e a parte do laser não funcionou bem o suficiente, mas consegui notar mudanças. Se possível, faça o teste também. No próximo artigo do quadpod vamos integrar isso, até lá já estarei com um novo sensor ultrassônico provavelmente.

Já no próximo artigo pretendo mostrar como fazer um alarme de interrupção com o laser e LDR, é só acompanhar.

Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte – https://www.facebook.com/groups/dobitaobyte/

Projetos Arduino e Eletrônica – https://www.facebook.com/groups/projetosarduinoeletronica/

ESP8266 BR – https://www.facebook.com/groups/ESP8266BR/

Próximo post a caminho!

Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.

Um comentário em “Como acionar laser por sensor ultrassônico

Comentários estão encerrados.