Automatización de un banco de ensayos a fatiga axial (TFG)

Buenos dias.

Primero de todo soy nuevo en todo el tema de programar arduinos, pero llevo un mes mirando tutoriales, etc.

El problema es que hice un programa para el control básico de una maquina instalada en mi universidad vía puerto serie. El programa funciona sin ningún problema y conseguimos un control vía serie de la maquina.
Claro, el siguiente paso era conseguir comunicarnos con la maquina va wifi para poder controlarla en cualquier parte de la universidad sin necesidad de estar fisicamente en el laboratorio.

Para ello se nos ocurrio que con un arduino uno wifi con el modulo ya incorporado seria una buena idea.
El arduino ya esta conectado a la red de la universidad y he creado una IP por la cual pudo comunicarme por la wifi console. Arduino - Home este es el tutorial utilizado.

Por lo que tengo entendido el programa por serie no me funciona porque tengo que cambiar los comandos serie por wifi para poder controlar la maquina por la wifi console pero llevo casi un mes y no consigo nada solo cambiar el programa sin sentido.

Adjunto el programa via serial. Solo con saber si es posible lo que digo o si voy mal encaminado ya seria de mucha ayuda.

Muchas gracias!!

Código:

// Definición de las salidas de las electroválvulas
const int electro_presion =  7; 
const int electro_avance =  8; 
const int electro_retroceso  = 4 ;
const int motor = 12;

// Constantes para la comunicación puerto serie
String inputString = "";         // a string to hold incoming data
boolean stringComplete = false;  // whether the string is complete

void setup() {
// Definición del tipo de salidas
 pinMode(motor, OUTPUT);
 pinMode(electro_presion, OUTPUT);
 pinMode(electro_avance, OUTPUT);
 pinMode(electro_retroceso, OUTPUT);

 // Paro de las salidas
  paro();

  // initialize serial:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  // reserve 200 bytes for the inputString:
  inputString.reserve(200);
}

void loop() {
  
  // Lectura de comandos a través del puerto serie  
  if (stringComplete) {
    inputString.trim();
    Serial.println(inputString);

  // Maniobra
  if (inputString == "marcha"){
     digitalWrite(motor, HIGH);
     Serial.println("marcha maniobra");
  } else if (inputString == "paro"){
     paro();
     Serial.println("paro");
     
  }else if (inputString == "presion"){
     digitalWrite(electro_presion, HIGH);
      Serial.println("marcha presion");

    }else if (inputString == "avance"){
      digitalWrite(electro_retroceso, LOW);
      delay(100);
      digitalWrite(motor, HIGH);
      delay(100);
     digitalWrite(electro_avance, HIGH);
      delay(100);
     digitalWrite(electro_presion, HIGH);
      Serial.println("avance");
    } else if (inputString == "retroceso"){
     digitalWrite(electro_avance, LOW);
     delay(100);
     digitalWrite(motor, HIGH);
     delay(100);
     digitalWrite(electro_retroceso, HIGH);
     delay(100);
     digitalWrite(electro_presion, HIGH);
      Serial.println("retroceso");
    } else if (inputString == "test"){
     digitalWrite(electro_avance, LOW);
       delay(100);
     digitalWrite(motor, HIGH);
     delay(100);
     digitalWrite(electro_retroceso, HIGH);
     delay(100);
     digitalWrite(electro_presion, HIGH);
     Serial.println("realizando ensayo");
    } else {
    Serial.println(inputString+=" comando no reconocido");
    }  
      // clear the string:

    inputString = "";
    stringComplete = false;
  }}



  // Definición de la función de paro de la máquina
   void paro(){
    digitalWrite(electro_presion, LOW);
  delay(200);
    digitalWrite(electro_avance, LOW);
  delay(200);
  digitalWrite(electro_retroceso, LOW);
  delay(200);
  digitalWrite(motor, LOW);
  }



void serialEvent() {
  while (Serial.available()) {
    // get the new byte:
    char inChar = (char)Serial.read();

   
    // if the incoming character is a newline, set a flag
    // so the main loop can do something about it:
    if (inChar == '\n') {
      stringComplete = true;
    } 
    else{
     // add it to the inputString:
     inputString += inChar;
    }
  }
}

control_banco_traccion.ino (2.89 KB)

Hola Davidrod3, bienvenido al foro Arduino.
Antes que nada, te recuerdo que códigos que no superen 9000 caracteres deben postearse usando etiquetas en el cuerpo de tu post.
Y los enlaces deben tener su etiqueta también!
Ya los edité.

Ya que el UNO WIFI en realidad es un mix de UNO + ESP8266-01 todo junto, la posiblidad de convertir tu código no es tan complicada.

Desde ya que se puede, solo que estoy mas acostumbrado a trabajar con el ESP8266 solo que con un mix UNO+ESP y no he visto si debo si o si usar comandos AT o hay una forma mas inteligente de hacerlo.

Investigo y te respondo.

Según la documentación debes trabajar con la librería ArduinoWifi.h.
Te dejo el enlace para tu consideración.
Hay ejemplos como WebServer con los que podrás manejarte remotamente.