Suporte pan/tilt de câmera + módulo laser, controlado pelo Arduino

Um suporte para 2 servos permite ao Arduino controlar para onde o laser aponta.

Um suporte feito para direcionar uma câmera automaticamente, no eixo vertical e horizontal, e voltado a aplicações robóticas ou de modelismo, pode ter inúmeras outras aplicações.

Hoje, a convite da Usinainfo, que patrocinou este meu experimento, vamos conhecer em detalhes uma forma de usar o Arduino para acionar um laser e controlar a direção para a qual ele aponta. A mesma técnica, é claro, poderia ser usada para apontar uma câmera ou sensor.

Pan e tilt estão entre os movimentos mais básicos de uma câmera automática: pan é a oscilação horizontal em um eixo, como quando você olha de um lado para o outro, e tilt é a oscilação vertical em um eixo, como quando você move a cabeça para cima e para baixo.

A implementação usual é com 2 eixos controlados independentemente, e usar um par dos populares e levíssimos servos TowerPro (SG90 e similares) está entre os métodos preferidos para essa aplicação, por pesarem menos de 10g (adequados até mesmo para câmeras de aeromodelos, portanto), moverem seu braço por um ângulo bastante amplo, e serem facilmente controlados – por exemplo, pela biblioteca Servo, que acompanha a IDE do Arduino.

Os mesmos movimentos básicos podem ser usados para várias aplicações que envolvem apontar ou seguir algum objeto: um microfone direcional, o lança-mísseis de um tanque de guerra de brinquedo, um apontador laser automático, etc.

Para a experiência deste artigo, eu pedi para a Usinainfo, parceira do BR-Arduino, 2 produtos:

O primeiro é um kit de 4 peças plásticas e vários parafusos, que se conectam a 2 servos SG90 (não incluídos) para formar um suporte completo pan/tilt:

Depois de montar as 4 peças do suporte pan tilt, fixando a elas os 2 servos, o suporte resultante pode ser preso a alguma superfície (parede, robô, veículo, etc.), e uma câmera com dimensões e peso adequados pode ser fixada.

A montagem é relativamente simples, mas no meu caso envolveu recortar 2 dos braços que acompanham o SG90, a exemplo deste da foto abaixo, que fixa o servo da base, responsável pelo movimento de pan. Note que ele não cabe no espaço em que deve ser fixado (com os parafusos que acompanham o kit), o que depois foi resolvido via cuidadoso recorte com um pequeno alicate:

Fora os recortes, a montagem é bem simples: o SG90 inferior é fixado, de cabeça para baixo, junto à base. O segundo SG90 é fixado de lado, na parte de baixo da plataforma superior. As outras 2 peças abraçam o SG90 inferior, e fixam o braço do SG90 superior.

O resultado parcial (pouco antes de unir a plataforma superior à base) você vê na foto a seguir:

Não se preocupe: sobram vários parafusos e porcas, no final. Eles são para fixar o suporte, ou para prender a câmera a ele.

Com laser!

Meu interesse no suporte pan tilt não é filmar nada, mas sim montar – no futuro – uma máquina de entretenimento para gatos, com um laser ligado a baixa potência, que seja ativado automaticamente ou sob meu comando, e que se movimente em padrões que façam o ponto vermelho na parede atrair a atenção do felino enquanto ele tiver disposição de pular e correr.

Talvez isso ainda seja objeto de outros artigos por aqui no futuro, porque vai envolver mais sensores, controles, e alguma forma de evitar que o felino olhe para o lado errado do feixe de laser – algo que você também deve evitar, assim como deve tomar todas as precauções recomendadas pelo fabricante de qualquer laser que venha a operar.

No momento, concluí apenas o elemento mais básico do futuro projeto: fixei o módulo laser vermelho da Usinainfo à plataforma superior do suporte pan tilt, e escrevi um pequeno programa que movimenta os servos em um padrão simples (horizontal e vertical) enquanto mantém o laser piscando em baixa intensidade luminosa (suficiente para projetar um pontinho vermelho na parede a alguns metros):

O módulo laser da Usinainfo é baseado no KY-008, da Keyes, acionado por apenas 2 pinos: um (marcado como "-" na placa) é conectado ao GND, e o outro (marcado como "S") é conectado a um pino digital e/ou PWM.

Entre o pino S e o emissor de laser há um resistor adequado para funcionamento até 5V, e a corrente não deve chegar passar de 25mA, portanto a ligação pode ser direta entre um pino digital do Arduino e o pino S do módulo.

Meu interesse é usar baixa intensidade luminosa, para evitar cansar a visão de quem estiver observando o ponto projetado na parede, portanto preferi ligar o pino S do módulo em um pino PWM do Arduino (o pino 3), e acioná-lo com um valor bem baixo, pelo comando analogWrite(3,10);. Substituindo o 10 por um número maior, a luminosidade aumenta; para um valor acima de 128 você terá um ponto bem forte, e o máximo é 255 – mas tome todos os cuidados necessários.

O programa a seguir é uma adaptação daquele que já expliquei no artigo “Arduino e servos: como controlar servomotores”, modificado para controlar 2 servos (pinos 9 e 10) e piscar o laser (pino 3):

#include <Servo.h>
Servo sBaixo;
Servo sCima;

void setup() {
  sBaixo.attach(9);
  sCima.attach(10);
  pinMode(3,OUTPUT);
}

int angulo=0;
boolean aceso=false;
const int pausa=35;
const byte angbase=14;
const byte angmax=58;

void loop() {
  for(angulo = angbase; angulo < angmax; angulo++) 
  {                                  
    sBaixo.write(angulo);              
    sCima.write(100-angulo);
    if (angulo % 5 == 0) {
      aceso=!aceso;
      if (aceso) analogWrite(3,10);
      else analogWrite(3,0);             
    }
    delay(pausa);                     
  } 
  for(angulo = angmax; angulo>=angbase; angulo--)      
  {                                
    sBaixo.write(angulo);              
    sCima.write(120-angulo);              
    if (angulo % 5 == 0) {
      aceso=!aceso;
      if (aceso) analogWrite(3,10);
      else analogWrite(3,0);              
    }
    delay(pausa);                       
  }  
}

Embora já tenha explicado no artigo anterior, destaquei em vermelho os trechos necessários para incluir a biblioteca Servo, instanciar nossos 2 SG90 (com os nomes de sBaixo e sCima), e ativá-los, sendo um no pino 9 e outro no pino 10.

Em marrom estão os 2 outros trechos que referenciam os servos, ambos transmitindo a eles qual o ângulo para o qual devem apontar.

Em verde estão a inicialização do pino ao qual está conectado o pino S do nosso módulo laser, e os 2 trechos idênticos que o acendem (com baixa intensidade) e apagam, dependendo da lógica do programa.

O restante do código não tem relação com os periféricos, e é apenas uma sequência de loops que aumenta e diminui o ângulo de cada servo, e decide se o led deve acender ou apagar a cada vez que o ângulo dos servos é múltiplo de 5.

Voltaremos a esse código no futuro, quando for o momento de agregar novas funcionalidades a ele.

Patrocínio: Usinainfo

Quero agradecer à UsinaInfo, que vem patrocinando alguns experimentos do BR-Arduino, inclusive este com o Suporte PAN TILT SG90 - Plataforma Móvel para Robótica, e o Módulo Laser Arduino Vermelho com LED de Alta Potência 5mW.

Além de receber material da empresa para os experimentos como parte do acordo de patrocínio, eu já fiz compras de componentes lá, aproveitando a variedade, o estoque bem suprido, as descrições detalhadas e a qualidade do seu sistema de comércio eletrônico. Recomendo sem ressalvas.

Agradeço também pela confiança que ficou expressa nos termos do patrocínio: a empresa me enviou os componentes necessários ao experimento combinado, mas não fez qualquer exigência sobre a forma e nem buscou exercer controle sobre o que eu fosse escrever. Obrigado, UsinaInfo!

Comentar

Dos leds ao Arduino, ESP8266 e mais

Aprenda eletrônica com as experiências de um geek veterano dos bits e bytes que nunca tinha soldado um led na vida, e resolveu narrar para você o que descobre enquanto explora esse universo – a partir da eletrônica básica, até chegar aos circuitos modernos.

Por Augusto Campos, autor do BR-Linux e Efetividade.net.

Recomendados

Livro recomendado


Artigos já disponíveis

Comunidade Arduino

O BR-Arduino é integrante da comunidade internacional de entusiastas do Arduino, mas não tem relação com os criadores e distribuidores do produto, nem com os detentores das marcas registradas.

Livros recomendados