Find things in space and point to it.
This project was inspired by https://github.com/gradyh/ISS-Tracking-Pointer.
I wanted to expand it to point at more things then just the ISS and make it easy to use. It uses a compass so there is no need to align the pointer, just set it down and start using it.
Skyfield is a python package that does all the math for the pointer.
- Setup your Raspberry Pi and connect it to your Wi-Fi.
- this has to be done at least once. But the data for the space station and other satellites needs to be updated often.
- Enable the SPI and GPIO on the Raspberry Pi.
- Make sure its up to date.
sudo apt-get update
sudo apt-get upgrade
- Give the Pi a reboot here.
sudo reboot
- Install python dev.
sudo apt-get install python-dev
sudo python setup.py install
- Install python GPIO.
sudo apt-get install python-rpi.gpio
- Install skyfield. It does all the space math for us.
pip install skyfield
- Install Adafruit library for the display.
git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git
cd Adafruit_Python_SSD1306/
sudo python setup.py install
cd ..
- Clone this repo.
git clone https://github.com/blee1170/SpacePointer.git
- Program the Arduino.
- The declination will need to be configured for your location. Use http://magnetic-declination.com/ to find it. Update it on line 130 in the Arduino code.
- Compass offset will also need to be set. I used this Arduino code to find it: https://github.com/jarzebski/Arduino-HMC5883L/tree/master/HMC5883L_calibrate
- I did not setup the Raspberry Pi to program the Arduino, I used another computer because of the steps above.
- Once the calibration offset and declination is set, you can write it to the Arduino.
- Configure settings.
- Update your latitude and longitude in the
RaspberryPi/config.py
file. - Also set what port and speed the Arduino will be listening on. (The defaults should be okay, unless you are using a USB hub or something).
- Update your latitude and longitude in the
- Have the pointer start on startup.
- Copy the systemd service file to /usr/lib/systemd/system/.
sudo cp RaspberryPi/spacePointer.service /usr/lib/systemd/system/
- Enable the service.
sudo systemctl enable spacePointer
- If you are using the adafruit powerboost you will want to enable the battery watcher service.
- Copy the service file and timer to /usr/lib/systemd/system/.
sudo cp RaspberryPi/spacePointerBattery.* /usr/lib/systemd/system/
- Enable the timer.
sudo systemctl enable spacePointerBattery.timer
- Ensure the script is runable.
chmod +x lowBattery.sh
- Teensy-lc - Low cost Arduino.
- Raspberry Pi Zero W - Computer to do the stuff.
- Stepper motor driver - Control the thing that moves.
- Stepper motor - The thing that moves.
- Servo - Moves the other thing.
- Display - So you know what's its pointing at.
- Selector Switch - Sorry, its retired.
- Power Module - Battery power is awesome.
- Battery - Poooooower.
- Angle Bracket x2
- Flat Dual Bracket x3
- Tube x1 6"
- Tube Clamp x2
- Tube Spacer x1 (Its a 12 pack)
- Big Gear x1 48T
- Clamping Hub x1
- Small Gear x1 16T
- Plastic Chain x2
- Screw Hub x1
- Server Mount x1
- Pillow Block x2
- Stepper Motor Mount x1 (Had to be modified to attach to the bracket)
The Teensy-LC was used because it can do both 5v and 3v outputs. The magnetometer can only do 3 volts, but the stepper driver needed 5. This was a great board for only $10.
The Raspberry Pi is wired up to display what is being tracked. I used this from Adafruit.
- Bluetooth interface. So you can use your phone to control it.