Der Raspberry ist ein bisschen empfindlich


So. Heute habe ich mal wieder 2 Stunden im Keller verbracht und die Spuren meiner Ungeschicklichkeit verwischt. Dabei habe ich das Display gleich mal ins Gehäuse verlegt und einen Ausschnitt in das neu angepasste Acryl gefräst. Warum Schmilzt Acrylglas eigentlich beim Bearbeiten mit der (Laub-)Stichsäge so schnell? Beim Fräsen mit dem Proxxon KT-70 kamen auch nur dann saubere Kanten zu stande, wenn ich maximal 0,2 mm als Vorschub pro Fräsung genommen habe. Irgendwann mach ich mir doch mal eine CNC-Fräse draus.

Hier mal ein Bild:

Bild vom umgebauten Display

Bild vom umgebauten Display

Beim Testen kam ich aber auf die irre Idee die Schiene im laufenden Betrieb anzuschließen. Das endete mit einem Raspberry der nur noch als Heizung dient. Die Dinger sind irgendwie ein wenig empfindlicher als die Arduinos. Also gleich getestet, ob die SD-Karte wenigstens noch tut und einen Neuen bei Amazon bestellt. Am Dienstag gehts weiter. Falls jemand Raspberrys als Türstopper braucht, ich habe jetzt 2 Stück (Model B) die nichts mehr tun und einen (Model A) der bei zu viel Last rebootet und bei dem der Videoausgang nicht mehr tut. Dafür ist das Display jetzt einfacher zu bedienen, man kann interaktiv noch was ändern und man kommt per WLAN drauf.

Mir ist übrigens noch ein Anwendungsfall eingefallen: Stop motion. Man könnte eine Kamerafahrt (inclusive Sliderschiene) vordefinieren und dann erst beim betätigen einer Taste auf dem Bluetooth. Keyboard auf die nächste Positon fahren und ein Foto machen.

Hier mal ein kleines Script mit dem ich z.B. einen Zeitrafferschwenk mache. Die Eckdaten wie „wie lange muß ich warten nachdem ich ein Foto gemacht habe“ oder „wieviele Schritte darf ich gehen“ kommen aus einer Config-Datei. Als nächstes muss ich den Samun funktionalisieren. Sprich funktionen schreiben um einen Schritt in eine gegebene Richtung zu machen oder einfach einmal auszulösen. Bis jetzt gebe ich noch ein Signal auf einen GPIO mit dem dann die Kamera per CHDK auslöst.

import RPi.GPIO as GPIO
import time
import ConfigParser

#Einlesen der Electric
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

#Erst mal alles auf null setzen

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

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

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

#Anfahren
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)

#Abbremsen
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)

#Dolly-Easydriver schlafen legen
GPIO.output(Electric['movesleep'],False)
#Pano-Easydriver schlafen legen
GPIO.output(Electric['pansleep'],False)

Die Config-Datei sieht z.B. so aus:

[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
#Ausgehent von 28mm Brennweite
pan.steps=900
tilt.steps=700
Advertisements

Über arduphototobot

Ich wollte einfach nur meine Erlebnisse dokumentieren, die ich beim Aufbau eines Automatischen Photo-Robotes mit einem Arduino gehabt habe.
Dieser Beitrag wurde unter CHDK, HDRi, Panorama, Raspberry pi, Roboter, Zeitraffer veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s