🛠 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

Objectifs

Le cas d'usage signature de la X8, documenté par le tuto officiel datalogging-iot : les capteurs se branchent côté MCU (le STM32H747 expose côté Arduino 8 entrées ADC avec VREF séparé, 3 SPI, 4 sorties PWM, 7 GPIO — plus les 3 ADC/2 DAC/comparateurs et RNG du SoC), et le conteneur Docker côté Linux fait le stockage, la file d'attente et le transport (MQTT/HTTP). Séparation des responsabilités : le temps réel et l'analogique sur le M4, la mémoire (2 Go LPDDR4, 16 Go eMMC), le réseau et les libs modernes sur l'A53.

Matériel

Code complet

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

Vérification attendue

Le conteneur appelle readSensor à intervalle régulier, les valeurs défilent dans le journal sur l'eMMC (dossier monté depuis l'hôte) et arrivent sur le broker MQTT. L'intérêt du montage : le M4 ne connaît ni TCP ni JSON — il expose une fonction ; tout le reste (bufferisation pendant les coupures réseau, TLS, formats) vit dans le conteneur, remplaçable et mis à jour par OTA sans toucher au firmware.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels