Ciao a tutti, spero di aver postato nella giusta sezione e premetto di essere inesperto in materia, detto ciò descrivo i miei problemi sperando di riuscire a risolverli.
Ho da poco acquistato Arduino uno R3 e una ethernet shield con l'intento di fare un programmino che facesse accendere e spegnere uno o più led da remoto.
Il problema è che non riesco ad accedere alla pagina del programma da dispositivi che non sono collegati sullo stesso router a cui è collegato arduino, per ovviare a questo problema mi è stato detto di creare un ddns, visto che il mio è un router dlink 2750b mi sono registrato al sito dlinkddns e ho creato il mio host.
scrivendo nella barra degli indirizzi il dns accedo alla schermata di configurazione del router e anche questo solo in locale.
Ora vi chiedo quali sono le configurazioni che mi permettono di vedere la pagina dell'host anche da connessioni esterne e poi associarlo all'indirizzo del web server di arduino?
questo è il programma:
#include <String.h>
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 3 }; // indirizzo IP del server
byte gateway[] = { 192, 168, 1, 1 }; // indirizzo ip del router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); //server port
int ledPin = 2; // LED pin
String readString; //string
boolean LEDON = false; //LED status flag
void setup(){
Ethernet.begin(mac, ip, gateway, subnet);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop(){
EthernetClient client = server.available();
if (client) {
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
readString.concat(c); //store characters to string
//if HTTP request has ended
if (c == '\n' && currentLineIsBlank) {
Serial.print(readString);
if(readString.indexOf("L=1") > 0) {//lets check if LED should be lighted
//led has to be turned ON
digitalWrite(ledPin, HIGH); // set the LED on
LEDON = true;
}else{
//led has to be turned OFF
digitalWrite(ledPin, LOW); // set the LED OFF
LEDON = false;
}
// now output HTML data starting with standart header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.print("ARDUINO Controllo Led via WEB");
//send first heading
client.println("
Controllo tramite arduino di un diodo led
");client.println("
");
client.println("
Controllo led
");//printing LED status
client.print("Stato del led: ");
if (LEDON) {
client.println("ON");
}
else
{
client.println("OFF");
}
client.print("
ACCENDI | SPEGNI
");client.println("");
readString="";
client.stop();
} //if c == /n
} // if client available
} // while client connesso
} // if client
} //loop
Grazie in anticipo