An internet-connected temperature and humidity monitor for 3D printer enclosures based on the Adafruit Feather TFT ESP32-S3 board and AHT20 breakout sensor.
Code will be written in CircuitPython, and cloud functionality will run through Microsoft Azure, with an emphasis on their low- and no-cost service tiers.
I created this project both to learn more about CircuitPython as well as Azure's IOT services. (Disclosure: I work for Microsoft, but this project is in no way sponsored or endorsed by the company.)
Feature planning & roadmaps will be maintained in this repo's Issues.
- Firmware: CircuitPython v8.x for ESP32-S3 TFT PSRAM (currently in alpha)
- Python Libraries:
- Adafruit CircuitPython library bundle for v8.x (currently in alpha)
- Adafruit_CircuitPython_AzureIoT library
Configure the device's behavior by modifying the variables under the # Configuration
comment immediately following the import
statements.
Variable | Description |
---|---|
delay | The amount of time to wait between sensor readings, in seconds |
temp_warning_c | The minimum temperature, in Celcius, at which a warning status will be triggered. Values less than this number will be considered OK. When the temperature is in a warning status, both the Celcius and Fahrenheit will be displayed in yellow. |
temp_critical_c | The minimum temperature, in Celcius, which should be considered critical. When the temperature is in a critical status, both the Celcius and Fahrenheit will be displayed in red. |
humid_warning | The minimum relative humidity at which a warning status will be triggered. Values less than this number will be considered OK. When the humidity is in a warning status, the relative humidity will be displayed in yellow. |
humid_critical | The minimum relative humidity which should be considered critical. When the humidity is in a critical status, the relative humidity will be displayed in red. |
Wifi connection code uses CircuitPython's secrets.py
convention, as shown in this project. To avoid accidentally saving credentials in GitHub, I've added the file to .gitignore
.
Create your own secrets.py
file in the root of the file system. It needs to contain a dictionary with the SSID. Copy the code below into your new file and populate it with the correct values for your environment.
Note: If you want to use the device in offline-only mode, create the
secrets.py
file with an empty dictionary or comment out the line that setsssid
.
secrets = {
'ssid' : 'your-ssid-here',
'password' : 'your-password-here'
}
The onboard NeoPixel is used as an indicator of overall status.
Color | Indication |
---|---|
Red | One or both sensor values are in a Critical status. |
Yellow | One or both sensor values are in a Warning status |
Green | All sensor values are OK |