In this project, we recorded CO2 and O2 data from six Sensirion SCD30 and Grove-ME2-O2 sensors using Arduino MEGA. While the ME2-O2 produce analog output, the SCD30 communicate via the I2C interface. Each SCD30 sensor has the same permanent I2C address, therefore, we use TCA9548A I2C multiplexer to read multiple SCD30. The real-time data was displayed using low power Nokia 5110 LCD module and recorded to the sd card.
Material:
- Arduino MEGA
- TCA9548A I2C multiplexer
- Sensirion SCD30 CO2 sensor
- Grove-ME2-O2 sensors
- Nokia 5110 LCD
- SD card module
- DS1307 RTC module
- Custom shield for Arduino MEGA (I made using Easy EDA online editor)
- PJ320A 3.5MM Headphone Audio Socket
- 4 pin audio jack
- Casing, Switches, DC socket, cables, etc
Arduino code -> download
PCB Gerber file -> download
The Sensors
SCD30 -> We use SCD30 because, in addition to CO2, it can measure temperature and humidity. The $60 price is also quite reasonable for its specification. SCD30 have automatic self-calibration mode, which took 7 days with at least 1-hour exposure to fresh air to finish. I feel that the long self-calibration time was quite cumbersome, other than that, I’m generally happy with the sensor. I have been using the Sensirion sensor for years and they never let me down. The SCD30 has a CO2 measurement range of 0 – 40.000 ppm, which is sufficient to measure the environmental condition. However, during the first observation in my experiment, I found out that the concentration of CO2 raised up above the sensor upper-limit. Therefore I hooked up another sensor (senseair K33-BLG-F) that have a higher upper limit of 300.000 ppm. I will write about this sensor latter.
Grove-ME2-O2 -> The analog output means that it is quite sensitive to noise, and good power supply should be used. You will get different readings if you change the power supply. Well, anyway I’m not expecting so much with this sensor as the manufacturer had warned me about such issue, and they not recommend to use ME-O2 sensor for accurate measurements.
PCB design
I design the PCB to accommodate all required module and 12 PJ320A socket. 6 sockets for TCA9548A I2C in (top layer) + 6 sockets for Arduino analog in (bottom layer). everything has to fit within 10 cm x 10 cm PCB size so that I can fabricate at the cheapest price. It cost me $12 for 5 pcs of PCB at pcbway, there is $5 discount for new costumer so I just have to pay $7, good deal!. The PCB design can accommodate any kind of analog and I2C sensors. 12 PJ320A socket is the maximum number I can squeeze in 10 cm space without compromising the clearance between the audio jack. Also, PJ320A was the smallest 4 pin audio jack I can find.
Power
The logger was powered by 5v 1A dc power supply via VIN. It was less than the recommended 6-9v for powering trough VIN, but the sensors were happy with less than 5v. I don’t know why, but the LCD module won’t light up when I gave 9v supply from VIN.