📍 Article principal : Agritech IoT Afrique de l’Ouest 2026
Introduction
Pour la coopérative maraîchère évoquée dans le pilier, équiper 30 hectares signifiait déployer 30-40 stations de mesure réparties sur le terrain. Acheter ces stations clés-en-main coûte 300-500 euros par station, soit un budget total de 12 000-20 000 euros — souvent prohibitif. Solution adoptée : assembler les stations en interne à partir de modules standards (Heltec WiFi LoRa, capteurs Watermark, panneau solaire 5W). Coût par station autoassemblée : 60-90 euros tout compris, soit un budget total divisé par 5. Cette approche est techniquement abordable pour qui maîtrise les bases Arduino et a accès aux composants — ce tutoriel détaille la conception complète d’un capteur LoRaWAN agricole adapté au climat ouest-africain.
Prérequis
- Connaissances de base Arduino IDE et programmation C++
- Serveur ChirpStack opérationnel (voir tutoriel précédent)
- Outillage électronique de base (fer à souder, multimètre)
- Boîtier IP67 et matériel d’étanchéité
- Niveau : intermédiaire avancé — Temps : 4-6 heures par station
Étape 1 — Choisir le matériel
Le coeur de la station est un microcontrôleur LoRaWAN qui pilote les capteurs et envoie les mesures via LoRa. Plusieurs options conviennent, chacune avec ses compromis. Le Heltec WiFi LoRa 32 V3 (~25 euros) embarque un ESP32, un module LoRa SX1262, et un écran OLED de debug — idéal pour les prototypes et les premiers déploiements. Le LilyGO TTGO LoRa32 (~22 euros) est similaire avec quelques variations de pinout. Pour les déploiements plus professionnels avec autonomie longue, le Dragino LSN50v2 (~65 euros) intègre directement la batterie et le boîtier IP67 — plus cher mais prêt à l’emploi.
Pour les capteurs eux-mêmes, trois choix dominent en agritech ouest-africain. Le DHT22 ou SHT31 (~5-10 euros) pour humidité et température ambiantes. Le Watermark 200SS (~25 euros) pour humidité du sol — fiable, robuste, recommandé par les agronomes. Le pluviomètre à augets (~30 euros) pour la pluviométrie. Pour démarrer, on combine Heltec ESP32 plus DHT22 plus capteur sol capacitif basique pour un coût total de 35-45 euros par station prototype.
Étape 2 — Schéma de câblage
Le câblage relie les capteurs au microcontrôleur via les broches GPIO. Pour le Heltec, les broches disponibles sont nombreuses mais certaines sont réservées à LoRa et OLED. La règle pratique est d’utiliser les GPIO 25, 26, 27 pour les capteurs simples, et les GPIO 35, 34 pour les lectures analogiques (capteur sol capacitif). Pour les capteurs alimentés en 3,3V, brancher directement sur la pin 3V3 du Heltec. Pour les capteurs en 5V, utiliser un convertisseur de tension boost si la batterie est en 3,7V.
Pour la robustesse en environnement humide, soigner les soudures des connexions et appliquer du vernis isolant sur les pistes exposées. Une connexion mal soudée qui s’oxyde après quelques mois de saison des pluies peut faire échouer la station entière. Cet investissement de qualité initiale paye sur la durée de vie réelle du déploiement. Les agriculteurs ont peu d’occasions de revenir réparer chaque station.
Étape 3 — Code Arduino LoRaWAN
Le firmware doit accomplir trois tâches répétitives : réveiller le microcontrôleur du sommeil profond, lire les capteurs, envoyer les mesures via LoRaWAN, retourner en sommeil. Cette boucle s’exécute toutes les 15 minutes ou heure selon la criticité du paramètre mesuré. Entre les cycles, le mode deep sleep réduit la consommation à quelques microampères, ce qui permet à une batterie 18650 (3000mAh) de tenir 2-3 ans.
La bibliothèque LoRaWAN de référence est MCCI LoRaWAN LMIC ou Beelan-LoRaWAN selon les préférences. La configuration nécessite les clés OTAA (DevEUI, AppEUI/JoinEUI, AppKey) qui ont été enregistrées dans ChirpStack. Le code ci-dessous illustre la structure type d’un firmware capteur agricole.
// Pseudo-code firmware Arduino capteur agritech
#include <Arduino.h>
#include <LoRaWan.h>
#include <DHT.h>
const uint8_t devEUI[8] = { /* DevEUI */ };
const uint8_t appEUI[8] = { /* AppEUI */ };
const uint8_t appKey[16] = { /* AppKey */ };
DHT dht(GPIO_25, DHT22);
const int SOL_PIN = 35;
const int VBAT_PIN = 34;
void setup() {
Serial.begin(115200);
dht.begin();
LoRaWAN.begin(EU868);
LoRaWAN.joinOTAA(devEUI, appEUI, appKey);
}
void loop() {
float tempAir = dht.readTemperature();
float humAir = dht.readHumidity();
int humSol = analogRead(SOL_PIN);
float vBat = analogRead(VBAT_PIN) * (3.3 / 4095.0) * 2;
uint8_t payload[6];
payload[0] = (int)(tempAir * 10) >> 8;
payload[1] = (int)(tempAir * 10) & 0xFF;
payload[2] = (int)humAir;
payload[3] = humSol >> 8;
payload[4] = humSol & 0xFF;
payload[5] = (int)(vBat * 10);
LoRaWAN.send(payload, 6);
esp_deep_sleep(15 * 60 * 1000000); // 15 min
}
Ce code minimaliste illustre les patterns essentiels : encodage compact du payload pour minimiser la consommation radio (chaque octet économisé prolonge l’autonomie batterie), inclusion systématique du niveau de batterie dans chaque envoi pour le monitoring, et passage en deep sleep entre les cycles. La configuration OTAA assure que les clés de session sont régulièrement renouvelées pour la sécurité.
Étape 4 — Décoder le payload côté ChirpStack
Le payload binaire compact reçu par ChirpStack doit être décodé en JSON lisible avant d’être consommé par les applications. ChirpStack supporte un decoder JavaScript par device-profile qui transforme automatiquement chaque message reçu. Cette transformation s’effectue côté serveur sans impacter la consommation radio des capteurs.
Le decoder JS suit un format standard : une fonction decodeUplink(input) qui reçoit les octets bruts et retourne un objet JSON structuré. Pour notre format de payload défini ci-dessus, le decoder est trivial à écrire. On le copie-colle dans ChirpStack admin → Device-profiles → Codec.
function decodeUplink(input) {
const bytes = input.bytes;
return {
data: {
tempAir: ((bytes[0] << 8) | bytes[1]) / 10,
humAir: bytes[2],
humSol: (bytes[3] << 8) | bytes[4],
vBat: bytes[5] / 10
}
};
}
Avec ce decoder configuré, chaque message reçu est automatiquement converti en JSON exploitable directement par les applications consommatrices. Cette séparation entre payload binaire compact (transmission) et JSON décodé (consommation) optimise la bande passante radio sans complexifier les applications métier.
Étape 5 — Alimentation solaire autonome
Pour les déploiements en plein champ sans accès au réseau électrique, l’alimentation solaire est la seule option. Trois composants à dimensionner correctement. Premièrement, le panneau solaire : 3-5W suffit largement pour une station LoRaWAN en deep sleep entre les cycles. Préférer un panneau monocristallin pour rendement et durabilité supérieurs. Deuxièmement, la batterie 18650 ou LiPo 1S de 2000-3000mAh offre l’autonomie nécessaire, idéalement avec circuit de protection BMS pour éviter sur-décharge. Troisièmement, un module de charge solaire type CN3791 ou TP4056 avec régulation MPPT optimise la conversion solaire vers batterie.
Pour l’Afrique de l’Ouest, l’ensoleillement est généreux (5-7 kWh/m²/jour selon zones) ce qui permet de dimensionner large sans impact économique majeur. Un panneau de 5W couvre largement les besoins en mode deep sleep. Le dimensionnement critique est plutôt la résistance à la chaleur : les batteries lithium-ion vieillissent plus vite à 40°C qu’à 20°C. Choisir des cellules de qualité (Samsung, LG, Panasonic) plutôt que les cellules génériques bon marché qui durent 6-12 mois en climat sahélien.
Étape 6 — Étanchéité et boîtier
L’étanchéité conditionne la durée de vie réelle de la station. Un boîtier IP67 minimum (immersion temporaire jusqu’à 1m) est nécessaire pour résister aux saisons des pluies tropicales avec accumulations d’eau au sol. Plusieurs options. Boîtiers ABS standards (~10-15 euros) avec joints toriques. Boîtiers spécialisés outdoor (~25-40 euros) avec connecteurs étanches préinstallés. Pour un déploiement de 30 stations, l’écart de coût total atteint 500-1000 euros — choisir selon le budget global et la criticité du déploiement.
Au-delà du boîtier lui-même, soigner les passages de câbles vers les capteurs externes (sol, pluviomètre). Utiliser des passe-câbles étanches type PG7 ou PG9 plutôt que des trous improvisés mal joints. Tester l’étanchéité en immergeant le boîtier fermé dans l’eau pendant 10 minutes avant déploiement — détecte les défauts avant que la saison des pluies ne révèle le problème quand il est trop tard.
Étape 7 — Calibration en conditions réelles
Les capteurs bon marché ont des tolérances notables. Pour des mesures fiables, calibrer chaque capteur en conditions réelles avant déploiement. Pour le DHT22, vérifier la mesure d’humidité face à un hygromètre de référence. Pour le capteur sol capacitif, plonger le capteur dans un sol sec puis dans un sol saturé en eau pour établir les limites de la plage de mesure. Cette calibration prend 30-60 minutes par station mais améliore considérablement la fiabilité des données.
Pour les coopératives qui ne disposent pas d’instruments de référence professionnels, la calibration relative est aussi utile : tous les capteurs sont calibrés ensemble dans les mêmes conditions, ce qui garantit la cohérence inter-stations même si la valeur absolue est légèrement biaisée. Cette cohérence permet ensuite de comparer les mesures entre parcelles, ce qui est l’usage principal en pratique. La calibration absolue précise n’est cruciale que pour les benchmarks scientifiques formels.
Erreurs fréquentes
| Erreur | Cause | Solution |
|---|---|---|
| Capteur ne joint pas le réseau LoRaWAN | Clés OTAA mal copiées | Vérifier scrupuleusement DevEUI/AppEUI/AppKey |
| Mesures aberrantes sur capteur sol | Court-circuit par humidité | Vernis isolant sur connexions soudées |
| Batterie meurt en 3 mois | Deep sleep non actif | Vérifier que loop n’a pas de delay() bloquants |
| Boîtier rempli d’eau après pluie | Joints PG7 mal serrés | Serrage couple correct + vérification immersion |
| Capteur isolé sans signal LoRa | Distance à gateway trop grande | Repositionner ou ajouter gateway secondaire |
Adaptation au contexte ouest-africain
Trois aspects pratiques. Premièrement, la résistance thermique : les composants électroniques en plein soleil peuvent atteindre 60-70°C dans la journée. Choisir des composants industriels notés -40°C/+85°C plutôt que les composants commerciaux 0/+70°C. Le surcoût est minime mais évite les pannes silencieuses en saison sèche. Deuxièmement, l’approvisionnement : les composants doivent être disponibles localement ou facilement importables. Travailler avec des fournisseurs locaux à Dakar, Abidjan, Lagos qui stockent les modules courants évite les délais de plusieurs semaines des commandes AliExpress. Troisièmement, la formation des techniciens locaux pour maintenir et réparer les stations : sans cette compétence locale, chaque panne immobilise la station longtemps. Investir dans la formation 2-3 techniciens par coopérative est rentable sur la durée.
Pour les coûts complets d’une station autoassemblée robuste, prévoir 70-100 euros par unité tout compris (microcontrôleur, capteurs, alimentation solaire, boîtier IP67, câblage). Pour un déploiement de 30 stations, le total de 2 100-3 000 euros reste très inférieur aux 9 000-15 000 euros des solutions clés-en-main équivalentes. Cette économie permet d’équiper plus de surface ou de garder du budget pour la maintenance long-terme.
Tutoriels frères
Pour aller plus loin
- 🔝 Pilier : Agritech IoT Afrique 2026
- Doc : Heltec docs · LoRa Alliance ressources
FAQ
Faut-il un ingénieur électronique pour assembler ?
Non. Avec des notions Arduino de base et de la patience, un développeur sans formation électronique peut assembler une station prototype en une demi-journée. Le passage à l’industrialisation pour 30+ stations demande plus de méthode mais reste accessible.
Combien de temps pour assembler 30 stations ?
Environ 2 semaines pour une équipe de 2 personnes après prototypage validé. Les premières stations prennent plus de temps, ensuite la cadence accélère.
Préférer Heltec ou Dragino selon expérience ?
Heltec pour démarrer (moins cher, plus de docs communautaires). Dragino pour la production sérieuse (boîtiers et batteries intégrés).
Comment tester une station avant déploiement ?
Brancher en lab, vérifier joins LoRaWAN, lecture capteurs, envoi de données complète. Laisser tourner 24-48h en interne pour valider stabilité avant terrain.
Industrialiser la production des stations
Au-delà du prototype unique, produire 30 ou 100 stations identiques demande une démarche industrialisée. Trois principes guident cette industrialisation. Premièrement, créer un PCB personnalisé qui intègre les principaux composants au lieu d’utiliser un breadboard ou des fils volants. Pour 50 unités, le coût d’un PCB sur PCBWay ou JLCPCB est environ 30-50 dollars (10 PCB minimum, mais 50 PCB ne coûtent que 100-150 dollars). Cet investissement initial paye largement par la fiabilité accrue, la rapidité d’assemblage, et la maintenance facilitée. Deuxièmement, documenter rigoureusement le processus d’assemblage : checklist visuelle, séquence des étapes, points de contrôle qualité intermédiaires. Cette documentation permet à plusieurs assembleurs de produire en parallèle avec qualité homogène. Troisièmement, mettre en place un banc de test final avec procédure standardisée : firmware test, joinage LoRaWAN, lecture capteurs, autonomie batterie. Tester systématiquement avant déploiement évite la majorité des pannes terrain.
Pour les coopératives qui démarrent à plus petite échelle, ces démarches industrielles sont prématurées. Sur les premiers 5-10 prototypes, la flexibilité du breadboard et de l’assemblage manuel reste préférable pour itérer rapidement. Le passage à l’industrialisation se fait quand le design est stabilisé et qu’on a la confiance pour produire en série sans modifications fréquentes.