Meshtastic LoRa — communication résiliente sans internet ni GSM
Un seul programme Arduino C++ gère la ventilation, la protection de la batterie et la télémétrie LoRa.
#include <DHT.h> #include <OneWire.h> #include <DallasTemperature.h> // Configuration des broches #define DHTPIN 4 #define DHTTYPE DHT22 #define ONE_WIRE_BUS 5 #define FAN_PIN 12 #define HEATING_PAD_PIN 13 #define BATTERY_VOLTAGE_PIN 34 // Seuils de régulation const float HUMIDITY_THRESHOLD = 65.0; // Seuil d'activation ventilateur (%) const float BATTERY_HEATING_LIMIT = 15.0; // Température de survie batterie (°C) const float BATTERY_VOLTAGE_MIN_HEATING = 13.4; // Tension d'autorisation chauffage (V) DHT dht(DHTPIN, DHTTYPE); OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void sendMeshtastic(String text) { Serial.println("LoRa Send: " + text); } float readBatteryVoltage() { int raw = analogRead(BATTERY_VOLTAGE_PIN); return (raw * 3.3 / 4095.0) * 5.0; // À étalonner selon votre pont diviseur } void setup() { Serial.begin(115200); dht.begin(); sensors.begin(); pinMode(FAN_PIN, OUTPUT); pinMode(HEATING_PAD_PIN, OUTPUT); digitalWrite(FAN_PIN, LOW); digitalWrite(HEATING_PAD_PIN, LOW); } void loop() { float h = dht.readHumidity(); float t_air = dht.readTemperature(); sensors.requestTemperatures(); float t_pierres = sensors.getTempCByIndex(0); // masse thermique sol float t_bat = sensors.getTempCByIndex(1); // caisson batterie float v_bat = readBatteryVoltage(); // 1. Régulation de la ventilation forcée digitalWrite(FAN_PIN, h > HUMIDITY_THRESHOLD ? HIGH : LOW); // 2. Chauffage de la batterie sur surplus solaire (dumping) bool chauffe = (t_bat < BATTERY_HEATING_LIMIT) && (v_bat > BATTERY_VOLTAGE_MIN_HEATING); digitalWrite(HEATING_PAD_PIN, chauffe ? HIGH : LOW); // 3. Alerte de sécurité critique if (t_bat < 5.0) { sendMeshtastic("ALERTE : Batterie froide (" + String(t_bat) + "C). Charge suspendue !"); } // 4. Télémétrie périodique (toutes les 10 minutes) String msg = "Air:" + String(t_air) + "C|Stones:" + String(t_pierres) + "C|Bat:" + String(t_bat) + "C|Hum:" + String(h) + "%|Vbat:" + String(v_bat) + "V"; sendMeshtastic(msg); delay(600000); }
Le cœur thermique du dôme est traité dans un chapitre dédié — voir Le Poêle Dragon.
Avec le protocole B.A.T.M.A.N., il n'y a pas de routeur « maître » : chaque dôme qui rejoint le village renforce la portée et la résilience du WiFi mesh local. Le LoRa Meshtastic prend le relais longue portée si le backbone internet (fibre/4G) est coupé.