L'idée : savoir depuis le canapé si mon potager a soif, sans WiFi, sans abonnement data, avec une pile qui dure toute la saison.

Sigfox est parfait pour ça — 0G, 140 messages/jour max, ~10€/an, portée kilométrique. Un message de 12 octets, ça suffit largement pour dire « humidité du sol : 42% ».

Le setup

  • Arduino MKR Fox 1200 — ~35€, antenne intégrée, abonnement Sigfox 2 ans offerts
  • Sonde capacitive SEN0193 (DFRobot) — ~4€, pas résistive. Les résistives rouillent en 3 semaines, les capacitives tiennent des saisons.
  • Pile AA alcaline — la MKR Fox tourne en 3.3V, mais la pile AA tient tout l'été si on dort bien
  • Boîtier imprimé en 3D — PETG (résistant aux UV et à l'eau) avec joint caoutchouc sur le couvercle
  • Une vis pour planter la sonde droite dans le sol

Budget total : ~45€. L'abonnement Sigfox après les 2 ans offerts passe à ~10€/an pour 140 msg/j.

Le code (résumé)

Le code tient en 80 lignes. Une lecture de la sonde, un deepSleep(24 heures), un message Sigfox toutes les 24h au réveil.

#include <SigFox.h>
#include <ArduinoLowPower.h>

const int SOIL_PIN = A1;

void setup() {
  SigFox.begin();
  SigFox.end();  // minimal init, we re-start on each send
}

void loop() {
  int raw = 0;
  for (int i = 0; i < 10; i++) raw += analogRead(SOIL_PIN);
  raw /= 10;
  // mapping empirique : 580 = dans l'eau, 830 = sec à l'air
  int humidity = constrain(map(raw, 830, 580, 0, 100), 0, 100);

  SigFox.begin();
  SigFox.beginPacket();
  SigFox.write((uint8_t)humidity);
  SigFox.write((uint8_t)(raw >> 8));
  SigFox.write((uint8_t)(raw & 0xFF));
  SigFox.endPacket();
  SigFox.end();

  LowPower.deepSleep(24UL * 60UL * 60UL * 1000UL);
}

Côté Sigfox, un callback HTTPS vers Solae, mon dashboard potager qui stocke le point et affiche la courbe.

Le boîtier

Imprimé en PETG, 3 parties :

  1. Le corps (100×60×40 mm) qui contient la MKR + la pile
  2. Le couvercle avec joint en O-ring et 4 vis M3
  3. La gaine de sonde qui enserre la SEN0193 pour la protéger — seule la pointe capacitive dépasse dans le sol

L'étanchéité est correcte, j'ai eu zéro infiltration en 10 mois. J'ai testé en laissant le capteur sous un tuyau d'arrosage à pleine pression 30 secondes. Rien.

Ce qui a marché

  • Autonomie : 8 mois sur une pile alcaline AA. Tiendrait plus avec une lithium mais j'essaye de rester sur des piles courantes.
  • Signal : je suis à 2 km de l'antenne Sigfox la plus proche, signal RSSI autour de -90 dBm. Jamais de perte.
  • Précision : ±3% après calibration. Suffisant pour décider si j'arrose.

Ce qui a mal marché

  • Le câble de la sonde. La SEN0193 vient avec un câble trop court, j'ai soudé une rallonge qui a fini par s'oxyder. La v2 aura un connecteur étanche.
  • La calibration. Chaque sonde est un peu différente. J'ai passé 2 samedis à calibrer 3 capteurs (eau distillée → air sec → terre sèche → terre trempée). Fastidieux.
  • Le mapping empirique dans le code dépend de la terre. Mon carré de tomates a une terre différente de celui des courges. J'ai dû déployer 2 capteurs calibrés différemment.

La suite

La v2 est en cours — PCB maison (pas d'Arduino), plus fine, pile CR2032, connecteur étanche pour la sonde. Je vise 1 an d'autonomie et un formfactor vraiment discret.

L'article sur la v2 arrive quand je l'aurai validée sur une saison complète.


Pour voir les données en direct : dashboard Solae. Pour voir le semis que ce capteur surveille : les semis 2026.