🛠 Nœud IoT de datalogging : capteurs sur le M4, stockage et transport en conteneur

Arduino Portenta X8 · intermediaire · Schéma : IMG-portenta-x8-intermediaire-3-portenta-x8-datalogging-iot.svg — Arduino Portenta X8 avec sondes branchées sur ses broches ADC côté MCU, flèche RPC traversant la frontière Linux, conteneur Docker écrivant dans un fichier journal et poussant des paquets MQTT vers le cloud, graphique de courbes de température à l'écran

Objetivos

El caso de uso de firma de la X8, documentado por el tutorial oficial datalogging-iot: los sensores se conectan del lado del MCU (el STM32H747 expone del lado de Arduino 8 entradas ADC con VREF separado, 3 SPI, 4 salidas PWM, 7 GPIO — además de los 3 ADC/2 DAC/comparadores y RNG del SoC), y el contenedor Docker del lado de Linux se encarga del almacenamiento, la cola de espera y la transmisión (MQTT/HTTP). Separación de responsabilidades: el tiempo real y lo analógico en el M4, la memoria (2 GB LPDDR4, 16 GB eMMC), la red y las librerías modernas en el A53.

Hardware

Código completo

// capteur_m4.ino — acquisition sur le M4, exposition RPC au conteneur
#include "SerialRPC.h"
#include "RPC.h"

const int BROCHE_CAPTEUR = A0;   // > 

// Le conteneur Linux appelle cette fonction a son rythme d'echantillonnage
int readSensor {
  long somme = 0;
  for (int i = 0; i < 16; i++) { somme += analogRead(BROCHE_CAPTEUR); }
  return (int)(somme / 16);      // moyenne de 16 lectures
}

void setup {
  Serial.begin(115200);
  RPC.bind("readSensor", readSensor);
}

void loop { delay(50); }
# Cote Linux : un conteneur de logging qui appelle readSensor via le
# broker m4-proxy (5001), journalise sur l'eMMC et publie en MQTT.
# Image de depart officielle pour le pont Python<->M4 :
docker run -d --name logger \
  --restart unless-stopped \
  -p 5002-5020:5002-5020 \
  -v /home/fio/logs:/data \
  --device /dev/ttyGS0 \
  arduino/python-rpc-serial
# > 
# (lecture RPC + file + MQTT) — reproduis-le depuis le tuto officiel.

Verificación esperada

El contenedor llama a readSensor a intervalos regulares, los valores aparecen en el registro en la eMMC (carpeta montada desde el host) y llegan al broker MQTT. La ventaja de esta configuración: el M4 no conoce ni TCP ni JSON — expone una función; todo lo demás (bufferización durante cortes de red, TLS, formatos) reside en el contenedor, reemplazable y actualizable vía OTA sin tocar el firmware.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales