This guide documents how to connect and operate the Growlink Terralink substrate sensor directly on a M5Stack Atom (ESP32) running ESPHome.
No external converters or breakout hardware are required. The sensor communicates over a single half-duplex SDI-12 line handled entirely in software.
What this means is that you don't need the Growlink cloud based controller to use the sensor. Instead you can buy an M5Stack Atom for $7.50 and start using it. https://shop.m5stack.com/products/atom-lite-esp32-development-kit
| Component | Purpose |
|---|---|
| M5Stack Atom (ESP32) | Controller running ESPHome firmware |
| Growlink Terralink Sensor | Measures VWC, bulk EC, and temperature |
| 5 V USB power | Powers Atom and sensor |
| Shared Ground | Reference for signal and power |
Sensor electrical characteristics
- Protocol: SDI-12 v1.3
- Supply voltage: 3.6–16 V DC (5 V tested OK in this setup)
- Measurement current: ~10 mA for ~150 ms
| Terralink Wire | Connect to Atom Pin | Function |
|---|---|---|
| Red | 5 V | Sensor power |
| White | GPIO 26 | SDI-12 data (TX/RX half-duplex) |
| Bare | GND | Common ground |
Notes:
- SDI-12 uses one bidirectional data wire.
- UART on GPIO 26 must be 1200 baud, 7-E-1, half-duplex, inverted.
- Use shielded cable if runs are long or the environment is noisy.
Use the maintained ESPHome configuration here (do not paste YAML into this README):
That YAML includes:
- Wi-Fi and OTA
ssiebSDI-12 external component + UART half-duplex on GPIO 26- Sensors for εb, bulk EC (σb), temperature (°C)
- Template outputs for VWC (raw), VWC (aligned), pore-water EC (Hilhorst)
-
Clone/download the repo with the YAML.
-
Flash the Atom via USB:
$ esphome run terralink_coco.yaml
-
Join Wi-Fi; verify device appears in Home Assistant.
-
Watch ESPHome logs to confirm SDI-12 reads.
-
Calibrate VWC (raw/aligned) as needed (below).
- SDI-12 supports multiple sensors (addresses 0–9) on the same data line; daisy-chain if required.
- Keep total cable length conservative (≤10 m preferred) unless you’ve validated longer runs.
- Default update interval is ~30 s (adjust in YAML if needed).
- Pore-water EC is temperature-normalized (Hilhorst model) in the provided templates.
- Monthly: inspect cable insulation, strain relief, and GND continuity.
- Between crop cycles: clean sensor with deionized water; avoid solvents.
- Use dielectric grease on connectors where corrosion risk is high.
This explains calibration in plain English. Do this after you see readings in Home Assistant.
Makes the numbers on screen match what “dry” and “wet” actually mean in your media.
- Terralink sensor working in ESPHome
- Your media (rockwool, coco, soil, etc.)
- Two samples: one dry, one fully wet (soaked then drained)
- A cup/pot and water
- Use media that’s clearly dry (no recent watering).
- Insert the sensor fully (rods buried).
- Wait ~1 minute.
- Note TL VWC (raw) in Home Assistant — this is your dry baseline.
- Soak the media until dripping, drain ~10 minutes.
- Insert the same sensor.
- Wait ~1 minute.
- Note TL VWC (raw) — this is your wet baseline.
- Dry should be low (often ~5–20% depending on media).
- Wet should be high (often ~60–90% depending on media). If those look wrong, recheck insertion, drainage, and contact with media.
If you compare against a reference probe and want your numbers to match it:
- Put both sensors in the same media.
- If your VWC reads 60% and the reference says 48%, use a scale of 0.80 in your VWC (aligned) multiplier inside the YAML.
You now have practical dry/wet anchors. Day-to-day readings should fall between them and make operational sense.
- Insert sensor in dry coco (crumbly, light).
- Wait ~1 minute.
- Example: Dry coco = 11.5% VWC (your dry baseline).
- Soak coco to dripping, drain 10 minutes.
- Insert sensor, wait ~1 minute.
- Example: Wet coco = 78.4% VWC (your wet baseline).
| Condition | VWC reading |
|---|---|
| Dry coco | ~11 % |
| Fully wet coco | ~78 % |
If a reference probe says 48% while yours reads 60%, set the VWC (aligned) scale to 0.80 in the YAML.
- 15–25% → getting dry
- 60–80% → well-watered Numbers now map to reality for coco. Same procedure works for rockwool/soil with different dry/wet values.
- Inspect sensor cable insulation and GND continuity monthly in high-humidity environments.
- Clean the sensor with deionized water between crop cycles.
- Use dielectric grease on connectors to prevent corrosion.