capteur-nuage.ino

Arduino GIGA R1 WiFi · Fichier : capteur-nuage.ino · Langage : Arduino · Usage : Envoyer une mesure vers une API HTTP

Le TLS sur un module Wi-Fi Arduino est la vraie épreuve : WiFiSSLClient + ArduinoJson publient une mesure en JSON vers n'importe quelle API HTTPS. Le squelette de tout tableau de bord cloud.

Matériel requis

Une Arduino GIGA R1 WiFi (STM32H747, module radio 1DX : Wi-Fi b/g/n + BLE, antenne u.FL fournie), alimentée par USB-C. Une API HTTPS joignable (endpoint de test type httpbin, ou votre serveur).

Branchement

Aucun câblage ; antenne u.FL montée. Le certificat racine doit être connu du core — sinon erreur TLS.

Fonctionnement

WiFiSSLClient fait la poignée de main TLS via le module ; ArduinoJson sérialise sans concaténation fragile. Content-Length calculé depuis la taille du document. Dans l'Arduino IDE, plateforme « Arduino Zephyr-based Boards », carte « Arduino Giga R1 » ; montez l'antenne u.FL avant d'utiliser le radio, puis Téléverser.

Pour aller plus loin

Ajoutez le retry exponentiel et la file de mesures en flash pour les coupures réseau.

capteur-nuage.ino

// GIGA R1 WiFi : POST JSON vers un service de test, toutes les 30 s.
#include <WiFi.h>
#include <WiFiSSLClient.h>
#include <ArduinoJson.h>

const char *SSID = "votre-wifi", *CLE = "votre-cle";
WiFiSSLClient client;

void setup() {
  Serial.begin(115200);
  WiFi.begin(SSID, CLE);
  while (WiFi.status() != WL_CONNECTED) delay(300);
}

void loop() {
  if (client.connect("api.example.com", 443)) {
    StaticJsonDocument<128> doc;
    doc["capteur"] = "A0";
    doc["valeur"] = analogRead(A0);
    doc["rssi"] = WiFi.RSSI();
    String corps;
    serializeJson(doc, corps);

    client.println("POST /v1/mesures HTTP/1.1");
    client.println("Host: api.example.com");
    client.println("Content-Type: application/json");
    client.print("Content-Length: "); client.println(corps.length());
    client.println(); client.println(corps);
    while (client.available()) Serial.write(client.read());
    client.stop();
  } else {
    Serial.println("connexion TLS refusee");
  }
  delay(30000);
}

← Retour à la fiche