Halvemmat rakennelmat, valmiit kitit, esimerkkiostoslistat (BOM) ja polku tekoälyyn. Ei keksittyjä AliExpress-SKU:ita tai hintoja — vain roolit, määrät ja hakusanat.
Elektroniikka ja DIY omalla vastuulla. Vältä verkkojännitteitä jos et ole varma; pidä anturit eristettyinä kastelusta.
Esimerkkiostoslista, ei tuotesuositus. Ei AliExpress-SKU:ita eikä hintoja — vain osien roolit, määrät, miksi, hakusanat ja vinkit.
Sähköturvallisuus: verkkojännite (230 V) vain jos osaat; suosi 5 V / 3,3 V ja eristettyjä releitä. Ulko- ja kupolikäytössä IP-luokitus ja kuivat liitokset. Kalibroi anturit — raaka-ADC ei ole prosenttia.
Kalibrointi: kaksi pistettä (kuiva / märkä) parantaa tulosta.
IP-luokitus: ulko- ja kupolikäyttöön kosteussuoja.
3,3 V vs 5 V: ESP32 on yleensä 3,3 V — tarkista jännite.
Pilvikamerat: tietosuoja ja paikallinen tallennus vs. ulkomainen pilvi.
Johdot ja kastelu: pidä liitokset kuivina.
Oma aurinkoanturi: ESP32 + maankosteus
Rakenna edullinen, aurinkopaneelilla toimiva maankosteusanturi, joka lähettää lukemat suoraan SproutMindAI:n Anturit-sivulle. Laite herää 10 minuutin välein, mittaa, lähettää ja nukkuu (deep sleep).
ESP32-kehityskortti (esim. FireBeetle ESP32 tai LOLIN D32, pieni lepovirta)
1
6–15 €
Valitse kortti, jossa on pieni lepovirta ja mieluiten akkuliitin.
Kapasitiivinen maankosteusanturi v1.2/v2.0
1–3
2–5 €/kpl
Ei ruostu kuten resistiivinen. Suojaa elektroniikka lakalla tai kutistesukalla.
18650 Li-ion -akku (suojattu)
1
5–10 €
Säilytä lämpimässä talvella, alle 0 °C lataus ei ole turvallista.
Latausmoduuli TP4056 (suojauksella) tai CN3791 (MPPT)
1
1–6 €
CN3791 hyödyntää paneelin paremmin pilvisellä säällä.
Aurinkopaneeli 6 V, 1–2 W
1
5–12 €
Suuntaa etelään, kallistus n. 45–60°.
3,3 V LDO, pieni lepovirta (HT7333 / MCP1700)
1
~1 €
Tarvitaan, jos kortin oma regulaattori kuluttaa paljon unessa.
Vastukset 2 × 100 kΩ
2
<1 €
Akkujännitteen mittaukseen (jakaja GPIO35:een).
IP65-kytkentärasia + läpivientiholkit
1
5–10 €
Tuuletusreikä alapuolelle kosteuden poistoon.
Hinnat ovat suuntaa-antavia (verkkokaupat ja AliExpress 2026) ja vaihtelevat. Yhteensä noin 25–55 €. Valmis vaihtoehto: Ecowitt GW1100 + WH51 (noin 20 $ + 18 $, shop.ecowitt.com).
Kytke anturin AOUT → GPIO34, VCC → GPIO25 (anturi saa virtaa vain mittauksen ajan) ja GND → GND.
Kytke akkujännite jakajan (100 k + 100 k) keskipisteestä GPIO35:een.
Paneeli → latausmoduulin IN, akku → BAT, moduulin OUT → LDO → ESP32:n 3V3.
Luo Anturit-sivulla uusi laite (Oma ESP32-anturi) ja kopioi osoite koodin PLANTCARE_URL-kohtaan.
Kalibroi: lue arvo anturin ollessa ilmassa (SOIL_DRY) ja vesilasissa (SOIL_WET).
Lataa koodi Arduino IDE:llä (ESP32-korttipaketti 2.x tai uudempi).
Arduino-koodi (ESP32)
// SproutMindAI DIY sensor: ESP32 + capacitive soil moisture sensor + solar
// Posts JSON to SproutMindAI every 10 min, deep sleep in between.
#include <WiFi.h>
#include <HTTPClient.h>
const char* WIFI_SSID = "YOUR_WIFI";
const char* WIFI_PASS = "YOUR_PASSWORD";
// Copy from Anturit -> Add device -> DIY (keep it secret):
const char* PLANTCARE_URL =
"http://192.168.1.10:3000/api/sensors/json/PASTE_TOKEN_HERE";
const int SOIL_PIN = 34; // ADC1 pin (works while Wi-Fi is on)
const int SOIL_POWER_PIN = 25; // powers the sensor only while measuring
const int BATT_PIN = 35; // battery via 100k/100k divider
const int SOIL_DRY = 3000; // calibrate: sensor in air
const int SOIL_WET = 1300; // calibrate: sensor in a glass of water
const uint64_t SLEEP_MIN = 10;
int readSoilPercent() {
digitalWrite(SOIL_POWER_PIN, HIGH);
delay(300);
long sum = 0;
for (int i = 0; i < 10; i++) { sum += analogRead(SOIL_PIN); delay(20); }
digitalWrite(SOIL_POWER_PIN, LOW);
int pct = map(sum / 10, SOIL_DRY, SOIL_WET, 0, 100);
return constrain(pct, 0, 100);
}
float readBatteryVolts() {
return analogReadMilliVolts(BATT_PIN) * 2 / 1000.0; // 1:2 divider
}
void setup() {
pinMode(SOIL_POWER_PIN, OUTPUT);
analogSetAttenuation(ADC_11db);
int soil = readSoilPercent();
float batt = readBatteryVolts();
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASS);
for (int i = 0; i < 40 && WiFi.status() != WL_CONNECTED; i++) delay(250);
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(PLANTCARE_URL);
http.addHeader("Content-Type", "application/json");
String body = String("{\"device\":\"ESP32-solar\",\"soil_moisture\":[") + soil +
"],\"battery_v\":" + String(batt, 2) + "}";
http.POST(body); // 200 = stored
http.end();
}
WiFi.disconnect(true);
esp_sleep_enable_timer_wakeup(SLEEP_MIN * 60ULL * 1000000ULL);
esp_deep_sleep_start();
}
void loop() {}
JSON-muoto
POST /api/sensors/json/<token>. Kentät: soil_moisture (luku tai lista %), soil_temp, temp (°C), humidity (%), battery_v, solar_v. Voit testata curlilla: