clignotant-rest.ino

Arduino Yún · Archivo : clignotant-rest.ino · Lenguaje : Arduino · Uso : Piloter la LED par REST depuis le côté Linux ou le réseau

El puente REST es la firma de las placas Yun/Tian: el sketch se vuelve un servidor HTTP local. Un curl por el lado Linux (o el navegador) enciende y apaga el LED: la demostración inmediata del dual MCU + Linux.

Hardware

Un Arduino Yun (ATmega32U4 + Linux Linino sobre un Atheros AR9331, Wi-Fi y Ethernet, ranura microSD). Ninguno: LED de usuario integrado.

Cableado

Nada que cablear. Placa conectada a la red (cable o Wi-Fi) para el acceso remoto.

Funcionamiento

Bridge.begin() establece el enlace con el Linux; YunServer escucha en localhost y la URL bajo /arduino/... llega al sketch. La orden leída (on/off/toggle) controla el pin y la respuesta vuelve por HTTP.

Ejecución

Arduino IDE: selecciona el puerto serie para grabar y luego la placa Arduino Yun para el monitor. Por el lado Linux: ssh root@arduino.local (contraseña de la distribución). La app Yunwizard configura la red.

Variantes

Añadir una ruta /analog para leer A0 en JSON, o conectar la URL a un botón de una página servida por el Linux.

clignotant-rest.ino

// Le croquis expose un mini-serveur REST : le cote Linux (ou un
// navigateur via http://arduino.local/) commande la LED utilisateur.
#include <Bridge.h>
#include <YunServer.h>
#include <YunClient.h>

YunServer serveur;
const int LED = LED_BUILTIN;
bool etat = false;

void setup() {
  pinMode(LED, OUTPUT);
  Bridge.begin();          // attend le lien avec le Linux
  serveur.listenOnLocalhost();
  serveur.begin();
}

void loop() {
  YunClient client = serveur.accept();
  if (!client) return;     // pas de connexion : on revient vite

  String commande = client.readStringUntil('/');
  commande.trim();

  if (commande == "led") {
    String action = client.readStringUntil('/');
    action.trim();
    if (action == "on") etat = true;
    else if (action == "off") etat = false;
    else if (action == "toggle") etat = !etat;
    digitalWrite(LED, etat);
    client.print(etat ? "on" : "off");
  } else {
    client.print("led/on|off|toggle");
  }
  client.stop();
  delay(50);               // laisse le temps de fermer la connexion
}

← Volver a la ficha