11import time
22import board
33import busio
4- from digitalio import DigitalInOut , Direction
4+ from digitalio import DigitalInOut
55import neopixel
66from adafruit_esp32spi import adafruit_esp32spi , adafruit_esp32spi_wifimanager
77from adafruit_io .adafruit_io import IO_HTTP
1010import adafruit_pm25
1111import adafruit_bme280
1212
13+ ### Configure Sensor ###
14+ # Return BME280 environmental sensor readings in degrees Celsius
15+ USE_CELSIUS = False
16+ # Interval the sensor publishes to Adafruit IO, in minutes
17+ PUBLISH_INTERVAL = 10
1318
1419### WiFi ###
1520
3136wifi = adafruit_esp32spi_wifimanager .ESPSPI_WiFiManager (esp , secrets , status_light )
3237
3338# Connect to a PM2.5 sensor over UART
34- reset_pin = DigitalInOut (board .G0 )
35- reset_pin .direction = Direction .OUTPUT
36- reset_pin .value = False
3739uart = busio .UART (board .TX , board .RX , baudrate = 9600 )
38- pm25 = adafruit_pm25 .PM25_UART (uart , reset_pin )
40+ pm25 = adafruit_pm25 .PM25_UART (uart )
3941
4042# Connect to a BME280 sensor over I2C
4143i2c = busio .I2C (board .SCL , board .SDA )
@@ -80,6 +82,7 @@ def calculate_aqi(pm_sensor_reading):
8082 aqi_cat = None
8183 return aqi_val , aqi_cat
8284
85+
8386def sample_aq_sensor ():
8487 """Samples PM2.5 sensor
8588 over a 2.3 second sample rate.
@@ -107,6 +110,7 @@ def sample_aq_sensor():
107110 aq_samples .clear ()
108111 return aq_reading
109112
113+
110114def read_bme280 (is_celsius = False ):
111115 """Returns temperature and humidity
112116 from BME280 environmental sensor, as a tuple.
@@ -122,23 +126,19 @@ def read_bme280(is_celsius=False):
122126
123127
124128# Create an instance of the Adafruit IO HTTP client
125- io = IO_HTTP (secrets [' aio_user' ], secrets [' aio_key' ], wifi )
129+ io = IO_HTTP (secrets [" aio_user" ], secrets [" aio_key" ], wifi )
126130
127131# Describes feeds used to hold Adafruit IO data
128132feed_aqi = io .get_feed ("air-quality-sensor.aqi" )
129133feed_aqi_category = io .get_feed ("air-quality-sensor.category" )
130134feed_humidity = io .get_feed ("air-quality-sensor.humidity" )
131135feed_temperature = io .get_feed ("air-quality-sensor.temperature" )
132136
133-
134137# Set up location metadata from secrets.py file
135- location_metadata = (secrets ['latitude' ], secrets ['longitude' ], secrets ['elevation' ])
136-
137- io .send_data (feed_aqi ["key" ], 'test' , location_metadata )
138+ location_metadata = (secrets ["latitude" ], secrets ["longitude" ], secrets ["elevation" ])
138139
139140elapsed_minutes = 0
140141prv_mins = 0
141- aqi_readings = 0.0
142142
143143while True :
144144 try :
@@ -155,20 +155,20 @@ def read_bme280(is_celsius=False):
155155 continue
156156
157157 if cur_time .tm_min >= prv_mins :
158- print ("%d min elapsed.." % elapsed_minutes )
158+ print ("%d min elapsed.." % elapsed_minutes )
159159 prv_mins = cur_time .tm_min
160160 elapsed_minutes += 1
161161
162- if elapsed_minutes >= 1 :
162+ if elapsed_minutes >= PUBLISH_INTERVAL :
163163 print ("Sampling AQI..." )
164164 aqi_reading = sample_aq_sensor ()
165165 aqi , aqi_category = calculate_aqi (aqi_reading )
166- print ("AQI: %d" % aqi )
167- print ("Category: %s" % aqi_category )
166+ print ("AQI: %d" % aqi )
167+ print ("Category: %s" % aqi_category )
168168
169169 # temp and humidity
170170 print ("Sampling environmental sensor..." )
171- temperature , humidity = read_bme280 ()
171+ temperature , humidity = read_bme280 (USE_CELSIUS )
172172 print ("Temperature: %0.1f F" % temperature )
173173 print ("Humidity: %0.1f %%" % humidity )
174174
0 commit comments