Discussione Wake on lan e arduino

Cad81

Utente Silver
6 Febbraio 2013
80
30
2
96
Ciao ragazzi, mi servirebbe il vostro aiuto:
Ho realizzato (scopiazzato) il codice (e circuito) per sfruttare il wake on lan dei pc con arduino. Il codice è presente a questa pagina: https://www.logicaprogrammabile.it/wol-accendere-computer-arduino-wake-on-lan/

Ho qualche domanda:

1- E' normale che, controllando il risultato del codice tramite monitor seriale, il mac address viene convertito in decimale?
2- La scheda di rete del pc, non dovrebbe rimanere attiva anche a pc spento (con opzione WOL attivata nel bios)?
3- Non avendo un cavo cross a casa, ho collegato arduino con un patch ad uno switch e lo switch al PC. Dovrebbe funzionare ugualmente, giusto? Premendo il pulsante su arduino, vedo i led delle schede di rete e arduino che trasmettono, quindi presumo di si

Grazie mille!
 
Ultima modifica:
E' normalissimo che nel monitor seriale vedi il valore esadecimale convertito in decimale, ad esempio:
C:
printf("Valore decimale: %d", 0xff);
, la scheda rimane attiva anche a pc spento altrimenti come fa a ricevere i dati se non è attiva forse hai 2 schede di rete al pc se ne hai due usa quella integrata nella scheda madre, il collegamento con lo switch non va bene servono due cavi cross poi controlla se gli ip sono giusti, se la tua rete è 192.168.1.x devi correggere gli ip ad esempio quello di broadcast sarà 192.168.1.255

C:
byte arduino_MAC[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte arduino_IP[] = { 192, 168, 0, 250 };
Ethernet.begin( arduino_MAC, arduino_IP);

C:
//Indirizzo broadcast della rete locale
byte broadCastIp[] = { 192, 168, 0, 255 };

Fammi sapere ;)
 
Ciao! Dunque, la domanda sulla scheda di rete attiva l'ho fatta perchè, a PC spento e con il cavo di rete inserito (collegato ad internet), il LED rimane spento. Non ho capito se, anche a LED spento è in ascolto, oppure se il LED deve proprio essere acceso (ho solo una scheda LAN, quella integrata).

Per quanto riguarda lo switch, posso anche bypassarlo collegando direttamente arduino al PC con un cross, quindi? (avevo fatto sto giro per evitare di acquistare il cavo cross, ma se invece me ne servono addirittura 2, bypasso lo switch direttamente e uso solo un cross :D )

L'IP dovrei averlo corretto, ma ora mi hai fatto venire il dubbio.

Spero di poter controllare questa sera, grazie mille :)
 
Prova con la soluzione proposta, sappi però che Il tuo arduino fa più o meno questo:


Ovvero il "cervello" del tuo arduino chiede ininterrottamente al pin "ehi, è cambiato qualcosa?" ed il pin dice "non ancora".
Se vuoi, il modo corretto per programmarlo sarebbe usare un interrupt gestito magnificamente e semplicemente da arduino:

https://www.arduino.cc/reference/en/language/functions/interrupts/interrupts/

L'interrupt in questo caso è il contrario di quello che sta facendo adesso. E' il pin che dice "ehi, io sono cambiato! Cervellone fermati e gestiscimi"!

Ti assicuro che se impari a gestire gli interrupt avrai già superato l' 80% di tutta la community di arduino. Entro fine mese conto di scrivere una guida sul forum nel caso ti interessi, altrimenti prova a cambiare seguendo la documentazione di arduino!
 
Son riuscito solo ora a metterci mano..dunque:

poi controlla se gli ip sono giusti, se la tua rete è 192.168.1.x devi correggere gli ip ad esempio quello di broadcast sarà 192.168.1.255

Dunque, la rete me la segna così (con il cavo di rete collegato, attualmente ancora cavo patch, devo ancora prendere il cross):

Indirizzo IPv4 config. automatica: 169.254.125.36(Preferenziale), mentre la subnet a 255.255.0.0. Gateway predefinito non mi da nulla.
Devo quindi mettere come ip broadcast 169.254.125.36?
Dovrei cambiare anche quello di arduino, ad esempio in 169.254.125.30?

Piccolo aggiornamento: pare che il pc deve stare in stato di sospensione no spento completamente, fai questa verifica vedi se il led rimane acceso e in più puoi con wireshark https://www.wireshark.org/download.html vedi se affettivamente arduino invia i pacchetti

Azz...sicuro sicuro che necessita della sospensione? Mi rovina tutti i piani :O Anche io ho letto questa cosa, ma non erano fonti ufficiali, ma supposizioni da vari utenti dei forum. Eppure, molto tempo fa, avevo letto che si poteva fare anche da spento. Proverò a scrivere direttamente alla casa madre della scheda madre, chi meglio di loro :D
Messaggio unito automaticamente:

Prova con la soluzione proposta, sappi però che Il tuo arduino fa più o meno questo:

Mi ricordo come se fosse ora, la spiegazione degli interrupt che avevo seguito moooolti anni fa..mi hai fatto fare un tuffo indietro :D
Grazie delle info, ma "purtroppo" sto studiando e concentrando le energie in un altro campo (compositing), ma non sai quanto mi piacerebbe imparare elettronica e programmazione (in generale) :)
 
Buongiorno ragazzi, son riuscito a metterci mano solo ora, mannaggia!

Aggiornamento:

1- il wake on lan funziona anche a PC spento. Nelle impostazioni della scheda, in risparmio energia, la si può rendere attiva a pc spento (dal bios non c'è questa impostazione e nemmeno in risparmio energia generale).

2- ho usato cavo patch direttamente e comunicano direttamente senza problemi.

3- ho messo arduino e scheda sulla stessa rete (192.168.0.250 e 192.168.0.240)

Ma ancora non si accende. Il segnale lo riceve (il led lampeggia) ma non si avvia. Devo provare con wireshark a vedere che succede.
Nel frattempo, avete altri suggerimenti?

Grazie mille