arduino wifi

Salve ho comprato una scheda wifi shield, il montaggio tutto semplice, provo ad inserire lo sketch :

#include <SPI.h>
#include <WiFi.h>

char ssid[] = "AndroidAP"; // your network SSID (name)
char pass[] = "147147147"; // your network password

int status = WL_IDLE_STATUS;

boolean door_status = false;

WiFiServer server(80);

void setup() {
  // start serial port for debugging purposes
  Serial.begin(9600);
  
  // Attach interrupt to pin 2
  attachInterrupt(0, setDoorStatus, RISING);

  // attempt to connect to Wifi network:
  while ( status != WL_CONNECTED) {
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);
    status = WiFi.begin(ssid, pass);
    // wait 10 seconds for connection:
    delay(10000);
  }
  server.begin();
  // you're connected now, so print out the status:
  printWifiStatus();
}


void loop() {
            
  // listen for incoming clients
  WiFiClient 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("Connnection: close");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println("<meta http-equiv=\"refresh\" content=\"5\">");
          
            if (door_status == false){
              client.print("Everything is ok");
            }
            else {
               client.print("Alert ! The door has been opened");
            }
          client.println("
");
          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");
  }
}


void printWifiStatus() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);

  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
}

void setDoorStatus() {
  door_status = true;
}

un esempio preso da internet per far uscire " the door hs been opened" dal broswer cliccando sul pulsante collegato alla bredoboard al pin 2.
la scheda dialoga e sul monitor seriale mi esce il mio indirizzo ip, ma un volta che vado sul broswer ed inserisco l'ip, mi da errore, sulla shield la luce verde si accende, cosa sbaglio? per adesso mi serve capire la connessione grazie

provato ora, sia con chrome che con firefox funziona correttamente :roll_eyes:

Grazie per la risposta, scusa può essere che usando come wifi il mio tablet android con una scheda dati e quindi non mi riconosce bene il mio ip, o non comunica bene con il browser, forse mi spiego male, ma vorrei capire, già il fatto che lo hai provato e funziona mi fa pensare che sia un problema di rete

non so che dirti, io uso una sim voce-dati.
come hai settato android?

Io ho uso come wifi il tablet android, con allinterno una sim dati vado in altre impostazioni e successivamente su tethering e router wifi abilito router wifi e mi collego con tutti i dispositivi in casa che usano un wifi, gli ho dato una psw che è quella dello sketch ed il nome che cerco per collegarmii è AndroidAP, tutto qui. Ho provato a usare uno sketch che si chiama simply web server, non ricordo se fa parte della libreria di arduiono, mi compare sul monitor seriale l'indirizzo ip e mi dice di vedere ik risultato digitando sul broswer il codice ip che visualizza, stesso problema. Sto impazzendo. Aiuto...

stessa procedura e a me funziona.
nonb credo c'entri qualcosa... a differenza, sul mio cell è attivata l'opzione "debug" e
in seconda sono come superUser
come sim sono con Tim

edit:
appena acquistata la shield wifi ho fatto l'aggiornamento firmware come nella guida

Provo a fare l'aggiornamento del firware e vi faccio sapere, ho controllato con un amico, la scheda va in linea, ma non dialoga con http e indirizzo ip, speriamo sia solo un problema di aggiornamento firmware, altrimenti non so cosa fare

prima che ci siano fraintendimenti, tu intendi il browser del tablet, giusto?

come non detto, ho connesso il pc wia wifi con androidAP , arduino con androidAP e
anche qui sul browser pc funziona

Ho provato anche tramite un pc diverso, anche con il tablet, sempre lo stesso problema, un mistero che a te funziona e a me no, ti viene in mente qualcosa? Scusa se insisto, ma veramente questa cosa non la capisco, il mio amico mi dice che non dialoga in http

Ma l'hai aggiornato o meno questo benedetto firmware ??? Perché con quello vecchio, ed il nuovo IDE (nuova libreria WiFi), puoi stare sicuro che non funziona !

Guglielmo

No me lo fa il mio amico, io ho paura di fare danni, scusa mi sorge una dokanda, ma se come dici con il vecchio firmware e la nuova libreria non funzioja, c'è qllora una libreria piu vecchia per vedere se funziona? Forse sto dicendo una sciocchezza? Se invece esiste saresti così gentioe dove procurarla?

Non ricordo con che versione dell'IDE l'hanno aggiornata ... probabilmente se ti scarichi una vecchia versione ... tipo 1.02 ... dovrebbe andare, ma ... occhio, perché se l'hanno aggiornata è perché c'erano dei buchi (... es. blocchi improvvisi non prevedibili).

Quindi, se vuoi fare una prova ok, ma non usarla per il progetto finale ... usa l'ultimo IDE ed aggiorna il FW della scheda !

Guglielmo

Basta ci rinuncio, non siamo stati in grado di aggiornare il firmware, ci dava errori che non abbiamo capito, peccato che mi ritrovo una scheda nuova, l'errore è mio, che mi sono imbattuto in qualcosa che non conosco bene, ma pensavo fosse più semplice, pensavo che una volta caricato la scheda e lo sketch funzionasse facilmente.

quando ho aggiornato la scheda ho avuto problemi perchè il percorso del file che deve aggiornare non era al posto giusto come dice la quida.
mi sono salvato il percorso, nell'esempio manca (nel mio caso) c:\programmi.

se hai avuto il mio steesso problema prova a controllare dove sono i file dnld.elf

con windows 8 in cmd copia e incolla (controlla i percorsi):

batchisp.exe -device AT32UC3A1256 -hardware usb -operation erase f memory flash blankcheck loadbuffer C:\Programmi\Arduino\hardware\arduino\avr\firmwares\wifishield\binary/wifi_dnld.elf program verify start reset 0

il file wifiHD.elf

batchisp.exe -device AT32UC3A1256 -hardware usb -operation erase f memory flash blankcheck loadbuffer C:\Programmi\Arduino\hardware\arduino\avr\firmwares\wifishield\binary/wifiHD.elf program verify start reset 0

comunque se decidi di non fare copia e incolla, nel percorso cambia "firmware" in firmwares se no non lo trova.

lunedi dalla RS mi arriva un altro shield wifi
se ad allora non sei ancora riuscito ad aggiornare potremmo farlo insieme passo passo.
ciao

se non hai buttato via tutto, di seguito ti mostro la procedura (per windows 8)
non serve avere arduino attaccato alla scheda wifi
non serve attualmente scaricare il firmware, c'è già nella cartella di arduino

scaricare "flip" di atmel, se non si cambia percorso l'eseguibile lo installa qui:
C:\Program Files\Atmel\Flip 3.4.7\bin
(attualmente è la 3.4.7)

-tasto DX sull'icona nell'angolo in basso a SX dello schermo del pc
-esegui
-scrivi cmd
-ok
ti si apre il terminale

scrivere
cd C:\Program Files\Atmel\Flip 3.4.7\bin (puoi fare copia e incolla)

se il percorso è giusto sul terminale vedi:
C:\Program Files\Atmel\Flip 3.4.7\bin>

-inserisci il cavallotto in dotazione tra i 2 pin per la programmazione
-dai l'alimentazione collegando il cavetto usb dati (che non sia un cavetto per sola alimentazione ]:D)

ora... se il file wifi_dnld è nel posto giusto cioè:
C:\Program Files\Arduino\hardware\arduino\avr\firmwares\wifishield\wifi_dnld

copia e incolla sul terminale questo:
batchisp.exe -device AT32UC3A1256 -hardware usb -operation erase f memory flash blankcheck loadbuffer C:\Programmi\Arduino\hardware\arduino\avr\firmwares\wifishield\binary/wifi_dnld.elf program verify start reset 0

se non ci sono errori si accende un led blu sulla scheda

leva lo spinotto usb (importante)
reinserisci lo spinotto usb

ora... se il file wifiHD è nel posto giusto cioè:
C:\Program Files\Arduino\hardware\arduino\avr\firmwares\wifishield\wifiHD

copia e incolla sul terminale questo:
batchisp.exe -device AT32UC3A1256 -hardware usb -operation erase f memory flash blankcheck loadbuffer C:\Programmi\Arduino\hardware\arduino\avr\firmwares\wifishield\binary/wifiHD.elf program verify start reset 0

finito di caricare leva il cavallotto
fine.

una nota
(nel mio caso) se lascio "c:\Program Files" non funziona devo mettere c:\Programmi.
mistero di win

Salve a tutti. Dopo aver installato i driver e ho eseguito il primo passaggio mi ritrovo questo errore. Purtroppo non ho capito cosa vuole.

ciao,
sul sito di flip di Atmel si puo scaricare 2 file,

"flip" senza Java runtime enviroment e

"flip" con Java runtime enviroment nel caso non ci sia sul proprio pc.

ora io non ho qua le schede wifi, però provando a far partire flip non mi da quell'errore, passa oltre e poi ovviamente non trova la scheda.

la cartella "arduino" ce l'hai c:
oppure in c:\Program Files
?

Immagines 166.png