bouton-evenement.ino

Particle Boron · Archivo : bouton-evenement.ino · Lenguaje : Arduino · Uso : Publier un événement cloud à chaque appui sur un bouton

Cada pulsación publica un evento JSON hacia la nube Particle, consultable por otras placas (suscritas) o por un webhook. El montaje antirrebote es igual que en Arduino puro: el framework solo añade la capa publish.

Hardware

Un módulo Particle Boron (nRF52840, Wi-Fi + Bluetooth LE, variante celular si procede) con antena integrada. 1 botón pulsador entre D2 y GND.

Cableado

Botón entre D2 y GND; la resistencia de pull-up es interna (INPUT_PULLUP).

Funcionamiento

Tras validar el flanco (30 ms), snprintf construye una trama JSON y Particle.publish la envía a la nube. Los suscriptores (Particle.subscribe) y webhooks la reciben casi en tiempo real.

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

Publicar también la temperatura interna (getTemperature), o disparar una acción local ante un evento recibido (subscribe + handler).

bouton-evenement.ino

// Bouton sur D2 : publish d'un evenement cloud a chaque appui.
int bouton = D2;              // bouton vers GND, patte libre sur D2
bool etatPrecedent = HIGH;
unsigned long dernierBord = 0;

void setup() {
  pinMode(bouton, INPUT_PULLUP);
  Serial.begin(9600);
}

void loop() {
  bool lecture = digitalRead(bouton);
  unsigned long maintenant = millis();

  if (lecture != etatPrecedent) {
    dernierBord = maintenant;
  }
  if (maintenant - dernierBord >= 30 && lecture != etatPrecedent) {
    etatPrecedent = lecture;
    if (lecture == LOW) {                 // appui (PULLUP -> LOW)
      char trame[48];
      snprintf(trame, sizeof(trame),
               "{\"appui\":%lu,\"uptime\":%lu}",
               millis(), millis());
      bool ok = Particle.publish("bouton-presse", trame, 60, PUBLIC);
      Serial.println(ok ? "evenement publie" : "publication refusee");
      // NB : limite de flux cloud ~1 publish/s : ne pas spammer.
    }
  }
}

← Volver a la ficha