🛠 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.

Objetivos

Aprovechar las dos ventajas que diferencian la 1310 de la 1300: el puerto Eslov (conector de 5 pines SDA, SCL, GND, +5 V y pin de alarma para módulos I²C autoidentificables) y la memoria flash SPI integrada de 2 MB para registrar lecturas entre dos uplinks. Se lee un sensor I²C, se almacena en búfer y se envía mediante LoRaWAN.

Material

Código completo

// 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 embarquee permet de stocker
  // des milliers de releves quand le reseau est indisponible.
  // > 
  // (verifier la reference a jour avant d'ecrire dedans).
}

Verificación esperada

El monitor muestra un envío cada ~2 min; el payload « S:xxxx » aparece en TTN. Al desconectar la antena, los fallos de envío son visibles y el búfer continúa acumulando lecturas.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales