Catégories
Liens
Ceci est une ancienne révision du document !
Réalisation d'un contrôleur analogique basé sur un ESP8266 communicant en OSC via wifi avec un ordinateur 9
L'OSC peut circuler sur le réseau au protocole TCP ou UDP. Le TCP permet de vérifier que le destinataire à reçu le message et que son contenu n'est pas corrompu. L'UDP envoie le message sans se préoccuper de sa réception. En conséquence, le TCP ne peut s'utiliser qu'entre deux machines tandis que l'UDP peut être broadcasté (envoyé sur un grand nombre de machines simultanément). C'est la raison pour laquelle on préfèrera envoyer de l'OSC au protocole UDP dans la plupart des cas.
Pour envoyer des données en UDP depuis un ESP8266, on peut utiliser le code suivant, commenté ligne par ligne. Il est également disponible sur le repo github de l'init
#include <ESP8266WiFi.h> // fonctions wifi : connection en station ou point d'accès, addresses IP ... #include <WiFiUdp.h> // création de paquets UDP et envoi sur le réseau static char* nomDuReseau = "malinette"; // attention, sensible à la casse static char* motDePasse = "malinette666"; // idem static const int portUDP = 8000; // port auquel les paquets seront envoyés, doit être identique à celui du récepteur static IPAddress IPcible = IPAddress({10,0,0,255});// addresse à laquelle les messages sont envoyés, ici en broadcast WiFiUDP UDP; void setup() { Serial.begin(115200); // ouverture du port série while (true) { // tant que la connection n'est pas établie, on restera coincé ici Serial.println("\n\nConnection à " + String(nomDuReseau) + " ..."); WiFi.mode(WIFI_STA); // mode station : se connecte à un point d'accès existant WiFi.begin(nomDuReseau, motDePasse); // tentative de connection ESP.wdtFeed(); // évite de rebooter l'ESP si l'opération le bloque trop longtemps yield(); // rends la main à l'ESP if ( WiFi.waitForConnectResult() == WL_CONNECTED ) {break;} // si la connection est établie, on sort de la boucle infinie } Serial.print("connecté, addresse IP : "); Serial.println(WiFi.localIP()); // addresse IP attribuée à l'ESP par le routeur wifi auquel il se connecte UDP.begin(portUDP); } void loop() { Serial.println("coucou !"); UDP.beginPacket(IPcible, portUDP); UDP.write("coucou !"); UDP.endPacket(); yield(); // rends la main à l'ESP delay(1000); // le paquet sera envoyé toutes les secondes }
L'OSC est un format de donnée constitué d'une adresse et éventuellement d'arguments.