Weatherize Truckee Logo

ESP32-S2 Temp/Humidity

ESP32-S2 Temp/Humidity
Nicely documented board with WIFI, temperature, pressure, and humidity sensor. 4MB storage. Circuit Python bootloader takes 2.8MB. Runs like a USB drive. Save new code and it starts running it immediately. So you can deploy by editing the code.py text file and copy into root of it as USB drive. "secrets.py" file contains the wifi login info.

Edit using "Mu editor" or any text editor. Mu editor has a button to open the serial interface for immediate feedback.

TIP: make sure to "eject" the thumbdrive rather then just resetting it. It seems to help keep it synced right.

Also, the board takes STEMMA QT not STEMMA cables. (they are smaller) This allows connecting to STEMMA QT sensor boards or displays.

STEMMA QT - 4MB Flash + 2 MB PSRAM
Product ID: 5303
$24.95

Note: temperature seems to read 8-10F high. This could be calibration. Though I think it is the device heating itself up. Perhaps the external temp sensors are more accurate.


First setup, had to install circuit python

Put in Adafruit Circuit Python bootloader (U2F) file. Then copied in the Adafruit BME280 library into /lib. Other sensors will probably have different libraries to install.

Put in this code to run pull in sensor info and put into the serial console.

# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT

"""
Example showing how the BME280 library can be used to set the various
parameters supported by the sensor.
Refer to the BME280 datasheet to understand what these parameters do
"""
import time
import board
import adafruit_bme280.advanced as adafruit_bme280

print("hi")

# Create sensor object, using the board's default I2C bus.
i2c = board.I2C() # uses board.SCL and board.SDA
# i2c = board.STEMMA_I2C() # For using the built-in STEMMA QT
# connector on a microcontroller
bme280 = adafruit_bme280.Adafruit_BME280_I2C(i2c)

# OR create sensor object, using the board's default SPI bus.
# SPI setup
# import digitalio
# spi = board.SPI()
# bme_cs = digitalio.DigitalInOut(board.D10)
# bme280 = adafruit_bme280.Adafruit_BME280_SPI(spi, bme_cs)

# Change this to match the location's pressure (hPa) at sea level
bme280.sea_level_pressure = 1013.25
bme280.mode = adafruit_bme280.MODE_NORMAL
bme280.standby_period = adafruit_bme280.STANDBY_TC_500
bme280.iir_filter = adafruit_bme280.IIR_FILTER_X16
bme280.overscan_pressure = adafruit_bme280.OVERSCAN_X16
bme280.overscan_humidity = adafruit_bme280.OVERSCAN_X8
bme280.overscan_temperature = adafruit_bme280.OVERSCAN_X2
# The sensor will need a moment to gather initial readings
time.sleep(1)

while True:
print("\nTemperature: %0.1fF" % (bme280.temperature * 1.8 + 32))
print("Humidity: %0.1f %%" % bme280.relative_humidity)
print("Pressure: %0.1f hPa" % bme280.pressure)
print("Altitude = %0.2f meters" % bme280.altitude)
time.sleep(2)


First setup, had to install circuit python