Tripé para câmera bluetooth

Um breve resumo de como cheguei nesse projeto. Desde criança sempre gostei de desmontar carrinhos para ver o que tinha dentro, sempre desmontava e fazia alguns hacks para melhorar algumas coisas, tipo adicionar farol de milha, colocar mais potência na bateria para correr mais, adicionar buzina e etc. Isso era nos tempos de criança, já na adolescência tive meu primeiro contato com a programação através de um livro de Delphi que comprei por 5 reais em uma bilioteca do tipo Sebo, e vi como era feito as telas de programas Windows e tinha os códigos e tal, estudei aquele livro mas sem computador, que na época eu ainda não tinha... Depois de uns 2 anos consegui um Windows 95 e a prática veio a tona e consegui fazer algumas coisas legais nesse velho pc.

Abaixo, revista Bê-A-Bá da Eletrônica, que inspirava muitos jovens dos anos 80/90.

Mas porque estou falando isso? Bem para quem é novato no mundo da programação, pelo menos eu, não entendia como as coisas funcionavam, queria ver algo físico funcionando com programação e que eu mesmo tivesse programado. Alguns anos se passaram, e um dia estava na casa do meu primo e ele me mostrou um kit de Arduino, eu vi os leds piscando em sequência, e aquilo foi genial, tudo o que eu havia imaginado estava ali na minha frente e tudo fez sentido. Criar loops para fazer a sequência para acender os leds, criar sirene da policia, usar buzzer para toques polifônicos (música do Mário) e etc, realmente bem legal.

Hoje em dia está tudo bem acessível, para quem quiser aprender a programar, temos o Google, Stackoverflow, ChatGPT, cursos, YouTube e etc. Só que às vezes ligamos o modo automático e esquecemos do quão legal é programar e criar coisas novas e este projeto é para incentivar o pessoal, que acha que é necessário ser um mestre na programação para criar coisas legais e funcionais.

O projeto surgiu da necessidade de controlar o tripé da câmera a distância ,para poder virar a câmera em 90, 180, 360 graus.

Exemplo de video, usando o trípe de camera a distância:

Video Filmado utilizando o tripé

Componentes:

  • Arduino Uno
  • Módulo Bluetooth HC06
  • Motor De Passo 28byj-48 com Driver Uln2003
  • Fios
  • Case (Pode ser uma lata)
  • Suporte para GoPro
  • Cola quente, para fixar os componentes.

Software:

Esquema de ligação:

Ligar nas portas 4 e 5

Ligar nas portas 4 e 5

Não irei mostrar a montagem inteira por aqui, mas é bem simples, indico ligar o motor de passo no Arduino, o módulo bluetooth, baixar o aplicativo Arduino Bluetooth Controller e parear com o módulo bluetooth, e depois configurar com os valores que estão no Switch do código abaixo e ligar tudo e testar para verificar se o motor está virando.

Repositório no GitHub

Código:

#include <Stepper.h>
#define STEPS 200
bool isWait = false; 
int speed = 40;
char inChar=-1; // Where to store the character read
SoftwareSerial bluetooth(4, 5); // RX, TX
Stepper myStepper(STEPS, 8, 9, 10, 11); // initialize the stepper library on pins 8 through 11:

void setup() {
   Serial.begin(9600);
   bluetooth.begin(57600);
   Serial.println("Loading System...");
   myStepper.setSpeed(speed); 
}

void SetSpeedLow() {
   if(speed >= 15){
    speed = speed - 5;
    Serial.println(speed);
    myStepper.setSpeed(speed);   
   }
}

void SetSpeedHigh() {
   if(speed <= 80){
    speed = speed + 5;
    Serial.println(speed);
    myStepper.setSpeed(speed);   
   }
}

void ToggleWait() {
  isWait = !isWait;
  Serial.println("Toggle Wait"); 
}

void LookAtRightLittle() {
  if(isWait) {
    delay(5000);
  }
    myStepper.step(-10);
    Serial.println("LookAtRightLittle");   
}

void LookAtLeftLittle() {
  if(isWait) {
    delay(5000);
  }
    myStepper.step(10);
    Serial.println("LookAtLeftLittle");   
}

void LookAtRight() {
  if(isWait) {
    delay(5000);
  }
    myStepper.step(-1050);
    Serial.println("LookAtRight");
}

void ResetSpeed() {
    myStepper.setSpeed(40);   
    Serial.println("ResetSpeed");   
}

void LookAtLeft() {
    if(isWait) {
    delay(5000);
  }
    myStepper.step(1050);
    Serial.println("LookAtLeft");   
}

void LookAround() {
    if(isWait) {
    delay(5000);
  }
    myStepper.step(2100);
    Serial.println("LookAround");   
}

// To configure the Android controller, you can use this app:
// https://play.google.com/store/apps/details?id=com.giumig.apps.bluetoothserialmonitor&hl=pt_BR&gl=US
// and define the command with the letters below
// After that, just connect the app to the bluetooth module and send these commands
void loop() {
  if(bluetooth.available() > 0) {
    
    inChar = bluetooth.read();
    switch(inChar) {
      
      case 'W':
      ToggleWait();
      break;

      case 'U':
      SetSpeedHigh();   
      break;

      case 'D': 
      SetSpeedLow(); 
      break;

      case 'R': 
      LookAtRight();
      break;

      case 'L': 
      LookAtLeft();
      break;

      case '+': 
      LookAtRightLittle();
      break;

      case '-': 
      LookAtLeftLittle();
      break;

      case 'A': 
      LookAround();
      break;

      case 'S': 
      ResetSpeed();
      break;   
    }
    bluetooth.flush();
    Serial.flush();
  }
}