capteur-nuage.ino
TLS en un módulo Wi-Fi Arduino es la prueba de fuego: WiFiSSLClient + ArduinoJson publican una medida en JSON a cualquier API HTTPS. El esqueleto de todo cuadro de mando cloud.
Hardware necesario
Un Arduino GIGA R1 WiFi (STM32H747, módulo radio 1DX: Wi-Fi b/g/n + BLE, antena u.FL incluida), alimentado por USB-C. Una API HTTPS alcanzable (endpoint de prueba tipo httpbin, o vuestro servidor).
Cableado
Sin cableado; antena u.FL montada. El certificado raíz debe conocerlo el core: si no, error TLS.
Funcionamiento
WiFiSSLClient hace el apretón de manos TLS vía el módulo; ArduinoJson serializa sin concatenación frágil. Content-Length calculado desde el tamaño del documento. En el Arduino IDE, plataforma « Arduino Zephyr-based Boards », placa « Arduino Giga R1 »; monte la antena u.FL antes de usar la radio y suba.
Para ir más lejos
Añadan reintento exponencial y cola de medidas en flash para los cortes de red.
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);
}