Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Componentes e Materiais

Componente Quantidade Observações
Arduino UNO 1
PCB Personalizada (PCBWay) 1 Projeto no PCBWay
Trilho Linear V-Slot 20×40 1 Comprimento conforme necessidade
Kit Roda V Sólida (Solid V Wheel) 4
Porcas T de Encaixe (Drop In Tee Nuts) 4
Espaçador Excêntrico 2
Espaçador de Alumínio 9mm 2
Espaçador de Alumínio 3mm 2
Parafusos M5 Baixo Perfil 20mm com Porcas 4
Parafusos M5 Baixo Perfil 10mm 4
Parafusos Allen M3 16mm com Porcas 8
Mancal de Flange Autoalinhável 8mm 2
Polia GT2 Furo 8mm 20 Dentes Alumínio 1
Eixo Linear 8mm 1 Comprimento 60mm
Polia GT2 Furo 5mm 20 Dentes Alumínio 1
Correia Dentada GT2 6mm Aberta 1 Comprimento depende do trilho
Motor de Passo Bipolar NEMA17 1
Driver de Motor de Passo A4988 1
Bateria Recarregável 12V 3A 1
Módulo Bluetooth HC-05 1

Ferramentas Necessárias

Aplicativos e Serviços Online

Sobre o Projeto

Visão Geral

Para quem gosta de gravar vídeos amadores, comprar um slider motorizado para câmera costuma ser caro. Por isso, construí o meu próprio. Neste tutorial, passaremos por cada etapa para construir seu próprio slider motorizado controlado por Bluetooth.

Hoje construiremos um slider motorizado que pode ser controlado sem fio via Bluetooth a partir de um aplicativo Android personalizado. Usei a ferramenta "MIT App Inventor" para criar o app, que permite controlar velocidade do slider, distância de percurso, taxa de aceleração/desaceleração e muito mais. O aplicativo é muito robusto: nele você define o comprimento do seu slider, o que significa que você pode construir sliders de qualquer comprimento até 10 metros sem se preocupar com o app.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Utilizamos um motor de passo NEMA17 como atuador, permitindo controlar precisamente quantos passos o slider deve mover. Para controlar o motor de passo com o Arduino, precisamos de um "tradutor" que converta os comandos do Arduino na linguagem que o motor entende. Aqui entra o driver A4988 Pololu, que oferece cinco resoluções de microstep (até 1/16 de passo) para máxima precisão e suavidade de movimento.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Este projeto foi projetado pensando na fabricação em fablabs, makerspaces ou hackerspaces.

Modelagem CAD e Impressão 3D

Usamos o Fusion 360 para projetar o slider, escolhendo componentes mecânicos bem conhecidos e fáceis de encontrar em lojas online ou físicas, não importa onde você more.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Utilizamos hardware OpenBuilds para a estrutura mecânica: o trilho linear V-Slot 2040 guia o movimento da câmera. Duas polias — uma no eixo do motor de passo e outra em um eixo linear de 8mm no lado oposto — conectadas por uma correia dentada aberta convertem o movimento rotativo do motor em movimento linear.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

O eixo linear de 8mm é instalado entre dois mancais de flange autoalinháveis, fixados nas placas superior e inferior por quatro parafusos M5.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Usamos quatro rodas Delrin V-Slot sólidas que deslizam no canal em V do trilho V-Slot, garantindo movimento extremamente suave. O centro da placa da câmera tem um furo de 1/4 polegada para parafuso de tripé padrão, facilitando a montagem da câmera.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Por fim, um gabinete para a eletrônica. Todas as peças do slider são fixadas com parafusos M3×16mm e porcas.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Fabricação Digital (Impressão 3D)

Todo o corpo do slider é impresso em 3D com altura de camada 0.2mm e 20% de preenchimento, exceto as pernas esquerda e direita, que usam 50% de preenchimento para maior resistência.

Arquivos STL disponíveis para download no Thingiverse.

Montagem do Kit de Rodas V

A montagem é simples. Primeiro, montamos as quatro rodas V sólidas. Cada kit vem com roda de borracha, dois rolamentos, dois espaçadores de precisão e uma porca de travamento.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Insira um rolamento de um lado da roda, vire-a, insira um espaçador de precisão e, por fim, o segundo rolamento do outro lado.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Montagem Mecânica do Slider

Primeiro, montamos a placa da câmera com as quatro rodas V, usando espaçadores de alumínio de 9mm, espaçadores de precisão e porcas de travamento.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Repetimos o processo para as outras três rodas. Nas duas rodas da direita usamos espaçadores de 9mm; nas duas da esquerda, usamos espaçador excêntrico com espaçador de 3mm no lugar do de 9mm.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Insira a placa porta-câmera no perfil V-Slot. Se estiver frouxa, aperte a porca excêntrica até obter movimento sólido sem folga.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Insira duas porcas T de encaixe em cada extremidade do perfil V-Slot para conectar as pernas do slider.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Encaixe as duas pernas do slider no perfil V-Slot.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Fixe as pernas ao perfil com quatro parafusos M5×10mm.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Instale o motor NEMA17 em sua placa de fixação e prenda com quatro parafusos M3×16mm.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Na perna esquerda, insira duas porcas nos locais previstos.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Fixe a placa do motor no topo da perna esquerda com dois parafusos M3×16mm.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Instale a polia GT2 furo 5mm no eixo do motor e aperte o parafuso de fixação (Allen) para travá-la.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Na perna direita, insira quatro porcas M3 nos locais previstos.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Coloque as duas placas de mancais no topo da perna direita.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Fixe as duas placas com quatro parafusos M3×16mm.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Instale um mancal de flange 8mm na placa superior da perna direita, usando dois parafusos M5×20mm e duas porcas M5.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Repita para o segundo mancal de flange na placa inferior da perna direita.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Insira o eixo linear de 8mm no mancal de flange pela parte inferior e empurre até o topo. Em seguida, insira a polia de 8mm no eixo e fixe apertando seu parafuso de fixação.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Checkpoint: Todo o mecanismo está montado, exceto a correia dentada. Vamos instalá-la.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Passe a correia GT2 6mm na polia de 5mm do motor NEMA17 e na polia de 8mm na perna direita. Por fim, tensione a correia prendendo-a à placa da câmera.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Montagem da Placa de Controle

Encaixe o shield "Cairo Camera Slider" sobre o Arduino UNO.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Insira o Arduino com o shield no gabinete de controle.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Insira duas porcas M3 nos locais da perna esquerda.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Fixe o gabinete à perna esquerda com parafusos M3×16mm.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Feche a tampa do gabinete com dois parafusos M3 e porcas. Pronto!

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Teste de Controle do Motor de Passo

Após montar tudo, precisamos testar para garantir que tudo está no lugar e funcionando. Conectamos o motor de passo ao Arduino através do driver A4988 e escrevemos código para testar o movimento.

Driver de Motor de Passo A4988

Para controlar qualquer motor de passo com Arduino ou outro microcontrolador, você precisa de um driver que funcione como tradutor: recebe comandos do Arduino e os converte para a linguagem do motor.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Existem muitos drivers, mas usamos o A4988. Ele controla um motor bipolar com até 2A por bobina, interface simples com Arduino (apenas dois pinos digitais para passo e direção), ajuste fácil de corrente máxima via potenciômetro onboard, e resolução de microstep até 1/16.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Pinagem do A4988

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Motor de Passo NEMA17

Motores de passo são motores DC que giram em incrementos precisos, usados em impressoras 3D, CNCs, etc., pela precisão.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Diferente de motores DC comuns, são controlados por pulsos elétricos nas bobinas internas. Cada pulso avança o eixo em um passo ou fração (microstepping). Permitem controle preciso de posição e velocidade muito baixa sem travar.

Usamos o NEMA 17 Bipolar: duas bobinas, quatro fios (dois por bobina). Ângulo de passo 1.8°. Funciona em 9V, mas 12V dá potência máxima.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Diagrama de Ligação

Conectamos motor NEMA17, driver A4988, Arduino UNO e bateria 12V 3A Li-Ion.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Código Arduino para Teste

Instalação da Biblioteca AccelStepper

No Arduino IDE: Sketch → Incluir Biblioteca → Gerenciar Bibliotecas..., procure "AccelStepper" e instale a de Mike McCauley.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Código de Teste (Bounce)

// Teste de bounce do motor de passo
// Move o motor de um limite ao outro
// Copyright (C) 2020 makesomestuff.org

#include <AccelStepper.h>
#define stepPin 2
#define dirPin 3

AccelStepper stepper(AccelStepper::DRIVER, stepPin, dirPin);

void setup() {
  stepper.setMaxSpeed(100);
  stepper.setAcceleration(20);
  stepper.moveTo(500);
}

void loop() {
  if (stepper.distanceToGo() == 0)
    stepper.moveTo(-stepper.currentPosition());
  stepper.run();
}

Lógica: Inicializamos objeto AccelStepper com pinos 2 (step) e 3 (dir). No setup(), definimos velocidade máxima 100 passos/s, aceleração 20 passos/s², e posição alvo 500 passos. No loop(), se chegou ao destino, inverte a direção; caso contrário, continua rodando.

Controle Total Sem Fio do Slider

Após testar o hardware, passamos ao aplicativo móvel para controle remoto e ao código Arduino que recebe comandos via Bluetooth.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Construção do Aplicativo Móvel

Usei o MIT App Inventor para criar app Android nativo com blocos de programação visual. O código-fonte é open-source — livre para editar e compartilhar.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

A imagem abaixo explica a função de cada botão:

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

O app comunica-se com o slider via Bluetooth. O próximo passo é conectar o módulo HC-05 ao circuito e carregar o código que estabelece essa comunicação.

Diagrama de Ligação com Bluetooth

Conectamos o HC-05 ao circuito anterior. O HC-05 pode atuar como mestre ou escravo (diferente do HC-06, só escravo), permitindo conexão entre dois Arduinos. É um módulo SPP (Serial Port Protocol) — comunica via Serial. Conexões:

  • Tx (Arduino) → Rx (HC-05)
  • Rx (Arduino) → Tx (HC-05)
  • 5V (Arduino) → VCC (HC-05)
  • GND (Arduino) → GND (HC-05)
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Esquemático e Fabricação da PCB

Projetei um shield Arduino UNO personalizado que organiza todos os componentes sem fios soltos. Basta soldar os componentes no shield, encaixar HC-05, A4988 e bateria, e plugar no Arduino.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Fabriquei na PCBWay — qualidade excelente, chegou ao Egito em poucos dias por apenas $5. Acompanhei todo o processo online no painel da conta.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Arquivos da PCB e pedido disponíveis no site da PCBWay.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Código Arduino e Comunicação Bluetooth

/*
 TODO: Permitir escolha do modo microstep do driver
 TODO: App perguntar homing position e microstepping só no início
 TODO: Código iterar homing e microstepping só uma vez no setup()

 DADOS:
 seta esquerda → 1
 seta direita → 2
 botão stop → 3
 comprimento trilho (1-1000cm) → (201-1200)
 aceleração: Muito Alta→14, Alta→11, Média→12, Baixa→13, Muito Baixa→15
 velocidade (1-4000 passos/s) → (5001-9000)
 partida atrasada true → 7, false → 8
 homing esquerda → 16, homing direita → 17
 movimento Suave → 18, Muito Suave → 19
 1301-2300 → configuração de trilho
*/

#include <MultiStepper.h>
#include <AccelStepper.h>

#define stepPin 2
#define dirPin 3

bool homingPositionFlag = false;
int startupSetupFlag = 0;
bool delayedStart = false;

int incomingData = 0;
int movementDistance = 50;
long steps = 0; // 50cm trilho padrão @1/8 microstep
int microStepResolution = 0; // 4 ou 16
long railLength = 0;
int sliderSpeed = 10;

AccelStepper stepper(AccelStepper::DRIVER, stepPin, dirPin);

void setup() {
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
  Serial.begin(9600);

  stepper.setMaxSpeed(10.00);
  stepper.setAcceleration(500.00);

  while (startupSetupFlag < 3) {
    if (Serial.available() > 1) {
      unsigned int dataOne = Serial.read();
      unsigned int dataOne1 = Serial.read();
      unsigned int incomingData = (dataOne1 * 256) + dataOne;

      // Homing
      if (incomingData == 16) { // esquerda
        stepper.setCurrentPosition(steps);
        homingPositionFlag = false;
        startupSetupFlag++;
      } else if (incomingData == 17) { // direita
        stepper.setCurrentPosition(-(steps));
        homingPositionFlag = true;
        startupSetupFlag++;
      }

      // Microstep resolution
      if (incomingData == 18) {
        microStepResolution = 4; // 1/4
        startupSetupFlag++;
      } else if (incomingData == 19) {
        microStepResolution = 16; // 1/16
        startupSetupFlag++;
      }

      // Comprimento do trilho
      if (incomingData >= 1301 && incomingData <= 2300) {
        railLength = incomingData - 1300; // cm
        if (microStepResolution == 4) {
          steps = ((6100L * railLength) / 50L);
          startupSetupFlag++;
        } else if (microStepResolution == 16) {
          steps = ((25000L * railLength) / 50L);
          startupSetupFlag++;
        }
      }
    }
  }
}

void loop() {
  if (Serial.available() > 1) {
    unsigned int dataOne = Serial.read();
    unsigned int dataOne1 = Serial.read();
    unsigned int incomingData = (dataOne1 * 256) + dataOne;

    // Controle do motor
    if (incomingData == 1 && !stepper.isRunning() && stepper.currentPosition() != 6050 && homingPositionFlag) {
      if (delayedStart) delay(15000);
      stepper.setCurrentPosition(0);
      stepper.moveTo(steps);
      homingPositionFlag = false;
    }
    else if (incomingData == 2 && !stepper.isRunning() && stepper.currentPosition() != -6050 && !homingPositionFlag) {
      if (delayedStart) delay(15000);
      stepper.setCurrentPosition(0);
      stepper.moveTo(-(steps));
      homingPositionFlag = true;
    }
    else if (incomingData == 3 && stepper.isRunning()) {
      homing();
    }

    // Velocidade máxima
    else if (incomingData >= 5001 && incomingData <= 9000) {
      sliderSpeed = incomingData - 5000;
      stepper.setMaxSpeed(sliderSpeed);
    }

    // Partida atrasada
    else if (incomingData == 7) delayedStart = true;
    else if (incomingData == 8) delayedStart = false;

    // Distância de movimento
    else if (incomingData >= 201 && incomingData <= 1200) {
      movementDistance = incomingData - 200;
      if (microStepResolution == 4)
        steps = ((6100L * movementDistance) / 50L);
      else if (microStepResolution == 16)
        steps = ((25000L * movementDistance) / 50L);
    }

    // Aceleração
    else if (incomingData == 11 && !stepper.isRunning()) stepper.setAcceleration(3000); // Alta
    else if (incomingData == 12 && !stepper.isRunning()) stepper.setAcceleration(1000); // Média
    else if (incomingData == 13 && !stepper.isRunning()) stepper.setAcceleration(500);  // Baixa
    else if (incomingData == 14 && !stepper.isRunning()) stepper.setAcceleration(4000); // Muito Alta
    else if (incomingData == 15 && !stepper.isRunning()) stepper.setAcceleration(10);   // Muito Baixa
  }
  stepper.run();
}

void homing() {
  homingPositionFlag = (stepper.currentPosition() > 0);
  stepper.moveTo(0);
}

Lógica do Código

Usamos a biblioteca AccelStepper, que oferece interface orientada a objetos para controle preciso de motores de 2, 3 ou 4 pinos.

Ao conectar o app ao slider, ele pergunta a resolução de microstep do driver A4988. O slider suporta apenas 1/4 (Suave) e 1/16 (Muito Suave). Escolher modo errado afeta cálculos de distância e pode fazer a câmera bater nos limites.

  • 1/4 → Suave
  • 1/16 → Muito Suave
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

O código define a posição de homing (esquerda ou direita). Ao clicar em homing esquerda/direita, um dado específico é enviado ao Arduino.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Em seguida, define quantos passos o motor deve dar sem bater nos limites. Lê e salva o comprimento do trilho inserido no app. Com base na resolução de microstep e no comprimento, calcula o número de passos para atingir os limites sem colisão.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

No loop(), lê dados do app e executa ações: mover horário, anti-horário, parar e voltar ao início, alterar velocidade, etc.

Guia do Usuário e Solução de Problemas

Após conectar a fonte 12V ao Arduino (que alimenta também o shield), ligue o Bluetooth no celular, pareie com o HC-05, abra o app e pressione "Press here to connect with Cairo camera slider". Selecione o dispositivo HC-05 na lista.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Após conectar, o app faz perguntas de configuração:

  1. Resolução de microstep: Suave (1/4) ou Muito Suave (1/16). Selecione conforme configurado no driver A4988. Modo errado → funcionamento incorreto.
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
  1. Comprimento do trilho em cm: No meu caso, 50cm.
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
  1. Posição de homing do carro da câmera: Coloque o carro em uma das extremidades (esquerda ou direita). No meu caso, extremidade esquerda.
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Importante: Se o carro estiver no meio do trilho ao iniciar, ele baterá nos limites ao mover.

Após a configuração, o app mostra os parâmetros definidos. Clique OK e seu slider Cairo estará pronto para uso.

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves
Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Slider Cairo em Ação

O slider funciona suavemente, permitindo movimentos cinematográficos controlados remotamente via smartphone.

Código Completo

O código final completo está disponível na seção de código do projeto original.

Peças Personalizadas e Gabinetes

Arquivos CAD disponíveis no Thingiverse.

Esquemáticos

Slider Motorizado para Câmera com Bluetooth e Arduino para Tomadas Cinematográficas Suaves

Processo de manufatura

  1. A Evolução e Design das Câmeras Modernas
  2. Entendendo Lentes de Câmera: Design, História e Inovações Futuras
  3. BrickPi Bookreader: Automatize Leitura no Kindle com Raspberry Pi e LEGO Mindstorms
  4. Construa um Spybot Controlado por Bluetooth com Arduino
  5. FlickMote: Controle Remoto IR por Gestos para Casa Inteligente
  6. DIY Arduino TV B-Gone: Controle Remoto Universal para Todas as TVs
  7. Construa um Relógio Mestre LED Personalizado com Alarme – Visível a 12 Metros
  8. Find Me: Localizador Inteligente de Objetos com Arduino e Bluetooth
  9. Soluções de Energia Otimizadas para Projetos Arduino
  10. Câmera Avançada de Imagem THz Revela Visualizações Internas de Alta Resolução de Objetos Sólidos