Ragazzi grazie ... mi ero perso qualche POST precedente !!
Un info al volo:
su futurashop.it le schede con il chip enc28j60 non sono disponibili , avete idea di dove poterle acquistare ?
Grazie ancora
Ragazzi grazie ... mi ero perso qualche POST precedente !!
Un info al volo:
su futurashop.it le schede con il chip enc28j60 non sono disponibili , avete idea di dove poterle acquistare ?
Grazie ancora
Se non hai fretta ( 4/5 settimane ) http://www.ebay.it/itm/ENC28J60-Ethernet-LAN-Module-for-Arduino-AVR-LPC-STM32-/280706213546?pt=LH_DefaultDomain_0&hash=item415b64e6aa
Altrimenti c'e' anche questa http://www.robot-italy.com/product_info.php?products_id=1037 , ma non l'ho mai provata
Ne ho ordinate un paio sul sito di futurashop.it ( disponibili dal 15/06 )
Mi chiedo ... ma quei progetti che girano in rete , per aggiornare il proprio IP su servizi DDNS che utilizzato la ETHERNET SHIELD con il chip 5100... non vanno !!
Anche perchè vedo che LucaDentella per lo stesso progetto ha utilizzato il chip ENC28J60
Nel circuito con RESET esterno ( con il NE555 ) ho aggiunto una riga di codice che , ad ogni avvio , aggiunge in un database un campo ( MYSQL ) ..... paura !!! a fine giornata ARDUINO ed ETHERNET SHIELD si sono riavviati ben 74 volte ( in 18 ore di funzionamento )
Accetto volentieri 2 / 3 riavii al giorno , ma così e impossibile da gestire
Magari sconnettendo il SERVER e riconnettendolo aumento l'affidabilità ?
Ho necessita di comunicare ad una pagina PHP lo stato degli ingressi di arduino ogni 30 secondi !!!
DELUSIONE !
Mi chiedo ... ma quei progetti che girano in rete , per aggiornare il proprio IP su servizi DDNS che utilizzato la ETHERNET SHIELD con il chip 5100... non vanno !!
Non so, posso caricare il tuo sketch e lasciarlo una notte in test a vedere se crasha anche il mio ![]()
Però questo pezzo lo puoi rudurre mandando solo 1 byte
if (client.connect(server, 80)) {
//Serial.println("connesso alla pagina xxxxxxxxxx.php");
client.print("GET /xxxxxxxxxxx.php?seriale=xxxxxxxx");
client.print("&in1=");
client.print(read1);
client.print("&in2=");
client.print(read2);
client.print("&in3=");
client.print(read3);
client.print("&in4=");
client.print(read4);
client.print("&in5=");
client.print(read5);
client.println(" HTTP/1.0");
client.println("HOST: tech-alarm.it");
client.println();
così
client.print("GET /xxxxxxxxxxx.php?seriale=xxxxxxxx&str=nnn HTTP/1.0 HOST: tech-alarm.it");
client.println();
nnn è un valore da 0 a 255 e gestisci 8 porte con un solo byte
nn=0 convertito in bin ottieni 00000000
nn=255 convertito in bin ottieni 11111111
che poi a te serve solo da 0 a 31
sul php server devi solo prendere i caratteri da 0 a 8 della stringa nnn
sei gentilissimo ma e uno steck base.. non fa nulla di particolare
#include <Ethernet.h>
#include <SPI.h>char server[] = "tech-alarm.it";
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0xF8, 0x4A };
byte ip[] = { 192,168,1, 166 };
EthernetClient client;
void setup(){
Serial.begin(9600);
Ethernet.begin(mac, ip);
delay(2000);
}
void loop() {
if (client.connect(server, 80)) {
client.print("GET /prova_semplice.php?seriale=14141414");
client.println(" HTTP/1.0");
client.println("HOST: tech-alarm.it");
client.println();Serial.println("connesso");
client.stop();
client.flush();delay (1000);
} else {
Serial.println("errore");
client.stop();
client.flush();delay (1000);
}
}
dal monitor seriale vedo la scritta "connesso" , ogni tanto "errore" ed infine... FREEZE !!! devo riavviare
si è connesso ![]()
ok ora ti vedo "FUORI LINEA" .. da 3 minuti circa
ha fatto 3 connessioni è poi basta
ok !!
io lascio il mio ARDUINO connesso alla rete ( uso un altro seriale ) ma come ti dicevo dopo un po ... FREEZE !
ora ho provato a fare un altra modifica alla libreria EthernetClient.cpp
http://arduino.cc/forum/index.php/topic,94572.120.html
vediamo... ( anche se nel post in questione ho scritto che si bloccava ma non avevo salvato la modifica ) ora e 10 minuti che gira.. un po presto ma posto i risultati
Grazie
Ok .... come ti dicevo prova a ridurre il flusso di dati inviando solo un byte
al « Reply #23 on: Today at 05:51:16 PM » di questo treadh
ciao
ok lo faccio subito.. ho anche creato un unica pagina .php che esegue tutte e 3 le pagine che prima chiamavo ; vedo di passargli meno byte possibili
pablos approfitto della tua gentilezza ma mi sto perdendo ..
Lato server io ricevo un numero da 0 a 31 , lo converto in binario .. ok capisco i 5 ingressi in che stato sono ... fatto
mi perdo in ARDUINO
read1 = digitalRead(in1);
read2 = digitalRead(in2);
read3 = digitalRead(in3);
read4 = digitalRead(in4);
read5 = digitalRead(in5);
queso come lo coverto in numero int da 0 a 31 ?
val_input = 0;
if ( digitalRead(in1) == HIGH ){
val_input = val_input + 1;
}
if ( digitalRead(in2) == HIGH ){
val_input = val_input + 2;
}
if ( digitalRead(in3) == HIGH ){
val_input = val_input + 4;
}
if ( digitalRead(in4) == HIGH ){
val_input = val_input + 8;
}
if ( digitalRead(in5) == HIGH ){
val_input = val_input + 16;
}
Serial.println(val_input);
non so se è il metodo giusto ma funziona !
ero a fare pappa ![]()
ipotizzando tutte le in a 1 rispettivamente sarebbe
in1 in2 in3 in4 in5
1 ( x16 ) + 1 ( x8 ) + 1 ( x4 ) + 1 ( x2 ) + 1 ( x1 )
16+8+4+2+1=31
ero a fare pappa
ci mancherebbe !!! ![]()
ok perfetto ! ma a questo punto altro tasto dolente per me.. come concateno le stringhe per risparmiare memoria ??
// risultato = numero da 0 a 31 in base agli ingressi ==> perfetto !
client.print("GET /prova_semplice.php?seriale=18102005&val=")
client.print(risultato);
client.print(" HTTP/1.0 HOST: tech-alarm.it");
client.println();
questo vorrei diventasse :
// risultato = numero da 0 a 31 in base agli ingressi ==> perfetto !
client.print("GET /prova_semplice.php?seriale=18102005&val=risultato HTTP/1.0 HOST: tech-alarm.it");
client.println();
ma come si mette una variabile dentro le virgolette ??
in C++ uso
[("GET /prova_semplice.php?seriale=18102005&val=%@ HTTP/1.0 HOST: tech-alarm.it"),risultato];
ma qui non funge
risultato lo converti in stringa
int val=31
(String)val non lo metti tra ""
qui non avevi fatto così ?
client.print("&in1=");
client.print(read1);
metti un + dovrei provare
non ne sono certo
si ok ! lo converto in stringa ma posso in unica linea chiudere e riaprire le virgolette ?
client.print("GET /prova_semplice.php?seriale=18102005&val="risultato" HTTP/1.0 HOST: tech-alarm.it");
client.println();
cosi ?
client.print("GET /prova_semplice.php?seriale=18102005&val=" + risultato + " HTTP/1.0 HOST: tech-alarm.it");
oppure così se risultato non è una stringa
client.print("GET /prova_semplice.php?seriale=18102005&val=" + (String)risultato + " HTTP/1.0 HOST: tech-alarm.it");
e ti giuro che ho cercato come un pazzo in rete ma il simbolo + proprio non lo ho trovato.... ok provo grazie ancora
![]()
Scusa se ti angoscio questa sera !
String valore = String(val_input);
Serial.println(valore);
if (client.connect(server, 80)) {
client.print("GET /prova_semplice.php?seriale=18102005&val_input="+valore+" HTTP/1.0 HOST: tech-alarm.it");
client.println();
Serial.println("connesso");
client.stop();
client.flush();
delay (1000);
}
Dal serial monitor leggo il valore da 0 a 31 in base agli ingressi in modo corretto , si connette ma la pagina in PHP non si aggiorna
ho provato dal browser
http://........./prova_semplice.php?seriale=18102005&val_input=10
e funziona
quindi la stringa che invia arduino non va.....
uffa !!!