fonction-distance.ino
Particle.function convierte un handler sencillo en una API remota: la nube llama a piloter() con una cadena de argumentos y el LED obedece. Es el ladrillo base para controlar la placa desde un botón web, IFTTT o Home Assistant.
Hardware
Un módulo Particle Boron (nRF52840, Wi-Fi + Bluetooth LE, variante celular si procede) con antena integrada. Ninguno (LED D7 integrada); una cuenta Particle y un token API.
Cableado
Nada que cablear. Alimentación: USB, LiPo o 3,6-5,5 V en VIN.
Funcionamiento
Particle.function registra el handler; al recibir un POST /functions, la pila de nube ejecuta piloter(args) y devuelve su entero de retorno al solicitante.
Ejecución
Instala el CLI de Particle (particle setup), graba con particle flash --serial u OTA (particle flash <nombre> firmware.bin). La app Device Cloud o la API REST completan el despliegue.
Variantes
Añadir órdenes de motor/relé, o validar un token compartido en la cadena de argumentos para un mini control de acceso.
fonction-distance.ino
// Particle.function : une commande appelee par le cloud ou curl.
// curl -X POST https://api.particle.io/v3/devices/<id>/functions \
// -d "name=piloter&args=led:on&access_token=<TOKEN>"
int piloter(String args) {
if (args == "led:on") { digitalWrite(D7, HIGH); return 1; }
if (args == "led:off") { digitalWrite(D7, LOW); return 0; }
if (args == "led:toggle") {
static bool etat = false;
etat = !etat;
digitalWrite(D7, etat);
return etat ? 1 : 0;
}
return -1; // commande inconnue
}
void setup() {
pinMode(D7, OUTPUT);
Particle.function("piloter", piloter);
Serial.begin(9600);
Serial.println("En attente de commandes cloud");
}
void loop() {
// Le handler est appele par la pile cloud quand une requete arrive.
// Attention : rester court (< 1 s) pour ne pas bloquer le lien.
}