New paper: Science on a micro-budget

What happens when one of your hobbies and work collide? A short article in Science!

I am sort of obsessed with astrophotography and try to obtain the best quality and quantity of data I can to make my images of some faint and distant object in the night sky. This results in me fine-tuning my equipment and spending long nights imaging under the stars. However, I need to find time to sleep as well. After all, I have a day job as an ecologist. So I have been semi-automating my system in order to let it run for the entire night on its own and while I get some sleep.


Arduino-based cloud sensor, with infrared thermometer to measure the sky temperature and ambient temperature sensor (black cable).

I stumbled across a user group that make their own cloud sensors (amongst other equipment) and thought this could be an interesting project to try. If clouds are detected, an alarm could be sent to my mobile phone and wake me up in time to pack or cover up my gear before getting wet and damaged. The cloud sensor is based on the Arduino, an open-source micro-controller and electronics platform. By combining temperature sensors and some coding, I can monitor for clouds. It works by measuring the sky and ambient temperature and at some threshold, the different between the two indicates cloud. You can find my code on GitHub.

There are many environmental sensors that are available for the Arduino and user-friendly groups to get you started. This is also true for the Raspberry Pi, an open-source micro-computer platform. Both the Arduino and Raspberry Pi run open-source software, which is easy to learn and already familiar to some scientists (e.g. Python). Nathan (aka @ecotechnica) had experience with the Raspberry Pi, so we teamed up to explore how open-source hardware and software could be used in science to help reduce research costs.


The two leading open-source hardware platforms: (A) The Arduino Uno (US$23), which has 16 MHz micro-controller with 32 kb of memory, plus 14 digital input/output pins and six analog pins to connect it to sensors and other components. (B) The first generation Raspberry Pi model B board included Ethernet and USB ports for connectivity. The current (2016) model B board (US$35) now includes integrated Bluetooth (v4.1) and wireless networking (802.11n).

We found that a wide range of devices can be made, such as weather stations, automatic watering systems for crops, high-altitude balloons for astronomy, remote camera systems, GPS tracking systems and laboratory automation equipment. All systems could be built at a fraction of the cost of their commercial equivalents. There was another advantage. Designs and code can be easily shared and even published along-side scientific reports or as separate publications, further improving transparency and repeatability of experiments.  Imagine been able to build the same piece of research equipment, with the exact components and run the same code that collects data in previous experiments! This is all possible with open-source hardware platforms, such as the Arduino and Raspberry Pi.

This all may sound a bit complicated and hard, but remember I was able to build a cloud sensor from instructions already published and modify the code to suit my needs. I also was able to write a driver in Visual Basic to interface the the cloud sensor to my imaging software. I have very little soldering, electronics or even coding experience. Now for the next open-hardware project!


Greenville, A.C. and Emery, N.J. (2016). Gathering lots of data on a small budget. Science, 353: 1360-1361.

See Nathan’s blog post for more.

About Aaron Greenville

I'm an Ecologist investigating how ecosystems respond to climate change and the introduction of exotic species.
This entry was posted in Publications and tagged , , , , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s