servo-cloud.ino

Particle Boron · Fichier : servo-cloud.ino · Langage : Arduino · Usage : Tourner un servo à distance avec une commande cloud

Le servo se tourne par simple appel cloud (Particle.function "tourner") et sa position reste lisible en variable. La routine de retour au centre après deux minutes montre comment donner une autonomie raisonnable à un actionneur connecté.

Matériel requis

Un module Particle Boron (nRF52840, Wi-Fi + Bluetooth LE, variante cellulaire le cas échéant) avec antenne embarquée. 1 servo d'angle (SG90) + alimentation externe 5 V conseillée.

Câblage

Signal du servo sur A1, + sur 5 V externe, - sur GND commun avec la carte.

Fonctionnement

La bibliothèque Servo génère l'impulsion 50 Hz ; tourner() valide la consigne 0-180, la pousse au servo et la renvoie au cloud. La variable position reste interrogable à tout moment.

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

Ajouter des positions mémorisées ("home", "scan"), ou enchaîner une série de positions pour un geste répété.

servo-cloud.ino

// Servo d'angle sur A1, position commandee par Particle.function.
#include "Servo.h"

Servo myservo;
int position = 90;

int tourner(String args) {
  int v = args.toInt();
  if (v < 0 || v > 180) return -1;
  position = v;
  myservo.write(position);
  return position;
}

void setup() {
  myservo.attach(A1);   // signal du servo sur A1
  myservo.write(position);
  Particle.function("tourner", tourner);
  Particle.variable("position", position);
  Serial.begin(9600);
}

void loop() {
  // Petite routine : revenir au centre apres 2 min sans commande.
  static unsigned long dernierOrdre = 0;
  if (position != 90 && millis() - dernierOrdre > 120000) {
    dernierOrdre = millis();
    tourner("90");
  }
  // Met a jour la reference du temps a chaque commande recue.
  static int dernierePos = 90;
  if (position != dernierePos) {
    dernierePos = position;
    dernierOrdre = millis();
  }
}

// Commande : Particle.function "tourner" avec "45", "90", "135".

← Retour à la fiche