Simple test
Ensure your device works with this simple test.
examples/scd30_simpletest.py
1# SPDX-FileCopyrightText: 2020 by Bryan Siepert, written for Adafruit Industries
2#
3# SPDX-License-Identifier: Unlicense
4import time
5
6import board
7import busio
8
9import adafruit_scd30
10
11# SCD-30 has tempremental I2C with clock stretching, datasheet recommends
12# starting at 50KHz
13i2c = busio.I2C(board.SCL, board.SDA, frequency=50000)
14scd = adafruit_scd30.SCD30(i2c)
15
16while True:
17 # since the measurement interval is long (2+ seconds) we check for new data before reading
18 # the values, to ensure current readings.
19 if scd.data_available:
20 print("Data Available!")
21 print(f"CO2: {scd.CO2:d} PPM")
22 print(f"Temperature: {scd.temperature:0.2f} degrees C")
23 print(f"Humidity: {scd.relative_humidity:0.2f} % rH")
24 print("")
25 print("Waiting for new data...")
26 print("")
27
28 time.sleep(0.5)
Tuning Knobs
Experiment with different tuning parameters and settings
examples/scd30_tuning_knobs.py
1# SPDX-FileCopyrightText: 2020 by Bryan Siepert, written for Adafruit Industries
2#
3# SPDX-License-Identifier: Unlicense
4import time
5
6import board
7import busio
8
9import adafruit_scd30
10
11# SCD-30 has tempremental I2C with clock stretching, datasheet recommends
12# starting at 50KHz
13i2c = busio.I2C(board.SCL, board.SDA, frequency=50000)
14scd = adafruit_scd30.SCD30(i2c)
15# scd.temperature_offset = 10
16print("Temperature offset:", scd.temperature_offset)
17
18# scd.measurement_interval = 4
19print("Measurement interval:", scd.measurement_interval)
20
21# scd.self_calibration_enabled = True
22print("Self-calibration enabled:", scd.self_calibration_enabled)
23
24# scd.ambient_pressure = 1100
25print("Ambient Pressure:", scd.ambient_pressure)
26
27# scd.altitude = 100
28print("Altitude:", scd.altitude, "meters above sea level")
29
30# scd.forced_recalibration_reference = 409
31print("Forced recalibration reference:", scd.forced_recalibration_reference)
32print("")
33
34while True:
35 data = scd.data_available
36 if data:
37 print("Data Available!")
38 print("CO2:", scd.CO2, "PPM")
39 print("Temperature:", scd.temperature, "degrees C")
40 print("Humidity::", scd.relative_humidity, "%%rH")
41 print("")
42 print("Waiting for new data...")
43 print("")
44
45 time.sleep(0.5)
MCP2221 and SCD30 Example
MCP2221 is known to not like the SCD30. Here is how to avoid this!
examples/scd30_tuning_knobs.py
1# SPDX-FileCopyrightText: 2020 by Bryan Siepert, written for Adafruit Industries
2#
3# SPDX-License-Identifier: Unlicense
4import time
5
6import board
7import busio
8
9import adafruit_scd30
10
11# SCD-30 has tempremental I2C with clock stretching, datasheet recommends
12# starting at 50KHz
13i2c = busio.I2C(board.SCL, board.SDA, frequency=50000)
14scd = adafruit_scd30.SCD30(i2c)
15# scd.temperature_offset = 10
16print("Temperature offset:", scd.temperature_offset)
17
18# scd.measurement_interval = 4
19print("Measurement interval:", scd.measurement_interval)
20
21# scd.self_calibration_enabled = True
22print("Self-calibration enabled:", scd.self_calibration_enabled)
23
24# scd.ambient_pressure = 1100
25print("Ambient Pressure:", scd.ambient_pressure)
26
27# scd.altitude = 100
28print("Altitude:", scd.altitude, "meters above sea level")
29
30# scd.forced_recalibration_reference = 409
31print("Forced recalibration reference:", scd.forced_recalibration_reference)
32print("")
33
34while True:
35 data = scd.data_available
36 if data:
37 print("Data Available!")
38 print("CO2:", scd.CO2, "PPM")
39 print("Temperature:", scd.temperature, "degrees C")
40 print("Humidity::", scd.relative_humidity, "%%rH")
41 print("")
42 print("Waiting for new data...")
43 print("")
44
45 time.sleep(0.5)