Monday, January 20, 2014

Raspberry Pi is a sissy

Yesterday i was just done repairing my free fall experiment and moved the 3.5 inch TV screen to the inside. By that i learned that acrylic glas can melt by a jigsaw. So i took my Proxxon (aka dremel) and a KT70 xy-stage and found out a router can melt acrylic as well :-(. Solution was to take of 0.2 mm each cut that the acrylic can cool down after cutting. Sometime i will rebuilt this to a CNC-machine. This is how it looks:


I figured out another usecase for the Capische: Stop motion. Like in timelapse photography you can set up a predefined path the camera will work its way though but the cool thing is that you trigger the movement to the next frame and trigger the photo by hitting a defined key on the bluetooth keyboard.


Then i just wanted to test a new version of the slider-program when i fried my pi by just connecting the easydriver via a sub-d port you can see on the picture. Seems like the raspberry pi cannot handle voltage-peaks. Ends up with a raspberry that can be used as a heater. The only thing it does is that the CPU heats up. I now have 3 raspberries lying around here i cannot use. 2 of them are bricked and at one (Model A) the TV-Out doesnt work any more. So if you want a raspberry pi for deco-purposes, let me know. A new one is ordered and tomorrow i can test it.

Here is the script i wanted to test out (please excuse the bad python but i am just about to test if everything works). It is supposed to move make a panning move and a move on the slider in timelapse.

import RPi.GPIO as GPIO
import time
import ConfigParser

#get the electric configuration
config = ConfigParser.RawConfigParser()
config.read('/home/pi/capische.conf')
Electric={}
options=config.options('Electric')
for option in options:
  try:
    Electric[option]= config.getint('Electric',option)
  except:
    print "Error in configfile"
    quit()

moveaccel= config.getint('Dolly','moveaccel')
movesteps= config.getint('Dolly','movesteps')
movedecel= config.getint('Dolly','movedecel')

timetowait=config.getint('Camera','timetowait')
timetowaithdr=config.getint('Camera','timetowaithdr')

maxsteps=1000

#start by setting everything to 0

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
for i in Electric.values():
  GPIO.setup(i,GPIO.OUT)
  GPIO.output(i,False)

#Pano-Easydriver wake up
GPIO.output(Electric['movesleep'],True)
GPIO.output(Electric['pansleep'],True)
GPIO.output(Electric['trigger'],False)

#nach Rechts drehen
GPIO.output(Electric['pandir'],True)

#accelerate
for i in range (0,moveaccel,20):
   for j in range (i):
     GPIO.output(Electric['movestep'],True)
     time.sleep(0.001)
     GPIO.output(Electric['movestep'],False)
     time.sleep(0.001)
     if (j % 200 == 0):
       GPIO.output(Electric['panstep'],True)
       time.sleep(0.001)
       GPIO.output(Electric['panstep'],False)
       time.sleep(0.001)
   GPIO.output(Electric['trigger'],True)
   time.sleep(1)
   GPIO.output(Electric['trigger'],False)
   time.sleep(timetowait)

#konstant
for i in range (0,movesteps,595):
   for j in range(595):
     GPIO.output(Electric['movestep'],True)
     time.sleep(0.001)
     GPIO.output(Electric['movestep'],False)
     time.sleep(0.001)
   for k in range(3):
     GPIO.output(Electric['panstep'],True)
     time.sleep(0.001)
     GPIO.output(Electric['panstep'],False)
     time.sleep(0.001)

   GPIO.output(Electric['trigger'],True)
   time.sleep(1)
   GPIO.output(Electric['trigger'],False)
   time.sleep(timetowait)

#decelerate
for i in range (movedecel,0,-20):
   for j in range (i):
     GPIO.output(Electric['movestep'],True)
     time.sleep(0.001)
     GPIO.output(Electric['movestep'],False)
     time.sleep(0.001)
     if (j % 200 == 0):
       GPIO.output(Electric['panstep'],True)
       time.sleep(0.001)
       GPIO.output(Electric['panstep'],False)
       time.sleep(0.001)
   GPIO.output(Electric['trigger'],True)
   time.sleep(1)
   GPIO.output(Electric['trigger'],False)
   time.sleep(timetowait)

#send Dolly-Easydriver to sleep
GPIO.output(Electric['movesleep'],False)
#send Pano-Easydriver to sleep
GPIO.output(Electric['pansleep'],False)

The config-file looks like this:
[Electric]
pandir=4
panstep=3
pansleep=2
movestep=15
movesleep=18
movedir=14
tiltdir=27
tiltsleep=10
tiltstep=22
trigger=11

[Dolly]
moveaccel=500
movesteps=90000
movedecel=500

[Camera]
timetowait=20
timetowaithdr=12
pan.fullturn.steps=8000
tilt.fullup.steps=4000
#focal length of 28mm (equal)
pan.steps=900
tilt.steps=700
 
 
Raspberry Pi is a Trademark of Raspberry Pi Foundation

Monday, January 13, 2014

not quantity but ...

New Year, new post.

There are 2 reasons for this post:

1. i have made a timelapse again

2. i gave an interview to fotopodcast.de

But first things first: Yesterday (January 12th 2014) my wife called me that i should grab my camera and get out to take some photos because there was a beautiful fog in the river Neckar valley and our little town was above the fog. Unfortunately it took me to long to get home so the fog has risen and the visibility was very bad. So i went to another location that is higher and i positioned my Capische to make a panorama and a timelapse. The Panorama is nothing spectacular because i have forgotten to switch the resolution to 12 MPix and so i have made a panorama from many 1600x1200 pictures in HDR. Result was a crabby 9 MPix picture. As i was waiting for the Capische to finish its Timelapse i saw that the sundown was beautiful but not in that position i was standing right now. So i grabbed the 2 tripods i had with me (one for the Capische and one for a Rollei Bullet 3s HD for documenting) and went to the other spot. That spot was on a muddy hill and half way up i lost traction and my Capische hit the ground. That was the result:

The frontpanel broke off which was good because i the Monitor is fine that way. The whole thing still works and i just have to make a new frontpanel. What can we learn from that? Not quantity counts ( i had 5 cameras with me) but the preperation is essential. If i had stayed ther i would have been able to get a longer timelapse and my trousers would still be clean. Here is the Making of (with a timelapse of the wrong location)


and this is the timelapse:


O.K. and now for something completely different: end of December i gave an interview to Stefan Lietschke of fotopodcast.de. He got interrested in this blog (the German one) because i gave them a short feedback concerning flying cameras and gigapixel. The interview should be posted at the end of January. For all german speeking People: take a look at fotopodcast, they give good tips for hobbyists and pros alike. If you have any comments or questions about this blog feel free to contact me, i will answer all the questions if i can.