Satellite Applications Catapult organised a weekend to build a nano-satellite using Arduino and friends, equipped with radio transmitter, camera and sensors, and launched on a weather balloon…
… and no, the satellite pictures in the featured image of this post were not created from the NanoSat I’m sad to say 🙂 It’s a giant screen at the offices of Satellite Applications Catapult (SAC), located near Didcot in Oxfordshire.
SAC kindly organised a weekend event to build and launch a nano-satellite (NanoSat) to demonstrate the use of low-cost technology in scenarios that would have seemed impossible until recently. They provided the basic materials for 8 teams and I was lucky enough to participate. Following a fairly intensive research project over the spring/summer, I took a break from data science in September to start tinkering with the ‘Internet of Things’ (IoT) using Arduino-based kit. This event was the perfect opportunity to try out some new skills.
The objective was simple: Construct a NanoSat that could communicate with a ground-level Arduino over radio and design a program to make use of the data it would collect whilst floating up in the air attached to a weather balloon.
We were given the basic materials and a modified version of the Arduino IDE software containing libraries for the micro-controller and components provided.
Step 1: Construct the NanoSat
The kit has been designed to not require any soldering skills. Missing from the image above is the metal shell that the NanoSat had to be squeezed into. The components included an Arduino micro controller, lithium battery, 4 solar panels to charge the battery once it is up in the air, camera, accelerometer, magnetometer and temperature sensors, SD card and slot for storing data direct on the NanoSat, radio transmitter to send data down to the ground.
And here’s the finished gizmo!
Also provided were an Arduino and radio shield to receive data on the ground and spare components to test programs. We actually used the spares to build a NanoGround so that we could compare readings. The completed trio are shown below: NanoSat, NanoGround (on a breadboard) and the ground station Arduino (with red radio shield attached) that will receive the data.
The ground station (and the NanoGround too since it didn’t have its own power source) would be connected into my laptop during the NanoSat’s flight. The hi-tech plastic container was for transportation to the launch site 🙂
Step 2: Create the payload
We were pretty much left to our own devices to decide what sort of payload we wanted to create for the NanoSat. Unsurprisingly, everyone wanted to get the camera taking images that would be written to the SD card and retrieved once the NanoSats were back at ground-level. Unfortunately, the camera module proved unusable. One team managed to get it to take one picture during the test… but it was still on the ground at the time
As an alternative, my team decided to focus on the environmental sensors. I wanted to see if we could get a live stream of data displayed on the laptop whilst the NanoSat was up in the air. Rather than just stream text, I created a Python script to plot temperature readings interactively whilst simultaneously writing all sensor data to a text file in the background so we could have a look in more detail afterwards.
To have a functioning payload required three programs to be written:
- Arduino sketch for the NanoSat to function as the radio client
- Arduino sketch for the ground station to function as the radio server
- Python notebook reading in data from the ground station serial port and also the NanoGround simultaneously to chart data interactively
If of interest, I’ll post the scripts and descriptive notes.
Step 3: Launch time!
With everything built and tested, it was time to attach the 8 NanoSats to the weather balloon.
No the person inspecting one of the NanoSats was not part of our team 😉 but he does provide some scale to show the size of the dinky gizmos. They were strapped to a frame attached to a weather balloon
… and away it goes!
We were successful in getting data transmitted from the weather balloon to the ground station and displayed interactively on my laptop. Unfortunately, I forgot to take any photos live but the image below is an idea of what the chart looked like. It used matplotlib with charting set to interactive mode
All in all, it was a very successfull weekend. It was disappointing that we couldn’t get the camera module to work but fantastic to have a functioning NanoSat transmitting data from its sensors to a ground station and streamed live using Python.
One last look at our very own little NanoSat 🙂 Alas, we were not allowed to take them home…
A big big thank you to Satellite Applications Catapult for generously providing their time and resources over the weekend. Next steps for the NanoSat are to refine the kit and it should become available for use in community and educational projects in the near future.