DIY Weather Station Enclosure for a Stevenson Screen — Designed Entirely With Claude.ai (ESP32-C3 + AHT10 + BMP280 + Rain Sensor)

by nilnull in Circuits > Sensors

73 Views, 1 Favorites, 0 Comments

DIY Weather Station Enclosure for a Stevenson Screen — Designed Entirely With Claude.ai (ESP32-C3 + AHT10 + BMP280 + Rain Sensor)

IMG_20260710_184748.jpg
IMG_20260710_184758.jpg
IMG_20260710_185729.jpg
IMG_20260710_185735.jpg

This is a fully 3D-printable, support-free enclosure for a compact DIY weather station, meant to live inside a Stevenson screen (radiation shield). It houses an ESP32-C3 Super Mini and the LM393 controller board of a rain sensor side by side in the main box, while the AHT10 (temperature/humidity) and BMP280 (pressure) sensors sit in two separate ventilated pods on opposite ends of the box — thermally isolated from the electronics so the WiFi chip's heat doesn't skew your readings. The rain detection panel itself stays outside the enclosure, exposed to the sky.

The twist: this entire project — the parametric 3D design, all the STL files, and the firmware code — was created with Claude.ai (Anthropic's AI assistant), through a plain conversation in Bulgarian. I described what I needed, pointed out problems.The Python script that generates the STLs is included, so you can tweak any dimension and regenerate the files yourself.

Supplies

Electronics:

  1. ESP32-C3 Super Mini development board
  2. AHT10 temperature & humidity sensor module (I²C)
  3. BMP280 barometric pressure module, 3.3/5 V version (I²C)
  4. Rain/raindrop sensor kit (detection panel + LM393 comparator board)
  5. Dupont wires or thin silicone wire, USB-C cable

Hardware:

  1. 8× brass heat-set inserts M3, 3 mm length (Ø ~4.2–4.6 mm OD)
  2. 8× M3×8 bolts
  3. 2–4 thin zip ties (for the boards and sensors)
  4. Soldering iron (for the inserts)

How the Design Was Made (With an AI, Not a CAD Program)

Instead of modeling in Fusion or FreeCAD, I described the project to Claude.ai in a chat. Claude wrote a parametric Python script (using the trimesh library with boolean operations), rendered previews to check its own work, and exported watertight STLs.

The interesting part was the iteration loop — exactly like working with a human designer:

  1. v1: Claude produced a box, lid and two sensor pods. Problem: the pods were fully enclosed — the sensors physically couldn't get inside. I pointed it out.
  2. v2: Claude added a rectangular insertion opening in the pod flange — you slide the sensor in from the back, and the box wall closes the opening when the pod is bolted on.
  3. v3: I asked for M3 heat-set inserts instead of nuts. Claude added thickened wall sections (a 2 mm wall is too thin for a 3 mm insert) with Ø4.0 pockets.
  4. v4: The bolt holes ended up under the pod's louvered body — unreachable with a screwdriver. Claude moved them to side ears that stick out past the body.
  5. v5: An anti-rotation pin Claude added would have needed print supports. Replaced with a second insert. I also rejected the first board cradles as too crude — Claude redesigned them with raised edge seats (5 mm clearance for soldered pins underneath), corner fences, and zip-tie slots.
  6. v6: The pods' flat internal ceiling was a 26×22 mm bridge — bad without supports. Claude replaced it with a 45° hip roof, inside and out, and then ran an automated overhang analysis on its own mesh to confirm nothing steeper than 45° remained.

Every version was regenerated in seconds because the design is a script, not a mesh. If your LM393 board is a couple of millimeters different from mine, you change two numbers in weather_box.py and rerun it.

Files (attached to This Instructable)

Files (attached to this Instructable):

  1. kutia_osnova.stl — main box base
  2. kutia_kapak.stl — lid
  3. sensor_pod_AHT10.stl + sensor_pod_BMP280.stl — identical ventilated pods, print 2×
  4. weather_box.py — the parametric generator script (Python + trimesh)
  5. rozovec-weather-station.yaml — the ESPHome configuration (also written with Claude.ai)