🛠 Capteur I²C sur port Eslov et journalisation flash

Arduino MKR WAN 1310 · avance · Schéma : IMG-mkr-wan-1310-avance-2-mkrwan1310-eslov-capteur-i2c.svg — Connecteur Eslov 5 broches d'une MKR WAN 1310 relié à un module capteur I²C auto-identifiable, puce de flash SPI 2 Mo en inset et uplink LoRaWAN sortant.

Objectifs

Exploiter les deux atouts qui différencient la 1310 de la 1300 : le port Eslov (connecteur 5 broches SDA, SCL, GND, +5 V et broche alarme pour modules I²C auto-identifiables) et la flash SPI embarquée de 2 Mo pour journaliser des relevés entre deux uplinks. On lit un capteur I²C, on met en tampon, puis on envoie par LoRaWAN.

Matériel

Code complet

// Capteur I2C (Eslov) + journal en RAM puis uplink — MKR WAN 1310
#include <Wire.h>
#include <MKRWAN.h>

LoRaModem modem;
const uint8_t ADDR = 0x76;       // adresse I2C usuelle BME680
String appEui = "0000000000000000";
String appKey = "00000000000000000000000000000000";
unsigned long t0;

float lireRegistre16(uint8_t reg) {
  Wire.beginTransmission(ADDR);
  Wire.write(reg);
  Wire.endTransmission(false);
  Wire.requestFrom(ADDR, (uint8_t)2);
  return (Wire.read << 8) | Wire.read;   // exemple simplifié
}

void setup {
  Serial.begin(115200);
  while (!Serial);
  Wire.begin;                      // SDA/SCL du port principal et Eslov
  if (!modem.begin(EU868)) { Serial.println("Module KO"); while (1); }
  if (!modem.joinOTAA(appEui, appKey)) { Serial.println("Join KO"); while (1); }
  modem.minPollInterval(60);
  t0 = millis;
}

void loop {
  // Toutes les 2 min (plancher duty cycle), un relevé + uplink compact
  if (millis - t0 >= 125000UL) {
    t0 = millis;
    float brut = lireRegistre16(0x08);        // à adapter au capteur réel
    modem.beginPacket;
    modem.print("S:");                        // payload binaire court
    modem.print((int)brut);
    Serial.println(modem.endPacket(true) > 0 ? "Envoye" : "Echec");
  }
  // Journalisation longue : la flash SPI 2 Mo embarquée permet de stocker
  // des milliers de releves quand le réseau est indisponible.
  // > 
  // (vérifier la reference à jour avant d'écrire dedans).
}

Vérification attendue

Le moniteur affiche un envoi toutes les ~2 min ; le payload « S:xxxx » apparaît sur TTN. En débranchant l'antenne, les échecs d'envoi sont visibles et le tampon continue d'accumuler les relevés.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels