Comandare Arduino YUN con Unity via Wi-Fi

Ciao a tutti,

come ho detto in presentazione ho da poco preso un Arduino YUN con modulo Wi-Fi in quanto avrei piacere di far interagire un’applicazione con l’Arduino via Wi-Fi in modo da controllare luci e tapparelle in casa (per iniziare).

Al momento è da qualche giorno che sbatto la testa su un problema che non riesco a risolvere e non so più che pesci prendere.

Ho collegato il computer e l’Arduino a una rete Wi-Fi LAN fornita da un web pocket (senza sim inserita).
Premetto che la comunicazione tra i 2 funziona perché posso uploadare gli sketch sull’Arduino via Wi-Fi senza problemi.
Il mio obiettivo al momento è quello di far accendere un banalissimo LED premendo un pulsante sulla mia applicazione in Unity. Ecco il codice:

UNITY 3-D

using UnityEngine;
using System.Collections;
using System;
using System.IO;
using System.Text;
using System.Net.Sockets;

public class ClientSocket: MonoBehaviour {

bool socketReady = false;
TcpClient mySocket;
public NetworkStream theStream;
StreamWriter theWriter;
public String Host = “192.168.8.100”;
public Int32 Port = 5555;
public bool lightStatus;

void Start() {
setupSocket ();
}

void Update() {

}

public void setupSocket() {
try {
mySocket = new TcpClient(Host, Port);
theStream = mySocket.GetStream();
theWriter = new StreamWriter(theStream);
socketReady = true;
}
catch (Exception e) {
Debug.Log(“Socket error:” + e);
}
}

public void LedOn(){
if (!socketReady)
return;
String temp = “1”;
theWriter.Write (temp);
theWriter.Flush ();

}

public void LedOff(){
if (!socketReady)
return;
String temp = “0”;
theWriter.Write (temp);
theWriter.Flush ();

}
}

e qua il codice ARDUINO

#include <Bridge.h>
#include <YunServer.h>
#include <YunClient.h>

YunServer server;
int LED = 13;
char thisChar = 0;
boolean alreadyConnected = false; // whether or not the client was connected previously

void setup() {

pinMode(LED, OUTPUT);

digitalWrite(LED, HIGH);
delay(3000);
digitalWrite(LED, LOW);

Serial.begin(9600);
Bridge.begin();

digitalWrite(LED, HIGH);
delay(2000);

server.listenOnLocalhost();
digitalWrite(LED,LOW);
delay(2000);
server.begin();
digitalWrite(LED,HIGH);
}

void loop () {
YunClient client = server.accept();
digitalWrite(LED,LOW);

if(client){
digitalWrite(LED,HIGH);
delay(15000);
thisChar = client.read();
client.flush();

if (thisChar == 1) {
digitalWrite(LED, HIGH);
}
if(thisChar == 0) {
digitalWrite(LED,LOW);
}
delay(50);
}
}

ho inserito alcune accensioni/spegnimenti di luce con successivi delay per seguire il codice e vedere cosa succede e sembra andare tutto bene fino al comando if(client) dentro al quale non entra mai.
Premetto ulteriormente che io carico prima lo Sketch sull’arduino per farlo eseguire e poi mando in play l’applicazione Unity.

Qualsiasi suggerimento è ben accetto.

Saluti!

>Avktrom: ti ricordo che in conformità al regolamento (… che ti chiedo di leggere con attenzione), punto 7, devi editare il tuo post (in basso a destra del post, bottone More → Modify) e racchiudere il codice all’interno dei tag CODE (… sono quelli che in fase di edit inserisce il bottone fatto così: </>, tutto a sinistra). Grazie.

Guglielmo