Snapper allows you to create swarms of cameras that can be controlled and triggered through a simple web interface.
Using the Raspberry Pi platform, each camera becomes an autonomous node in the cluster that manages its own image processing and uploading of synchronized swarm pictures.
- resin.io - For provisioning and managing the device fleet
- pubnub - For the pub/sub and command triggering
- firebase - For the data layer
- auth0 - For user identity management of the swarm admin
- emberjs - For the swarm admin app
- Raspberry Pi 2 Model B
- Your camera of choice. Supported gphoto2
For fast shutter capture snapper uses GPIO on the RPi-2. This is useful when using a flash or when more than 1 camera is involved in the setup and precise timing is required.
- 1 - PN2222A - Transistor
- 1 - 1m Ω - Resistor
- Jumper wires
Snapper was built and tested using resin.io. This allows for super easy provisioning of the Pi2.
- Setup an account at resin.io
- Follow their instructions for setting up the base device OS: guide. Pay close attention to the wifi setting if you are going wireless.
- Make note of the remote branch for your app on resin. We will use this in the coming steps
- Clone snapper
git clone git@github.com:brancusi/snappy.git
- Now add the remote branch listed on resin under your new app:
git remote add resin <RESIN REPO URL>
- You can now push code to your device using:
git push resin
- Magic!
For pub/sub snapper uses Pubnub
- Setup free dev account at pubnub
- Copy your access keys from your pubnub dashboard
- Refer to the env vars below and add the info through the resin.io dashboard
For the data layer snapper uses Firebase
- Setup free dev account at firebase
- Refer to the env vars below and add the info through the resin.io dashboard
FIREBASE_URL=https://<YOUR_APP>.firebaseio.com/
PUBNUB_PUBLISH_KEY=YOUR_PUB_KEY
PUBNUB_SUBSCRIBE_KEY=YOU_SUB_KEY
SWARM_ID=YOUR_SWARM_NAME
AWS_ACCESS_KEY_ID=AWS_KEY
AWS_SECRET_ACCESS_KEY=AWS_SECRET
NODE_NAME=NAME_OF_THIS_NODE