Controllare Arduino via web

Buonasera, harduini! :slight_smile:
Scusate l'ora, ma non posso aspettare a domani per scrivere... Ho una domanda per voi: come posso fare a controllare (cioè rilevare dati e modificare parametri) un sistema tramite Arduino, ma a distanza?
Mi spiego con un esempio: voglio accendere le luci del giardino e controllare la temperatura della mia casa mentre sono a lavoro, non a casa; perciò con la connessione mobile del mio cellulare (iPhone).

In giro su internet ho letto un po' e ho visto che si adopera la Ethernet Shield ma da quello che sono riuscito a capire, è necessario che si sia connessi al wi-fi al quale è connessa via lan la shield Ethernet, ma questo è proprio quello che voglio evitare!

Questo è il mio problema di partenza, il resto poi lo condividerò nel momento in cui qualche buon'anima deciderà di aiutarmi su questo forum :slight_smile:

Grazie a tutti.
PietroJoe :grin:

In giro su internet ho letto un po' e ho visto che si adopera la Ethernet Shield ma da quello che sono riuscito a capire, è necessario che si sia connessi al wi-fi al quale è connessa via lan la shield Ethernet, ma questo è proprio quello che voglio evitare!

Esistono 2 tipi di shield:

  • ethernet shield con POE o senza POE che usa un cavo lan collegato ad un router tuo o quello del gestore del servizio

  • shield wifi che utilzza appunto l'wifi connesso ad un router con wifi tuo o quello del gestore

sono 2 scelte differenti, credo di non aver capito cosa vuoi evitare.

Voglio controllare Arduino da remoto. Forse sono io a non aver capito bene il meccanismo. Come comunico con la scheda a distanza?

voglio accendere le luci del giardino e controllare la temperatura della mia casa mentre sono a lavoro, non a casa; perciò con la connessione mobile del mio cellulare (iPhone).

Come comunico con la scheda a distanza?

Tramite una scheda di rete ... come il tuo computer per comunicare con internet usa una scheda di rete, che sia via cavo o wifi.

http://www.arduino.cc/en/Main/ArduinoEthernetShield
http://www.arduino.cc/en/Main/ArduinoWiFiShield
http://www.arduino.cc/en/Main/ArduinoBoardEthernet

In giro su internet ho letto un po'

Cosa hai letto fino ad ora :slight_smile:

Finora ho letto e visto video nei quali, alla fine, inseriscono sul browser del computer un certo indirizzo ip, si apre una pagina con i vari comandi (sicuramente creata con codice HTML eccetera eccetera) e da lì comandano e rilevano il tutto. Il mio dubbio sta nel fatto che lì la comunicazione avviene dopo avere inserito questo indirizzo IP nel browser, cosa che non credo funzioni a distanza poiché credo che funzioni solo se tutto è connesso ad un unico router.

pietrojoecapo:
Finora ho letto e visto video nei quali, alla fine, inseriscono sul browser del computer un certo indirizzo ip, si apre una pagina con i vari comandi (sicuramente creata con codice HTML eccetera eccetera) e da lì comandano e rilevano il tutto. Il mio dubbio sta nel fatto che lì la comunicazione avviene dopo avere inserito questo indirizzo IP nel browser, cosa che non credo funzioni a distanza poiché credo che funzioni solo se tutto è connesso ad un unico router.

L'ip è quello che il provider assegna al tuo router. Che volendo con un servizio di dns puoi darci un nome. Poi tramite i servizi del tuo router avrai dato il permesso all'ip (assegnato dal router alla schield) di essere in ascolto sulla porta 80 e accettare le chiamate in entrata su tale porta. Alla chiamata risponderà con la pagina html caricata o sull'arduino (all'interno dello scketh) o su di una sd. Comunque se non vuoi usare il router esiste anche la gsm shield.
Ciao!!!

Lollo82:
Poi tramite i servizi del tuo router avrai dato il permesso all'ip (assegnato dal router alla schield) di essere in ascolto sulla porta 80 e accettare le chiamate in entrata su tale porta. Alla chiamata risponderà con la pagina html caricata o sull'arduino (all'interno dello scketh) o su di una sd. Comunque se non vuoi usare il router esiste anche la gsm shield.
Ciao!!!

Cosa intendi per essere in ascolto sulla porta 80? Come faccio a fare una "chiamata" da remoto a questa porta tramite la connessione dati del mio cellulare?

Il mio dubbio sta nel fatto che lì la comunicazione avviene dopo avere inserito questo indirizzo IP nel browser, cosa che non credo funzioni a distanza poiché credo che funzioni solo se tutto è connesso ad un unico router.

Dunque se metti in dubbio quello che diciamo, allora non c'è molto da discutere.
Ti posso solo dire si! ... si può fare ed è meno difficile di quello che credi, accedi ad arduino, telecamere a casa, accendere il tuo pc di casa dall'ufficio ... non fa differenza se un router sta a newyork e uno a roma, basta solo impostarli.
La porta 80 e la porta di default che usa il protocollo tcp/ip, ma la porta adesso è il tuo ultimo problema, anche perchè da remoto verso casa non puoi usare la 80

Non ti dico queste cose per sentito dire, le faccio da anni.

Correggo: il mio non è un dubbio ma è un "come faccio a fare questo?".

hai già fatto tutto questo in rete locale (a casa) prima di provare a farlo dall'ufficio?

No, perché vorrei provare a farlo direttamente con la connessione dati del mio cellulare, dato che il mio scopo è quello!

E' la stessa identica cosa, che tu chiami arduino da dentro casa o da newyork tramite pc fissi o smarphone il lavoro che devi fare su arduino è lo stesso.

il tuo indirizzo IP è qui sotto (link), quando chiami arduino da casa o da fuori dovrai scrivere quel numero nnn.nnn.nnn.nnn:1234 una porta a tua scelta che dovrai andare a scrivere sul router
http://www.ipmy.it/index.php?lang=it

Da dentro casa puoi chiamarlo anche digitando l'IP diretto di arduino senza indicare la porta (entra la 80 in default), ma hai già troppe cose in pentola.

documentazione per iniziare

forwarding router
https://www.google.it/search?q=arduino+ip+remoto&ie=utf-8&oe=utf-8&gws_rd=cr&ei=FNo6VcRbidxq0auAuAY#q=arduino+port+forwarding&lr=lang_it

Fallo prima da dentro casa e fai i test con un pc e con smartphone, poi quando tutto funziona imposti il router per raggiungerlo anche da fuori.

Prossimamente quando chiederai altre info dovrai specificare

  • Tipo e modello router se tuo o fornito dal provider
  • Tipo di connessione ADSL/Fibra fornita dal tuo provider
  • tipo di arduino
  • tipo di connessione che usi, ethernet shield / wifi shield
  • codici completi INO/HTML

altrimenti aiutarti sarà difficile, fino ad ora non ho nemmeno capito se arduino ce l'hai .... poi bisogna che ci metti un po' di tuo provare, riprovare, cercare e studiare gli argomenti che non conosci.

Grazie mille!!! :slight_smile:
Ho Arduino UNO, modem Alice con connessione Alice ADSL e sto per comprare la ethernet shield.
Per il resto ti posso contattare in privato o continuo a scrivere qui?

Continua pure qui sotto, darai modo ad altri utenti di intervenire.

Ci sono tantissimi modi per raggiungere arduino da web ... "tutte le strade portano ad Arduino"

Alcuni esempi:

-Pagina web residente su SD completa di javascript e html
-Pagina web residente nello sketch (molto ridotta)
-Pagina web residente sul PC remoto/locale e nulla su arduino (usando json-jsonP-ajax-...)
-Pagina web scaricabile da SD una volta sola e lasciata sul PC remoto
-Pagina web residente su un server host e si contatta arduino chiamando (es: www.altervista/mypage...)
-App per smartphone creata appositamente (android), ovviamente non compatibile con browser
-App per smartphone creata appositamente (apple - iphone), ma con apple devi pagare i diritti, comunque non compatibile con browser
-Applicazioni eseguibili (exe) sul pc locale o remoto non compatibili con browser, scaricabile volendo anche da SD di arduino
...
...

metodo comunicazione e velocità di trasferimento:
anche qui i metodi sono tanti più o meno complessi e studiati secondo le proprie esigienze

alcuni esempi in rete non sono il massimo dell'efficienza, specie per un chip piccolo come il 328/2560, spesso richiedono ogni volta il ricaricamento della pagina per aggiornare i campi. In arduino 16Mhz è soprattutto la rapidità che manca.

ci sarebbe da scrivere altre 1000 righe sull'argomento, per questo ti dico che ci vuole tempo e pazienza.

ciao

Grazie davvero! Hai cominciato ad aprirmi un mondo che ammetto di conoscere poco e niente :slight_smile:

Vi aggiorno!
Grazie :wink:

Un'ultima (ma non meno importante) cosa: quale ethernet shield dovrei acquistare? O meglio, da quale sito? Ho dato un'occhiata in giro, e vedo prezzi che oscillano dai 7 ai 32 € e suppongo che questo derivi dal fatto che siano shield "più" o "meno" originali.
Per esperienza, quali mi consigliate? (ripeto: la mia scheda è Arduino UNO)

Grazie :slight_smile:

Questo il link della shield trovata su futura elettronica: Servizio di incisione e taglio laser - FuturaShop

Questi due link di due schede più economiche, da amazon e da miniinthebox:

http://m.miniinthebox.com/it/2013-la-versione-di-ethernet-w5100-r3-shield-per-arduino-uno-mega-25601280328-solo-hte-w5100-development-board_p903367.html

Vi chiedo se avete esperienze con schede più economiche e se mi consigliate di comprare una di queste oppure se è meglio prendere qualcosa che costi di più o di originale.

Grazie :slight_smile: