Skip to content

Commit 1e67df9

Browse files
authored
Merge pull request #1294 from brentru/update-aq-code-pmsa003l
Update Air Quality Sensor to support pmsa003l and BME680
2 parents f51b543 + 9141f31 commit 1e67df9

File tree

1 file changed

+21
-12
lines changed

1 file changed

+21
-12
lines changed

Adafruit_IO_Air_Quality/code.py

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,11 @@
66
from adafruit_esp32spi import adafruit_esp32spi, adafruit_esp32spi_wifimanager
77
from adafruit_io.adafruit_io import IO_HTTP
88
from simpleio import map_range
9-
109
import adafruit_pm25
1110
import adafruit_bme280
1211

1312
### Configure Sensor ###
14-
# Return BME280 environmental sensor readings in degrees Celsius
13+
# Return environmental sensor readings in degrees Celsius
1514
USE_CELSIUS = False
1615
# Interval the sensor publishes to Adafruit IO, in minutes
1716
PUBLISH_INTERVAL = 10
@@ -36,12 +35,22 @@
3635
wifi = adafruit_esp32spi_wifimanager.ESPSPI_WiFiManager(esp, secrets, status_light)
3736

3837
# Connect to a PM2.5 sensor over UART
38+
reset_pin = None
3939
uart = busio.UART(board.TX, board.RX, baudrate=9600)
40-
pm25 = adafruit_pm25.PM25_UART(uart)
40+
pm25 = adafruit_pm25.PM25_UART(uart, reset_pin)
41+
42+
# Create i2c object
43+
i2c = busio.I2C(board.SCL, board.SDA, frequency=100000)
44+
45+
# Connect to a BME280 over I2C
46+
bme_sensor = adafruit_bme280.Adafruit_BME280_I2C(i2c)
47+
48+
# Uncomment below for PMSA003I Air Quality Breakout
49+
# pm25 = adafruit_pm25.PM25_I2C(i2c, reset_pin)
4150

42-
# Connect to a BME280 sensor over I2C
43-
i2c = busio.I2C(board.SCL, board.SDA)
44-
bme280 = adafruit_bme280.Adafruit_BME280_I2C(i2c)
51+
# Uncomment below for BME680
52+
# import adafruit_bme680
53+
# bme_sensor = adafruit_bme680.Adafruit_BME680_I2C(i2c)
4554

4655
### Sensor Functions ###
4756
def calculate_aqi(pm_sensor_reading):
@@ -111,18 +120,18 @@ def sample_aq_sensor():
111120
return aq_reading
112121

113122

114-
def read_bme280(is_celsius=False):
123+
def read_bme(is_celsius=False):
115124
"""Returns temperature and humidity
116-
from BME280 environmental sensor, as a tuple.
125+
from BME280/BME680 environmental sensor, as a tuple.
117126
118127
:param bool is_celsius: Returns temperature in degrees celsius
119128
if True, otherwise fahrenheit.
120129
"""
121-
humid = bme280.humidity
122-
temp = bme280.temperature
130+
humid = bme_sensor.humidity
131+
temp = bme_sensor.temperature
123132
if not is_celsius:
124133
temp = temp * 1.8 + 32
125-
return temperature, humid
134+
return temp, humid
126135

127136

128137
# Create an instance of the Adafruit IO HTTP client
@@ -168,7 +177,7 @@ def read_bme280(is_celsius=False):
168177

169178
# temp and humidity
170179
print("Sampling environmental sensor...")
171-
temperature, humidity = read_bme280(USE_CELSIUS)
180+
temperature, humidity = read_bme(USE_CELSIUS)
172181
print("Temperature: %0.1f F" % temperature)
173182
print("Humidity: %0.1f %%" % humidity)
174183

0 commit comments

Comments
 (0)