bouton-evenement.ino

Particle Boron · Fichier : bouton-evenement.ino · Langage : Arduino · Usage : Publier un événement cloud à chaque appui sur un bouton

Chaque appui publie un événement JSON vers le cloud Particle, consultable par d'autres cartes (abonné) ou par un webhook. Le montage anti-rebond est identique à l'Arduino nu : le framework ajoute juste la couche publish.

Matériel requis

Un module Particle Boron (nRF52840, Wi-Fi + Bluetooth LE, variante cellulaire le cas échéant) avec antenne embarquée. 1 bouton poussoir entre D2 et GND.

Câblage

Bouton entre D2 et GND ; la résistance de tirage est interne (INPUT_PULLUP).

Fonctionnement

Après validation du front (30 ms), snprintf construit une trame JSON et Particle.publish l'envoie au cloud. Les abonnés (Particle.subscribe) et webhooks la reçoivent en temps quasi réel.

Exécution

Installer le CLI Particle (particle setup), particle flash --serial ou OTA (particle flash <nom> firmware.bin). L'application Device Cloud ou l'API REST complete le deploiement.

Variantes

Publier aussi la température interne (getTemperature), ou déclencher une action locale sur un événement reçu (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.
    }
  }
}

← Retour à la fiche