The CO2 experiment you can do at home.


‘Why’ you are saying, would anyone need to demonstrate CO2’s tendency to trap heat? ‘This was discovered 100 years ago, and demonstrated with mercury thermometers!’.

Well because presidents and prime ministers and EPA chiefs and party leaders and communicators of all kinds say that this is not a thing. Of course, this experiment won’t change their minds, its only science after all, but it does head off that one argument – that the CO2 effect is mind-bogglingly complex.

Put some vinegar into a tall glass. Add some baking soda. As it froths up CO2 is formed. It is heavier than air and you can literally pour it from the glass. If you get it right, you can pour the invisible gas over a candle and extinguish it. That was the kind of thing kids did in the old-old days to learn about science.

You can demonstrate the greenhouse warming affect of CO2 in a similar way. By placing two vessels containing mostly-air in front of a powerful light source, and by giving one a much higher concentration of CO2 than the other, its possible to actually measure the temperature difference between the two vessels.

You can do this with normal thermometers stuck to the inside of the vessels but its much cooler to go digital and to have a log. Then you get to make a graph like this.


Its too small to see the times at the bottom but the increased in temperature in the CO2 jar began at 13:24 and dropped away at 14:36. That was the point where I turned the light source off. Note the steep drop off as there was suddenly much less to trap and both jars moved to room temperature (around 20C). The three bars on the upper part of the lines are 30, 35 and 40 degrees C. So the differential across one hour was between 5 and 7.5 degrees. The sensors read in farenheit so I converted it along the way.


The equipment to do this will cost you less than $20 NZ on TradeMe.

  • Arduino board (any one will do) – 7.99
  • DHT 11 temp sensor (2) – 6
  • 7 segment display (2) – 4

If you do a bit of electronics you’ll probably have these – if not they are an extra $7.

  • breadboard $5
  • jumper wires – $2

Other stuff you’ll need:

  • Two identical vessels (I used Agee jars but plastic bottles would be fine)
  • A light source that throws out some heat. I had a 150W worklight from Bunnings
  • A computer to set up the Arduino and also to record the logs if you want them.
  • Vinegar and baking soda (to make the CO2)

Also get something to seal the vessels. They shouldn’t be fully airtight since pressure differences affect the temperature. But sealed enough to stop all the CO2 escaping immediately. I used clingfilm and rubber bands.

I put equal parts vinegar in both jars and added baking soda to one. To make it fair, repeat the experienment with everything in the same place but swapping the roles of the jars – so the control jar becomes the CO2 jar and vice versa.


Here are the parts and the names for all the pins. The pins on the Arduino are pretty clearly marked.

Parts to make an Arduino CO2 experiment

Now here’s how to join them up. Connect the 5V pin on the Arduino to the long red bus on the breadboard. You’ll need to connect every pin marked VCC to that bus. (note on the breadboard in the picture the long bus is actually separated in the middle – you’ll see a couple of leads joining it up).

Connect the GND pin on the Arduino to the blue bus. Connect all the GND pins to that.

Now the DHT11s. They have a DATA pin. I’ve connected the one on the left to pin 20 on the arduino and the one on the right to pin 21.

Last is the digital readouts – the two TM1637s. On the left readout DIO goes to digital pin 6 and CLK goes to 7. For the right readout DIO and CLK are 3 and 2 respectively.

Note that you can use other pins provided you set the right numbers in the program below. Its pretty clearly marked in the code.

Preparing the arduino

You’ll need to install the Arduino IDE. Then install the libraries for the DHT11 and the TM1637.

Then create a new sketch in the Arduino IDE and insert this code into it:

#include "DHT.h"
#include <TM1637Display.h>

// Two DHT temperature sensors with 7 segment display and
// logging to the serial port. Suitable for the CO2
// greenhouse gas experiment.  Note the values are all
// in Farenheight.

// Module connection pins (Digital Pins)
#define CLK2 7
#define DIO2 6
#define CLK1 2
#define DIO1 3

TM1637Display display1(CLK1, DIO1);
TM1637Display display2(CLK2, DIO2);

#define DHTPIN1 20
#define DHTPIN2 21 
#define DHTTYPE DHT11


void setup() {
#ifndef ESP8266
  while (!Serial); // for Leonardo/Micro/Zero
  Serial.println("DHT1xx test!");


void loop() {

  float f = dht1.readTemperature(true);
  float f2 = dht2.readTemperature(true);

  if (isnan(f2) || isnan(f)) {
    Serial.println("Failed to read from DHT sensor!");

  display1.showNumberDecEx(ftoc(f),0x80 >> 1, true);
  display2.showNumberDecEx(ftoc(f2),0x80 >> 1, true);

  Serial.print("Temperature1: ");
  Serial.print(" Temperature2: ");
  Serial.println(" ");
int ftoc(float x)
  return x * 100;

Capturing the logs.

You can cut and paste from the Arduino IDE’s serial monitor but the Arduino had no idea of the time so here’s a trick to add it for linux users.

Install minicom and use it to capure a log file. You can do this by running it against the USB port the Arduino is using:

sudo minicom --device /dev/ttyUSB0 --baudrate 9600 --capturefile=minicom.cap

(Note you’ll need to see on the Arduino IDE whether you’re using the same USB port and baudrate)

Here’s a line to catch the minicom file and add times to it while its being created:

tail -f minicom.cap | perl -ane 'print scalar localtime . " $_"'

The output from that can be schlepped into excel fror graphing.

And finally

So wasn’t that fun. When you’re bored with that you can use the parts (with a few more – maybe another 10 bucks) to make a logging, standalone methane sensor.


‘Why’ you ask, ‘would anyone want one of those? Surely the hundreds of well sites in NZ are monitored closely using sophisticated gear since we all know that fugitive emissions are the curse that effectively make gas as bad (or worse than) the coal it is meant to transition us from?’

Yup. You’d think that. But for about $30(NZ) you can have a one of your own. This one will run on a battery and can log to an SD card – meaning you can set it up anywhere and look at the logs later.

This can measure methane levels down to 200ppm. That’s high. Normal methane levels could be 4-5 ppm while the massive California gas leak of 2015 produced measurements of 50ppm a mile from the site of a leak from a 60 year old well.  The upper limit for working around methane for prolonged periods is closer to 1000ppm.

Author: ishmael

Wanting to throw some light on the climate issue.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.