Pages: [1] 2   Go Down
Author Topic: Arduino nano, Web server e Wake on lan  (Read 2094 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 30
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti, è il mio primo post su questo forum quindi perdonatemi se ho sbagliato qualcosa.
Da un po' di tempo sono rimasto affascinato dalle potenzialità di Arduino. Tuttavia, non mi sono ancora apprestato a comprare una scheda Arduino, in quanto nella mia mente non si è ancora prefigurato un preciso progetto.
Da qualche giorno, però, sto sistemando la rete informatica di casa per sfruttare la funzionalità Wake on Lan presente sui PC (2 portatili e un fisso). Tutti i PC sono connessi via cavo ad un router Netgear DG834Gv4 (con firmware modificato, ma questo non c'entra niente). Il suddetto router, tuttavia, dopo un po' svuola la ARP cache e non mi è più concesso svegliare i pc da remoto.
Premesso che ho già fatto tutti i possibili tentativi possibili e immaginabili per creare un valore statico nella ARP table, ma ho constatato che tutto ciò non mi è possibile e mi è inoltre vietato fare un port forward sull'indirizzo di broadcast (192.168.0.255). In ogni caso, sfruttando qualsiasi altro software sui pc, mi è permesso di mandare pacchetti UDP verso l'indirizzo di broadcast, i quali raggiungono tutti i PC e svegliano solo i PC interessati.

La mia ultima idea sarebbe quella di dotarmi di un Arduino Nano (con relativo ethernet shield), collegarlo alla rete e usarlo come web server. Tramite un'apposita applicazione per Android (il cui sviluppo non è un problema), vorrei essere in grado di mandare tramite Internet una richiesta alla piattaforma Arduino, la quale si occuperà di far girare, tramite broadcast, un Magic Packet contenente uno specifico indirizzo MAC. Inoltre, non mi dispiacerebbe se Arduino riuscisse anche a comunicare all'applicazione lo stato on/off di un determinato PC.

Dite che si può fare?
Scusate per la lunga spiegazione, ma desidero essere il più chiaro possibile.

Michele
« Last Edit: December 22, 2012, 03:43:10 pm by Smicuz96 » Logged

0
Offline Offline
Faraday Member
**
Karma: 45
Posts: 5785
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

non vedo problemi nel fare quello che chiedi via arduino, il progetto e' interessante. Mi viene in mente un solo problema per ora, che la versione nano non e' compatibile con la ethernet shield meccanicamente. Io prenderei direttamente una Arduino Ethernet, che ingloba su un unica scheda, quindi senza shield, la sezione micro e la sezione ethernet.
mi sono ripromesso piu' volte di affrontare il wake on lan, ma non l'ho mai fatto. Non credevo ci fossero questi problemi. scusa ma quindi normalmente come si gestisce la cosa ? nelle aziende con tanti pc come fanno a non avere problemi con la arp table ?
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Offline Offline
Newbie
*
Karma: 0
Posts: 30
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao Testato, grazie innanzitutto per avermi risposto smiley
Come progetto avevo preso in considerazione la scheda Arduino Nano perchè su Ebay ho trovato un modulo ethernet fatto apposta per la versione Nano e, a conti fatti, mi converrebbe. Che tu sappia ci sono dei problemi? (Suppongo che questo tipo di ethernet shield non sia ufficiale)
Non so come si comportino le grandi aziende, ma suppongo che prendano dei router che supportino il port forward verso l'ip di broadcast o, altrimenti, permettano di controllare la ARP table. Purtroppo il mio Netgear non permette nessuno dei due..

Già che ci sei potresti darmi una dritta per iniziare ad inquadrare il progetto? Così poi, se tutta la parte teorica fila lascio, posso provare la parte pratica acquistando Arduino smiley

Grazie in anticipo,
Michele
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 38
Posts: 3249
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Tutti i PC sono connessi via cavo ad un router Netgear DG834Gv4 (con firmware modificato, ma questo non c'entra niente). Il suddetto router, tuttavia, dopo un po' svuola la ARP cache e non mi è più concesso svegliare i pc da remoto.

Questo succede perchè il tuo ruter non ti permette di salvare i MAC su eeprom, il router resetta la flash o una mancata alimentazione mentre le macchine sono spente svuotano la lista ARP. Ho avuto tempo fa una necessità come la tua su 4 macchine collegate via cavo ti serve un router che abbia la funzione Bind ovvero salvare i mac e abbinarli ad un indirizzo ip locale.
Quando una delle 4 macchine viene avviata, il router vede il mac e gli assegna l'ip da me stabilito, questo mi serviva perchè col vnc potevo cercare con certezza il pc giusto da remoto conoscendo l'ip (lasciando su windows/rete "ip automatico") e risvegliarlo conoscendo il mac.
Con il forward completi l'operazione quando chiami il pc da ip pubblico:
programmi una porta es 1234 all'ip 192.168.2.100 protocollo da usare ... per WOL
programmi una porta es 5678 all'ip 192.168.2.100 protocollo da usare ... per VNC


lista delle macchine attualmente accese
ARP List
ID   MAC Address   IP Address   Status    Configure   
1   74-E5-0B-xx-xx-xx    192.168.2.100   Unbound   Load Delete
2   BC-AE-C5-xx-xx-xx   192.168.2.112   Unbound   Load Delete
3   64-A7-69-xx-xx-xx   192.168.2.180   Unbound   Load Delete

lista delle macchine con i rispettivi MAC e gli ip (stabiliti da me) che devono assumere quando si accendono (configurati su eeprom)
ARP Binding:    Disable Enable  
ID    MAC Address             IP Address     Bind         Modify    
1   A4-C0-E1-xx-xx-xx   192.168.2.101    y   Modify Delete   
2   BC-AE-C5-xx-xx-xx   192.168.2.112    y   Modify Delete   
3   64-A7-69-xx-xx-xx   192.168.2.180    y   Modify Delete   
4   1C-6F-65-xx-xx-xx   192.168.2.114    y   Modify Delete   
5   54-9B-12-xx-xx-xx   192.168.2.190    n   Modify Delete
6   74-E5-0B-xx-xx-xx   192.168.2.100    n   Modify Delete

prendi un router che abbia questa funzione

se poi vuoi sapere quali macchine sono ON da web server allora aggiungi un arduino con 4 ingressi, ma i modi sono molti per saperlo da remoto senza un particolare sistema.

Il primo che mi viene in mente è google drive (se possiedi un account google) inviando gli eventi su un foglio elettronico tipo excel con uno script
il secondo una mail lanciata da ciascuna macchina con un file.bat allo start, magari messo su esecuzione automatica all'avvio

es:
crea un file bach  automail.bat modificando i tuoi parametri e mettilo su esecuzione automatica all'accensione del pc
bmail -s smtp.fastwebnet.it -t nomecognome@gmail.com -f nome.cognome@fastwebnet.it -h -a "Da ufficio" -b "Computer N°1 ACCESO"

Ottimo per sapere quando la segretaria arriva in ufficio visto che la prima cosa che fa è accendere il pc e poi togliere la giacca  smiley-grin smiley-grin

bmail -s smtp.fastwebnet.it -t nomecognome@gmail.com -f nome.cognome@fastwebnet.it -h -a "Da casa" -b "Computer moglie ACCESO"

Ottimo per sapere quando la moglie ti dice "amore oggi non ho avuto un minuto libero" ahahahahahha
....



ciao   
« Last Edit: December 22, 2012, 08:58:54 pm by pablos » Logged

no comment

Offline Offline
Newbie
*
Karma: 0
Posts: 30
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Questo succede perchè il tuo ruter non ti permette di salvare i MAC su eeprom, il router resetta la flash o una mancata alimentazione mentre le macchine sono spente svuotano la lista ARP. Ho avuto tempo fa una necessità come la tua su 4 macchine collegate via cavo ti serve un router che abbia la funzione Bind ovvero salvare i mac e abbinarli ad un indirizzo ip locale.
Quando una delle 4 macchine viene avviata, il router vede il mac e gli assegna l'ip da me stabilito, questo mi serviva perchè col vnc potevo cercare con certezza il pc giusto da remoto conoscendo l'ip (lasciando su windows/rete "ip automatico") e risvegliarlo conoscendo il mac.
Con il forward completi l'operazione quando chiami il pc da ip pubblico:
programmi una porta es 1234 all'ip 192.168.2.100 protocollo da usare ... per WOL
programmi una porta es 5678 all'ip 192.168.2.100 protocollo da usare ... per VNC


lista delle macchine attualmente accese
ARP List
ID   MAC Address   IP Address   Status    Configure   
1   74-E5-0B-xx-xx-xx    192.168.2.100   Unbound   Load Delete
2   BC-AE-C5-xx-xx-xx   192.168.2.112   Unbound   Load Delete
3   64-A7-69-xx-xx-xx   192.168.2.180   Unbound   Load Delete

lista delle macchine con i rispettivi MAC e gli ip (stabiliti da me) che devono assumere quando si accendono (configurati su eeprom)
ARP Binding:    Disable Enable  
ID    MAC Address             IP Address     Bind         Modify    
1   A4-C0-E1-xx-xx-xx   192.168.2.101    y   Modify Delete   
2   BC-AE-C5-xx-xx-xx   192.168.2.112    y   Modify Delete   
3   64-A7-69-xx-xx-xx   192.168.2.180    y   Modify Delete   
4   1C-6F-65-xx-xx-xx   192.168.2.114    y   Modify Delete   
5   54-9B-12-xx-xx-xx   192.168.2.190    n   Modify Delete
6   74-E5-0B-xx-xx-xx   192.168.2.100    n   Modify Delete

prendi un router che abbia questa funzione

se poi vuoi sapere quali macchine sono ON da web server allora aggiungi un arduino con 4 ingressi, ma i modi sono molti per saperlo da remoto senza un particolare sistema.

Il primo che mi viene in mente è google drive (se possiedi un account google) inviando gli eventi su un foglio elettronico tipo excel con uno script
il secondo una mail lanciata da ciascuna macchina con un file.bat allo start, magari messo su esecuzione automatica all'avvio

es:
crea un file bach  automail.bat modificando i tuoi parametri e mettilo su esecuzione automatica all'accensione del pc
bmail -s smtp.fastwebnet.it -t nomecognome@gmail.com -f nome.cognome@fastwebnet.it -h -a "Da ufficio" -b "Computer N°1 ACCESO"

Ottimo per sapere quando la segretaria arriva in ufficio visto che la prima cosa che fa è accendere il pc e poi togliere la giacca  smiley-grin smiley-grin

bmail -s smtp.fastwebnet.it -t nomecognome@gmail.com -f nome.cognome@fastwebnet.it -h -a "Da casa" -b "Computer moglie ACCESO"

Ottimo per sapere quando la moglie ti dice "amore oggi non ho avuto un minuto libero" ahahahahahha
....



ciao   
Ciao, grazie pervla spiegazione, sicuramente mi tornerà utile smiley
Tuttavia, non vedo perchè dovrei comprare un nuovo router quando potrei fare tutto tramite Arduino. Sostituire il mio Netgear, che funziona perfettamente, potrebbe sì risolvere il problema ARP, ma poi dovrei prendere comunque Arduino per controllare lo stato dei PC. Spesa doppia per lo stesso risultato xD.
Potreste piuttosto darmi qualche dritta per iniziare a progettare il sistema web server-wake on lan? smiley

Grazie ancora,
Michele
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 38
Posts: 3249
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ahh forse non avevo capito, pensavo che con arduino volevi solo controllare quali pc sono accesi, invece vuoi mandare il packet usando la ethernet shield e controllare lo stato ON/FF delle macchine ..... mmm mi incuriosisce sta cosa, al momento non ho la minima idea di come farlo ci devo pensare.....

ciao
Logged

no comment

Offline Offline
Newbie
*
Karma: 0
Posts: 30
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Esatto, io vorrei effettuare il Wake on Lan proprio attraverso Arduino, quando quest'ultimo riceve da internet un determinato segnale da me mandato.
Avevo preso in considerazione la scheda Arduino Nano perchè su Ebay ho trovato un modulo ethernet fatto apposta per la versione Nano e, a conti fatti, mi converrebbe. Che sappiate ci sono dei problemi? (suppongo che questo tipo di ethernet shield non sia ufficiale)
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 38
Posts: 3249
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Di quale scheda eth parli? hai un link da farci vedere?

Bisogna usare la libreria UDP e creare il messaggio in base ai parametri prestabiliti

I pacchetti Ethernet che attivano la "sveglia" sono detti Magic Packet ("pacchetti magici"). Il Magic Packet è in sostanza un frame multicast, composto da una prima parte di sincronizzazione costituita da sei bytes di valore FF esadecimale, seguiti dall'Indirizzo MAC del nodo bersaglio ripetuto 16 volte, per un totale di 96 bytes, e da un campo password opzionale che può essere assente, lungo 4 bytes o 6 bytes[1].

non è la soluzione ma un inizio smiley

guarda qui http://www.logicaprogrammabile.it/wol-accendere-computer-arduino-wake-on-lan/

ciao
« Last Edit: December 23, 2012, 03:13:38 pm by pablos » Logged

no comment

Offline Offline
Newbie
*
Karma: 0
Posts: 30
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sì, ecco qui. Avevo trovato 2 articoli riguardanti l'ethernet shield per Arduino Nano.
http://www.ebay.it/itm/ENC28J60-Webserver-module-Ethernet-Shield-for-Arduino-Nano-/181030427495?pt=LH_DefaultDomain_0&hash=item2a26411b67
http://www.ebay.it/itm/Ethernet-Shield-for-Arduino-Nano-work-as-ENC28J60-RJ45-Webserver-/281006055332?pt=LH_DefaultDomain_0&hash=item416d441fa4
Saranno validi?

Grazie per lo spunto di inizio smiley
Il punto dolente più che altro riguarda la parte Internet. Come si potrebbe fare ad instaurare una connessione tra Arduino e applicazione Android (da me sviluppata), senza passare per un'interfaccia web? Devo utilizzare i socket? Avete per caso una guida in merito?

Michele
Logged

0
Offline Offline
Faraday Member
**
Karma: 45
Posts: 5785
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Per il discorso hardware la differenza tra questa ethernet shield e l'originale e' nel chip, l'originale usa un wiz, mentre queste ecnomiche usano un enc.
La libreria ufficiale arduino non funziona e quindi ne devi usare una terze parti, ma la differenza principale e' che queste enc non hanno il tcp-ip integrato e quindi lo si fa via sw, appesantendo il tutto.

Se non hai ancora comprato ne' il nano ne' lo shield io ti riconsiglio sempre l'arduino ethernet, hai tutto in una sola scheda, ed hai anche lo slot per una scheda SD, utile se vuoi aggiungere qualche immagine per il webserver
http://store.arduino.cc/it/index.php?main_page=product_info&cPath=11_12&products_id=197

« Last Edit: December 23, 2012, 05:22:06 pm by Testato » Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Offline Offline
Newbie
*
Karma: 0
Posts: 30
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, grazie. Allora mi prenderò l'Arduino Ethernet così sto tranquillo smiley. Aspettavo a fare acquisti proprio per sentire la vostra opinione!
Per quanto riguarda la connessione diretta tra Arduino e dispositivo remoto (Android)? Devo usare i socket? Avete qualche piccola guida in merito?

Grazie ancora,
Michele
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 110
Posts: 6974
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Per programmare l'Arduino Ethernet ti serve un convertitore seriale-usb. --> http://arduino.cc/en/Main/USBSerial
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

0
Offline Offline
Faraday Member
**
Karma: 45
Posts: 5785
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

oppure un programmatore esterno, oppure (non l'ho mai fatto) in TFTP. Ho letto in giro qualcosa, in questo caso non spenderesti altri soldi.
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Offline Offline
Newbie
*
Karma: 0
Posts: 30
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Allora tanto vale che prenda direttamente Arduino uno e poi ci metta sopra lo shield ethernet...
Arduino uno + Ethernet shield (senza PoE) = 49€
Arduino ethernet (senza PoE) + adattatore seriale-usb = 49.9€
Poi, aggiungendo un set di base (senza arduino), giusto per avere qualche dispositivo da controllare e un po' di cavi, raggiungo la bellezza di 78€

Mah... probabilmente rimanderò il progetto. Per ora mi sembra un po' troppo costoso per 2 schede... peccato...
Logged

Tuscany
Offline Offline
Edison Member
*
Karma: 66
Posts: 1948
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si puo' spendere molto di meno.
 
innanzi tutto per gestire il Wol si puo' usare una ethernet alternativa, basata sul chip enc28j60
c'e' anche un articolo di Luca Dentella http://www.lucadentella.it/2012/02/22/enc28j60-e-arduino-4/
completo di sketch https://github.com/lucadentella/enc28j60_tutorial

per la scheda ethernet, questa funziona benissimo http://www.ebay.it/itm/1pcs-ENC28J60-Network-Module-/261004876528?pt=LH_DefaultDomain_0&hash=item3cc51a5af0 e il fornitore e' affidabile ( se non hai fretta )
Per la Uno, puoi benissimo fare con uno standalone, o se proprio non vuoi saldare e rimanere su prodotti locali, usa una Luigino

Logged

Pages: [1] 2   Go Up
Jump to: