Pages: [1]   Go Down
Author Topic: Controllare connessione ethernet  (Read 667 times)
0 Members and 1 Guest are viewing this topic.
Ivrea - Torino - Italy
Offline Offline
Newbie
*
Karma: 1
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buongiorno a tutti,
premetto che ho da poco ricevuto in regalo la nuova ethernet shield, ora vorrei implementare un piccolo progetto in cui arduino (UNO) è configurato come server, e svolge un evento quando manca la connessione alla LAN. Ad esempio se si spegne il router, o si taglia il cavo di rete, arduino fa accendere un LED, e quando viene riconnesso aggiorna se è il caso l'ip pubblico su no-ip.  smiley-grin

Non riesco a capire però come controllare se Arduino è connesso o no alla rete. Qualcuno potrebbe gentilmente darmi uno spunto?  smiley-red

Grazie! smiley-grin
Logged

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1740
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Io pingherei google periodicamente se hai esito negativo accendi il LED.
Logged

Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield.
Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586

ivrea (to)
Online Online
Faraday Member
**
Karma: 77
Posts: 4620
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Indirizzo 8.8.8.8 è dns google e puoi pingarlo
Logged

my name is IGOR, not AIGOR

Ivrea - Torino - Italy
Offline Offline
Newbie
*
Karma: 1
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Giusto, non mi era venuto in mente,  smiley-razz
Quindi a questo punto, visto che mi interessa che sia collegato in particolare alla LAN, anche se manca internet, posso fare un ping anche verso un server locale o addirittura verso il router? smiley-wink

Non pensavo che si potessero effettuare ping, c'è qualche libreria? Riuscireste a chiarirmi le idee al riguardo? io intanto Provo a documentarmi!

Grazie,
Logged

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1740
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Io sto usando il cellulare, quandi non posso cercare in lungo e in largo.

Logged

Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield.
Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586

Switzerland
Online Online
Faraday Member
**
Karma: 111
Posts: 5882
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Prova a dare un occhiata qui : http://forum.arduino.cc/index.php/topic,8701.0.html ... magari ti può essere utile.

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

provincia di Forlì
Offline Offline
Full Member
***
Karma: 0
Posts: 119
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao ho fatto una cosa analoga la tua..

Con la libreria che ti hanno postato qui sopra (recentemente è uscita una versione aggiornata ma per il nostro scopo va più che bene la prima) io pingavo un server remoto e nel caso la risposta fosse negativa, riavviavo il router!

Sono a disposizione !
« Last Edit: August 26, 2013, 10:59:26 am by Federico0 » Logged

Ivrea - Torino - Italy
Offline Offline
Newbie
*
Karma: 1
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao ho fatto una cosa analoga la tua..

Con la libreria che ti hanno postato qui sopra (recentemente è uscita una versione aggiornata ma per il nostro scopo va più che bene la prima) io pingavo un server remoto e nel caso la risposta fosse negativa, riavviavo il router!

Sono a disposizione !


Si quello che voglio fare è una cosa simile, grazie Mille a tutti, mi metto al lavoro, e vi faccio sapere se ho problemi, grazie Ancora, gentilissimi! smiley-grin
Logged

Ivrea - Torino - Italy
Offline Offline
Newbie
*
Karma: 1
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Eccomi qua, mi sono messo al lavoro,  smiley-surprise
sono riuscito a far si che Arduino accenda un LED se c'è mancanza di rete, e lo spenga quando ritorna!
 
Ora però mi trovo di fronte a questo problema, se io volessi anche far ospitare ad arduino una piccola pagina web, ad esempio quella che c'è tra gli esempi  smiley-confuse è possibile?
io ho provato diverse soluzioni, ma non riesco proprio. Provo anche a far dei ping da Pc verso arduino, e solo qualcuno mi torna indietro, come se la scheda fosse sempre occupata per fare i ping di controllo,
Qualcuno ha qualche idea? smiley ve ne sarei molto grato,  smiley-red

vi posto il mio codice, anche se niente di particolare..

Code:

#include <SPI.h>
#include <Ethernet.h>
#include <ICMPPing.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192,168,1,150);

/***************************************************
  PER IL PING
 **************************************************/
byte pingAddr[] = {192,168,1,4}; // ip address to PING
SOCKET pingSocket = 0;
char buffer [256];
ICMPPing ping(pingSocket);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup() {
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  //led
  pinMode(3, OUTPUT);
  digitalWrite(3, LOW);
 
  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}


void loop() {
 
  boolean InternetCtrl = false;

  InternetCtrl = ping(4, pingAddr, buffer);
    if(!InternetCtrl)
    {
      digitalWrite(3, HIGH);
      Serial.println('\n entro nel ciclo non internet');
    }
    else if(InternetCtrl)
    {
      digitalWrite(3, LOW);
      Serial.println('\n entro nel ciclo internet ok');
      page();
    }
       
    delay(1);
 }


void page()
{
   // listen for incoming clients
  EthernetClient client = server.available();
  if(client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response
  client.println("Refresh: 5");  // refresh the page automatically every 5 sec
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          // output the value of each analog input pin
          for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
            int sensorReading = analogRead(analogChannel);
            client.print("analog input ");
            client.print(analogChannel);
            client.print(" is ");
            client.print(sensorReading);
            client.println("<br />");       
          }
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disonnected");
  }
 
}
Logged

Offline Offline
God Member
*****
Karma: 9
Posts: 550
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ke router hai?magari puoi farlo direttamente da lì..
Logged

Ivrea - Torino - Italy
Offline Offline
Newbie
*
Karma: 1
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ke router hai?magari puoi farlo direttamente da lì..

ho un router alice, ma di che parli? smiley il fatto dell'ip sono riuscito,  smiley-wink

ora non mi riesce ad ospitare una semplice pagina web, smiley-sad
Logged

Offline Offline
God Member
*****
Karma: 9
Posts: 550
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

l'aggiornamento del dynamicDNS puoi benissimo farlo fare a molti modem,compresi molti di alice(tipo il mio gate plus wifi lo fa tranquillamente senza nessuna modifica)
Logged

Pages: [1]   Go Up
Jump to: