ciao a tutti volevo condividere e magari migliorare il mio progettino fatto con arduino e un router "alice gate voip" con installato sopra openwrt.
cosa server:
un router che supporti openwrt, nel mio caso avevo a disposizione un alice gate voip . Ho seguito una delle tante procedure per installarlo "ovviamente tramite seriale"
un arduino con ethernet shield.
il codice arduino è molto semplice
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 177 }; // ip in lan
EthernetServer server(80);
String readString;
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
Ethernet.begin(mac, ip);
server.begin();
}
void loop()
{
EthernetClient client = server.available();
if (client)
{
while (client.connected())
{
if (client.available())
{
char c = client.read();
if (readString.length() < 100) readString += c;
if (c == '\n')
{
if(readString.indexOf('?') >=0)
{
client.println("HTTP/1.1 204 ");
}
else
{
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
}
delay(1);
client.stop();
if(readString.indexOf("on2") >0)
{
digitalWrite(2, HIGH);
Serial.println("Led On");
}
if(readString.indexOf("off2") >0)
{
digitalWrite(2, LOW);
Serial.println("Led Off");
}
if(readString.indexOf("on3") >0)
{
digitalWrite(3, HIGH);
Serial.println("Led On");
}
if(readString.indexOf("off3") >0)
{
digitalWrite(3, LOW);
Serial.println("Led Off");
}
if(readString.indexOf("on4") >0)
{
digitalWrite(4, HIGH);
Serial.println("Led On");
}
if(readString.indexOf("off4") >0)
{
digitalWrite(4, LOW);
Serial.println("Led Off");
}
if(readString.indexOf("on5") >0)
{
digitalWrite(5, HIGH);
Serial.println("Led On");
}
if(readString.indexOf("off5") >0)
{
digitalWrite(5, LOW);
Serial.println("Led Off");
}
if(readString.indexOf("on6") >0)
{
digitalWrite(6, HIGH);
Serial.println("Led On");
}
if(readString.indexOf("off6") >0)
{
digitalWrite(6, LOW);
Serial.println("Led Off");
}
if(readString.indexOf("on7") >0)
{
digitalWrite(7, HIGH);
Serial.println("Led On");
}
if(readString.indexOf("off7") >0)
{
digitalWrite(7, LOW);
Serial.println("Led Off");
}
if(readString.indexOf("on8") >0)
{
digitalWrite(8, HIGH);
Serial.println("Led On");
}
if(readString.indexOf("off8") >0)
{
digitalWrite(8, LOW);
Serial.println("Led Off");
}
if(readString.indexOf("on9") >0)
{
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(9, LOW);
Serial.println("Led On");
}
if(readString.indexOf("spegnitutto") >0)
{
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
readString="";
}
}
}
}
}
praticamente è uno di quelli che si trova facilmente online e l'ho adattato al mio scopo.
Ho scelto di usare openwrt in primis perchè ha una protezione maggiore per quanto riguarda gli accessi "nome utente e password" poi è accessibile anche da esterno e infine possiede un suo webserver interno.
in allegato trovate i file da inserire nella cartella www del router tramite il programma winSCP. Vi posso assicurare che funziona alla perfezione e dopo tante accensioni e spegnimenti dei led non si è mai impallato.
In pratica i vari pulsanti quando premuti non caricano una nuova pagina ma rimangono sempre su la stessa.
ecco come si presenta la parte grafica.
Adesso volevo un piccolo aiutino per fare interaggire la pagina htm con arduino che mi segnali lo stato del led se è acceso o spento.
Si può fare?? Vi informo inoltre che tutto quello che ho fatto è uno scopiazzamento generale e dopo vari topic letti e copia e incolla di codici sono riuscito a trovare una soluzione.
www.rar (207 KB)