Pages: [1]   Go Down
Author Topic: Arduino Web Server(WiFi) + Processing  (Read 1960 times)
0 Members and 1 Guest are viewing this topic.
Bergamo
Offline Offline
Full Member
***
Karma: 1
Posts: 142
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buonasera forum,
Vorrei inviare i valori di temperatura raccolti da Arduino+modulo wifi a Processing per poi rielaborarli graficamente o altro.
Avevo pensato di configurare Arduino+Wifi come web server (e fin qui tutto ok).
Processing, dovrebbe tramite una GET, richiedere il valore al server, ma non saprei come.
Qualcuno mi saprebbe aiutare?
Grazie in anticipo
Matteino
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 2227
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao,

Quote
Avevo pensato di configurare Arduino+Wifi come web server (e fin qui tutto ok).
Processing, dovrebbe tramite una GET, richiedere il valore al server, ma non saprei come.

parti da qui:
http://processing.org/reference/libraries/net/
Logged

Bergamo
Offline Offline
Full Member
***
Karma: 1
Posts: 142
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao,
grazie per la risposta. Avevo già letto il reference della libreria, ma non riesco a capire come leggere il dato dal web server.
Magari c'è un modo più semplice...
A me basterebbe inviare dall'Arduino/Wifi per esempio: VALORE1 = 20°C
A questo punto leggerlo da processing e convertirlo in un int.
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 2227
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao,
puoi seguire questo esempio:
http://processing.org/learning/library/httpclient.html
che di fatto fa una richiesta GET.

Dovrai poi all'interno della stringa data recuperare il valore che cerchi.

Per la conversione poi della stringa a int, considera che qui si utilizza java, quindi, di base:

Code:
String stringa_da_convertire;
int valore_integer;

stringa_da_convertire = "42";
valore_integer = Integer.parseInt(stringa_da_convertire);

Quale è il tuo obiettivo?
Avevi già considerato l'utilizzo di altri strumenti, per es. php + mysql, o soluzioni cloud tipo google docs... ?
« Last Edit: July 19, 2012, 04:35:16 pm by pitusso » Logged

Bergamo
Offline Offline
Full Member
***
Karma: 1
Posts: 142
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao pitusso,
ecco il codice che ho scritto con le tue indicazioni:

import processing.net.*;
Client c;
String data;
int tempval;
String temp;

void setup() {
  size(200, 200);
  background(50);
  fill(200);
  c = new Client(this, "192.168.2.177", 80); // Connect to server on port 80
  c.write("GET / HTTP/1.0\r\n"); // Use the HTTP "GET" command to ask for a Web page
  c.write("\r\n");
}

void draw() {
  if (c.available() > 0) { // If there's incoming data from the client...
    data = c.readString(); // ...then grab it and print it
    temp = data.substring(49,53);
    tempval = Integer.parseInt(temp);
  }
}

in risposta però ottengo un errore:

Exception in thread "Animation Thread" java.lang.NumberFormatException: For input string: "27.7"
   at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
   at java.lang.Integer.parseInt(Integer.java:458)
   at java.lang.Integer.parseInt(Integer.java:499)
   at HTTPClient.draw(HTTPClient.java:57)
   at processing.core.PApplet.handleDraw(PApplet.java:1977)
   at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:187)
   at processing.core.PApplet.run(PApplet.java:1855)
   at java.lang.Thread.run(Thread.java:662)

Per il momento vorrei riuscire a leggere un valore di temperatura e visualizzarlo con un grafico in processing. Interessante anche Google docs, hai già sperimentato qualcosa?
Logged

Bergamo
Offline Offline
Full Member
***
Karma: 1
Posts: 142
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sono un p.... ! trovato l'errore. Essendo il dato con una cifra decimale, devo usare float. Quindi diventa:
tempval = Float.parseFloat(temp);
Adesso funziona.
Ho scoperto poi che può essere fatto anche con:
tempval = float(temp);
Logged

ITALY
Offline Offline
Full Member
***
Karma: 1
Posts: 181
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Interessante anche Google docs, hai già sperimentato qualcosa?
Ciao,
se vuoi passare i dati a Google docs ti consiglio di leggere qui:
http://www.open-electronics.org/how-send-data-from-arduino-to-google-docs-spreadsheet/
e un thread che avevo aperto:
http://arduino.cc/forum/index.php?topic=52321.0
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 2227
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao

Quote
Sono un p.... ! trovato l'errore. Essendo il dato con una cifra decimale, devo usare float. Quindi diventa:
tempval = Float.parseFloat(temp);

infatti, inizialmente parlavi di int.

Quote
Adesso funziona.
Ho scoperto poi che può essere fatto anche con:
tempval = float(temp);

certo, di base è la stessa cosa; puoi trovare esempi di conversione (cast) anche tra gli esempi dell'IDE di Processing, in particolare: Example -> Data -> DatatypeConversion

Quote
Interessante anche Google docs, hai già sperimentato qualcosa?

i link che ha postato DevonMiles sono i migliori che si possano trovare.
Logged

Pages: [1]   Go Up
Jump to: