ArduCamSlider: uno slider motorizzato per DSLR camera

English version
Ecco come realizzare un camera slider con l'impiego anche di materiale recuperato.

Il piccolo motore stepper consente lo spostamento della fotocamera DSLR lungo il binario e il LED IR aziona la macchina fotografica per scattare la foto.
In particolare ho utilizzato i seguenti pezzi:
  • Arduino UNO r3
  • LED IR
  • ULN2003 Stepper Board e motore 28BYJ-48 
  • pezzo di compensato recuperato
  • pezzo di legno per stabilizzare il binario recuperato
  • pezzo di telaio di scarto di una zanzariera 
  • batteria ricaricabile 9v 300mAh (sarebbe opportuno considerare una batteria più capiente)
  • cremagliera e ingranaggio (eventualmente stampati in 3D)
  • rotelline per armadio (tipo questa e quest'altra).
Il codice prevede l'utilizzo di due librerie: IRcameraControl e Stepper.
Eccolo:

#include <multiCameraIrControl.h>  //IRcameraControl library
#include <Stepper.h> //Stepper library

//Data la lunghezza del binario (circa 60 cm), il numero massimo di steps è 6150 
//Tab1: 
//se stepsset = 5 => 1230 loop
//se stepsset = 6 => 1025 loop
//se stepsset = 7 => 878 loop
//se stepsset = 8 => 769 loop
//se stepsset = 9 => 683 loop
//se stepsset = 10 => 615 loop
//se stepsset = 15 => 410 loop
//se stepsset = 20 => 307 loop
//se stepsset = 25 => 247 loop
//se stepsset = 30 => 205 loop
//se stepsset = 35 => 175 loop
//se stepsset = 40 => 153 loop
//se stepsset = 45 => 136 loop
//se stepsset = 50 => 123 loop

//start modifiche utente//

//Definisci ora il delay pre e post scatto in milliseconds
#define delaypre 6000
#define delaypost 6000

//Modifica il valore di stepsset sotto tenuto conto di quanto scritto sopra ed anche del fatto che ogni singolo loop è uguale a (delaypre + delaypost)/1000 secondi. 
#define stepsset 10  //moliplicando il numero di loop corrispondenti allo stepsset impostato per la durata del singolo loop si ottiene la durata complessiva. Ovviamente il numero di loop individua anche il numero di foto scattate.

//stop modifiche utente//

//---( numero di step per giro del motore)---
#define STEPS_PER_MOTOR_REVOLUTION 32   

//---( Steps in uscita tenuto conto dell'ingranaggio)---
#define STEPS_PER_OUTPUT_REVOLUTION 32 * 64  //2048 

// pin al quale è collegato il chip ULN2003
Stepper small_stepper(STEPS_PER_MOTOR_REVOLUTION, 8, 10, 9, 11);

//definisci il pin al quale è collegato il LED IR
Nikon D5000(5);  //pin al quale è collegato il led IR per lo scatto

//dichiara la variabili
int numberofloopforward; //per sapere il numero progressivo di loop in avanti
int steps = stepsset; //indica il numero di steps definito dall'utente (vedi sopra)
int maxloop = 6150/steps; //definisce il numero totale di loop massimi tenuto conto della lunghezza del binario. 
int numberofloopbackward = maxloop; //per sapere il numero progressivo di loop indietro

//int  Steps2Take; 

void setup() 
{ Serial.begin(9600);
  Serial.print("steps= ");
  Serial.println(steps);
  Serial.print("maxloop= ");
  Serial.println(maxloop);
}

void loop()   /*----( LOOP: RUNS CONSTANTLY )----*/
{  
  if( numberofloopforward < maxloop ) 
  { 
  numberofloopforward=  numberofloopforward +1;
  Serial.print("numberofloopforward= ");
  Serial.println(numberofloopforward);

  small_stepper.setSpeed(500);   
  small_stepper.step(steps);

  delay(delaypre); //tempo di arresto prima dello scatto
  D5000.shutterNow(); //scatto
  delay(delaypost);  //tempo di arresto dopo lo scatto
  } 
  
  else 
  {
    if( numberofloopbackward > 0 ) 
    { 
    numberofloopbackward = numberofloopbackward -1;
    Serial.print("numberofloopbackward= ");
    Serial.println(numberofloopbackward);
  
    small_stepper.setSpeed(500);  //speed
    small_stepper.step(- steps);
    }
  
    else
    {
    small_stepper.setSpeed(0);  
    small_stepper.step(0);
    }
  }
}



Come si evince dal codice sopra il led IR è collegato al pin 5 mentre il ULN2003 Stepper Board ai pin che vanno dal n. 8 al n. 11  Il tutto assemblato appare così come in foto:


Dall'elenco riportato sopra degli oggetti utilizzati ho sottolineato come sarebbe utile prevedere una batteria più capiente come questa perché allo stato attuale, per numero di loop alti non è possibile far scorrere la vostra fotocamera fino a fine corsa. Alternativamente si può alimentare da pc o da una batteria esterna di emergenza per smartphone.
Ecco un esempio di time-lapse in movimento con i pochi scatti che sono riuscito a fare con la mia Nikon D5100. Quello che conta vedere è la stabilità del dispositivo.

14/03/2014, aggiornamento: ho cambiato la batteria con una da 2300 mAh ed ora la fotocamera arriva fino a fine corsa. 
Ecco il risultato in una giornata non proprio ideale:




Licenza Creative Commons

Riuso creativo dell'ennesima scatola di cartone da imballaggio... di Amazon

Puoi trovare la versione in inglese di questo post >qui< . Di recente è nato mio figlio Michele, uno splendido bambino 😊. È il mio pr...