Update config, README, board, case for v2.x

This commit is contained in:
2026-01-03 03:33:48 -05:00
parent 07eefdb466
commit b5fe785170
16 changed files with 23100 additions and 9270 deletions

2
.gitignore vendored
View File

@@ -2,3 +2,5 @@ venv/
.esphome/ .esphome/
custom/ custom/
update-all.sh update-all.sh
secrets.yaml
*.stl

View File

@@ -1,56 +1,63 @@
# MicroEnv v1.x # MicroEnv v2.x
The MicroEnv is a compact and simplistic environmental monitoring sensor, ![MicroEnv](cover.png)
based on the ESP32-C3 and the Sensirion SGP41 and SHT45 sensors, using
ESPHome for integration with HomeAssistant
Use a MicroEnv near a source of emissions to monitor air quality, or as The MicroEnv is a compact and simplistic environmental monitoring sensor, based on the ESP32-C3 and the Sensirion SGP41 VOC/NOx and SHT45 temperature/humidity sensors, using ESPHome for integration with HomeAssistant.
a general room environmental tracking sensor. It is, in effect, a cut
down version of the environmental sensor package of my [Supersensor 2.x](https://github.com/joshuaboniface/supersensor2)
project in a much smaller footprint.
Power is provided by USB-C, though a very slim connector is required when Use a MicroEnv near a source of emissions to monitor air quality, evaluate temperatures, or as a general room environmental tracking sensor. It is, in effect, a cut down version of the environmental sensor package of my [SuperSensor](https://github.com/joshuaboniface/supersensor) project in a standalone footprint designed for maximum temperature accuracy.
using SMD soldering without a buffer.
The Sensirion sensors are elevated with through-hole pins, to ensure Power is provided by USB-C, which is also used for initial flashing. Once running, the device connects to WiFi to provide data to Home Assistant or via the ESPHome WebUI/API.
optimal distance between the (warm) board and the sensors themselves.
You can either directly solder the sensors to the board or, as I do,
use 4-pin female sockets for easy changing should it be necessary.
![MicroEnv Board Design](/board/pcb.svg) The Sensirion sensors are directly soldered onto the board along with their power management circuitry, using SMD techniques, which is in contrast to the socketed GY-form-factor sensors from [version 1.x](https://github.com/joshuaboniface/microenv/tree/v1.x). This provides more compactness and flexibility in terms of positioning to ensure the temperature sensor is properly isolated from the rest of the system.
Version 2.x features an extended 5mm-width, 40mm-length "neck", the end of which contains the SHT45 temperature sensor, for maximum isolation from the ESP32 and SGP41 sensor, both of which produce heat which can negatively affect the SHT45 temperature. This emulates the design of many temperature probe devices which use similar long boards for isolation purposes and work quite well in this regard.
![MicroEnv Board Design](/board/board.svg)
The PCB design details and assembly instructions can be found [in /board](board/) and on [OSHWLab](https://oshwlab.com/joshuaboniface/microenv-2-0).
Since this revision uses directly SMD-mounted components, it requires fine soldering using solder paste and either a hotplate or, with extreme care, hot air soldering techniques. It is strongly recommended that anyone attempting to build one read the datasheets for the [SHT45](https://sensirion.com/media/documents/33FD6951/67EB9032/HT_DS_Datasheet_SHT4x_5.pdf) and [SGP41](https://sensirion.com/media/documents/5FE8673C/61E96F50/Sensirion_Gas_Sensors_Datasheet_SGP41.pdf) sensors thoroughly to ensure they are not subject to overheating which can result in potential damage or incorrect operation. We recommend using low-temperature GA-SN solder paste for this purpose, and suggest ordering the PCB with lead-free HASL to facilitate this.
## v1.x Compatibility
The only changes between v1.x and v2.x are in the board layout and component mounting; for software purposes, both versions are functionally identical aside from versioning. Thus all changes should be ported to both the `v1.x` and `v2.x` branches. There is no `master` branch.
## Parts List ## Parts List
| Qty | Component | Cost (mid-2025 CAD, ex. shipping) | Links | **Note:** All prices are $CAD, as of late November 2025, excluding shipping, sales, and bulk discounts beyond those indicated.
|-------|---------------------|-----------------------------------|-------|
| 1 | GY-SGP41 | $9.58 | [AliExpress](https://www.aliexpress.com/item/1005007958589642.html) |
| 1 | GY-SHT45 | $5.67 | [AliExpress](https://www.aliexpress.com/item/1005008175340220.html)* |
| 1 | ESP32-C3 | $3.12 | [AliExpress](https://www.aliexpress.com/item/1005007205044247.html) |
| 2 | Female 4-pin header | $0.37 ($14.99/40) | [Amazon](https://www.amazon.ca/dp/B08LF3S5S8) |
| 1 | Custom PCB (JLC) | $0.50 ($5.00/10) | [GitHub](https://github.com/joshuaboniface/microenv/tree/master/board) |
| **TOTAL** | | **$19.24** | |
`*` Ensure you select the correct device on the page as it shows multiple options. **Note:** For AliExpress item links marked `*`, ensure you select the correct device; multiple different models share the page.
## Configurable Options | Qty | PCB ID(s) | Component | Cost | Links |
|-------|-----------|------------------------------------------------|---------------------|-------|
| 1 | N/A | PCB - "MicroEnv" | $0.64 ($3.20/5) | [EasyEDA/JLCPCB](/board/pcb.easyeda.json) |
| 1 | ESP32-C3 | ESP32-C3 development board (SMD) | $2.46 ($12.28/5) | [AliExpress](https://www.aliexpress.com/item/1005007205044247.html)* |
| 1 | SHT4x | Sensirion SHT45-AD1F-R2 | $9.37 | [DigiKey.ca](https://www.digikey.ca/en/products/detail/sensirion-ag/SHT45-AD1F-R2/17180856) |
| 1 | SGP4x | Sensirion SGP41-D-R4 | $13.00 | [DigiKey.ca](https://www.digikey.ca/en/products/detail/sensirion-ag/SGP41-D-R4/15652788) |
| 1 | R1 | CR1206-FX-10R0ELFCT-ND (10Ω 1% 1/4W 1206) | $0.16 | [DigiKey.ca](https://www.digikey.ca/en/products/detail/bourns-inc/CR1206-FX-10R0ELF/2562695) |
| 1 | C1 | 399-C0805C106K8PACTUCT-ND (10μF 10V X5R 0805) | $0.19 | [DigiKey.ca](https://www.digikey.ca/en/products/detail/kemet/C0805C106K8PACTU/1090830) |
| 1 | C2 | 399-C0805C104K5RACTUCT-ND (0.1μF 50V X7R 0805) | $0.12 | [DigiKey.ca](https://www.digikey.ca/en/products/detail/kemet/C0805C104K5RACTU/411169) |
| 1 | C3 | 399-C0805C105K3RACTUCT-ND (1μF 50V X7R 0805) | $0.18 | [DigiKey.ca](https://www.digikey.ca/en/products/detail/kemet/C0805C105K3RACTU/2211765) |
| **T** | | | **$26.14** | *plus tools, solder, etc.* |
There are several UI-configurable options with the MicroEnv to help you get ## Case
the most out of the sensor for your particular use-case.
### Temperature Offset (selector, -30 to +10 @ 0.1, -5 default) The MicroEnv design includes [a case to enclose the sensor](case/) while still providing good airflow to cool the microcontroller and provide quality exposure for the sensors. This case can be printed in any material, though ABS is recommended for rigidity and strength.
Allows calibration of the SHT45 temperature sensor with an offset from -30 to +10 ## Calibration
degrees C. Useful if the sensor is misreporting actual ambient tempreatures. Due
to internal heating of the SHT45 by the ESP32, this defaults to -5; further
calibration may be needed for your sensors and environment.
### Humidity Offset (selector, -20 to +20 @ 0.1) Due to its design explicitly focusing on temperature accuracy, the MicroEnv should not require any Temperature Offset corrections in normal use; the option is however still provided just in case this is required in your environment.
Allows calibration of the SHT45 humidity sensor with an offset from -20 to +20 The heater component of the SHT45 is explicitly disabled, as this should only be required in extreme humidity conditions.
percent relative humidity. Useful if the sensor is misreporting actual humidity.
## Home Assistant View Like its parent SuperSensor, the MicroEnv provides several additional configurable options for a "Room Health" metric system. For more detail, see [the main SuperSensor README](https://github.com/joshuaboniface/supersensor/tree/v3.x/configuration#room-health) section on the Room Health system.
This image shows the various available sensors in Home Assistant. # Contributing
![MicroEnv Home Assistant](/microenv-homeassistant.png) If you wish to contribute to the MicroEnv project, please open a pull request in this repository. All pull requests will be carefully reviewed before inclusion, as we are extremely selective about what we modify. Note that any signifiant logical changes should also be compatible with the SuperSensor, and changes from that project will be occasionally integrated here.
Please ensure you target the correct branch(es) for your changes. Currently we are supporting both `v1.x` and `v2.x` in software as noted above, and there is no `master`/`main` branch. This support of both `v1.x` and `v2.x` means a 1-to-1 correlation of functionality between those two versions, so any PR to one will be back- or forward-ported to the other, and your changes(s) must be compatable with both.
Any changes must be **globally applicable to all users** of the project; if you wish to maintain your own customizations that are only applicable for yourself, please fork the project and adjust your package import URL accordingly.
"AI" (LLM) contributions are not prohibited, but you - a human - **must** at least review, reformat, and test the changes yourself before submitting them. Obviously pure-LLM-generated PRs that do not function, mangle formatting or functionality, or otherwise clearly have no human review will be rejected with prejudice. This extends to the PR body itself: write in your own words, not the output of an LLM, and if you can't concisely sumarize the changes yourself, then we're not interested in them.

49
board/README.md Normal file
View File

@@ -0,0 +1,49 @@
# MicroEnv v2.x Board Designs
This is a collection of [EasyEDA](https://easyeda.com/) schematics and board desgins for the MicroEnv v2.x's components.
You can import the design definition files (`*.easyeda.json`) directly into EasyEDA via "File" -> "Open" -> "EasyEDA". The schematic is provided for reference in both EasyEDA and SVG formats; if you just wish to manufacture the boards, you only need to import the board definitions, then via "Fabrication" -> "One-click Order PCB/SMT" complete the order at [JLCPCB](https://jlcpcb.com). We order all boards in a black silkscreen with all other options as default.
You can also see the designs directly on [OSHWLab here](https://oshwlab.com/joshuaboniface/microenv-2-0).
The board design and images in this folder are © 2026 [Joshua M. Boniface](https://www.boniface.me) and licensed under the [Creative Commons Attribution-ShareAlike (BY-SA) 4.0](LICENSE) license.
## Schematic
The schematic is visible here in SVG format, and also as an EasyEDA definition in [schematic.easyeda.json](schematic.easyeda.json).
![Design schematic](schematic.svg)
The individual parts can be found, with their labels (`R1`, etc.) in the [main README parts list](https://github.com/joshuaboniface/microenv/tree/v2.x?tab=readme-ov-file#parts-list).
## Board
![MicroEnv v2.x board](board.svg)
This is the main board of the MicroEnv which contains all components, with the SHT45 sensor on a long (40mm) "neck" to isolate it from the other components.
The board is single-sided; there are no components on the reverse side.
## Assembly
Assembly can be accomplished either by hot-air reflow, or with a hotplate. The instructions are functionally identical for both except for the heating step (#5).
The hot-air process requires the least tools, but is finicky and error-prone. The hotplate process is much simpler and more forgiving, but requires a suitable hotplate. We recommend using the hotplate method for any more than a very small number of MicroEnv sensors.
1. Clean all PCBs thoroughly with isopropyl alcohol and paper towel.
2. Carefully apply solder paste to each pad, with the following guidelines:
* SHT45/SGP41: A very small amount on each pad, including the center pads; if you think it's not enough, it's just right.
* Passive SMD components (R1, C1-3): A moderate amount on each pad focusing on the outer edges.
* ESP32-C3: A very liberal amount on each pad for mechanical stability.
3. Place each component on its corresponding pad using tweezers. Ensure the components are properly aligned and then gently press them down into the solder paste.
**NOTE**: Placing each component after its corresponding solder paste can avoid accidental smudging.
4. Heat the hot air station to 240C; no higher! Apply heat to the **bottom** of the PCB until all the solder reflows. Check carefully for any bridges or failed joins and gently reflow in the same way as necessary. **Never apply heat directly to the sensors themselves!**
5. Perform electrical continuity tests to ensure there are no stray bridges.
The MicroEnv is now fully assembled and ready for final testing/provisioning.

File diff suppressed because it is too large Load Diff

187
board/board.easyeda.json Normal file

File diff suppressed because one or more lines are too long

77
board/board.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 71 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 75 KiB

File diff suppressed because one or more lines are too long

5
board/schematic.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 78 KiB

56
case/README.md Normal file
View File

@@ -0,0 +1,56 @@
# MicroEnv v2.x Case
This is a 3D-printable case/enclosure for the MicroEnv v2.0 module. This case optional for functionality, but provides excellent aesthetics and a good mounting point for the sensor.
The design features two individual parts:
* A bottom piece which holds the circuit board.
* A top piece which covers the circuit board and sensors, with ample clearance for the components, a USB cable, and airflow for the sensors.
You can [tinker the design on TinkerCAD here](https://www.tinkercad.com/things/irFmvsATUlu-microenv-sensor-v2x-case).
The case design and images in this folder are © 2026 [Joshua M. Boniface](https://www.boniface.me) and licensed under the [Creative Commons Attribution-ShareAlike (BY-SA) 4.0](LICENSE) license.
## Printing
In this directory are 2 `.obj`-format CAD files providing the case. They should be compatible as-is with any slicing software and 3D printer model; no rotation or other transformations are required.
As a general set of parameters, all models should be printed with the following. All values are provided as their OrcaSlicer 2.3 names; your slicer may differ.
* 0.4mm nozzle/line width (or similar as provided by the slicer)
* 0.16mm layer height, or a clean multiple thereof
* No brim or raft
* 7-10 wall loops
* 7-10 shell layers (top + bottom)
* 25% infill
* Concentric patterns for infill
* Concentric patterns for surfaces (visual only)
* Back (preferred) or Aligned seams (visual only)
All other options are be specific to your printer, material, and desired effect.
The parts should be printed in a solid, durable material of any colour you wish. We use ABS in one of two colours (black or white) for our official prints.
### Case Models
These are the models that make up the case. Each case requires 1x `case-bottom` and 1x `case-top`.
#### `case-bottom`
This is the lower section of the case which directly holds the PCB and includes the male mating inserts. It also includes 3 vents for the SHT45.
#### `case-top`
This is the upper section of the case which covers the PCB and includes the female mating indents. It includes a pyramidal opening for the SGP41 sensor, 3 top and 4 side vents for the SHT45, and several cutouts for the USB connection.
## Assembly & Installation
To begin, print the parts above as required for the specific mounting type you want.
1. Insert the PCB into the `case-bottom` print, ensuring that the holes in the PCB align with the standoffs in the print. There may be some play due to board or case warping, so press it down as far as it will go.
2. Take the `case-top` print, and align the male/female mating components, ensuring that the SGP41 sensor is correctly centered within it opening.
3. Press down gently but firmly on a hard even surface to combine the mating components and close the case.
**NOTE**: Once mated, the two prints can not be easily separated without likely damaging the male mating inserts. If you must open the case again, you may need to re-print the `case-bottom` model.

3061
case/case-bottom.obj Normal file

File diff suppressed because it is too large Load Diff

4983
case/case-top.obj Normal file

File diff suppressed because it is too large Load Diff

BIN
cover.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 KiB

View File

@@ -1,7 +1,7 @@
--- ---
############################################################################### ###############################################################################
# MicroEnv v1.0 ESPHome configuration # MicroEnv v2.0 ESPHome configuration
############################################################################### ###############################################################################
# #
# Copyright (C) 2025 Joshua M. Boniface <joshua@boniface.me> # Copyright (C) 2025 Joshua M. Boniface <joshua@boniface.me>
@@ -26,11 +26,11 @@ esphome:
friendly_name: "MicroEnv Sensor" friendly_name: "MicroEnv Sensor"
project: project:
name: "Joshua Boniface.microenv" name: "Joshua Boniface.microenv"
version: "1.0" version: "2.0"
min_version: 2025.11.0 min_version: 2025.11.0
dashboard_import: dashboard_import:
package_import_url: github://joshuaboniface/microenv/microenv.yaml@v1.x package_import_url: github://joshuaboniface/microenv/microenv.yaml@v2.x
esp32: esp32:
board: esp32-c3-devkitm-1 board: esp32-c3-devkitm-1
@@ -101,7 +101,7 @@ globals:
initial_value: "0.3" initial_value: "0.3"
logger: logger:
level: INFO level: DEBUG
baud_rate: 115200 baud_rate: 115200
api: api: