Things used in this project

Hardware components:
Pi 3 02
Raspberry Pi Raspberry Pi 3 Model B
×1
GPS Module U-blox NEO-6M with 3m Active Antenna (STM32 51 )
×1
PNY 7800 PowerPack
×1
Chdhs 101 main4
GoPro HERO Series Camera
×1
GoPro 3-Way
×1
Software apps and online services:
Raspberry Pi Raspbian

Schematics

This project does not have schematics.
This is a drawing on how the components interact with each other.
Screen shot 2017 06 11 at 12 23 05 am bujvnz593h

Code

LondonGPS.pyPython
This script runs on start up and polls to check my coordinates against a list of coordinates I've pre-selected.
#Import all necessary libraries
import time
import gpsd
import math
from goprocam import GoProCamera
from goprocam import constants

#Need this to calculate the where I am 
earthRadius = 6371

#Wait for the Pi to boot and get the GoPro Wifi
time.sleep(20)

#Connect to the local gpsd
gpsd.connect()

#Initialize the camera object
camera = GoProCamera.GoPro()

#Saved Locations for this trip: 
#Platform 9 3/4: 51.5322° , -0.1240°
#Abbey Road: 51.5321° , -0.1781°
#Buckingham 51.5014°, -0.1419°
#Big Ben 51.5007° , -0.1246°
#Tower of London 51.5081° , -0.0759°
#Tower Bridge 51.5055° , -0.0754° 
#Shakespeare Globe 51.5081° , -0.0972°
#Sweetings 51.5125° , -0.0928°

#Create location arrays: 
latitude = [51.5110, 51.5322, 51.5321, 51.5014, 51.5007, 51.5081, 51.5055, 51.5081, 51.5125]
longitude = [-0.1863, -0.1240, -0.1781, -0.1419, -0.1246, -0.0759, -0.0754, -0.0972, -0.0928]

# Main loop to check the coordinates that I am at 
# and the coordinates I’ve saved.
while True:
       received = False
       try:
               packet = gpsd.get_current()
               received = True
       except Exception:
               print("No signal")
       if received == True:
               #get my current position
               currentPost = packet.position()
               currentLat = currentPost[0]
               currentLon = currentPost[1]
               for location in range(len(latitude)):
                 
                       # The angles need to be in radians to pass 
                       # to trig functions
                       dLat = math.radians(latitude[location] - currentLat)
                       dLon = math.radians(longitude[location] - currentLon)
                       
                       # I used the ‘haversine’ formula to calculate 
                       # the distance between two points over the 
                       # earth’s surface. 
                       # a = sin²(Δφ/2) + cos φ1 ⋅ cos φ2 ⋅ sin²(Δλ/2)
                       # c = 2 ⋅ atan2( √a, √(1−a) )
                       #d = R ⋅ c
                       a = math.sin(dLat/2) * math.sin(dLat/2) + math.cos(math.radians(latitude[location])) * math.cos(math.radians(currentLat)) * math.sin(dLon/2) * math.sin(dLon/2)
                       c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
                       d = earthRadius * c
                       
                       # d is distance between the two sets of coordinates
                       # if distance is less than 10m unit of d is in km, 
                       # take a picture
                       if d < 0.01:
                       camera.take_photo(0)
       
       #we need to sleep so it doesn't infinitely poll
       time.sleep(1)

Credits

Img 6261 91ryknwnh9
Estefannie Explains It All

Living in a state of constant creation and sharing the prototyping, testing and failing of my engineering endeavors. Oh, and I film it.

Contact

Replications

Did you replicate this project? Share it!

I made one

Love this project? Think it could be improved? Tell us what you think!

Give feedback

Comments

Similar projects you might like

Thunderboard Sense and RPi
Intermediate
  • 52
  • 2

Collecting rich sensor data over BLE and uploading it to the cloud for analysis.

LoRaWAN for Raspberry Pi with Worldwide Frequency Support
Intermediate
  • 3,382
  • 16

Full instructions

LoRaWAN LMIC 1.6 for Raspberry Pi with Dragino LoRA/GPS HAT or standalone RFM95W LoRa Module.

Human-Following Robot with Kinect
Intermediate
  • 2,242
  • 22

Full instructions

Instead of using single camera and complicated image recognition algorithms we can take advantage of Kinect libraries.

Automated Indoor Gardener
Intermediate
  • 3,795
  • 37

Full instructions

Never worry about dead plants again. This automated gardener never forgets to water your plants and provide artificial sunlight.

Computerception
Intermediate
  • 27,279
  • 20

Full instructions

Why not put a Raspberry Pi into a 2007 netbook?

Raspberry Pi Google Assistant With Sleek Wood Box
Intermediate
  • 4,880
  • 29

Full instructions

l built a DIY Google AI Assistant using a Raspberry Pi, USB Speaker and USB microphone.

Sign up / LoginProjectsPlatformsTopicsContestsLiveAppsBetaFree StoreBlog