Skip to content

Instantly share code, notes, and snippets.

@waveform80
Created June 8, 2018 13:49
Show Gist options
  • Save waveform80/031565f37621684e73b0a83e4a67f6f0 to your computer and use it in GitHub Desktop.
Save waveform80/031565f37621684e73b0a83e4a67f6f0 to your computer and use it in GitHub Desktop.
#!/usr/bin/python3
import pygame
from picamera import PiCamera
from pygame.locals import *
from sense_hat import SenseHat
from time import sleep
import sys
sys.path.append("..")
from mcp_utils import McpUtils
from norad import get_tle
from datetime import datetime
mcp = McpUtils()
#iss = get_tle()
name = "ISS (ZARYA)"
line1 = "1 25544U 98067A 18030.93057008 .00011045 00000-0 17452-3 0 9997"
line2 = "2 25544 51.6392 342.9681 0002977 45.8872 32.8379 15.54020911 97174"
iss = get_tle() #ephem.readtle(name, line1, line2)
g = [0,255,0]
b = [0,0,0]
w = [255,255,255]
cam_icon = [b,b,g,g,g,g,b,b,
b,b,g,g,g,g,b,b,
g,g,g,g,g,g,g,g,
g,g,w,w,w,w,g,g,
g,g,w,b,b,w,g,g,
g,g,w,w,w,w,g,g,
g,g,g,g,g,g,g,g,
b,b,b,b,b,b,b,b,
]
isos = [400,800]
awb_modes = ['auto', 'cloudy', 'shade', 'tungsten', 'horizon']
exp_modes = ['night','fireworks','auto','nightpreview','antishake']
pygame.init()
pygame.display.set_mode((320, 240))
sense = SenseHat()
sense.set_rotation(270)
cam = PiCamera()
cam.resolution =(2592,1944)
sense.clear()
sense.set_pixels(cam_icon)
running = True
def get_latlon():
iss.compute()
long_value = [int(i) for i in str(iss.sublong).split(":")]
if long_value[0] < 0:
long_value[0] = abs(long_value[0])
cam.exif_tags['GPS.GPSLongitudeRef'] = "W"
else:
cam.exif_tags['GPS.GPSLongitudeRef'] = "E"
cam.exif_tags['GPS.GPSLongitude'] = '%d/1,%d/1,%d/100' % (
long_value[0], long_value[1], long_value[2])
lat_value = [int(i) for i in str(iss.sublat).split(":")]
if lat_value[0] < 0:
lat_value[0] = abs(lat_value[0])
cam.exif_tags['GPS.GPSLatitudeRef'] = "S"
else:
cam.exif_tags['GPS.GPSLatitudeRef'] = "N"
cam.exif_tags['GPS.GPSLatitude'] = '%d/1,%d/1,%d/100' % (
lat_value[0], lat_value[1], lat_value[2])
print(iss.sublat, iss.sublong)
def start_capture():
sense.clear()
file_number = 1
r = 100
g = 100
b = 100
n = 0
sense.set_pixel(0, 0, r, g, b)
for i in isos:
if mcp.running:
cam.iso = i
cam.exif_tags['EXIF.ISOSpeedRatings'] = str(i)
for a in awb_modes:
if mcp.running:
cam.awb_mode = a
cam.exif_tags['EXIF.WhiteBalance'] = a
for e in exp_modes:
if mcp.running:
cam.exposure_mode = e
cam.start_preview()
sleep(2)
get_latlon()
filename = datetime.now().strftime("%Y%m%d-%H%M%S")
print(i, a, e, filename)
cam.capture("/home/pi/Transfer/1234_Camtest/01/%s.jpg" % filename)
cam.stop_preview()
n += 1
sense.set_pixel(n // 8, n % 8, r, g, b)
pygame.display.quit()
while mcp.running: # change to mcp.running for deployment
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
mcp.running = False
elif event.key == K_u or event.key == K_d or event.key == K_l or event.key == K_r or event.key == K_a or vent.key == K_b :
sense.show_message("5........4........3.......2.......1")
start_capture()
if event.type == QUIT:
mcp.running = False
pygame.display.quit()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment