Arduino YUN - HTTP error 500

Ciao a tutti,

Sto avendo dei problemi con il mio Arduino YUN rev.2 comprato una settimana fa circa. Ho adattato uno sketch perfettamente funzionante su UNO e mi sta dando questi problemi:

  1. Le funzioni funzionano (scusate il gioco di parole) ma la pagina rimanda un HTTP error 500. Conclusa la funzione, il comando successivo ogni tanto va, ogni tanto no, dando sempre HTTP error 500.
  2. La funzione “consegna” si ferma ad un certo punto (segnato sullo sketch)
  3. Lo sketch caricato via USB funziona, caricato da porta wifi da “Could not connect to YunServer 146 Connection refused”
  4. il lettore RFID ogni tanto va, ogni tanto no.

Vi chiedo se, visto ciò che devo fare, convenga utilizzare uno YUN o basterebbe un UNO wifi, essendo che ciò che mi interessa è poter dare i comandi via WiFi.

Questo è lo sketch, vi prego di non insultarmi per la confusione.

#include <Bridge.h>
#include <BridgeServer.h>
#include <BridgeClient.h>
#include <Servo.h>
#include <Stepper.h>
#include <SPI.h>
#include <MFRC522.h>
#include <Process.h>

#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.


char command;
char st[20];
String statoSlot;
BridgeServer server;


// Stepper
int stepPin = 8;
int dirPin = 7;
int enPin = 6;

// Pin
int PinBianco = 4;
int PinRosso = 2;
int PinVerde = 11;


Servo servo1;
int statoRFID = 0; //RFID
int average;
 boolean authorized = false;
 char *name = "";
 char stato = "";

void setup() {
  Serial.begin(9600);   // Inicia a serial
  SPI.begin();      // Inicia  SPI bus
  mfrc522.PCD_Init();   // Inicia MFRC522
  while(! Serial) {}
  Serial.println();
  servo1.attach(12);
  Bridge.begin();
  
  // Listen for incoming connection only from localhost
  // (no one from the external network can connect)
server.listenOnLocalhost();
  server.begin();
  
}


void loop() {
  // Get clients coming from the server
   BridgeClient client = server.accept();



     if (client) {
    String command = client.readString();
    command.trim();


    if (command == "consegna") {
      consegna(); 
    }

    if (command == "acquisto") {
     acquisto();
    }

    if (command == "stato") {
      client.print(statoSlot);
    }
    
     }
    
    client.stop();


  delay(50);
}

void acquisto() {

  digitalWrite(2, LOW);
  //  digitalWrite(7, HIGH);
  boolean authorized = false;
  char *name = "";
  servo1.attach(12);
  pinMode(5, INPUT);
  BridgeClient client = server.accept();
  digitalWrite(3, HIGH);
  String command = client.readString();
  MFRC522::MIFARE_Key key;
  MFRC522::StatusCode status;
  SPI.begin();                                                  // Init SPI bus
  mfrc522.PCD_Init();      

  client.print("acquisto iniziato");
                client.println("HTTP/1.1 200 OK");
                client.println("Content-Type: text/html");
                client.println("Connection: keep-alive");
                client.println("Keep-Alive: timeout=60, max=100");
                client.println();

  Process acquisto;
    acquisto.begin("curl");
    acquisto.addParameter("-H");
    acquisto.addParameter("HTTP/1.1 200 OK");
    acquisto.addParameter("Content-type:text/html");
    acquisto.addParameter("-X");
    acquisto.addParameter("GET");
    acquisto.addParameter("-d");
    acquisto.addParameter("http://192.168.1.49/arduino/acquisto");
    acquisto.run();
 

  if (digitalRead(5) == LOW and mfrc522.PICC_IsNewCardPresent() and mfrc522.PICC_ReadCardSerial()) //Legge RFID e sensore. se ok procede
    { digitalWrite(PinBianco, LOW);
      digitalWrite(PinVerde, HIGH);

        for (byte i = 0; i < mfrc522.uid.size; i++) 
          {
            Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : "");
               Serial.print(mfrc522.uid.uidByte[i], HEX);
                }
                  Serial.println();


    delay(10);
      delay(300);
        servo1.write(0);
          delay(3000);

  int detect = digitalRead(5);
    bool USCITO = true;

/*******************************************************
 *  aspetto che il dispositivo esca
 ******************************************************/
    while (USCITO) {
      if (digitalRead(5) == HIGH) {
        USCITO = false;
          delay(2000);
            servo1.write(90);
              digitalWrite(PinBianco, HIGH);
                digitalWrite(PinVerde, LOW);
             }
           }

           
statoSlot = (F("<button class= 'consegna' onclick= 'consegnaSlot1();'> Slot 1 vuoto </a></button>"));
  client.println(statoSlot);
    Serial.println(statoSlot);
    
  }

  
  else { //se RFID no e sensore no allora non disp
    Serial.println ("NON DISPONIBILE");
      statoSlot = (F("<button class= 'consegna' onclick= 'consegnaSlot1();'> Slot 1 vuoto </a></button>"));
        client.println(statoSlot);
          Serial.println(statoSlot);
            delay(2000);
         }
      }

Grazie mille in anticipo, sarò grato a chiunque possa aiutarmi

scanzifarm: Ho dovuto spezzare lo sketch perchè troppo lungo

Per favore, mettilo come allegato nel primo post ed elimina gli altri, che altrimenti diventa difficile per chi volesse aiutarti...