|
6 | 6 | from adafruit_esp32spi import adafruit_esp32spi, adafruit_esp32spi_wifimanager
|
7 | 7 | from adafruit_io.adafruit_io import IO_HTTP
|
8 | 8 | from simpleio import map_range
|
9 |
| - |
10 | 9 | import adafruit_pm25
|
11 | 10 | import adafruit_bme280
|
12 | 11 |
|
13 | 12 | ### Configure Sensor ###
|
14 |
| -# Return BME280 environmental sensor readings in degrees Celsius |
| 13 | +# Return environmental sensor readings in degrees Celsius |
15 | 14 | USE_CELSIUS = False
|
16 | 15 | # Interval the sensor publishes to Adafruit IO, in minutes
|
17 | 16 | PUBLISH_INTERVAL = 10
|
|
36 | 35 | wifi = adafruit_esp32spi_wifimanager.ESPSPI_WiFiManager(esp, secrets, status_light)
|
37 | 36 |
|
38 | 37 | # Connect to a PM2.5 sensor over UART
|
| 38 | +reset_pin = None |
39 | 39 | 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) |
41 | 50 |
|
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) |
45 | 54 |
|
46 | 55 | ### Sensor Functions ###
|
47 | 56 | def calculate_aqi(pm_sensor_reading):
|
@@ -111,18 +120,18 @@ def sample_aq_sensor():
|
111 | 120 | return aq_reading
|
112 | 121 |
|
113 | 122 |
|
114 |
| -def read_bme280(is_celsius=False): |
| 123 | +def read_bme(is_celsius=False): |
115 | 124 | """Returns temperature and humidity
|
116 |
| - from BME280 environmental sensor, as a tuple. |
| 125 | + from BME280/BME680 environmental sensor, as a tuple. |
117 | 126 |
|
118 | 127 | :param bool is_celsius: Returns temperature in degrees celsius
|
119 | 128 | if True, otherwise fahrenheit.
|
120 | 129 | """
|
121 |
| - humid = bme280.humidity |
122 |
| - temp = bme280.temperature |
| 130 | + humid = bme_sensor.humidity |
| 131 | + temp = bme_sensor.temperature |
123 | 132 | if not is_celsius:
|
124 | 133 | temp = temp * 1.8 + 32
|
125 |
| - return temperature, humid |
| 134 | + return temp, humid |
126 | 135 |
|
127 | 136 |
|
128 | 137 | # Create an instance of the Adafruit IO HTTP client
|
@@ -168,7 +177,7 @@ def read_bme280(is_celsius=False):
|
168 | 177 |
|
169 | 178 | # temp and humidity
|
170 | 179 | print("Sampling environmental sensor...")
|
171 |
| - temperature, humidity = read_bme280(USE_CELSIUS) |
| 180 | + temperature, humidity = read_bme(USE_CELSIUS) |
172 | 181 | print("Temperature: %0.1f F" % temperature)
|
173 | 182 | print("Humidity: %0.1f %%" % humidity)
|
174 | 183 |
|
|
0 commit comments