I started this project somewhere 2013/2014 and we made it pretty far, but we never attempted a launch. The main problem was in the radio module sending us data. I am not a radio amateur or really know allot about sending text over a radio signal.
But now in 2016 i am hyped to reboot this project and make a launch and try to retrieve the payload. Allot has changed, so i will update this page.
The payload setup
- Raspberry Pi model A Available across web shops.
- Raspberry Pi Camera, Available across web shops.
- DS18B20 Temperature sensors. DX.com
- Ublox neo 6m Gps board, DX.com
- Radiometrix NTX2 Radio, bought on ebay.
- ADXL345 No real use yet DX.com
- WiFi dongle
We use a Raspberry pi model A (2011 version) . Raspberry Pi model A v1.1 is more energy efficient. Currently the Zero does not have a CSI camera connector otherwise it would be a decent replacement because of the size and power consumption.
Currently i use the last Raspbian Jessie.
I use a WiFi dongle, which i configured on a Raspberry pi b model. Instructions can be found here.
sudo apt-get update && sudo apt-get upgrade
Setup with the settings in raspi-config:
- Expand the SD-card
- Put the right timezone
- Enable camera
- Disable serial console (for GPS and Radio communication)
- Enable I2C (ADXL345)
Let us install all the packages we need:
sudo apt-get install gpsd gpsd-clients python-pip i2c-tools python-smbus python-serial
I use pip for installing multiple python modules at once:
sudo pip install crcmod w1thermsensor gps
Raspberry Pi Camera
Raspistill -timelapse is not a really good way for a timelapse. It keeps the camera board active even though it is sleeping between pictures.
That is why i use a python script which starts the camera, makes a picture, turns the camera off and then sleeps for 30s. Code can be found here.
It seems the pi camera cable interferes with the GPS signal. A home made shielded ribbon cable with normal aluminum foil helps allot, but make sure they are apart as far as possible.
I have chosen for the digital 1 wire interface sensor for the job. I am using a waterproof one and one normal mounted on the PCB. Adafruit has a very good tutorial on how to get it working. We’ve optimized the provided code from Adafruit to work with 2 sensors. One placed for the outside temperature and one directly mounted on the breakout board.
We directly send the data of the 2 sensors in transmit.py with the radio back.
However, if you want tot store the data in a .csv file, here is the python file directly from Adafuit but optimized for 2 sensors and writing to a file.
The code is found @ github.
I use UART because i have only 1 usb port, and it is easy to listen on the same serial port for the gps and the radio module
The telemetry.py code talks directly over serial to the gps, and then sends the data.
$$Callsign,counter,time,lat,lon,sat,alt,temp1*checksum, test example without GPS.
The python modules serial and crcmod are used.
sudo apt-get install python-serial python-pip
sudo pip install crcmod
The adxl is connected to i2c.
Pi –> ADXL345
How we set i2c up to get it working: here.
The plan is to have 4 x 1,5v lithium energizer batteries in series (6v)
Running scripts from startup
We can automate the startup of the python scripts each time it is powered up. To do we need to edit crontab. When you need to do something with intervals, time.sleep does not work in cron. We use a work around, we use a bash script to load the python files at startup and stay running until shutdown.
sudo crontab -e
Add at the bottom:
@reboot sh /home/pi/autostart.sh
now make 2 files named start_telemetry.sh and start_timelapse.sh
sudo python /home/pi/telemetry & sudo python /home/pi/timelapse.py & sudo python /home/pi/sensors.py &
Now make sure we can execute the file on start.
chmod 755 /home/pi/start_timelapse.sh
Reboot and the code should be running