Table des matières

Ceci est une ancienne révision du document !


ESP OSC

le projet

Utiliser une wemos D1 pour balancer en wifi vers un ordi du signal en osc.
Il faudra bien sur connaître ou définir l'ip de l'ordi et se connecter sur le même réseau, si possible via un routeur de bonne qualité pour éviter les délai et crash…

Attention a bien choisir dans Outils dans Arduino (logiciel):

  • Wemos D1 R2 & mini (apres avoir installer le driver ESP dans outils > ajouter carte)
  • baudrate 115200

Latence

Mettre un délai de 50ms si entrée analogique utilisé dans la loop… sinon crash de l'osc ! pour une entrée digital 1ms suffit .

code

pour un bouton et un analogique avec un delay dans la loop de 50ms

#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <OSCMessage.h>
 
char ssid[] = "****";          // your network SSID (name)
char pass[] = "****************";                    // your network password
 
WiFiUDP Udp;                                // A UDP instance to let us send and receive packets over UDP
const IPAddress outIp(192,168,43,20);        // remote IP of your computer
const unsigned int outPort = 9999;          // remote port to receive OSC
const unsigned int localPort = 8888;        // local port to listen for OSC packets (actually not used for sending)
 
void setup() {
  pinMode(D1, INPUT_PULLUP);  // on definit en pullUp la pin 1 du wemos pour le shield Olo
 
    Serial.begin(115200);
 
    // Connect to WiFi network
    Serial.println();
    Serial.println();
    Serial.print("Connecting to ");
    Serial.println(ssid);
    WiFi.begin(ssid, pass);
 
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }
    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
 
    Serial.println("Starting UDP");{{ :projets:esposc:screen_shot_12-24-18_at_02.46_pm.jpg?nolink |
    Udp.begin(localPort);
    Serial.print("Local port: ");
    Serial.println(Udp.localPort());
}
 
void loop() {
 
// on lit les valeurs A0 et D1
  int sensorValue = analogRead(A0);
  int buttonState = digitalRead(D1);
 
// on cree un message OSC  
    OSCMessage msg("/analog");
      msg.add(sensorValue);
      msg.add(buttonState);
    Udp.beginPacket(outIp, outPort);
    msg.send(Udp);
    Udp.endPacket();
    msg.empty();
    delay(50);  // latence minimal pour eviter crash
}

recuperation du signal pour ce code

dans pd :